qcoding

[AI논문리뷰-강화학습] Eureka - GPT-4가 보상 함수를 직접 코딩해 29개 로봇 태스크에서 인간 전문가를 넘어선 LLM 기반 자동 보상 설계 본문

AI논문리뷰-강화학습

[AI논문리뷰-강화학습] Eureka - GPT-4가 보상 함수를 직접 코딩해 29개 로봇 태스크에서 인간 전문가를 넘어선 LLM 기반 자동 보상 설계

Qcoding 2026. 5. 2. 10:30
반응형
논문  Eureka: Human-Level Reward Design via Coding Large Language Models 저자  Yecheng Jason Ma et al. (UPenn, NVIDIA, UT Austin) 학회/연도  ICLR 2024 arXiv  2310.12931

📄 한 문단 요약

강화학습에서 보상 함수 설계는 도메인 전문 지식이 필요한 고난도 작업이다. Eureka는 GPT-4에게 환경 소스 코드를 직접 제공하고 실행 가능한 Python 보상 함수를 생성하게 한 뒤, 진화적 검색과 보상 반성(Reward Reflection)으로 반복 개선한다. 템플릿이나 수작업 없이 29개 로봇 태스크 중 83%에서 인간 전문가 설계 보상을 평균 52% 초과하고, 처음으로 Shadow Hand의 펜 돌리기(Pen Spinning)를 성공시켰다. 추가로 그래디언트 없이 인간 텍스트 피드백을 인-컨텍스트 러닝으로 반영하는 RLHF 메커니즘도 제시한다.

이 논문은 무엇을 해결하려고 했나?

강화학습 에이전트를 훈련시키려면 보상 함수(reward function)를 먼저 정의해야 한다. 문제는 이 작업이 생각보다 훨씬 어렵다는 점이다. "공을 잡아라"처럼 단순해 보이는 지시도 실제 시뮬레이터 코드에서는 손 위치, 손가락 접촉, 속도, 각도를 수십 개의 변수로 표현해야 한다. 각 변수에 어떤 가중치를 주느냐, 어떤 함수로 조합하느냐에 따라 에이전트가 전혀 다른 행동을 학습한다.

기존 접근은 도메인 전문가가 수작업으로 보상 함수를 설계하는 방식이었다. 태스크마다 재설계해야 하고, 고차원 조작 태스크(손가락 52개 자유도)에서는 전문가도 최적 보상을 찾지 못하는 경우가 많았다. 희소 보상(성공/실패만 알려주는 +1/0)은 신용 할당 문제로 수렴 속도가 극단적으로 느리다.

Eureka의 질문은 단순하다: GPT-4가 환경 코드를 읽고 직접 보상 함수를 코딩할 수 있다면, 인간보다 더 잘할 수 있을까?

배경지식과 핵심 키워드

배경지식과 핵심 키워드

보상 함수 설계 (Reward Shaping)
희소 보상(성공/실패만)의 신용 할당 문제를 해결하기 위해 중간 진행 상황을 수치로 표현한 보조 보상 신호를 추가하는 기법이다. 이 논문에서 GPT-4가 직접 생성하는 대상이 바로 이 보상 함수 코드다. 잘못 설계된 보상은 에이전트가 루프를 도는 등 의도치 않은 최적화로 이어지는 리워드 해킹을 유발한다.
LLM 코드 생성 (GPT-4)
GPT-4는 자연어 지시와 코드를 동시에 이해하고 생성할 수 있는 대규모 언어 모델이다. Eureka에서는 환경 Python 소스 코드를 컨텍스트로 직접 넣어 보상 함수 코드를 생성시킨다. 태스크별 템플릿이나 예시 없이도 상태 변수의 의미를 소스 코드에서 유추해 실행 가능한 함수를 만들어낸다. GPT-4는 4만 토큰 컨텍스트 덕분에 긴 시뮬레이터 소스를 수용할 수 있다.
진화적 검색 (Evolutionary Search)
한 번에 K=16개의 보상 함수 후보를 병렬 생성하고, 실제 RL 학습 결과로 평가한 뒤 최고 성능 후보를 선택해 다음 세대를 변이시키는 반복 최적화 방식이다. N=5 반복(iteration), 5번의 독립 실행(run)이 기본 설정이다. 진화를 제거하고 32개 원샷 샘플링과 비교했을 때, 단 2번의 반복 이후부터 진화 방식이 월등히 앞선다.
보상 반성 (Reward Reflection)
RL 학습 중 각 보상 구성 요소(position_reward, velocity_reward 등)의 최솟값·평균·최댓값과 태스크 피트니스 지표를 체크포인트마다 기록해 LLM에게 텍스트 피드백으로 제공하는 메커니즘이다. "position_reward가 0으로 수렴하고 있다"는 신호를 LLM이 해석해 다음 세대 보상 함수를 개선한다. 이를 제거하면 IsaacGym 태스크 평균 성능이 28.6% 하락한다.
IsaacGym
NVIDIA가 개발한 GPU 가속 물리 시뮬레이터로, CPU 기반 시뮬레이터 대비 최대 1,000배 빠른 RL 훈련이 가능하다. Eureka는 K=16개 후보를 병렬로 평가하고 이를 N=5 반복하므로, IsaacGym 없이는 현실적인 시간 안에 완료가 불가능하다. 관찰 차원 4~446, 행동 차원 1~52에 이르는 9개의 다양한 로봇 태스크가 포함돼 있다.
PPO (Proximal Policy Optimization)
Eureka가 각 보상 함수 후보를 평가할 때 내부적으로 사용하는 RL 알고리즘이다. 모든 후보와 비교 방법에 동일한 PPO 하이퍼파라미터를 적용해 공정한 평가를 보장한다. 5개의 독립 시드로 학습하고 10개 체크포인트 중 최댓값을 태스크 성능으로 사용한다. 알고리즘 자체가 아니라 보상 함수만 바꾸는 것이 Eureka의 핵심이다.
Dexterity Benchmark (Shadow Hand)
52 자유도의 Shadow Hand로 수행하는 20가지 양손 조작 태스크 벤치마크다. 병을 여닫기, 블록 조립, 열쇠 돌리기 등 사람 손과 동등한 정밀도를 요구한다. 관찰 차원이 400~446에 달해 수작업 보상 설계가 극히 어렵다. Eureka는 이 20개 중 15개를 처음으로 성공시켰다.
그래디언트-프리 RLHF
인간이 자연어로 "보행 속도보다 안정성을 높여줘"라고 텍스트 피드백을 주면, LLM이 이를 인-컨텍스트 예시로 해석해 보상 함수를 수정하는 방식이다. 기존 RLHF처럼 보상 모델을 별도로 학습할 필요가 없어 몇 줄의 텍스트만으로 보상을 조정할 수 있다. 사용자 연구(20명)에서 인간 피드백 적용 정책이 75% 선호를 받았다.
L2R (Language-to-Rewards)
LLM을 이용해 언어 지시를 보상 함수로 변환하는 선행 연구로, Eureka의 주요 비교 대상이다. L2R은 사전 정의된 보상 프리미티브 템플릿을 사용하므로 저차원 태스크에서는 경쟁력이 있지만, 고차원 조작 태스크에서는 템플릿 한계로 성능이 크게 떨어진다. Eureka는 템플릿 없이 원시 소스 코드에서 직접 함수를 생성한다.
Pen Spinning (펜 돌리기)
Shadow Hand로 펜을 빠르게 회전시키는 태스크로, 이전까지 어떤 방법으로도 성공하지 못한 초고난도 조작이다. Eureka는 2단계 커리큘럼으로 접근한다: 1단계에서 무작위 자세로 펜을 재배치하는 정책을 학습하고, 2단계에서 Eureka가 생성한 회전 보상으로 파인튜닝한다. 그 결과 여러 사이클의 빠른 회전을 처음으로 달성했다.

핵심 인사이트

Eureka의 핵심 연결고리: GPT-4의 코드 이해력(환경 소스 파싱) + IsaacGym의 병렬 평가 속도(진화 검색 실현) + Reward Reflection(LLM에게 RL 내부 피드백 제공) = 인간 보상 설계를 자동화. 이 세 가지 중 하나라도 빠지면 방법이 성립하지 않는다.

기존 방법의 한계

수작업 보상 설계는 몇 가지 근본적인 문제를 안고 있다.

스케일 문제: 새 태스크마다 처음부터 설계해야 한다. 하이퍼파라미터 하나를 바꾸면 다른 모든 항의 가중치가 바뀌어야 할 수 있어, 고차원 조작 태스크에서는 수백 번의 시행착오가 필요하다.

표현력 문제: 인간이 "자연스럽게 걸어라"를 수식으로 옮기는 데는 도메인 지식과 직관이 필요하다. 관찰 공간이 446차원인 Shadow Hand에서는 어느 변수가 중요한지조차 판단하기 어렵다.

L2R 같은 반자동 방법의 한계: 사전 정의된 보상 프리미티브(approach, grasp, lift 등)를 LLM이 조합하는 방식이라 프리미티브에 없는 행동은 표현 불가다. 저차원(4~10차원) 태스크에서는 경쟁력 있지만 고차원 조작에서는 급격히 성능이 하락한다.

희소 보상: +1/0만 제공하면 에이전트가 성공에 도달하기까지 너무 오랜 시간이 걸린다. 실험에서 희소 보상은 비교 방법 중 가장 낮은 성능을 보였다.

제안 방법의 핵심 아이디어

Eureka는 세 가지 핵심 아이디어를 결합한다.

1. 환경 소스 코드를 컨텍스트로: 자연어 태스크 설명 대신 Python 시뮬레이터 소스 코드 자체를 GPT-4 컨텍스트에 넣는다. 이렇게 하면 LLM이 상태 변수 이름, 타입, 범위를 직접 파악해 실행 가능한 보상 함수를 작성한다. 태스크별 프롬프트 엔지니어링 없이 29개 태스크에 동일한 시스템 프롬프트를 사용한다.

2. 진화적 최적화: 단 한 번 생성하고 끝내지 않는다. 한 세대에 K=16개를 생성 → 병렬 RL 평가 → 최고 선택 → 이를 시드로 K개 변이 생성. 이를 N=5 반복한다. 이 과정이 보상 함수 공간에서의 진화와 동일하다.

3. 보상 반성으로 피드백 루프 완성: 진화의 선택 기준이 태스크 성공률만이라면 어떤 보상 항이 문제인지 LLM이 알 수 없다. Reward Reflection은 각 구성 요소의 값 분포와 태스크 피트니스를 텍스트로 정리해 LLM에게 제공한다. "velocity_reward 평균이 0.01로 거의 기여를 안 한다"는 신호가 다음 세대에서 해당 항을 수정하게 만든다.

모델 구조/알고리즘 흐름

Eureka 전체 파이프라인: 환경 코드 입력 → LLM 보상 생성 → RL 평가 → 보상 반성 → 반복
원문 Figure 2. EUREKA 알고리즘 전체 파이프라인. 출처: Ma et al., "Eureka", ICLR 2024. arXiv:2310.12931

알고리즘은 다음 단계로 작동한다.

단계 1: 컨텍스트 준비. 자동 스크립트가 환경 소스 코드에서 관련 클래스와 상태 변수 정의를 추출해 GPT-4 컨텍스트 윈도우 안에 들어오도록 필터링한다.

단계 2: 초기 보상 집합 생성. 시스템 프롬프트는 "Python TorchScript 호환 보상 함수를 작성하라, 함수 시그니처는 compute_reward(state) -> (reward, components_dict) 형식"이라고 지시한다. K=16개 독립 샘플을 생성한다.

단계 3: 병렬 RL 평가. IsaacGym에서 각 후보에 대해 PPO 5시드 학습을 실행하고, 10개 체크포인트 최대 태스크 성공률로 피트니스를 측정한다.

단계 4: 보상 반성 피드백 작성. 최고 성능 보상을 선택하고, 그 학습 과정에서 각 구성 요소의 min/mean/max 값과 태스크 지표 변화를 텍스트 보고서로 정리한다.

단계 5: 변이 세대 생성. 최고 보상 코드 + 반성 피드백을 컨텍스트에 추가해 K개의 개선 버전을 생성한다. 단계 3~5를 N=5 반복 후 종료.

그래디언트-프리 RLHF 확장: 인간이 텍스트 피드백("속도보다 안정성 높여줘")을 주면, 이 텍스트를 인-컨텍스트 예시로 추가해 LLM이 보상 함수를 즉시 수정한다. 보상 모델 별도 학습 없이 텍스트만으로 행동 조정이 가능하다.

논문 그림/표로 이해하기

Eureka가 평가한 29개 환경: 9개 IsaacGym + 20개 Dexterity 벤치마크
원문 Figure 1. 평가에 사용된 29개 환경 시각화. 출처: Ma et al., "Eureka", ICLR 2024. arXiv:2310.12931

위 그림은 9개 IsaacGym 태스크(ant, ball balancing, cartpole, pen spinning 등)와 20개 Dexterity 태스크(Shadow Hand 양손 조작)를 보여준다. 태스크마다 관찰·행동 차원이 크게 달라서 단일 접근법이 모두를 처리하기 어렵다.

방법별 태스크 성능 비교: Eureka vs Human vs L2R vs Sparse
원문 Figure 4. IsaacGym 9개 태스크에서 방법별 정규화 성능 비교. 출처: Ma et al., "Eureka", ICLR 2024. arXiv:2310.12931

막대 차트에서 Eureka(파란색)가 Human(주황색)을 대부분 태스크에서 초과하거나 동등한 수준임을 확인할 수 있다. L2R(녹색)은 저차원 태스크에서는 경쟁력을 보이지만 고차원 조작 태스크에서 급격히 하락한다.

반복 횟수에 따른 Eureka 성능 향상 곡선
원문 Figure 5. 진화 반복 횟수에 따른 성능 개선. 출처: Ma et al., "Eureka", ICLR 2024. arXiv:2310.12931

반복이 증가할수록 성능이 단조 증가한다. 특히 2번째 반복 이후부터 32개 원샷 샘플링(진화 없이 한 번에 많이 뽑기)을 역전한다. 이는 단순히 더 많은 후보를 뽑는 것보다 반성+변이 루프가 더 효과적임을 보여준다.

실험 설정과 결과 해석

방법 인간 초과 태스크 평균 정규화 개선 Dex 성공 (20개 중)
희소 보상 0% - 0
L2R ~40% 낮음 소수
Human 기준 0% -
✦ Eureka (GPT-4) 83% +52% 15/20
논문 주요 결과 재구성. 29개 태스크, 10개 로봇 형태 평가.

보상 반성 ablation: Reward Reflection을 제거하면 IsaacGym 태스크 평균 성능이 28.6% 하락한다. 고차원 태스크일수록 하락폭이 크다. 이는 단순 태스크 성공률만으로는 LLM이 보상 함수의 어느 부분을 고쳐야 하는지 파악하기 어렵기 때문이다.

인간 초기화 개선: 인간이 설계한 보상 함수를 출발점으로 사용하면 Eureka가 이를 꾸준히 개선한다. 초기 품질과 무관하게 최종 성능이 향상된다. 이는 인간이 관련 변수를 잘 식별하지만 함수적 조합에서 최적점을 놓친다는 것을 시사한다.

핵심 인사이트

Eureka가 발견한 보상 함수는 인간 설계와 상관관계가 낮거나 심지어 음의 상관관계를 보이는 경우도 있었는데, 이런 반직관적 보상이 오히려 더 높은 성능을 내는 사례가 다수 관찰됐다. 인간의 직관이 고차원 조작에서는 오히려 탐색 공간을 제한할 수 있다는 함의다.

그래디언트-프리 RLHF 결과: 사용자 연구에서 Eureka 자동 보상 정책은 전진 속도 7.53 m/s를 달성했지만 보행이 불안정했다. 인간 텍스트 피드백("안정적으로 걸어라") 적용 후 속도는 5.58 m/s로 줄었지만 보행이 훨씬 자연스러워져 참여자 75%가 선호했다.

그래디언트-프리 RLHF: 자동 보상 vs 인간 피드백 적용 정책 비교
원문 Figure 9. 그래디언트-프리 RLHF 비교. 출처: Ma et al., "Eureka", ICLR 2024. arXiv:2310.12931

한계와 비판적 관점

시뮬레이터 의존성: 모든 실험이 IsaacGym에서 진행됐다. 실제 로봇에 적용하려면 sim-to-real 전이 문제를 별도로 해결해야 한다. 시뮬레이터에서 통하는 보상이 실세계에서 같은 행동을 유도한다는 보장이 없다.

컴퓨팅 비용: 하나의 태스크에 K=16 × N=5 = 80개의 보상 함수 후보가 필요하고, 각 후보마다 PPO 5시드 학습을 돌린다. IsaacGym이 없다면 수십 GPU-시간이 필요할 수 있다. 소규모 연구 환경에서는 재현이 어렵다.

GPT-4 의존: GPT-3.5도 작동하지만 GPT-4 대비 성능이 떨어진다. 오픈소스 LLM(Llama, Mistral)으로의 대체 가능성은 검증되지 않았다.

보상 함수 해석 불가: LLM이 생성한 보상 함수는 블랙박스에 가깝다. 어떤 의도로 어떤 변수를 어떻게 조합했는지 이해하기 어려워, 잘못된 보상을 사람이 교정하기가 쉽지 않다.

실세계 연속 태스크 미검증: 조작 태스크 대부분이 에피소드 단위의 명확한 성공 기준을 가진다. 성공 지표가 모호하거나 장기 의존성이 있는 태스크에서의 적용 가능성은 열린 문제다.

구현하거나 응용한다면 무엇을 봐야 하나?

필수 환경:

  • IsaacGym (NVIDIA, 무료 다운로드): GPU 병렬 RL 평가에 필요
  • GPT-4 API (OpenAI): 기본 설정. GPT-3.5-turbo도 사용 가능하나 성능 저하 있음
  • Python 3.8+, PyTorch

오픈소스 코드: eureka-research/Eureka (GitHub). 논문에서 사용한 환경 코드와 프롬프트 템플릿이 공개돼 있다.

핵심 하이퍼파라미터:

  • K=16 (세대당 후보 수), N=5 (진화 반복 횟수), 5 독립 실행
  • PPO: 태스크 불문 동일 하이퍼파라미터 사용
  • 소규모 테스트 시 K=8, N=3으로 줄이면 비용 절감 가능

실용 팁:

  • 환경 소스에서 불필요한 렌더링·I/O 관련 코드를 제거하고 상태 변수 정의만 추출해야 프롬프트 길이를 절약할 수 있다
  • TorchScript 호환성을 위해 생성된 보상 함수에 torch.jit.export 데코레이터가 올바르게 붙어 있는지 자동 검증 스크립트를 추가하는 것이 안전하다
  • 새 로봇/환경에 적용 시 먼저 간단한 태스크(cartpole 수준)로 파이프라인을 검증하고 확장하는 것을 권장

한 줄 결론과 다음에 읽을 논문

GPT-4가 환경 소스 코드를 읽고 스스로 보상 함수를 작성·진화·반성하는 루프만으로, 수백 시간의 전문가 설계를 29개 태스크 중 83%에서 뛰어넘은 결과는 LLM이 RL 엔지니어링의 가장 어려운 병목을 자동화할 수 있음을 보여준다.

다음에 읽을 논문:

  • Text2Reward (arXiv:2309.11489): 자연어 지시에서 MuJoCo 보상을 생성하는 유사 접근, Eureka와 비교 관점으로 읽으면 좋다
  • RLHF (InstructGPT, arXiv:2203.02155): 그래디언트 기반 RLHF와 Eureka의 그래디언트-프리 방식 차이를 이해하는 데 유용하다
  • DrEureka (arXiv:2406.01967): Eureka를 실제 로봇에 적용하기 위한 sim-to-real 확장 연구

출처:

반응형
Comments