[논문 리뷰] Reflexion: Language Agents with Verbal Reinforcement Learning

smj·2026년 3월 31일

review

목록 보기
2/30

한줄 요약: 가중치 업데이트 없이, 자연어 자기 반성을 에피소딕 메모리에 저장하여 LLM 에이전트가 실수에서 학습한다.

항목내용
저자Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, Shunyu Yao
소속Northeastern University, MIT, Princeton University
발표NeurIPS 2023
링크arxiv.org/abs/2303.11366
키워드Self-Reflection, Agent Memory, Gradient-free Learning

1. 문제 정의

LLM 에이전트는 한 번 실패하면 같은 실수를 반복한다. RL로 가중치를 업데이트하면 해결되지만, 이는 비용이 크고 범용 능력을 해칠 수 있다. ReAct 같은 프롬프팅 방식은 한 에피소드 내에서는 추론하지만, 에피소드 간 학습(cross-episode learning) 은 불가능하다.

핵심 질문: 파라미터를 건드리지 않고, 에이전트가 과거 실수에서 학습하는 방법이 있는가?


2. 제안 방법

아키텍처: 3개 컴포넌트

┌─────────────────────────────────────────────────┐
│  Actor: 환경에서 행동하는 LLM 에이전트             │
│    ↓ 행동 궤적(trajectory)                        │
│  Evaluator: 결과를 평가 (성공/실패 + 구체적 피드백) │
│    ↓ 평가 결과                                     │
│  Self-Reflection: 실패 원인을 자연어로 분석         │
│    ↓ 반성 내용                                     │
│  Episodic Memory: 반성을 저장, 다음 시도에 제공     │
└─────────────────────────────────────────────────┘

반성의 실제 예시 (HumanEval 코딩)

시도 1: 함수 구현 → 테스트 실패
  에러: IndexError: list index out of range

Self-Reflection:
  "빈 리스트 입력을 처리하지 않아 IndexError가 발생했다.
   다음 시도에서는 입력 검증을 먼저 수행하고,
   edge case(빈 리스트, 단일 원소)를 테스트해야 한다."

시도 2: 반성 참조 → 입력 검증 추가 → 테스트 통과 ✓

기존 방법론과의 비교

방법에피소드 내 학습에피소드 간 학습가중치 업데이트
Standard Prompting
ReAct
RL (PPO 등)✓ (비용 높음)
Reflexion

3. 실험 결과

3.1 주요 벤치마크

벤치마크태스크 유형기존 SOTAReflexion향상
HumanEval코드 생성80.1%91.0%+10.9%p
MBPP코드 생성72.0%77.1%+5.1%p
AlfWorld가사 태스크 (텍스트)75.0%97.0%+22.0%p
HotPotQA다단계 QA34.0%51.0%+17.0%p

3.2 시도 횟수별 성능 (HumanEval)

시도pass@1
1회 (baseline)80.1%
2회 (1회 반성)88.3%
3회 (2회 반성)91.0%
4회91.3% (수렴)

→ 2-3회 반성으로 대부분의 개선이 달성됨. 4회 이상은 한계 수익 체감.

3.3 반성 품질 분석

저자들이 수작업으로 반성 내용의 품질을 분석:

  • 정확한 원인 파악: ~78%
  • 구체적 개선 방향 제시: ~65%
  • 잘못된 반성 (오진): ~15%

4. 한계점

  • 메모리 누적 문제: 반성이 쌓이면 컨텍스트 윈도우 압박 → 오래된 반성을 요약/삭제하는 메커니즘 부재
  • 자기 반성의 질이 LLM 능력에 의존: 약한 모델(GPT-3.5)은 자주 잘못된 원인을 진단
  • 환경 피드백의 풍부함에 의존: "실패"만 알려주면 반성의 질이 급격히 낮아짐. HumanEval은 구체적 에러 메시지를 제공하므로 유리한 조건
  • 정적 태스크에서만 실험: 환경이 변하는 동적 상황에서의 효과 미검증
  • 근본적 능력 부족은 극복 불가: 모델의 지식/능력 범위 밖의 문제는 아무리 반성해도 해결 불가 — Reflexion은 "할 수 있는데 실수한" 경우에만 효과적
  • 비용: 시도 횟수 × LLM 호출 → 단일 호출 대비 2-4배 비용

5. 의의와 영향

  • Gradient-free self-improvement 패러다임의 시초 — 이후 Self-RAG, CRAG, LATS 등 자기 교정 계열 연구의 직접적 영감
  • "에이전트의 메모리에 무엇을 저장할 것인가?"에 대한 실전적 답변: 실패 경험의 자연어 요약
  • Inner Monologue(로봇), DEPS(게임), Voyager(Minecraft) 등 다른 도메인으로 아이디어 확산
  • 에이전트 평가에서 "최종 성공률"뿐 아니라 "학습 속도(몇 회 만에 성공하는가)" 라는 새로운 메트릭 제시

6. 💬 리뷰어 코멘트

Reflexion의 핵심 인사이트는 "반성의 내용 자체가 프롬프트 엔지니어링이 된다"는 것이다. 첫 시도의 실패 경험이 자연어로 요약되어 다음 시도의 프롬프트에 추가되면, 이는 사실상 경험 기반의 자동 프롬프트 최적화다.

실전 적용 관점에서 가장 유용한 시나리오는 코드 생성이다. 테스트 케이스가 구체적인 에러 피드백을 제공하고, 코드의 정답/오답이 명확하기 때문이다. 반면 "좋은 에세이를 써라" 같은 태스크에서는 피드백이 모호해서 반성의 질이 떨어진다.

DeepSeek-R1의 RL 기반 자기 개선과 비교하면 흥미로운 대비가 있다: R1은 가중치를 업데이트하여 능력 자체를 향상시키고, Reflexion은 가중치를 고정한 채 프롬프트를 개선한다. 전자가 더 근본적이지만, 후자는 기존 모델을 그대로 활용할 수 있다는 실용적 이점이 있다.


관련 논문: ReAct, Self-RAG, Inner Monologue, LATS

0개의 댓글