코드로 꿈꾸는 커리큘럼 설계
초록
Dreaming in Code(DiCode)는 기반 모델을 활용해 실행 가능한 파이썬 코드 형태의 환경을 자동 생성하고, 이를 커리큘럼에 삽입해 에이전트가 점진적으로 복잡한 과제를 학습하도록 돕는 프레임워크이다. Craftax 세계에 적용한 실험에서 평균 보상이 16 % 상승하고, 기존 방법이 전혀 성공하지 못하던 후기 전투 과제에서도 비제로 성공률을 기록했다.
상세 분석
DiCode는 기존의 비지도 환경 설계(UED) 접근법이 파라미터 공간에 국한되어 구조적 진화를 충분히 다루지 못한다는 한계를 극복한다. 핵심 아이디어는 “꿈꾸기(dreaming)”를 코드 수준에서 수행한다는 점이다. 사전 학습된 대규모 언어 모델(Foundation Model, FM)을 조건부 프롬프트와 함께 사용해, 현재 에이전트의 역량을 반영한 자연어 설명을 먼저 생성하고, 이를 다시 파이썬 코드로 변환한다. 생성된 코드는 목표 시뮬레이터 엔진(Craftax)에 직접 삽입되어 실행되므로, 물리적 일관성이나 게임 메커니즘의 오류를 최소화한다.
DiCode의 파이프라인은 두 개의 상호작용 프로세스로 구성된다. 첫 번째는 에이전트 학습 단계이며, 여기서는 목표 환경과 함께 FM이 만든 중간 레벨들을 섞어 배치한다. 두 번째는 “Generation Cycle”로, 아카이브에 저장된 레벨들 중 학습 가능성이 높은(learnability 점수 기반) 부모 레벨을 선택하고, 해당 레벨의 성능 프로파일과 목표 환경의 메트릭을 컨텍스트로 제공한다. FM은 이 정보를 바탕으로 새로운 레벨 설명을 만든 뒤, 두 번째 추론 단계에서 실제 파이썬 코드를 합성한다. 코드가 컴파일에 성공하면 학습 배치에 추가되고, 에이전트는 이를 통해 새로운 스킬을 연습한다.
학습 진행 상황은 레벨 아카이브에 지속적으로 기록된다. 각 레벨은 성공률에 따라 A·B·C·D 네 단계로 구분되며, 부모 선택 시 A·B 단계 레벨 중 아직 자식이 없는 레벨을 우선적으로 샘플링한다. 이렇게 하면 진화적 라인별 다양성이 유지되고, 특정 브랜치에 과도하게 집중되는 현상을 방지한다.
보상 설계 측면에서 DiCode는 목표 환경의 기본 보상에 초기 상태와 목표 달성 여부에 따라 보너스 보상을 추가한다. 보너스 크기는 이전 사이클의 목표 환경 평균 반환을 기준으로 동적으로 조정돼, 에이전트가 성장함에 따라 보상의 난이도도 자연스럽게 상승한다.
실험 결과는 세 가지 측면에서 의미 있다. 첫째, 평균 반환이 16 % 향상돼, 코드 기반 커리큘럼이 실제 성능 향상으로 이어짐을 입증한다. 둘째, 후기 전투와 같은 장기 의존 과제에서 비제로 성공률을 달성했으며, 이는 기존 PLR이나 무작위 레벨 생성 방식이 전혀 해결하지 못하던 문제다. 셋째, 정성적 분석을 통해 FM이 “교사‑같은” 전략을 스스로 학습한다는 점을 확인했다. 예를 들어, 에이전트가 특정 자원을 쉽게 획득하면 FM은 해당 자원을 의도적으로 제한하거나 적의 공격력을 강화해 난이도를 조절한다. 이는 근접 발달 영역(ZPD) 내에서 학습을 지속시키는 교사 역할과 유사하다.
또한, Ablation Study에서 커리큘럼 피드백 루프를 제거하면 FM만으로는 지속적인 진행을 이끌어내지 못한다는 사실이 밝혀졌다. 즉, 에이전트의 현재 성능을 반영한 조건부 생성이 없으면, 생성된 레벨이 무작위적이거나 지나치게 어려워 학습이 정체된다.
전반적으로 DiCode는 실행 가능한 코드 수준의 환경 설계를 통해 복잡하고 장기적인 학습 목표를 달성하기 위한 실용적인 커리큘럼 제어 메커니즘을 제공한다. 향후 로봇 시뮬레이션(MuJoCo)이나 다른 프로시저 기반 게임에도 적용 가능성이 높으며, 오픈소스 FM을 사용함으로써 재현성과 확장성을 동시에 확보한다.
댓글 및 학술 토론
Loading comments...
의견 남기기