Introduction
오픈 월드 환경에서 에이전트를 학습시키는 문제는 AI 분야에서 오랫동안 도전적인 주제였다. 특히 Minecraft와 같은 복잡한 환경에서는 단순히 많은 데이터나 규칙 기반 코드를 활용하는 것만으로는 고난도 행동을 효율적으로 학습하기 어렵다. 최근 Large Language Models(LLMs)가 다양한 툴을 다루는 뛰어난 능력을 보여주고 있지만, 긴 논리적 사고나 정밀 제어가 필요한 open-world 환경의 태스크들을 직접 해결하기에는 한계가 있다. 반면, Reinforcement Learning(RL)은 상호작용을 통해 스스로 학습하는 데 강점이 있으나, 복잡한 태스크 구조나 긴 탐색 시간이 필요한 상황에서는 여전히 큰 비용이 든다.
본 논문에서는 이러한 한계를 극복하기 위해, RL-GPT라는 프레임워크를 제안한다. RL-GPT는 "코드를 통한 직접 제어(Code-as-policy)"와 "학습 기반 제어(RL)"를 결합하여, LLMs가 환경에서 매우 세밀하고 복잡한 태스크를 빠르고 효율적으로 학습할 수 있도록 설계된 시스템이다. Minecraft 환경에 적용된 실험에서 이 방법이 매우 높은 샘플 효율을 보이며, 여러 대표 태스크들에서 state-of-the-art 수준의 성능을 달성했음을 확인할 수 있다.
Background
왜 LLMs와 RL을 결합해야 하는가?
- LLMs는 코드 작성, 문맥 이해, 지식 기반 reasoning 등에서 탁월한 능력을 보여준다. 또한 컴퓨터 툴을 조작하거나, OS나 앱을 제어하는 등 강력한 활용 예시가 등장하고 있다.
- 하지만 LLMs는 반복적인 실습(practice)이나 환경 상호작용을 통한 스킬 향상은 잘하지 못한다. 즉, 높은 수준의 지식은 있어도, 직접 게임이나 시뮬레이션 환경에서 행동하고 피드백을 받으며 배우는 능력은 부족하다.
- RL은 반면, 환경과의 상호작용을 통해 trial-and-error 방식으로 뛰어난 정책을 학습할 수 있다. 그러나 목표가 너무 복잡하거나 horizon이 긴 태스크는 탐색 시간이 과도하게 늘어나거나, heurstic한 접근이 필요해지는 문제가 있다.
두 접근법은 상호보완적이다. RL-GPT는 LLMs와 RL을 함께 사용함으로써 “LLMs에게 ‘학습’이라는 능력을 부여”하고, 동시에 “RL이 필요로 하는 구체적이고 고차원적인 부분을 LLMs가 코드로 지원”하는 구조를 지향한다.
기존 접근과의 차이점
- 이전에도 LLMs를 활용해 오픈 월드 게임에서 high-level planning을 하거나, 세분화된 action들을 코드로 만들려는 시도가 있었다. 그러나 저수준 제어(low-level control)는 대부분 사람이 직접 짜 준 controller 또는 대규모 expert data에 의존하기 때문에 범용성이 제한적이었다.
- RL 기반 접근은 sample 효율이 낮거나, 엄청난 연산량을 필요로 하는 문제가 있었다. 예컨대 DreamerV3 같은 모델은 환경 모델(world model)을 학습하여 탐색 효율을 높이지만, 여전히 긴 학습 시간과 막대한 상호작용 샘플이 요구된다.
RL-GPT는 “slow agent”와 “fast agent”라는 두 레벨 계층을 설정하고, 필요한 sub-action을 코드로 자동 생성하되, 너무 복잡한 부분은 RL을 사용하여 효율을 최대화한다.
RL-GPT Framework
RL-GPT는 크게 아래 세 가지 구성 요소를 포함한다.
1. Slow agent
- 주어진 태스크를 여러 sub-action으로 분해하고, “이 부분은 그냥 코드로 짤 수 있겠다(코드화 가능)”와 “RL로 학습해야겠다(코드화 불가)”를 판단한다.
- GPT-4와 같은 모델로 구현해서, 각 sub-action을 어떻게 해결할지, 그리고 이 sub-action이 code-as-policy로 가능한지, 아니면 RL이 필요한지를 결정한다.
2. Fast agent
- slow agent로부터 sub-action에 대한 지시를 받아, 실제 Python 코드를 작성한다.
- sub-action이 직관적이고 조건이 명확하다면(예: 단순 crafting), 즉시 code-as-policy 형태로 구현하여 실행한다.
- 반면 복잡하게 위치나 시야, 이동 등이 필요한 sub-action은 RL training에 적합한 action space로 통합한다. 이때 fast agent가 RL 관련 설정(ex. PPO action space)까지 코드로 자동 구성하도록 한다.
3. Two-loop iteration
- slow agent와 fast agent가 한 번씩 코드를 작성하고 실행한 후, 그 결과(피드백)를 바탕으로 critic agent가 각 단계의 sub-action이나 계획을 평가한다.
- critic agent 역시 GPT 계열 모델로, 실행 전후 observation 등을 함께 검토하여 "이 코드를 다시 분해하라"거나 "이 action은 code로 구현하기 어렵다" 같은 피드백을 준다.
- 이렇게 outer loop(slow agent 업데이트) + inner loop(fast agent 디버깅) 과정을 반복하면서, sub-action 설계와 코드 품질이 점진적으로 개선된다.
Code-as-policy와 RL Action Space 통합
핵심은 fast agent가 작성한 “고수준 코드 행동”을 RL action space에 추가하는 것이다. 예를 들어, “나무를 20번 연속 공격”이라는 code-as-policy action을 RL의 multi-discrete action space에 삽입할 수 있다. 그러면 기존의 primitive action처럼 한 스텝씩 움직이던 RL이, “고수준 공격 루틴”을 한 번에 스킬처럼 호출할 수 있게 된다. 이렇게 하면 RL이 복잡한 하위 동작을 계속 직접 학습하지 않아도 되어, sample 효율이 훨씬 올라간다.
Implementation Details
- LLM Prompt 설계
slow agent와 fast agent 각각에게 다른 롤(role)과 예시 코드, 실행 에러 로그 등을 제공해 스스로 코드를 수정할 수 있게 한다.- slow agent에는 “너는 이 게임 내에서 행동을 직접 코드로 짜지 않으며, 어떤 부분을 RL이 담당해야 할지 판단하라” 같은 지시를 한다.
- fast agent에는 “너는 Python 코드로 sub-action을 구현하되, 이러이러한 observation과 action space를 어떻게 다룰지 고민하라”는 템플릿을 준다.
- RL 파이프라인
- PPO를 사용한다.
- sparse reward로는 난이도가 높으므로, CLIP reward나 distance reward 같은 dense reward 설계를 추가한다.
- fast agent가 작성한 code-as-policy 부분은 action space에 등록되며, PPO 에이전트가 필요할 때 그 action(고수준 루틴)을 호출할 수 있다.
- Task Planner
ObtainDiamond와 같이 매우 긴 시퀀스가 필요한 태스크는 하나의 네트워크만으로 학습하기 어렵다. 이런 경우에는 추가로 “GPT-4 기반 planner”가 존재해, 먼저 게임 태스크를 몇 개의 큰 단계로 나눈다. 이후 각 단계를 RL-GPT로 해결해나간다.
Experiments
MineDojo Benchmark
MineDojo라는 Minecraft 기반 시뮬레이션을 사용해 다양한 태스크를 실험한다. 예를 들어:
- log를 얻기(나무 접근 → 공격 → 회수)
- crafting table 만들기
- wooden pickaxe 만들기
- furnace 만들기
- milk bucket 만들기
- obtain beef 등
10여 개의 태스크를 대상으로 비교 실험을 수행했을 때, RL-GPT가 다른 baseline(Plan4MC, MineAgent 등) 대비 높은 성공률을 보였다. 특히, 이전에는 crafting action 정도만 hand-coded를 쓰는 식이었는데, RL-GPT는 더 다양한 high-level action을 코드로 생성·활용한다.
ObtainDiamond
ObtainDiamond 태스크는 Minecraft 초반부터 다이아몬드를 얻기까지 매우 긴 과정을 요구한다(나무 채집, 돌 채집, 철 광석 smelting, 지하 탐색, 다이아몬드 발견 및 채집 등).
- DreamerV3 같은 RL 기법은 100M 이상의 샘플이 필요하고, 성공률도 낮았다(2% 내외).
- VPT는 거대한 YouTube 비디오 데이터로 pre-training을 거쳐서 20% 정도를 달성하나, 매우 큰 컴퓨팅 자원을 투입해야 했다.
- RL-GPT는 단 3M 정도의 샘플로도 8% 성공률을 달성했다. 이는 아직 높은 수치라고 하긴 어렵지만, 학습 비용 대비 매우 의미 있는 결과다.
Ablation Studies
- Framework 구조: slow agent와 fast agent를 분리하지 않고 한 에이전트로만 구현하면 성능이 크게 떨어진다. critic agent를 추가해 feedback을 주고받는 구조가 optimal 하다.
- Two-loop iteration: iteration 횟수가 늘어날수록 sub-action 코드 품질과 전체 성공률이 올라간다. zero-shot보다 몇 번 iteration을 돌린 후가 훨씬 높은 수치가 나온다.
- RL interface: LLMs가 reward만 설계하거나, action space만 수정하거나, 둘 다 하는 등 여러 방식을 비교했을 때, action space 재설계(즉 code-as-policy 통합)가 특히 효율적인 것으로 나타났다.
Conclusion
이 논문에서 제안한 RL-GPT는 LLMs와 RL을 자연스럽게 결합해, 기존 오픈월드 환경에서의 에이전트 학습 문제가 지니던 어려움을 극복하는 하나의 로드맵을 제시한다. 중요한 아이디어는 다음과 같다.
- Slow agent가 태스크를 쪼개고, 가능하면 “직접 코드 작성이 쉬운 부분”을 선택해 fast agent로 하여금 코드로 구현하게 함.
- 나머지 “LLMs만으로 다루기 복잡한 부분”은 RL 학습으로 해결하고, 필요하다면 high-level action을 action space에 자동 삽입하여 학습 효율을 높임.
- 두 에이전트 사이의 iterative feedback(critic agent 포함)을 통해 계획과 코드 구현을 지속적으로 개선.
이로써 LLMs의 reasoning + code 작성 능력과, RL의 환경 상호작용 학습 능력을 결합할 수 있다. Minecraft에서 다양한 실험으로 입증한 결과, RL-GPT는 기존 SOTA 접근법보다 훨씬 적은 샘플로도 높은 성공률을 달성했다. 이런 방식은 오픈 월드 게임뿐 아니라, 복잡한 시뮬레이션 로보틱스나 다른 대규모 시나리오에도 적용 가능할 것으로 기대된다.
앞으로의 연구로는 더 정교한 action space 분할, multi-agent 협력, 더 적은 human-written code 예시로 큰 태스크를 해결하는 방법 등을 꼽을 수 있다. RL-GPT가 보여준 결과는 “LLMs가 RL을 툴로 활용”한다는 새로운 패러다임이 실제로 가능하고 매우 효과적임을 시사한다.