시리즈의 글 (25개)
- Agentic AI 논문 읽기: CoALA — 언어 에이전트를 위한 인지 아키텍처
- Agentic AI 논문 읽기: ReAct — 생각과 행동을 엮은 최초의 패턴
- Agentic AI 논문 읽기: CoT — 생각의 사슬이 추론을 깨운 순간
- Agentic AI 논문 읽기: Toolformer — 언어 모델이 스스로 도구를 잡은 순간
- Agentic AI 논문 읽기: AutoGen — 대화로 엮는 다중 에이전트 시스템
- Agentic AI 논문 읽기: MetaGPT — SOP로 설계한 다중 에이전트 조직
- Agentic AI 논문 읽기: Multi-Agent Survey — 집단 지능의 지도를 펼치다
- Agentic AI 논문 읽기: Reflexion — 실패를 언어로 되감는 에이전트
- Agentic AI 논문 읽기: LATS — 트리 탐색으로 추론과 행동을 통합하다
- Agentic AI 논문 읽기: ETO — 실패 궤적으로 에이전트를 훈련하다
- Agentic AI 논문 읽기: AI Agents That Matter — 벤치마크의 함정을 파헤치다
- Agentic AI 논문 읽기: Paradigms — 도구 사용·계획·피드백의 삼각 구도
- Agentic AI 논문 읽기: Halo — DAG로 에이전트 워크플로우를 최적화하다
- Agentic AI 논문 읽기: Tool Use Evolution — 단일 도구에서 다중 오케스트레이션까지
- Agentic AI 논문 읽기: BloombergGPT — 금융 특화 대규모 언어 모델의 탄생
- Agentic AI 논문 읽기: FinGPT — 오픈소스 금융 LLM 프레임워크
- Agentic AI 논문 읽기: ₩on — 한국어 금융 NLP의 첫 번째 벤치마크
- Agentic AI 논문 읽기: DocLLM — 레이아웃 인식 문서 이해 모델
- Agentic AI 논문 읽기: FINCH — 스프레드시트 중심 재무 벤치마크
- Agentic AI 논문 읽기: InvestorBench — 금융 의사결정 에이전트 벤치마크
- Agentic AI 논문 읽기: Constitutional AI — 원칙 기반 자기 개선
- Agentic AI 논문 읽기: RLHF의 한계 — 인간 피드백 강화학습의 미해결 과제
- Agentic AI 논문 읽기: Autonomous Agents Survey — 자율 에이전트 구축의 해부도
- Agentic AI 논문 읽기: Rise and Potential — 뇌·지각·행동으로 본 에이전트 전망
- Agentic AI 논문 읽기: A-MEM — 제텔카스텐에서 영감받은 에이전트 기억 시스템
논문 정보
- 제목: Reflexion: Language Agents with Verbal Reinforcement Learning
- 저자: Noah Shinn, Federico Cassano, Edward Berman, Ashwin Gopinath, Karthik Narasimhan, Shunyu Yao (Northeastern University, MIT, Princeton University)
- 출판: NeurIPS 2023
- arXiv: 2303.11366
시리즈의 앞선 글들에서 우리는 에이전트의 뼈대를 세워왔다. CoALA가 기억-행동-판단이라는 인지 좌표계를 그렸고, CoT가 추론의 씨앗을 심었고, ReAct가 그 추론에 행동을 엮었다. Toolformer는 도구를 집어들었고, AutoGen과 MetaGPT는 에이전트를 여럿으로 불렸다. Multi-Agent Survey는 그 전체 지형을 내려다보았다.
하지만 지형도를 아무리 정교하게 그려도, 하나의 핵심 질문이 남아 있었다. 에이전트가 실패하면 어떻게 하는가? 같은 실수를 반복하지 않으려면 무엇이 필요한가?
2023년 3월, Northeastern University, MIT, Princeton의 공동 연구팀이 이 질문에 답하는 논문을 발표했다. 2023년은 LLM 에이전트 연구의 폭발기였다. ReAct가 추론과 행동의 교차를 보여준 직후, 자연스럽게 떠오른 다음 문제는 "실패한 행동을 어떻게 교정하는가"였다. 전통적 강화학습은 가중치를 업데이트하지만, 수십억 파라미터의 모델을 과제마다 파인튜닝하는 것은 현실적이지 않았다. Reflexion의 아이디어는 놀랍도록 단순하다. 가중치를 바꾸지 말고, 실패를 말로 되돌아보게 하자.
의미적 기울기 — 숫자가 아니라 문장으로 배우기
전통적 강화학습에서 에이전트는 스칼라 보상 신호를 받는다. +1 또는 -1. 성공이냐 실패냐. 이 숫자로 기울기를 계산하고, 가중치를 조정한다. 수십만 번의 반복이 필요한 이유는 하나의 숫자가 담을 수 있는 정보가 극히 제한적이기 때문이다. "실패했다"는 알려주지만, "왜 실패했는지"는 알려주지 않는다.
Reflexion이 제안하는 것은 이 스칼라 신호를 자연어로 확장하는 것이다. 논문은 이를 의미적 기울기(semantic gradient)라 부른다. 수학적 기울기가 파라미터 공간에서 손실을 줄이는 방향을 가리키듯, 의미적 기울기는 의미 공간에서 행동을 개선하는 방향을 가리킨다. 다만 그 방향이 벡터가 아니라 문장으로 표현된다.
인간이 체스에서 진 후 하는 일을 떠올려보면 직관적이다. 점수판을 보고 "졌다"만 확인하는 게 아니라, "중반에 퀸을 너무 일찍 내보내서 수비가 무너졌다. 다음에는 중앙 통제를 먼저 확보해야 한다"라고 복기한다. Reflexion은 LLM에게 이 복기를 시킨다.
세 개의 모듈 — Actor, Evaluator, Self-Reflection
Reflexion은 세 개의 독립적 모듈로 구성된다. 각각이 분리된 역할을 맡으며, 이 분리가 프레임워크의 유연성을 만든다.
Actor는 실제로 환경과 상호작용하는 에이전트다. CoT나 ReAct 같은 기존 행동 생성 전략을 그대로 사용할 수 있다. 핵심은 Actor가 행동할 때 메모리 컴포넌트를 참조한다는 점이다. 이 메모리에 과거의 반성이 저장되어 있다.
Evaluator는 Actor의 결과를 평가한다. 흥미로운 것은 평가 방식이 과제마다 완전히 다르다는 점이다. 추론 과제에서는 정답과의 정확 일치(exact match)를 사용하고, 의사결정 과제에서는 휴리스틱을 사용한다. "같은 행동을 세 번 반복하면 환각", "30단계를 넘기면 비효율적 계획"이라는 규칙이다. 프로그래밍 과제에서는 LLM이 스스로 단위 테스트를 생성하고 실행한다. Evaluator가 하나의 범용 모듈이 아니라 과제에 맞게 교체되는 설계는, Reflexion이 특정 평가 방식에 묶이지 않겠다는 의도를 보여준다.
Self-Reflection이 Reflexion의 이름을 만든 핵심이다. 이 모듈은 실패한 궤적과 Evaluator의 판정을 받아, 자연어로 된 반성을 생성한다. "열쇠를 서랍에서 찾으려 했지만 실제로는 선반 위에 있었다. 다음에는 서랍이 비어 있으면 즉시 다른 위치를 탐색해야 한다." 이런 문장이 에피소드 메모리에 쌓이고, 다음 시도에서 Actor의 컨텍스트에 추가된다.
반복의 구조 — 알고리즘이 돌아가는 방식
Reflexion 프로세스는 반복적 루프다.
- Actor가 환경과 상호작용하여 궤적을 생성한다
- Evaluator가 이 궤적을 평가하여 성공/실패를 판정한다
- 실패했다면, Self-Reflection이 궤적과 판정을 분석하여 반성을 생성한다
- 반성이 에피소드 메모리에 저장된다
- 다음 시도에서 Actor가 이 메모리를 참조하여 새로운 궤적을 생성한다
- 성공하거나 최대 시도 횟수에 도달할 때까지 반복한다
메모리는 슬라이딩 윈도우로 관리된다. 최근 1~3개의 반성만 유지한다. 논문이 쓰인 당시 LLM의 컨텍스트 윈도우가 제한적이었기 때문이다. 이 설계가 함의하는 것은 Reflexion이 전체 이력을 학습하는 것이 아니라, 가장 최근의 실패에서 가장 즉각적인 교훈을 추출하는 데 집중한다는 점이다.
전통적 강화학습과의 차이를 정리하면 이렇다.
| 차원 | 전통적 RL | Reflexion |
|---|---|---|
| 학습 신호 | 스칼라 보상 | 자연어 반성 |
| 파라미터 업데이트 | 가중치 조정 | 없음 (메모리 추가) |
| 해석 가능성 | 낮음 (가중치 변화) | 높음 (반성 텍스트 직접 읽기 가능) |
| 비용 | 파인튜닝 비용 | 추론 비용만 |
| 수렴 보장 | 이론적 보장 존재 | 형식적 보장 없음 |
세 가지 전장에서의 실험
논문은 서로 성격이 다른 세 가지 과제에서 Reflexion을 검증했다. 논문이 발표된 2023년 초 기준의 결과임을 감안해야 한다.
순차적 의사결정: ALFWorld
ALFWorld는 텍스트 기반 가상 가정 환경이다. 134개의 과제 — 숨겨진 물건 찾기, 물건 이동, 조작 — 를 에이전트가 해결해야 한다. ReAct를 Actor로 사용한 Reflexion은 130/134 과제를 해결하여 97%의 성공률을 기록했다. ReAct 단독은 약 75%에서 정체되었고, 환각 비율이 22%로 수렴하여 더 이상 개선되지 않았다.
가장 흥미로운 관찰은 학습 곡선이다. 처음 23회 시도에서 급격한 향상이 일어나고, 이후 12회까지 완만하게 개선된다. 기준선인 ReAct 단독은 시도 67회 사이에서 완전히 정체된다. 환각에 빠진 에이전트는 아이템을 가지고 있다고 믿지만 실제로는 없다. Reflexion은 이 환각을 반성을 통해 포착하고, 다음 시도에서 회피한다.
추론: HotPotQA
다단계 추론 과제에서 Reflexion은 CoT(GT) + GPT-4 조합으로 68%에서 80%로, ReAct + GPT-4 조합으로 39%에서 51%로 성능을 끌어올렸다. 제거 실험이 특히 의미 있다. 에피소드 메모리만 사용하고 자기 반성을 제거하면 +8%의 성능 차이가 발생한다. 과거 궤적을 그대로 기억하는 것보다, 그 궤적에서 교훈을 추출하는 반성 과정이 추가적인 가치를 만든다는 증거다.
프로그래밍: HumanEval과 MBPP
논문이 가장 극적인 수치를 보인 영역이다. HumanEval Python에서 91% pass@1을 달성하여, 당시 GPT-4 단독의 80.1%를 11%p 앞섰다. 이 결과가 당시 기준으로 새로운 SOTA였다.
프로그래밍 과제에서 Reflexion의 작동 방식은 다른 과제와 구별된다. Evaluator가 LLM 자체를 활용하여 단위 테스트를 생성하고, 이 테스트를 실제로 실행하여 피드백을 얻는다. 코드가 테스트를 통과하지 못하면, Self-Reflection이 실패 원인을 분석하고 수정 방향을 제시한다.
제거 실험이 중요한 교훈을 준다. 테스트 생성 없이 자기 반성만 적용하면 성능이 기준선(60%)보다 오히려 떨어진다(52%). 자기 코드가 맞는지 틀린지 판단할 근거가 없는 상태에서 반성하면, 잘못된 방향으로 수정할 수 있다. 반성이 효과를 내려면 정확한 평가가 선행되어야 한다.
| 벤치마크 | 당시 SOTA | GPT-4 단독 | Reflexion |
|---|---|---|---|
| HumanEval (Python) | 65.8 | 80.1 | 91.0 |
| HumanEval (Rust) | — | 60.0 | 68.0 |
| MBPP (Python) | 67.7 | 80.1 | 77.1 |
| LeetcodeHard | — | 7.5 | 15.0 |
MBPP에서 Reflexion이 GPT-4 단독보다 낮은 것도 주목할 만하다. 모든 과제에서 반성이 유효한 것은 아니다.
반성이 작동하지 않는 곳 — 한계의 지형
Reflexion의 한계는 세 가지 축에서 드러난다.
첫째, 로컬 미니마 문제다. 언어적 반성도 결국 일종의 정책 최적화이고, 최적화는 로컬 미니마에 빠질 수 있다. WebShop 실험에서 이 현상이 관찰되었다. 매우 다양하고 독특한 행동이 필요한 환경에서는, 과거 반성이 오히려 탐색을 제한할 수 있다.
둘째, 메모리 용량의 한계다. 슬라이딩 윈도우가 최근 1~3개의 반성만 유지하므로, 장기적 학습이 제한된다. 논문은 벡터 임베딩 DB나 SQL DB로의 확장을 향후 연구로 제안했다.
셋째, 자기 반성 능력 자체가 모델 크기에 의존한다. 논문은 starchat-beta 같은 소형 모델에서는 Reflexion이 개선을 보이지 않았다고 보고한다. 자기 반성은 충분히 강한 모델에서만 나타나는 창발적 능력이다.
2026년의 시선 — 예측의 검증
논문이 쓰인 2023년 초로부터 3년이 지난 지금, Reflexion의 아이디어가 어떻게 전개되었는지 돌아볼 수 있다.
실현된 것: 자기 반성 패턴은 에이전트 설계의 기본 구성요소가 되었다. 거의 모든 주요 에이전트 프레임워크 — LangGraph, CrewAI, AutoGen — 가 실패 시 자기 반성 루프를 내장하고 있다. "실패 → 반성 → 재시도"라는 패턴은 Reflexion 이후 사실상 표준이 되었다.
확장된 것: 메모리의 한계는 컨텍스트 윈도우의 확장(GPT-4 Turbo의 128K, Claude의 200K)과 외부 메모리 시스템의 발전으로 상당 부분 완화되었다. 논문이 제안한 "벡터 DB로의 확장"은 이미 일반적인 구현 패턴이 되었다.
여전히 열린 것: 로컬 미니마 문제는 해결되지 않았다. 반성이 탐색을 제한하는 문제 — 이전 실패에 과도하게 반응하여 유효한 전략까지 회피하는 현상 — 는 여전히 에이전트 설계의 열린 과제다. 또한 "반성의 품질"을 어떻게 보장하는가라는 질문도 남아 있다. 잘못된 반성은 잘못된 학습으로 이어진다.
CoALA 좌표계 위의 Reflexion
시리즈 첫 글에서 세운 CoALA의 인지 아키텍처 좌표계 위에 Reflexion을 놓아보자.
| CoALA 축 | Reflexion의 위치 |
|---|---|
| 기억 | 단기(궤적) + 장기(반성 요약). 슬라이딩 윈도우로 관리 |
| 행동 | Actor가 CoT/ReAct 기반으로 환경과 상호작용 |
| 판단 | Evaluator가 과제별 평가 + Self-Reflection이 언어적 판단 |
Reflexion이 CoALA 프레임워크에 추가하는 것은 판단 축의 확장이다. CoALA가 판단을 "무엇을 할지 결정하는 것"으로 정의했다면, Reflexion은 판단에 시간 축을 더한다 — "과거에 왜 실패했는지 판단하고, 미래에 무엇을 달리할지 결정하는 것".
마무리 — 실패가 자산이 되려면
Reflexion이 보여준 것은 LLM이 실패를 경험이 아니라 교훈으로 변환할 수 있다는 가능성이다. 가중치를 건드리지 않고, 오직 자연어 반성만으로 행동을 개선한다. 하지만 그 가능성에는 조건이 붙는다. 정확한 평가가 선행되어야 하고, 모델이 충분히 강해야 하고, 반성이 잘못된 방향으로 흐르지 않아야 한다.
다음 글에서는 이 반성의 아이디어를 트리 탐색과 결합한 LATS를 읽는다. Reflexion이 직선적으로 되감기를 했다면, LATS는 갈림길에서 여러 경로를 동시에 탐색한다.
이 글은 "Agentic AI 논문 읽기" 시리즈의 여덟 번째 글입니다. 시리즈 전체 목록은 시리즈 페이지에서 확인할 수 있습니다.