에이전틱 시스템의 학습
- 7.1 비모수적 학습
- 7.2 모수적 학습: 파인튜닝
에이전트도 사람처럼 경험으로부터 배울 수 있어. 반복 수행을 통해 점점 나아지는 방법이 크게 두 갈래로 나뉘지.
하나는 모델 가중치를 안 건드리고 배우는 비모수적 학습(Nonparametric Learning), 다른 하나는 가중치 자체를 업데이트하는 모수적 학습(Parametric Learning), 즉 파인튜닝이야.
이 구분이 왜 중요하냐면 — GPT-4나 Claude 같은 모델은 API로만 접근 가능하니까 가중치를 못 건드려. 이런 상황에서도 에이전트가 학습할 수 있어야 하잖아. 그래서 비모수적 학습이 먼저 나오고, 그 다음에 직접 모델을 튜닝할 수 있는 경우의 전략이 이어지지.
비모수적 학습의 핵심 아이디어는 간단해. 모델 파라미터를 업데이트하지 않고, 프롬프트에 넣어주는 컨텍스트를 바꿔서 성능을 개선하는 거야. 이전 경험을 메모리에 저장하고, 다음에 비슷한 상황이 오면 그걸 꺼내서 참고하는 방식이지.
세 가지 접근법이 있어: 예시 학습(Exemplar Learning), 리플렉시온(Reflexion), 경험 학습(Experiential Learning).
가장 직관적인 건 예시 학습이야. 에이전트가 과거에 성공한 사례를 저장해뒀다가, 새로운 태스크를 수행할 때 유사한 성공 사례를 찾아서 프롬프트에 few-shot 예시로 넣어주는 거거든.
작동 원리를 보면:
- 에이전트가 태스크를 수행하고 성공/실패 결과를 받음
- 성공한 경우의 (입력, 행동 시퀀스, 결과)를 외부 메모리에 저장
- 새 태스크가 들어오면 벡터 유사도 등으로 관련 성공 사례를 검색
- 검색된 예시를 프롬프트 컨텍스트에 포함시켜서 실행
일종의 모범 답안 모아놓기인 셈이야. 사람으로 치면 기출문제 풀이집 같은 거지. 이전에 잘 풀었던 문제를 보면서 비슷한 패턴을 적용하는 거야.
이 방법의 장점은 구현이 쉽고 별도의 학습 과정이 필요 없다는 거야. 벡터 DB에 성공 사례 쌓아두고 RAG처럼 검색해서 넣어주면 돼. 단점은 당연히 컨텍스트 윈도 크기에 제한을 받고, 실패에서 배우는 게 아니라 성공만 따라하는 거라 일반화 능력이 좀 떨어지지.
**리플렉시온(Reflexion)**은 2023년 Noah Shinn 등이 발표한 프레임워크로, 에이전트에게 자기 반성 능력을 주는 거야. 기존 강화학습은 스칼라 보상(숫자 점수)으로 피드백을 주는데, 리플렉시온은 자연어로 피드백을 줘. 이게 핵심 차이점이지.
시스템은 세 가지 컴포넌트로 구성돼:
- Actor — 실제로 행동하는 에이전트. 환경과 상호작용하면서 태스크를 수행
- Evaluator — 행동 결과를 평가. 성공/실패 여부 판정
- Self-Reflection — 실패했을 때 뭘 잘못했는지를 자연어로 분석하는 모듈
흐름은 이래:
- Actor가 태스크를 수행함
- Evaluator가 결과를 평가 — 실패하면 3번으로
- Self-Reflection 모듈이 실패 원인을 자연어로 분석
- 그 분석 결과를 장기 메모리에 저장
- 다음 시도에서 Actor는 이 반성 메모를 참고해서 다시 시도
여기서 단기 메모리(최근 행동 궤적)와 장기 메모리(누적된 반성문)가 분리되어 있다는 게 중요해. Actor는 매번 둘 다 참조하면서 의사결정을 하거든.
리플렉시온의 강력한 점은 가중치 업데이트 없이도 에이전트가 같은 태스크에서 반복적으로 개선된다는 거야. HotpotQA(다단계 질의응답)에서 기존 방법 대비 유의미한 성능 향상을 보여줬고, 프로그래밍 태스크(HumanEval)에서도 여러 번 시도하면서 91%까지 올라간 결과가 있어.
근데 리플렉시온에도 한계가 있지. 같은 태스크를 여러 번 반복해야 해서 한 번에 성공해야 하는 상황에서는 못 쓰고, 태스크 간(across tasks) 전이 학습은 잘 안 돼. A 문제에서 배운 게 B 문제에 자동으로 적용되지 않는다는 뜻이야.
ExpeL은 리플렉시온의 한계를 넘어서려는 시도야. 리플렉시온이 같은 문제를 반복하면서 배우기라면, ExpeL은 여러 문제를 풀면서 범용적인 교훈을 추출하기에 가까워.
사람으로 비유하면 이래. 리플렉시온은 같은 수학 문제를 틀리면 다시 풀어보는 거고, ExpeL은 수학 문제 100개 풀어본 다음 "아, 이런 유형은 이렇게 접근하면 되는구나"라는 전략 노트를 정리하는 거야.
ExpeL의 학습 과정:
- 경험 수집(Experience Gathering) — 에이전트가 여러 훈련 태스크를 시행착오로 수행하면서 성공/실패 궤적을 모음
- 인사이트 추출(Insight Extraction) — 수집된 경험에서 자연어 규칙을 뽑아냄. 두 가지 방법을 써:
- 같은 태스크에서 실패한 과정과 성공한 과정을 비교해서 뭐가 달랐는지 분석
- 서로 다른 태스크의 성공 사례들에서 공통 패턴 식별
- 적용 — 테스트 시점에서 추출된 인사이트 + 유사한 성공 사례를 프롬프트에 넣어서 실행
결과적으로 ExpeL은 HotpotQA에서 리플렉시온과 비슷한 성능을 내면서도 반복 시행 없이 한 번에 답을 내. ALFWorld(텍스트 기반 환경 조작) 벤치마크에서는 리플렉시온보다 더 나은 성능을 보여줬어.
이 차이가 의미하는 건 뭐냐면 — 리플렉시온은 태스크별로 반복해서 개선하는 거고, ExpeL은 경험을 태스크 간에 전이시킬 수 있다는 거야. 실제 프로덕션 환경에서는 같은 요청이 다시 올 거라는 보장이 없으니까, ExpeL 방식이 더 실용적일 수 있지.
이 세 가지를 관통하는 핵심이 있어. 현실에서 GPT-4, Claude 같은 최고 성능 모델은 API로만 접근 가능하고 가중치를 공개하지 않아. 그래서 파인튜닝이 물리적으로 불가능한 경우가 많지. 비모수적 학습은 이런 제약 아래에서도 에이전트가 경험으로부터 개선될 수 있는 유일한 방법인 셈이야.
다만 한계도 명확해. 컨텍스트 윈도에 넣을 수 있는 정보량에 제한이 있고, 매번 검색/삽입하는 비용이 들고, 근본적으로 모델의 능력 자체가 바뀌는 건 아니거든. 같은 모델이 더 좋은 정보를 보고 판단하는 것이지, 더 좋은 모델이 되는 것은 아니라는 거야.
비모수적 학습이 "더 좋은 프롬프트"로 성능을 올리는 거였다면, 모수적 학습은 진짜로 모델 가중치를 업데이트해서 모델 자체를 바꾸는 거야. 즉 파인튜닝이지.
대형 파운데이션 모델을 파인튜닝하는 건 가능하긴 한데, 비용과 리스크가 커.
먼저 비용 문제 — 70B 파라미터 모델을 풀 파인튜닝하려면 GPU 수십 대가 필요하거든. LoRA 같은 효율적 파인튜닝 기법이 있어서 좀 나아졌지만, 그래도 실험 한 번 돌리는 데 상당한 리소스가 들어.
더 큰 문제는 **catastrophic forgetting(치명적 망각)**이야. 특정 도메인 데이터로 파인튜닝하면 그 도메인에서는 좋아지는데, 원래 잘하던 범용 능력이 떨어질 수 있거든. 에이전트는 다양한 상황에서 유연하게 대처해야 하는데, 파인튜닝으로 한쪽만 강해지면 전체적으로 손해야.
그래서 대형 모델 파인튜닝은 보통 아주 특수한 경우에만 해. 범용 에이전트를 만드는 게 목적이면 비모수적 방법이나 소형 모델 전략이 더 현실적이지.
여기서 흥미로운 관점이 나와. 에이전틱 시스템에서 모든 단계가 다 GPT-4급 추론 능력을 필요로 하지는 않거든. 의도 분류, 엔티티 추출, 도구 선택, 결과 로깅 같은 작업은 사실 10B 이하의 작은 모델로도 충분히 처리 가능해.
2025년 기준으로 **소형 언어 모델(SLM)**이라 불리는 10B 이하 모델들이 급속도로 발전했어. Phi, Gemma, Llama 계열의 작은 버전들이 특정 태스크에서 놀라운 성능을 보여주고 있지.
핵심 전략은 **지식 증류(Knowledge Distillation)**야. 큰 모델(teacher)이 생성한 고품질 데이터로 작은 모델(student)을 학습시키는 거지. 큰 모델의 추론 과정까지 포함시키면 작은 모델도 비슷한 사고 패턴을 학습할 수 있어. Google Research의 "Distilling Step by Step" 논문이 보여준 건 — 작은 모델이 큰 모델보다 적은 데이터로도 더 나은 성능을 낼 수 있다는 거야. 핵심은 중간 추론 단계를 함께 학습시키는 거지.
에이전틱 시스템에서의 활용 시나리오는 이래:
- 복잡한 계획 수립/추론은 대형 모델이 처리
- 반복적이고 좁은 범위의 태스크(의도 분류, 도구 호출 파싱 등)는 파인튜닝된 소형 모델이 처리
- 비용은 대폭 줄이고, 지연시간도 줄이고, 전체 시스템 성능은 유지하거나 오히려 향상
이게 실제로 프로덕션에서 쓰는 패턴이야. 에이전트 워크플로의 각 단계마다 적절한 크기의 모델을 배치하는 모델 라우팅 전략과 맞물리는 거지.
**SFT(Supervised Fine-Tuning)**는 가장 기본적인 파인튜닝 방법이야. 사전학습된 모델에 (입력, 원하는 출력) 쌍으로 구성된 데이터셋을 추가 학습시키는 거지.
에이전트 맥락에서 SFT 데이터는 이런 식으로 구성돼:
- 입력: 사용자 요청 + 현재 상황 컨텍스트
- 출력: 에이전트가 취해야 할 행동 (도구 호출, 응답 생성 등)
SFT의 장점은 명확해. 직접적인 지도 신호가 있어서 학습이 안정적이고, "이런 상황에서는 이렇게 해라"를 정확하게 가르칠 수 있지.
하지만 한계도 있어. SFT는 정답을 따라하게 하는 건데, 에이전트의 진짜 문제는 "여러 괜찮은 선택지 중 더 나은 걸 고르기"인 경우가 많거든. A도 괜찮고 B도 괜찮은데 A가 좀 더 나은 상황에서, SFT는 "A가 정답"이라고만 가르치지 "왜 A가 B보다 나은지"는 안 가르쳐줘.
여기서 **DPO(Direct Preference Optimization)**가 등장하지. RLHF(인간 피드백 강화학습)의 복잡성을 줄인 방법이야. RLHF는 보상 모델을 따로 학습시키고, 그걸로 정책을 업데이트하는 복잡한 파이프라인이 필요했는데, DPO는 선호 데이터에서 직접 정책을 최적화해.
DPO 학습 데이터는 이런 형태야:
- 입력: 동일한 프롬프트
- 선호 응답 (chosen): 사람이 더 좋다고 판단한 응답
- 비선호 응답 (rejected): 사람이 덜 좋다고 판단한 응답
모델은 선호 응답의 확률은 높이고, 비선호 응답의 확률은 낮추는 방향으로 학습해. 별도의 보상 모델 없이 선호 쌍만으로 직접 최적화하니까 RLHF보다 훨씬 구현이 간단하고 학습이 안정적이지.
SFT와 DPO를 조합하는 게 현재 표준 파이프라인이 되고 있어:
- 먼저 SFT로 기본적인 명령 따르기/응답 능력을 학습
- 그 다음 DPO로 "더 좋은 응답"을 선호하도록 미세 조정
SFT가 기본기를 가르치는 거라면, DPO는 센스를 가르치는 거라고 보면 돼. 에이전트로 치면 — SFT는 도구를 쓸 줄 알게 하고, DPO는 언제 어떤 도구를 쓰는 게 더 적절한지를 학습시키는 거야.
**RLVR(Reinforcement Learning with Verifiable Rewards)**은 2025년 LLM 훈련 방법론에서 가장 뜨거운 키워드였어. DeepSeek-R1이 이 방법으로 훈련되면서 폭발적인 관심을 받았지.
기존 RLHF의 문제가 뭐였냐면 — 사람이 "좋은 응답"을 판단하는 게 주관적이라는 거야. 같은 응답을 두고 사람마다 평가가 다를 수 있고, 보상 모델도 이 주관성을 학습하게 되거든.
RLVR은 이걸 뒤집어. 검증 가능한(Verifiable) 보상을 쓰는 거야. 수학 문제의 정답 여부, 코드의 테스트 통과 여부 같이 기계적으로 맞고 틀림을 판정할 수 있는 보상 신호를 사용하지.
DeepSeek-R1이 보여준 게 충격적이었던 건:
- 지도 학습 데이터 없이 RLVR만으로 훈련한 R1-Zero 모델이 스스로 chain-of-thought 추론을 발달시킴
- 사람이 "이렇게 생각해"라고 안 가르쳤는데 모델이 알아서 단계적 추론을 하기 시작한 거야
- 수학, 코딩 벤치마크에서 사람 수준을 넘어서는 성능 달성
RLVR에서 주로 쓰이는 알고리즘이 **GRPO(Group Relative Policy Optimization)**야. 기존 PPO처럼 별도의 가치 함수(critic)를 학습시키는 대신, 같은 입력에 대해 여러 개의 응답을 샘플링하고 그 그룹 내에서 상대적으로 보상이 높은 응답을 강화하는 방식이지. 구현이 더 단순하면서도 효과적이야.
에이전트 맥락에서 RLVR이 특히 강력한 이유는, 에이전트의 행동은 결과로 검증 가능한 경우가 많기 때문이야:
- API 호출이 성공했는가?
- 사용자 요청을 정확히 수행했는가?
- 생성한 코드가 테스트를 통과했는가?
이런 바이너리 피드백이 자연스럽게 RLVR의 보상 신호가 될 수 있지.
2025년 기준 최신 모델 훈련 파이프라인을 정리하면:
- 사전학습(Pretraining) — 대규모 텍스트로 범용 언어 능력 학습
- SFT — 명령 따르기, 대화 형식 학습
- DPO — 인간 선호에 맞는 응답 생성 학습
- RLVR — 수학, 코딩 등 검증 가능한 태스크에서 추론 능력 강화
AI2의 Tulu 3가 이 전체 파이프라인을 오픈소스로 공개해서, 누구나 base 모델에 이 레시피를 적용할 수 있게 됐어.
정리
7장에서 가져갈 거:
- 비모수적 vs 모수적은 양자택일이 아니야. 상황에 따라 조합해서 쓰는 거지. API만 쓸 수 있으면 비모수적, 모델을 직접 운영하면 모수적도 가능하고
- 리플렉시온은 태스크 내, ExpeL은 태스크 간 학습. 둘 다 가중치 안 건드리면서 에이전트를 개선하는 방법이지만 범위가 달라
- SFT -> DPO -> RLVR이 현재 파인튜닝의 표준 파이프라인이야. SFT로 기본기, DPO로 선호 정렬, RLVR로 추론 능력 강화
- 소형 모델 + 증류가 에이전틱 시스템의 현실적 전략이야. 모든 단계에 GPT-4 쓸 필요 없거든. 반복적인 좁은 태스크는 파인튜닝된 소형 모델이 더 빠르고 싸지