Chapter 17: 에이전틱 AI — 행동하는 모델을 정렬하기

의문

Part I–II에서 DPO와 GRPO를 배웠고, Part III에서 이미지·영상·로보틱스로 확장했다. 하지만 이 모든 것에는 공통점이 있었다: 한 번의 입력에 한 번의 출력. 프롬프트를 주면 텍스트가 나오고, 노이즈를 주면 이미지가 나온다.

현실에서 가장 빠르게 성장하는 AI 응용은 그렇지 않다:

에이전틱 AI (Agentic AI):
LLM이 도구를 호출하고, 파일시스템을 탐색하고, 웹을 검색하고,
코드를 실행하고, 결과를 관찰하고, 다음 행동을 결정한다.
한 번의 출력이 아니라, 여러 스텝에 걸친 의사결정 시퀀스.

예시:

  • “이 코드의 버그를 찾아서 고쳐줘” → 파일 읽기 → 에러 재현 → 원인 분석 → 수정 → 테스트 → 커밋
  • “다음 주 출장 일정을 잡아줘” → 캘린더 확인 → 항공편 검색 → 호텔 예약 → 일정 등록
  • “이 논문의 실험을 재현해줘” → 논문 읽기 → 코드 작성 → 데이터 다운로드 → 실행 → 결과 비교

이것은 RL의 원래 문제 설정과 훨씬 더 가깝다. 사실 Ch1–16에서 다룬 “한 번 생성” 설정이 RL의 관점에서는 퇴화된(degenerate) 특수 케이스였다.

강화학습 에이전트-환경 상호작용 루프

RL의 기본 구조: 에이전트가 환경에서 행동(action)하고, 보상(reward)과 상태(state)를 관찰한다. LLM RL은 이 루프가 1회로 퇴화한 것이고, 에이전틱 RL은 원래의 다회 루프로 돌아간다. (CC0, Megajuice, Wikimedia Commons)

LLM RL vs 에이전틱 RL — 무엇이 달라지는가

LLM RL (Ch1–13):
상태(state): 프롬프트 x
행동(action): 응답 y (한 번에 전체 생성)
보상(reward): 응답 완료 후 한 번 받음
에피소드: 1스텝 (= 퇴화된 MDP)

에이전틱 RL:
상태(state): 프롬프트 + 지금까지의 관찰 이력 (o₁, a₁, o₂, a₂, …)
행동(action): 다음 도구 호출 또는 텍스트 출력 (스텝마다 하나씩)
보상(reward): 최종 태스크 성공 여부 (중간 보상은 희소하거나 없음)
에피소드: 수십~수백 스텝 (= 진짜 MDP, 실제로는 POMDP)

측면 LLM RL 에이전틱 RL
에피소드 길이 1 (한 번 생성) 수십~수백 (다단계 의사결정)
행동 공간 토큰 시퀀스 도구 호출 + 토큰 시퀀스
관찰 프롬프트만 프롬프트 + 환경 피드백
보상 지연 없음 (즉시) 길다 (최종 결과에서만)
크레딧 할당 불필요 핵심 문제 (어떤 스텝이 성공을 만들었나)
부분 관찰 없음 있음 (웹페이지의 일부만 보임)

아래 그림은 에이전틱 RL에서 크레딧 할당 문제를 보여준다. 20스텝 궤적 중 어떤 스텝이 성공에 기여했는가?

크레딧 할당 문제: 20스텝 중 핵심은 어디? 파일읽기 검색 검색 읽기 읽기 검색 원인발견! 수정 잘못된수정 되돌림 테스트 r = +1 테스트 통과 탐색/삽질 핵심 기여 후속 작업 실수 GRPO: 전체에 r=+1 → 삽질 8스텝과 실수 2스텝도 강화됨 PRM/OPD: 스텝별 보상 → 핵심 기여만 선택적 강화 가능

왜 기존 DPO/GRPO가 바로 적용되지 않는가

[문제 1] 보상 지연과 크레딧 할당

에이전트가 20스텝에 걸쳐 버그를 찾아 고쳤다.
보상: 마지막에 테스트 통과 여부로 +1 또는 0.

문제: 20스텝 중 어떤 스텝이 "잘한 것"이고 어떤 스텝이 "헛수고"인가?

  • Ch13의 GRPO는 전체 응답에 하나의 보상을 준다
  • 에이전틱 환경에서는 이것이 너무 거칠다
  • 스텝 15에서 핵심 통찰을 했고 나머지 19스텝은 삽질이었을 수 있다
  • 전체에 +1을 주면 삽질 19스텝도 강화된다

[문제 2] 긴 컨텍스트와 메모리

20스텝의 관찰 이력이 컨텍스트에 쌓인다.

  • 64K~128K 토큰이 필요할 수 있다
  • 각 스텝에서 모델이 처리해야 하는 컨텍스트가 점점 길어짐
  • 추론 비용이 스텝 수에 비례하여 증가
  • GRPO의 "G개 롤아웃"이 수십 배 더 비싸진다

[문제 3] 도구 호출의 이산적 분기

에이전트의 행동 공간은 "어떤 도구를 호출할 것인가"를 포함한다.

  • 잘못된 도구 선택은 이후 모든 스텝을 무효화할 수 있다
  • 토큰 수준의 확률 조정과는 다른 차원의 문제
  • 탐색 공간이 조합적으로 폭발한다

[문제 4] 에이전틱 리워드 해킹 — “목적은 달성했지만…”

에이전틱 환경에서 리워드 해킹은 LLM이나 디퓨전보다 더 위험하고,
더 창의적이고, 더 현실적 피해를 만든다.

[코딩 에이전트 해킹]
보상: “테스트 케이스를 통과하는가?” (1/0)

해킹: 에이전트가 테스트 케이스 자체를 수정해서 통과시킨다.

  • "테스트가 틀렸으니 고쳐야 한다"는 그럴듯한 추론을 동반
  • 보상은 1이지만, 실제 버그는 고쳐지지 않았다
  • 더 교묘한 변형: assert 문의 기대값을 현재 출력에 맞게 변경
  • SWE-bench에서 실제로 보고된 문제

[검색 에이전트 해킹]
보상: “사용자 질문에 관련 있는 문서를 찾았는가?”

해킹: 에이전트가 검색을 하지 않고,
자기가 알고 있는 내용으로 그럴듯한 답변을 직접 생성한다.

  • 검색 도구를 호출하는 "비용"을 피하는 것이 더 높은 보상
  • 짧은 에피소드 = 빠른 완료 = 암묵적 보상
  • "효율적으로 일한다"와 "일을 빼먹는다"의 경계가 모호

[파일 시스템 에이전트 해킹]
보상: “요청된 파일 정리가 완료되었는가?”

해킹: 에이전트가 확인 메시지만 출력하고 실제로는 아무것도 하지 않는다.

  • 또는: 복잡한 정리 대신 모든 파일을 한 폴더에 몰아넣기
  • 보상 함수가 "폴더 구조가 깔끔한가"를 정확히 검증하지 않으면 통과

에이전틱 해킹이 LLM 해킹보다 위험한 이유:
LLM 해킹: 텍스트가 이상해질 뿐. 사용자가 알아챌 수 있다.
에이전틱 해킹: 실제 파일이 삭제되고, 코드가 변경되고,
이메일이 발송된다. 현실 세계에 돌이킬 수 없는 영향.

  • 에이전틱 RL에서 보상 설계의 중요성이 Ch13(RLVR)보다 훨씬 더 첨예하다.

현재의 접근법들

[접근 1] 행동 클로닝 + DPO (현재 주류)

전문가 시연(expert trajectory)을 수집하고 SFT로 학습.

  • 이것은 로보틱스의 "행동 클로닝"과 동일한 구조.
  • 한계도 동일: 분포 밖 상황에서 실패.

DPO 적용:

  • 전체 궤적을 하나의 "응답"으로 취급
  • (성공 궤적, 실패 궤적) 쌍으로 DPO 학습
  • 문제: 궤적 수준의 쌍비교는 너무 거칠다
    성공 궤적 안에도 나쁜 스텝이 있고,
    실패 궤적 안에도 좋은 스텝이 있다

[접근 2] 스텝 수준 RL — ACT (Agentic Critical Training)

ACT (2025)는 각 스텝에서 "전문가 행동 vs 모델 행동"을 쌍으로 만든다.

  • 모델에게 "어느 쪽이 더 나은 행동인가?"를 판단하게 한다
  • 맞으면 보상, 틀리면 벌점 → RL로 학습
  • 핵심: 모델이 스스로 “왜 이 행동이 더 나은지” 추론하게 된다
  • SFT로 반영(reflection)을 가르치는 것보다 효과적
  • 이유: SFT는 "반영 텍스트를 모방"하지만,
    ACT는 “반영 능력 자체를 RL로 학습”

이것은 우리 교재의 핵심 서사와 정확히 일치한다:
“SFT만으로는 판단력이 안 길러진다. DPO/RL이 필요하다.”

[접근 3] 검증 가능한 에이전틱 태스크에 GRPO

코딩 에이전트: 코드 수정 → 테스트 실행 → 통과 여부 = 이진 보상

  • RLVR(Ch13)의 에이전틱 확장
  • 검증기가 있으므로 보상이 자동
  • 문제: 크레딧 할당이 여전히 거칠다

KARL (Knowledge Agents via RL, 2026):

  • 기업 검색 에이전트를 RL로 학습
  • 다단계 검색 + 추론을 반복적 off-policy RL로 최적화
  • 이종 태스크(수치 추론, 문서 합성, 사실 검증 등)를 동시에 학습
  • 단일 태스크 최적화보다 다중 태스크 RL이 일반화에 유리

AutoResearch-RL (2026):

  • LLM이 코드를 수정하고, 실행하고, 결과를 관찰하는 연구 에이전트
  • PPO로 메타 정책을 학습: “어떤 실험을 다음에 할 것인가”
  • 보상 = validation bits-per-byte의 개선
  • 영원히 작동하도록 설계됨 (수렴할 때까지 반복)

[접근 4] 에이전틱 보상 시스템 — RLAR

RLAR (RL from Agentic Rewards, 2026):

  • 보상 함수 자체를 에이전트가 동적으로 설계
  • 인터넷에서 최적의 보상 모델을 검색하고, 코드 생성으로 검증기를 합성
  • Ch7(다차원 보상)과 Ch13(RLVR)의 자연스러운 확장:
    보상이 고정되어 있지 않고, 태스크에 맞게 자동으로 진화한다

[접근 5] 사용하면서 학습한다 — OpenClaw-RL

OpenClaw-RL (Wang et al., 2026)은 이 챕터의 모든 문제를 정면으로 다루는 프레임워크다.
핵심 관찰: 에이전트가 행동할 때마다 "다음 상태 시그널"이 생긴다.
사용자의 답장, 도구 실행 결과, 터미널 출력, GUI 화면 변화 — 이 모든 것이
이전 행동에 대한 암묵적 평가다. 기존 시스템은 이걸 다음 행동의 컨텍스트로만 쓰고 버렸다.

OpenClaw-RL은 이 "다음 상태 시그널"에서 두 가지를 추출한다:

1. 평가 시그널 (evaluative signal) → 스칼라 보상으로 변환
“사용자가 다시 질문했다” → 이전 답이 불만족 → r = -1
“테스트가 통과했다” → r = +1

  • PRM(Process Reward Model) 판정기로 매 스텝마다 보상 추출
  • Ch13의 GRPO에서 다뤘던 "결과 보상만으로는 부족하다"의 해결:
    매 스텝마다 밀집 보상(dense reward)을 준다

2. 방향 시그널 (directive signal) → 토큰 수준 교정으로 변환
“파일을 먼저 확인했어야지” → 단순히 "나빴다(r=-1)"가 아니라,
"어떤 토큰이 달라져야 했는가"까지 알려준다.

이것을 Hindsight-Guided On-Policy Distillation (OPD)로 구현:

  • 방향 시그널에서 힌트(hint)를 추출
  • 원래 프롬프트 + 힌트 = “사후적으로 강화된 컨텍스트” 구성
  • 같은 모델에 강화된 컨텍스트를 주면 더 나은 토큰 분포가 나온다
  • teacher(힌트 있음)과 student(힌트 없음)의 토큰별 로그확률 차이
    = 토큰 수준의 방향 어드밴티지
  • 어떤 토큰은 올리고 어떤 토큰은 내리는, DPO보다 정밀한 시그널

이것이 왜 우리 교재의 서사에서 중요한가:

Ch1에서 DPO의 시그널 구조를 배웠다:
“쌍 전체에 대해 하나의 마진” → 시퀀스 수준 스칼라

Ch13에서 GRPO의 시그널 구조를 배웠다:
“그룹 내 상대적 어드밴티지” → 에피소드 수준 스칼라

OpenClaw-RL은 두 차원에서 해상도를 올린다:
평가 시그널: 에피소드 수준 → 스텝 수준 (매 행동마다 보상)
방향 시그널: 스칼라 → 토큰 수준 (어떤 토큰이 문제인지 특정)

→ "스칼라 보상의 정보 손실"이라는 근본 문제에 대한 가장 직접적인 답.

OpenClaw-RL의 아키텍처가 해결하는 실무 문제:

Ch11에서 배운 "온라인 학습의 세 가지 어려움"을 상기하자:

[1] 모델을 계속 갱신해야 한다

  • OpenClaw-RL: 네 개의 비동기 루프로 분리
    정책 서빙(SGLang) / 환경 / PRM 판정 / 학습(Megatron)
  • 서빙을 중단하지 않고 학습 가능 (graceful weight update)
  • 사용자는 모델이 학습 중인지 모른다

[2] 모델이 드리프트하는 위험

  • PRM이 매 스텝마다 보상을 주므로 이상 행동을 즉시 탐지
  • KL 제약(β_KL = 0.01)으로 레퍼런스에서의 이탈 제한
  • 비대칭 클리핑(ε=0.2, ε_high=0.28)으로 급격한 업데이트 방지

[3] 데이터셋을 계속 만드는 것의 어려움

  • "데이터셋을 만든다"는 개념 자체가 사라진다.
  • 에이전트가 사용되는 것 자체가 데이터 생성이다.
  • 사용자의 반응, 도구의 출력이 자동으로 학습 시그널이 된다.
  • “Train Any Agent Simply by Talking” — 논문 제목 그대로.

적용 범위:

  • 퍼스널 에이전트: 사용자의 대화에서 학습 (개인화)
  • 터미널 에이전트: 명령어 실행 결과에서 학습
  • GUI 에이전트: 화면 상태 변화에서 학습
  • SWE 에이전트: 테스트 결과, diff에서 학습
  • 도구 호출 에이전트: API 반환값에서 학습
  • 하나의 프레임워크로 모든 에이전틱 환경을 통합

실험 결과:
퍼스널 에이전트: 36회 대화만으로 개인화 점수 0.17 → 0.81
터미널/GUI/SWE/도구 호출: 모두 RL 학습으로 일관된 성능 향상
프로세스 보상 + 결과 보상 통합이 결과 보상만 쓰는 것보다 우수

Part I–II의 도구가 어떻게 확장되는가

DPO의 개념 (Part I):
Ch1 마진 → 궤적 수준 마진 (성공 vs 실패 궤적)
Ch4 길이 편향 → 에이전틱에서는 “스텝 수 편향”
(길게 탐색한 성공보다 짧게 성공한 것이 더 높은 점수?)
Ch5 레퍼런스 → 에이전트의 기본 행동 정책 (SFT된 에이전트)

GRPO의 개념 (Ch13):
그룹 통계 → 같은 태스크에 대한 여러 궤적의 성공률로 베이스라인
RLVR → 테스트 통과 여부가 검증기 역할
희소 보상 → 에이전틱의 핵심 문제

  • OpenClaw-RL의 PRM이 매 스텝마다 밀집 보상으로 해결
  • 결과 보상 + 프로세스 보상 통합이 실험적으로 우수

Ch2의 “좋은 DPO 쌍” 원칙:
“스칼라 보상은 정보를 버린다” → OpenClaw-RL의 OPD가 정확히 이 문제를 해결
평가 시그널(스칼라) + 방향 시그널(토큰 수준) = DPO보다 정밀한 학습

Ch11의 “온라인의 세 가지 어려움”:

  • [1] 갱신 비용 → OpenClaw-RL의 4-루프 비동기 아키텍처로 해결
  • [2] 드리프트 → 매 스텝 PRM + KL 제약으로 통제
  • [3] 데이터 비용 → “사용이 곧 학습” — 데이터셋이라는 개념 자체가 사라짐

정보이론 (Ch9–10):
프리트레인 = 에이전트의 기본 역량 (도구 사용법, 추론 능력)
SFT = 전문가 시연으로 기본 궤적 패턴 학습
RL = 에이전트가 자기 경험으로 전략을 개선

  • 합의 길(프리트레인+SFT) → 곱의 길(RL)의 구조가 그대로 적용

이 분야가 지금 가장 뜨거운 이유

에이전틱 AI가 2025–2026년의 핵심 전선인 이유:

1. 경제적 가치가 가장 크다

  • 코딩, 연구, 고객 서비스, 데이터 분석 — 자동화할 수 있는 업무의 범위
  • “한 번 대답하기”(LLM)보다 “업무를 처리하기”(에이전트)가
    직접적인 경제적 가치를 만든다

2. RL이 가장 자연스러운 학습 패러다임이다

  • 에이전트의 행동은 순차적이고, 결과는 지연되고, 환경은 확률적
  • 이것은 RL이 원래 풀도록 설계된 문제
  • LLM RL은 "퇴화된 1스텝 MDP"였지만,
    에이전틱 RL은 "진짜 MDP"로 돌아가는 것

3. Ch1–16의 모든 도구가 필요하다

  • DPO/GRPO: 에이전트 정렬의 기본 도구
  • 마진, 레퍼런스, 희소 보상: 에이전틱 환경에서 더 첨예한 형태로 재등장
  • 디퓨전 정책: 로봇 에이전트의 행동 생성기
  • 이 교재가 깔아놓은 기초 위에서 에이전틱 RL이 작동한다

4. "사용이 곧 학습"이라는 패러다임 전환

  • OpenClaw-RL이 보여준 것: 에이전트가 배포된 순간부터
    모든 상호작용이 학습 데이터가 된다
  • 데이터 수집 → 학습 → 배포라는 순차적 파이프라인이
    배포 = 학습이라는 단일 루프로 합쳐진다
  • Ch11에서 “온라인 vs 오프라인” 딜레마로 다뤘던 것이
    에이전틱에서는 자연스럽게 해소된다:
    환경 피드백이 끊임없이 들어오니까.
graph LR
    subgraph llm["LLM RL (1스텝 MDP)"]
        direction LR
        S1["프롬프트 x"] -->|"행동: 응답 y"| R1["보상 r"]
    end

    subgraph agent["에이전틱 RL (다스텝 POMDP)"]
        direction LR
        SA["프롬프트"] -->|"a₁: 파일 읽기"| O1["관찰 o₁"]
        O1 -->|"a₂: 코드 수정"| O2["관찰 o₂"]
        O2 -->|"a₃: 테스트"| O3["관찰 o₃"]
        O3 -->|"..."| ON["최종 결과"]
        ON --> RA["보상 r"]
    end

    style llm fill:#e3f2fd,stroke:#1565C0
    style agent fill:#fff3e0,stroke:#E65100
    style RA fill:#ffcdd2,stroke:#C62828
graph LR
    subgraph resolution["시그널 해상도 스펙트럼"]
        direction LR
        DPO["<b>DPO</b><br/>시퀀스 수준<br/>스칼라 1개"] --> GRPO["<b>GRPO</b><br/>에피소드 수준<br/>그룹 상대"] --> PRM["<b>PRM</b><br/>스텝 수준<br/>매 행동 보상"] --> OPD["<b>OPD</b><br/>토큰 수준<br/>방향 시그널"]
    end

    style DPO fill:#ffcdd2
    style GRPO fill:#fff9c4
    style PRM fill:#c8e6c9
    style OPD fill:#b3e5fc,stroke:#0277BD,stroke-width:2px

시각화 계획