생성모델의 강화학습: DPO에서 GRPO까지

들어가며

"이 답변이 저 답변보다 낫다."라는 판단은 직관적이고 간단하다.

DPO(Direct Preference Optimization)는 이 판단 위에 세워졌고, 코드 몇 줄이면 기존 학습 파이프라인에 붙일 수 있다. 그래서 많은 사람이 생성모델의 강화학습을 DPO로 처음 만나는데, 이 교재도 거기서 출발한다.

LDPO=−log⁡σ ⁣(β⋅[log⁡πθ(yw)πref(yw)−log⁡πθ(yl)πref(yl)])\textcolor{#d62728}{\mathcal{L}_\text{DPO}} = -\log \sigma\!\Big(\textcolor{#827717}{\beta} \cdot \big[\log \frac{\textcolor{#1565c0}{\pi_\theta}(\textcolor{#e000a5}{y_w})}{\textcolor{#6f6f78}{\pi_\text{ref}}(\textcolor{#e000a5}{y_w})} - \log \frac{\textcolor{#1565c0}{\pi_\theta}(\textcolor{#e000a5}{y_l})}{\textcolor{#6f6f78}{\pi_\text{ref}}(\textcolor{#e000a5}{y_l})}\big]\Big)
LDPODPO 손실 (줄일수록 좋다)πθ학습 중인 모델 (정책)πref레퍼런스 모델: 학습 전 모델을 고정한 사본βKL 강도: 클수록 정책이 레퍼런스 모델에서 덜 멀어진다yw, yl선호 응답과 비선호 응답σ시그모이드 함수 \small\begin{array}{ll} \textcolor{#d62728}{\mathcal{L}_\text{DPO}} & \text{DPO 손실 (줄일수록 좋다)} \\ \textcolor{#1565c0}{\pi_\theta} & \text{학습 중인 모델 (정책)} \\ \textcolor{#6f6f78}{\pi_\text{ref}} & \text{레퍼런스 모델: 학습 전 모델을 고정한 사본} \\ \textcolor{#827717}{\beta} & \text{KL 강도: 클수록 정책이 레퍼런스 모델에서 덜 멀어진다} \\ \textcolor{#e000a5}{y_w},\ \textcolor{#e000a5}{y_l} & \text{선호 응답과 비선호 응답} \\ \sigma & \text{시그모이드 함수} \end{array}

하지만 이 한 줄을 오래 들여다보면 질문이 생긴다. 왜 하필 로그인가? 레퍼런스 모델은 왜 거기 있나? 시그모이드는 어디서 왔나? DPO 논문의 부제 *“당신의 언어 모델은 사실 보상 모델이다”*는 원래 보상 모델이 따로 있었다는 뜻인데, 그 보상 모델로 무엇을 하고 있었나?

답은 수십 년에 걸친 강화학습의 두 줄기인 정책 그래디언트와 가치 기반 방법이 만나는 자리에 있다. DPO는 그 진화의 한가운데에서, 너무 무거워진 RLHF 파이프라인(보상 모델 학습 + PPO)을 수식 변환으로 건너뛴 우회로다. 그리고 그 우회로가 한계에 부딪힌 자리에서 GRPO가 나왔다.

그래서 이 교재는 DPO로 문을 연 뒤, 곧바로 정책 그래디언트의 기초로 내려간다.

이야기의 흐름

graph LR
    DPO1["<b>DPO 맛보기</b><br/>Ch1"] -.->|"이 식은 어디서?"| VPG
    VPG["<b>VPG</b><br/>점수를 미분 없이 올리기<br/>Ch2"] -->|"샘플로 추정"| RF["<b>REINFORCE</b><br/>베이스라인<br/>Ch3"]
    RF -.->|"상태마다의 평균은?"| VAL["<b>가치 기반</b><br/>MDP · 벨먼 · 시간차 · Q-러닝 · DQN<br/>Ch4–8"]
    RF -->|"분산을 더 줄이려면"| AC["<b>Actor-Critic</b><br/>비평가 V, 어드밴티지<br/>Ch9"]
    VAL -->|"비평가가 된다"| AC
    AC -->|"멀리 가지 않게"| PPO["<b>PPO + RLHF</b><br/>클리핑, KL, 보상 모델<br/>Ch10"]
    PPO -->|"무겁다 → 우회로"| DPO["<b>DPO 재등장</b><br/>해부와 진화<br/>Ch11–20"]
    PPO -->|"비평가를 내려놓다"| GRPO["<b>RLVR + GRPO</b><br/>Ch21–22"]
    DPO -.->|"오프라인의 한계"| GRPO
    GRPO --> VAR["<b>GRPO 변종들</b><br/>Ch23"]
    VAR --> APP["<b>응용</b><br/>디퓨전·영상·로보틱스·에이전트<br/>Ch24–28"]

이 흐름 전체를 꿰는 식은 Ch2 「VPG」에서 유도하는 정책 그래디언트 하나다.

∇θJ=E[∑tΦt⋅∇θlog⁡πθ(yt∣x,y<t)]\nabla_\theta \textcolor{#d62728}{J} = \mathbb{E}\Big[\sum_t \textcolor{#8e44ad}{\Phi_t} \cdot \nabla_\theta \log \textcolor{#1565c0}{\pi_\theta}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{x}, \textcolor{#1c9c60}{y_{<t}})\Big]
J목적함수: 정책이 받는 평균 점수Φt토큰 t에 곱하는 가중치(곱하는 수. 신경망 파라미터가 아니다). 알고리즘마다 이 값을 다르게 정한다πθ(yt∣x,y<t)학습 중인 정책이 t번째 토큰 yt를 고를 확률x프롬프트 \small\begin{array}{ll} \textcolor{#d62728}{J} & \text{목적함수: 정책이 받는 평균 점수} \\ \textcolor{#8e44ad}{\Phi_t} & \text{토큰 }t\text{에 곱하는 가중치(곱하는 수. 신경망 파라미터가 아니다). 알고리즘마다 이 값을 다르게 정한다} \\ \textcolor{#1565c0}{\pi_\theta}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{x}, \textcolor{#1c9c60}{y_{<t}}) & \text{학습 중인 정책이 }t\text{번째 토큰 }\textcolor{#1c9c60}{y_t}\text{를 고를 확률} \\ \textcolor{#0093b8}{x} & \text{프롬프트} \end{array}

정책 그래디언트 식이 하는 말은 "내가 뽑은 답의 로그확률을, Φt\textcolor{#8e44ad}{\Phi_t}에 비례한 크기로 올려라."이며, 이후의 알고리즘들은 모두 가중치 Φt\textcolor{#8e44ad}{\Phi_t}를 무엇으로 정하는가의 차이다. 보상 그대로(VPG), 평균을 뺀 보상(REINFORCE), 비평가가 추정한 어드밴티지(Actor-Critic), 너무 멀리 가지 않게 잘라낸 어드밴티지(PPO), 같은 문제의 다른 답들과 비교한 상대 점수(GRPO). DPO는 가중치 Φt\textcolor{#8e44ad}{\Phi_t}를 샘플링 없이 정하는 방법을 찾아낸 것이고, 그 대가로 탐색을 잃었다.

가치 기반 줄기(Ch4–8)는 가중치 Φt\textcolor{#8e44ad}{\Phi_t}를 직접 정하지 않는다. 대신 Φt\textcolor{#8e44ad}{\Phi_t} 자리에 넣을 두 값, “이 상태는 앞으로 얼마나 좋은가”(가치)와 “이 행동은 평균보다 얼마나 나은가”(어드밴티지)를 배우는 법을 세운다. 상태·행동·전이 확률·보상으로 문제를 적는 마르코프 결정 과정에서 출발해, 가치를 한 스텝씩 쪼개는 벨먼 방정식, 끝까지 기다리지 않고 예측으로 예측을 고치는 시간차 학습, 행동 가치를 직접 배우는 Q-러닝, 표를 신경망으로 바꾼 DQN까지 간다. Actor-Critic(Ch9)의 비평가가 바로 이 줄기에서 온다.

구성

파트 장 질문
I. 출발점 Ch1 DPO 맛보기 한 줄 수식은 무엇을 하는가?
II. 정책 그래디언트: VPG와 REINFORCE Ch2 VPG · Ch3 REINFORCE 미분할 수 없는 점수를 어떻게 올리는가? 추정치의 분산은 어떻게 줄이는가?
III. 가치 기반: 마르코프 결정 과정에서 DQN까지 Ch4 마르코프 결정 과정 · Ch5 벨먼 방정식 · Ch6 시간차 학습 · Ch7 Q-러닝 · Ch8 DQN 지금 이 상태는 앞으로 얼마나 좋은가? 결과를 끝까지 기다리지 않고 그 좋음(가치)을 배울 수 있는가?
IV. 두 줄기의 만남: 액터–크리틱과 PPO Ch9 Actor-Critic · Ch10 PPO와 RLHF 정책이 고르고 가치함수가 평가하면 무엇이 나아지는가? 원래 모델에서 멀어지지 않게 하려면?
V. 우회로: DPO Ch11 DPO의 재등장 · Ch12–17 요소별 해부(선호 쌍의 조건 · 로그확률 · 길이 편향 · 레퍼런스 모델 · Bradley-Terry · 다차원 보상) · Ch18 DPO의 진화 · Ch19 온라인과 오프라인 · Ch20 실전사례 보상 모델과 RL 루프를 건너뛰면 무엇을 얻고 무엇을 잃는가?
VI. 비평가 없이: RLVR과 GRPO Ch21 RLVR과 GRPO · Ch22 RL이 작동하는 조건 · Ch23 GRPO의 변종들 정답을 검증할 수 있다면, 비평가도 보상 모델도 없이 스스로 배울 수 있는가?
VII. 응용 Ch24 디퓨전에서 DPO를 쓰려면 · Ch25 DDPO · Ch26 이미지·로보틱스의 강화학습 · Ch27 영상 생성 모델의 학습 · Ch28 에이전틱 AI 로그확률을 구하기 어려운 모델, 여러 번 행동하는 모델, 모델을 감싼 하네스에서는?
부록 A 디퓨전 이론 · B 기호표 · C LLM↔디퓨전 대응 · D 알고리즘 족보 · E BM25와 로그오즈 · F ELBO

Part V의 해부(Ch12 「선호 쌍의 조건」부터 Ch17 「다차원 보상」까지)는 DPO 수식을 여섯 요소(선호 쌍, 로그확률, 길이, 레퍼런스와 β\textcolor{#827717}{\beta}, 시그모이드, 스칼라 보상)로 나눠 하나씩 묻는다. 이것을 빼면 어떻게 되는가? 다른 것으로 바꾸면? 그 답들이 곧 DPO 변형 알고리즘의 계보가 되며, 같은 질문을 GRPO에 던지는 장이 Ch23 「GRPO의 변종들」이다.

이 교재를 읽는 법

위젯. 핵심 개념마다 슬라이더와 버튼으로 조작해 볼 수 있는 예제가 있으니, 식을 읽고 넘어가기 전에 한 번씩 움직여 보길 권한다. 예컨대 Ch2 「VPG」의 위젯에서 보상에 상수를 더해 보면, Ch3 「REINFORCE」가 왜 필요한지 먼저 눈으로 보게 된다.

장의 짜임과 연습문제. 각 장은 개념 하나를 한 페이지에 담은 절들로 이루어지고, 절마다 그 개념을 연습하는 문제가 절 끝에 바로 붙는다. 문제 뒤에는 세 사람이 같은 문제를 푸는 대화가 이어지며, 여러 개념을 엮는 까다로운 "킬러 문제"는 그 개념들이 다 나온 절 끝에 있다. 절의 문제는 일상의 비유로 몸을 푸는 문제에서 시작해 그 절의 식으로 이어진다. 위젯에 「문제 N」 단추가 있으면 그 문제의 값을 불러오니, 답은 먼저 스스로 구한 뒤 수치판으로 확인해 보라. 장의 마지막 페이지는 혼동하기 쉬운 점과 요약이다.

트릭의 뿌리. 본문 옆의 곁글 「트릭의 뿌리」는 그 절에서 쓴 요령이 ML 밖의 어느 분야에서 먼저 쓰였는지를 짧게 보여 준다. 기법 하나가 아니라 문제에 다가가는 자세 하나를 다룬다.

인물 소개
선생님 강의자. 정답을 먼저 말하지 않고, 모순이 드러나는 질문을 던진다.
김민준 학부 3학년. 소프트맥스, NumPy, PyTorch 과제 정도를 해봤다. 코드로 먼저 돌려보고 답이 빠르다.
이서연 수학과 3학년. 해석학과 선형대수는 탄탄하지만 물리적 감각은 약하다. 이상한 결과를 스스로 알아챈다.

두 학생은 자주 틀리고, 틀리는 이유도 서로 다르다. 대화를 읽기 전에 먼저 스스로 풀어 보고, 내가 둘 중 누구의 방식으로 틀렸는지 확인해 보라.

대상 독자와 전제 지식. 언어 모델을 파인튜닝해 봤거나 DPO·GRPO 논문을 읽으려는 ML 실무자와 학생. 시그모이드와 소프트맥스, 로그, 조건부 확률, 기댓값, 그래디언트의 직관적 의미를 알면 충분하다. 강화학습 사전 지식은 필요 없다. Part II(정책 그래디언트)와 Part III(가치 기반)가 처음부터 쌓는다.