본문으로 건너뛰기

Reflexion: 재학습 없이 실수로부터 학습하는 언어 에이전트

· 약 5분
Mike Thrift
Mike Thrift
Marketing Manager

실수를 할 때마다 매번 재학습하지 않고도 시간이 지남에 따라 더 똑똑해지는 Beancount 장부 에이전트를 구축하려면 무엇이 필요할지 고민해 왔습니다. Shinn 등의 "Reflexion: Language Agents with Verbal Reinforcement Learning" (NeurIPS 2023)은 이 질문을 정면으로 다루고 있으며, 그 해답은 유망하면서도 헤드라인 수치가 시사하는 것보다 더 제약적입니다.

논문 요약

2026-04-25-reflexion-language-agents-verbal-reinforcement-learning

Reflexion (Shinn, Cassano, Berman, Gopinath, Narasimhan, Yao; NeurIPS 2023)은 비용이 많이 드는 강화 학습을 통해 모델 가중치를 조정하는 대신, 에이전트가 자연어로 스스로의 실패 분석을 작성하게 함으로써 성능을 향상시킬 수 있다고 제안합니다. 매 시도 후, 자가 반성(Self-Reflection) 모델이 궤적과 보상 신호를 읽고 언어적 사후 분석을 생성하여 이를 에피소드 메모리 버퍼에 추가합니다. 다음 시도에서 행위자(Actor)는 행동하기 전에 축적된 반성 내용을 읽습니다. 그래디언트 계산도, 모델 파인튜닝도 필요하지 않습니다. "학습"은 전적으로 컨텍스트 윈도우 내에서 이루어집니다.

행위자(Actor), 평가자(Evaluator), 자가 반성(Self-Reflection)의 세 가지 구성 요소로 이루어진 아키텍처는 다양한 작업 유형을 수용할 수 있을 만큼 모듈식입니다. 평가자는 바이너리 단위 테스트 결과, LLM 심사위원 또는 작업별 휴리스틱이 될 수 있습니다. 이러한 유연성 덕분에 이 논문은 코딩 벤치마크 이상의 흥미로운 지점을 시사합니다.

주요 아이디어

  • HumanEval Python pass@1에서 Reflexion + GPT-4는 80%였던 GPT-4 베이스라인에서 상승한 **91%**에 도달했습니다. 이는 실질적이고 큰 격차입니다. Leetcode Hard에서는 7.5% → 15%로 도약했는데, 이는 진전이기는 하지만 이러한 문제들이 얼마나 어려운지 상기시켜 줍니다.
  • AlfWorld(텍스트 기반 가계 계획)에서 Reflexion은 12회 시도 후 130/134개의 작업을 해결했으며, 이는 ReAct 베이스라인의 108/134와 비교됩니다. 이는 논문에서 가장 설득력 있는 의사 결정 결과입니다.
  • HotpotQA 멀티홉 QA에서 CoT + Reflexion은 100개의 샘플링된 질문에 대해 61%에서 75%의 정확도(Exact Match)로 향상되었습니다.
  • MBPP(또 다른 Python 벤치마크)에서 Reflexion은 성능을 약간 저하시켰습니다: 80.1% → 77.1%. 논문은 이 부분을 크게 강조하지 않았습니다.
  • WebShop에서 Reflexion은 도움이 되지 못했습니다. 저자들은 이 작업이 "상당한 다양성과 탐색"을 요구하기 때문이라고 분석했습니다. 에이전트가 제품 검색 전반에 일반화되지 않는 무익한 반성을 작성했기 때문입니다.
  • 메모리는 1~3개의 저장된 경험으로 제한됩니다. 이는 컨텍스트 길이를 고려할 때 실용적이지만, 에이전트가 장기간의 배포 과정에서 학습을 축적할 수 없음을 의미합니다.

성과와 한계

핵심 주장은 타당합니다. 언어적 반성은 명확하고 검증 가능한 피드백이 있는 작업에서 성능을 향상시킵니다. 코드가 단위 테스트를 통과했는지 여부를 알 수 있다면, 반성 모듈은 추론할 수 있는 구체적인 근거를 갖게 됩니다. AlfWorld와 HumanEval 결과는 실질적이고 의미가 있습니다.

하지만 WebShop의 실패는 시사하는 바가 크며, 논문은 이를 다소 과소평가하고 있습니다. 반성은 평가자가 명확하고 실행 가능한 신호를 생성할 수 있을 때 효과적입니다. 실패 모드가 "에이전트가 거대한 탐색 공간의 잘못된 부분을 탐색했다"인 경우, "다음에는 다른 검색어를 시도해 봐"라고 말하는 것만으로는 수렴하지 않습니다. 이는 구조적인 한계입니다. 언어적 강화는 탐색 전략의 대체재가 될 수 없습니다.

코딩 실험에도 저자들이 블로그 포스트에서 인정한 순환 논리 구조가 있습니다. 에이전트가 자신의 코드를 평가하기 위해 스스로 단위 테스트를 생성한다는 점입니다. 결함이 있는 테스트 세트는 거짓 양성(False Positive)을 만들어냅니다. HumanEval의 91% 수치는 HumanEval이 정답 테스트를 제공하기 때문에 유지되지만, 외부 오라클이 존재하지 않는 새로운 문제에서 에이전트의 자기 평가 루프는 신뢰도가 떨어집니다.

재현성 또한 실질적인 우려 사항입니다. 모든 주요 결과는 GPT-4를 사용했으며, starchat-beta 실험은 베이스라인 대비 개선이 없음을 보여주었습니다. 즉, 이 기법은 모델의 성능(Capability)에 크게 의존합니다. 더 작거나 오픈 가중치 모델을 운영하는 팀은 동일한 이득을 기대하기 어려울 것입니다.

금융 AI에 중요한 이유

Beancount 사용 사례는 Reflexion이 잘 작동하게 만드는 바로 그 특성을 가지고 있습니다: 명확한 평가자. 에이전트가 거래를 잘못 분류하면, 장부 잔액 확인이나 대조 단계를 통해 바이너리 신호(장부의 균형이 맞거나 맞지 않거나)를 생성할 수 있습니다. 이는 WebShop의 모호한 제품 검색 보상보다 훨씬 더 나은 피드백 환경입니다.

구체적으로, 실패한 기입 시도(유효하지 않은 계정, 잘못된 통화, 어설션 실패) 후에 다음과 같은 언어적 반성을 생성하는 Beancount 기록 에이전트를 상상해 볼 수 있습니다: "Expenses:Meals를 사용했지만 이 계정은 하위 카테고리가 필요함. 다음에는 기록하기 전에 계정 계층 구조를 확인하겠음." 이 반성은 저장되었다가 다음 유사한 거래 시 검색됩니다. 에이전트는 자신의 오류로부터 세션별 정책을 효과적으로 축적하게 됩니다.

메모리 제한은 주요 아키텍처적 과제입니다. 1~3개의 경험 버퍼는 단일 세션에는 괜찮지만, 배포된 회계 에이전트는 수천 건의 거래와 수주간의 운영을 통해 학습해야 합니다. 반성 내용을 요약하거나 색인화하여 Reflexion을 장기 기억으로 확장하는 것은 여전히 열린 문제입니다. 이 논문은 그 문제를 해결하지 못했습니다.

다음으로 읽어볼 것들

  • Language Agent Tree Search (LATS) (Zhou et al., arXiv:2310.04406; ICML 2024) — 반성-재시도 루프에 몬테카를로 트리 탐색(MCTS)을 결합하여 Reflexion을 확장합니다. 에이전트가 하나의 궤적에 고정되지 않고 여러 추론 분기를 탐색할 수 있게 합니다. GPT-4로 HumanEval에서 92.7%를 달성했습니다.
  • Retroformer (Yao et al., arXiv:2308.02151; ICLR 2024) — 동일한 LLM이 스스로 반성하는 대신, 정책 그래디언트를 통해 별도의 경량 회고 모델을 학습시켜 반성 과정을 작업 전반에 걸쳐 학습 가능하게 만듭니다. 더 원칙적이지만 파인튜닝이 필요합니다.
  • Self-Reflection in LLM Agents: Effects on Problem-Solving Performance (arXiv:2405.06682, 2024) — 반성이 언제, 왜 도움이 되는지 구체적으로 조사한 실증적 연구로, 작업 유형별 절제 연구(ablation)를 포함합니다. Reflexion을 적용할지 다른 수정 전략을 사용할지 판단하는 데 유용합니다.