제3부 사후학습·정렬(Post-training/Alignment)
3.5 DPO와 변형 — 보상 모델 없는 선호 최적화
3.3과 3.4는 정렬을 강화학습 문제로 세웠다. 사람 선호를 모아 보상 모델을 학습하고, 그 보상을 PPO로 최대화하되 참조 정책에서 KL만큼만 벗어나게 묶는다. 원리는 명료하지만 운용해 본 사람은 안다 — 이것은 짐승 같은 파이프라인이다. 학습 시점에 네 개의 대형 모델이 메모리에 올라 있고, 매 스텝 정책이 응답을 생성(롤아웃)하고, 그것을 보상 모델로 채점하고, 가치함수로 어드밴티지를 추정하고, 클립 목적과 KL 페널티로 정책을 갱신한다. 하이퍼파라미터를 잘못 설정하면 보상 해킹으로 붕괴하거나 발산한다. 재현하기 어렵기로 악명이 높다.
그러다 2023년, 누군가 이 기계 전체를 버릴 수 있다고 주장했다. 보상 모델도, 롤아웃도, 가치함수도, RL 루프도 없이 — 선호쌍에 대한 단 하나의 분류 손실로 정렬을 끝낼 수 있다는 것. 이것이 DPO(Direct Preference Optimization, 직접 선호 최적화, Rafailov et al. 2023)다. 논문 제목이 주장의 전부를 담고 있다. Your Language Model is Secretly a Reward Model — 당신의 언어모델은 사실 그 자체로 보상 모델이다. 이 장은 그 주장이 왜 수학적으로 성립하는지를 한 줄도 건너뛰지 않고 유도하고, 그 단순함이 어디서 값을 치르는지, 그리고 DPO가 낳은 변형 가족 — IPO·KTO·ORPO·CPO·SimPO — 이 각자 무엇을 고치려 했는지를 본다. 마지막으로, 이름이 비슷해 자주 혼동되는 GRPO가 DPO 계열이 아니라 PPO를 단순화한 온라인 RL임을 명시한다. "간단한 DPO가 복잡한 PPO를 이긴다"는 인상이 널리 퍼졌지만, 그것이 왜 조건부 주장인지도 정면으로 따진다.
3.5.1 PPO 파이프라인이 지고 있는 짐
DPO를 이해하려면 먼저 그것이 무엇을 덜어내려 하는지를 정확히 세어 봐야 한다. 3.3·3.4의 정통 RLHF 파이프라인을 한 그림으로 복기하자.
학습 시점에 살아 움직이는 부품은 네 개다. 정책 $\pi_\theta$ (학습 대상), 참조 정책 $\pi_{ref}$ (KL 기준으로 쓰는 동결된 SFT 모델), 보상 모델 $r_\phi$ (또 하나의 대형 모델), 가치함수 $V_\psi$ (어드밴티지 추정용 크리틱, 정책과 맞먹는 크기의 헤드 또는 모델). 이 넷이 맞물려 동작하는 비용을 숫자로 만들어 보면 "부하가 크다"는 말이 명확해진다.
7B 모델을 bf16으로 다룬다고 하자. 가중치 한 벌은 $7\times10^9 \times 2 = 14$ GB다. 학습 대상 모델은 여기에 기울기와 AdamW 옵티마이저 상태(fp32 마스터 가중치 + 1차·2차 모멘트)가 붙어 대략 파라미터당 16바이트, 즉 $16\times7\times10^9 = 112$ GB를 차지한다. 동결된(순전파만) 모델은 14 GB면 된다. 그러면 PPO는 정책(학습, 112 GB) + 가치함수(학습, 정책과 비슷한 크기라 또 112 GB) + 참조(동결, 14 GB) + 보상 모델(동결, 14 GB) $\approx$ 252 GB를, 여기에 롤아웃 버퍼와 생성 중 KV 캐시까지 추가한다. DPO는 뒤에서 보겠지만 정책(학습, 112 GB) + 참조(동결, 14 GB) $\approx$ 126 GB로 끝난다. 부품을 둘 지운 것만으로 가중치·상태 메모리가 반으로 준다.
메모리보다 더 문제가 되는 것은 롤아웃이다. PPO는 매 스텝 정책이 스스로 응답을 생성해야 하는데, 512토큰 길이의 응답 하나를 만들려면 자기회귀 디코드 순전파를 512번 직렬로 실행해야 한다(5.1). 토큰당 $2P$ FLOP 규칙으로 응답 하나가 $512 \times 2\times7\times10^9 \approx 7.2$ TFLOP이고, 이것을 배치 전체에 대해 매 PPO 스텝마다 반복한다. 게다가 이 생성은 대역폭 바운드라 GPU를 유휴 상태로 두며 느리게 흐른다. DPO는 이 생성 전체가 0이다 — 고정된 데이터셋에 대한 순전파·역전파만 실행된다.
여기에 온라인 RL 특유의 불안정성이 겹친다. PPO는 KL 계수·클립 폭·학습률·롤아웃 배치에 민감하고, 잘못 설정하면 보상 해킹 — 보상 모델의 허점을 악용해 점수만 높이는 퇴행(3.4) — 이나 발산으로 붕괴한다. 분산 RL 루프, 경험 버퍼, 네 모델의 동기화까지 추가되면 이 파이프라인은 재현 자체가 연구 과제가 된다.
DPO의 제안은 이 모든 것을 향한다. 보상 모델을 따로 학습하고 그것을 RL로 최대화하는 두 단계를, 선호쌍에 대한 단 하나의 분류 손실로 대체한다. 보상 모델도, 롤아웃도, 가치함수도, RL 루프도 없이 정책 $\pi_\theta$ 와 동결된 참조 $\pi_{ref}$ 둘만 남고, 학습은 SFT처럼 오프라인 지도학습으로 실행된다.
이 대비 — 4개 모델·온라인 롤아웃·RL 루프 대 2개 모델·고정 데이터셋·지도학습 손실 — 가 DPO 인기의 실용적 근원이다. 다만 단순함이 곧 우월함은 아니라는 점을, 이 장은 처음부터 끝까지 정직하게 견지한다. 어떻게 이 접힘이 가능한지가 다음 세 절의 핵심이다.
3.5.2 정책이 곧 암묵적 보상이라는 통찰
DPO의 핵심은 논문 제목 그대로다 — 언어모델이 은밀하게 보상 모델이라는 관찰. 이것을 두 조각으로 나눠 직관부터 정리하자.
첫 조각은 RLHF의 최적 정책에 닫힌형이 있다는 사실이다. 3.4의 RLHF 목적은 "보상을 최대화하되 참조에서 KL만큼만 벗어나라"였다.
$$\max_{\pi}\ \mathbb{E}_{x\sim\mathcal D,\ y\sim\pi(\cdot|x)}\big[r(x,y)\big]\ -\ \beta\,\mathbb{D}_{\mathrm{KL}}\!\big[\pi(y|x)\,\|\,\pi_{ref}(y|x)\big]$$
이 문제는 신경망 없이도 정확한 해가 알려져 있다(3.5.3에서 유도한다). 최적 정책은
$$\pi^*(y|x)=\frac{1}{Z(x)}\,\pi_{ref}(y|x)\,\exp\!\Big(\tfrac{1}{\beta}\,r(x,y)\Big)$$
형태다. 보상 $r$ 이 주어지면 최적 정책이 어떤 모습이어야 하는지가 공식으로 정해진다 — 참조 분포를 보상에 비례해 지수적으로 재가중한 것.
둘째 조각은 이 공식을 뒤집는 것이다. 위 식을 $r$ 에 대해 풀면(양변에 로그)
$$r(x,y)=\beta\,\log\frac{\pi^*(y|x)}{\pi_{ref}(y|x)}\ +\ \beta\log Z(x)$$
가 되어, 보상 함수가 정책과 참조의 로그확률비로 표현된다. 별도의 보상 모델 $r_\phi$ 를 학습할 필요가 없다는 뜻이다. 어떤 정책이든 그 자체로 "이 정책이 최적이 되는 보상"을 암묵적으로 정의한다. 이것이 "언어모델은 사실 보상 모델"의 정확한 의미다.
핵심 대상에 이름을 붙이자. 학습할 정책 $\pi_\theta$ 를 최적 $\pi^*$ 로 간주하면, 그 정책이 정의하는 암묵적 보상(implicit reward) 은
$$\hat r_\theta(x,y)\ \equiv\ \beta\,\log\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)}$$
이다. 정책이 참조보다 어떤 응답에 더 높은 확률을 주면 그 응답의 암묵적 보상이 양(+), 낮은 확률을 주면 음(−)이다. $\beta$ 는 그 스케일이자 원래 RLHF의 KL 강도와 같은 하이퍼파라미터 — 참조에서 얼마나 벗어나도 되는가를 정한다.
남는 문제는 $\beta\log Z(x)$ 라는 다루기 힘든 정규화 상수다. $Z(x)=\sum_y \pi_{ref}(y|x)\exp(r(x,y)/\beta)$ 는 모든 가능한 출력 $y$ 에 대한 합이라 언어모델에서는 계산 불가능하다 — 어휘 $V$ 에 대해 길이 $L$ 인 시퀀스가 $V^L$ 가지다. DPO의 두 번째 묘수는 이 $Z(x)$ 가 선호쌍 비교에서 저절로 소거되게 만드는 것이고, 그래서 애초에 계산할 필요가 없어진다. 이제 이 두 조각을 직접 쌓는다.
3.5.3 KL 제약 보상 최대화의 닫힌형 해
한 프롬프트 $x$ 를 고정하고 목적식을 다룬다. KL을 기댓값 안으로 펼치면 목적은
$$\max_{\pi}\ \mathbb{E}_{y\sim\pi}\Big[r(x,y)-\beta\log\tfrac{\pi(y|x)}{\pi_{ref}(y|x)}\Big]$$
이다. 여기서 라그랑주 승수를 세우거나 변분 미분을 하는 대신, 더 명료한 길이 있다 — 괄호 안을 하나의 로그비로 묶어 KL의 형태를 만드는 것. $-\beta$ 로 묶으면
$$=\ \max_{\pi}\ \mathbb{E}_{y\sim\pi}\Big[-\beta\log\frac{\pi(y|x)}{\pi_{ref}(y|x)\exp(r(x,y)/\beta)}\Big]$$
가 된다($r = \beta\log\exp(r/\beta)$ 를 로그 안으로 넣었을 뿐이다). 분모의 $\pi_{ref}(y|x)\exp(r(x,y)/\beta)$ 는 아직 확률분포가 아니다 — 합이 1이 아니다. 그 합을 $Z(x)=\sum_y \pi_{ref}(y|x)\exp(r(x,y)/\beta)$ 로 두고 나눠 주면
$$\pi^*(y|x)\ \equiv\ \frac{1}{Z(x)}\,\pi_{ref}(y|x)\,\exp\!\Big(\tfrac1\beta r(x,y)\Big)$$
는 정의상 합이 1인 정당한 분포가 된다. 이제 분모를 $Z(x)\cdot\pi^*(y|x)$ 로 바꿔 넣으면 $\log Z(x)$ 항이 $\pi$ 와 무관한 상수로 떨어져 나온다.
$$=\ \max_{\pi}\ \mathbb{E}_{y\sim\pi}\Big[-\beta\log\tfrac{\pi(y|x)}{\pi^*(y|x)}\Big]-\beta\log Z(x)\ =\ \min_{\pi}\ \beta\,\mathbb{D}_{\mathrm{KL}}\!\big[\pi\,\|\,\pi^*\big]+\beta\log Z(x)$$
마지막 등식이 결정적이다. 기댓값 항이 정확히 $\pi$ 와 $\pi^*$ 사이의 KL 발산이 되었다. $Z(x)$ 는 $\pi$ 를 안 담고 있고, KL은 깁스 부등식에 의해 항상 $\ge 0$ 이며 오직 두 분포가 같을 때만 0이다. 따라서 이 목적을 최소화하는(원래 문제로는 최대화하는) 유일한 해는
$$\pi^*(y|x)=\frac{1}{Z(x)}\,\pi_{ref}(y|x)\,\exp\!\Big(\tfrac1\beta r(x,y)\Big)$$
이다. 미분도 라그랑주도 없이, KL이 자기 자신에서 최소가 된다는 성질 하나로 나왔다. 이 형태가 그토록 자연스러운 이유가 여기 있다 — RLHF 목적은 "$\pi^*$ 를 표적으로 삼는 KL 최소화"를 에두른 것에 불과했다.
이 재가중이 실제로 무엇을 하는지 숫자로 보자. 어떤 프롬프트에서 참조 정책이 두 응답 $y_a, y_b$ 에 각각 확률 0.5, 0.5를 준다고 하고(나머지는 무시하는 장난감 설정), 보상이 $r(y_a)=1,\ r(y_b)=0$ 이라 하자. $\beta=0.5$ 이면
$$\pi^*(y_a)\propto 0.5\cdot e^{1/0.5}=0.5\,e^{2}=3.695,\qquad \pi^*(y_b)\propto 0.5\cdot e^{0}=0.5$$
이고 정규화하면 $\pi^*(y_a)=3.695/4.195=0.881,\ \pi^*(y_b)=0.119$ 다. 보상 +1 하나가 50 대 50을 88 대 12로 밀었다. 이제 $\beta$ 를 2로 키우면 $e^{1/2}=1.649$ 라 $\pi^*(y_a)=0.824/1.324=0.622,\ \pi^*(y_b)=0.378$ 로, 재가중이 훨씬 약해져 참조에 가깝게 남는다. $\beta$ 가 크면 참조에 고착되고 작으면 보상 쪽으로 폭주한다 — $\beta$ 가 KL 강도라는 말의 뜻이 이 숫자에 있다. DPO에서도 $\beta$ 는 정확히 같은 역할을 한다.
3.5.4 보상을 정책으로 역산하기
닫힌형을 $r$ 에 대해 뒤집는 것은 대수 한 줄이다. 양변에 로그를 취하고 정리하면
$$r(x,y)=\beta\log\frac{\pi^*(y|x)}{\pi_{ref}(y|x)}+\beta\log Z(x)$$
이다. 방향이 중요하다. 원래는 "보상 $r$ 을 주면 최적 정책 $\pi^*$ 가 나온다"였는데, 이제는 "어떤 보상이든 그것을 최적화한 정책으로 위처럼 다시 쓸 수 있다"로 읽는다. 우리가 학습할 정책 $\pi_\theta$ 를 그 어떤 보상의 최적해 $\pi^*$ 로 간주하는 순간, $\pi_\theta$ 자체가 하나의 보상을 정의한다 — 앞 절에서 이름 붙인 암묵적 보상 $\hat r_\theta = \beta\log(\pi_\theta/\pi_{ref})$ 다. 보상 모델을 학습하는 대신, 보상을 정책 안에 파라미터화해 버린 것이다.
이 관점이 왜 이득인지 한 번 더 정리해 두자. RLHF 원래 경로는 두 함수를 따로 다뤘다 — 먼저 보상 $r_\phi$ 를 데이터에 맞추고, 그다음 그 $r_\phi$ 를 정책으로 최대화. DPO는 이 둘이 사실 하나의 대상을 두 각도에서 본 것임을 이용한다. "정책이 정의하는 보상"과 "그 보상의 최적 정책"이 서로의 역함수이므로, 보상을 매개로 한 우회를 걷어내고 정책을 데이터에 직접 맞출 수 있다. 남은 것은 $\hat r_\theta$ 를 선호 데이터에 맞추는 일이고, 그러려면 선호를 확률로 표현하는 모델 — Bradley-Terry — 이 필요하다.
3.5.5 Bradley-Terry 대입과 분배함수 소거 — DPO 손실의 완성
3.3에서 인간 선호는 Bradley-Terry(BT) 모델로 표현했다. "$y_w$ 가 $y_l$ 보다 선호될 확률"은 두 보상 차의 시그모이드다.
$$P(y_w\succ y_l\mid x)=\sigma\big(r(x,y_w)-r(x,y_l)\big),\qquad \sigma(z)=\frac{1}{1+e^{-z}}$$
여기에 3.5.4의 $r$ 표현을 넣는다. 이 대입에서 핵심적인 단순화가 일어난다 — 보상 차이를 쓰면 다루기 힘든 $\beta\log Z(x)$ 가 서로 상쇄된다. $y_w$ 와 $y_l$ 은 같은 프롬프트 $x$ 에 대한 두 응답이므로 $Z(x)$ 가 정확히 동일하기 때문이다.
$$r(x,y_w)-r(x,y_l)=\beta\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)}-\beta\log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}+\underbrace{\beta\log Z(x)-\beta\log Z(x)}_{=\,0}$$
$$\therefore\quad P(y_w\succ y_l\mid x)=\sigma\!\left(\beta\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)}-\beta\log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)$$
계산 불가능하던 $Z(x)$ 가 사라졌다. 선호 확률이 이제 오로지 $\pi_\theta$ 와 $\pi_{ref}$ 의 로그확률로만 표현되고, 둘 다 순전파 한 번으로 얻는다. 이 소거가 성립하는 조건이 정확히 무엇인지에 주목할 값어치가 있다 — 쌍이 같은 프롬프트를 공유해야 $Z(x)$ 가 상쇄된다. 이 사실이 뒤에서 KTO가 왜 다른 길을 택하는지(비페어 데이터라 쌍이 없다)와, 반복 DPO가 왜 쌍을 새로 뽑아야 하는지를 설명한다.
남은 것은 지도학습이다. 데이터셋 $\mathcal D=\{(x,y_w,y_l)\}$ 의 선호를 최대우도로 맞춘다 — 위 확률의 음의 로그우도를 최소화한다.
$$\mathcal L_{\mathrm{DPO}}(\theta)=-\,\mathbb{E}_{(x,y_w,y_l)\sim\mathcal D}\left[\log\sigma\!\left(\beta\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)}-\beta\log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)\right]$$
이 한 줄이 DPO의 전부다. 구조를 뜯어 보면 괄호 안은 암묵적 보상의 차 $\hat r_\theta(x,y_w)-\hat r_\theta(x,y_l)$ — "정책이 선호 응답을 비선호 응답보다 (참조 대비) 얼마나 더 좋아하는가"의 마진이다. 그 바깥 $\log\sigma(\cdot)$ 는 표준 로지스틱 이진 분류 손실이고, 그래서 DPO는 정렬을 "각 선호쌍을 올바른 방향으로 분류하라"는 이진 분류로 환원한다. 실제 구현에서 $\log\pi_\theta(y|x)$ 는 응답 토큰들의 로그확률 합이다 — SFT의 손실 마스킹처럼 프롬프트 토큰은 빼고 응답 토큰만 더한다(3.2). 이 "합"이라는 점이 나중에 길이 편향 이야기의 단초가 된다.
보상 모델 학습·롤아웃·가치함수·RL 루프가 전부 사라지고, 정책 $\pi_\theta$ 와 동결 $\pi_{ref}$, 고정된 선호 데이터셋만 남았다. 놀랍도록 단순하지만 — 이 단순함이 무비용이 아니라는 것이 이후 절들의 주제다.
3.5.6 수계산 — 기울기는 로그확률을 어느 방향으로 이동시키는가
손실을 눈으로만 보면 "무엇을 어느 방향으로 미는지"를 놓치기 쉽다. 기울기를 직접 계산해 부호를 확인하자. $z=\hat r_\theta(x,y_w)-\hat r_\theta(x,y_l)$ 라 두면 한 예제의 손실은 $-\log\sigma(z)$ 다. 합성함수 미분에서 $\frac{d}{dz}[-\log\sigma(z)] = -\frac{\sigma'(z)}{\sigma(z)} = -\big(1-\sigma(z)\big) = -\sigma(-z)$ 이므로($\sigma'=\sigma(1-\sigma)$ 를 썼다), 연쇄법칙으로
$$\nabla_\theta\mathcal L_{\mathrm{DPO}}=-\beta\,\underbrace{\sigma\big(\hat r_\theta(x,y_l)-\hat r_\theta(x,y_w)\big)}_{\text{가중치 }w\,\in(0,1)}\Big[\underbrace{\nabla_\theta\log\pi_\theta(y_w|x)}_{y_w\ \text{확률}\uparrow}-\underbrace{\nabla_\theta\log\pi_\theta(y_l|x)}_{y_l\ \text{확률}\downarrow}\Big]$$
가 된다($\pi_{ref}$ 는 동결이라 $\theta$ 미분에서 사라지므로 $\nabla_\theta\hat r_\theta(y)=\beta\nabla_\theta\log\pi_\theta(y)$ 다). 경사하강은 $\theta\leftarrow\theta-\eta\nabla_\theta\mathcal L$ 로 움직이므로, 앞의 $-\beta$ 부호까지 합치면 갱신은 $+\nabla_\theta\log\pi_\theta(y_w)$ 방향, 즉 선호 응답 $y_w$ 의 로그확률을 높이고, $-\nabla_\theta\log\pi_\theta(y_l)$ 방향, 즉 비선호 응답 $y_l$ 의 로그확률을 내린다.
가중치 $w=\sigma(\hat r_l-\hat r_w)$ 가 이 갱신의 세기를 정하는데, 이것이 DPO의 영리한 부분이다. 정책이 이미 $y_w$ 를 $y_l$ 보다 훨씬 높게 평가하면($\hat r_w\gg\hat r_l$, 즉 $\hat r_l-\hat r_w$ 가 크게 음수) $w\to0$ 이라 거의 안 민다 — 이미 맞은 쌍은 놓아둔다. 반대로 정책이 순서를 거꾸로 매기고 있으면($\hat r_l>\hat r_w$, $\hat r_l-\hat r_w$ 가 양수) $w\to1$ 이라 세게 민다. 학습이 틀린 쌍에 집중되는 것이다. 이것이 3.4의 보상 해킹 관점과 대비된다 — PPO는 "보상을 최대로" 높이려다 보상 모델의 허점을 공략하지만, DPO는 "선호 순서를 지키는 마진"을 밀되 이미 맞은 쌍은 변경하지 않는다.
한 가지 미묘한 함정이 이 식에 이미 숨어 있다. 갱신 방향은 두 항의 차이 $\nabla\log\pi_\theta(y_w)-\nabla\log\pi_\theta(y_l)$ 다. 손실을 줄이는 데는 $y_w$ 를 높이고 $y_l$ 을 내리는 것만이 아니라, 둘 다 내리되 $y_l$ 을 더 빨리 내리는 것도 유효하다. 마진만 커지면 되기 때문이다. 이 함정을 다음 두 절에서 숫자로 확인한다.
3.5.7 수계산 — 거꾸로 된 선호쌍이 바로잡히는 과정
기울기의 부호를 실제 숫자로 따라가자. 한 선호쌍 $(x,y_w,y_l)$ 에서 로그확률이 아래와 같다고 하자(설명용 개략값, 로그는 자연로그). $\beta=0.1$ 이다.
| 응답 | $\log\pi_\theta$ | $\log\pi_{ref}$ | 암묵적 보상 $\hat r=\beta(\log\pi_\theta-\log\pi_{ref})$ |
|---|---|---|---|
| $y_w$ (선호) | $-5.0$ | $-4.6$ | $0.1\times(-5.0+4.6)=-0.04$ |
| $y_l$ (비선호) | $-4.0$ | $-4.6$ | $0.1\times(-4.0+4.6)=+0.06$ |
지금 정책은 거꾸로 됐다 — 비선호 $y_l$ 에 더 높은 확률($-4.0>-5.0$)을 줘서 암묵적 보상도 $\hat r_l=0.06>\hat r_w=-0.04$ 다. 마진은 $z=\hat r_w-\hat r_l=-0.10$. 이때 손실과 가중치는
$$\text{손실}=-\log\sigma(-0.10)=-\log(0.475)\approx 0.744,\qquad w=\sigma(\hat r_l-\hat r_w)=\sigma(0.10)\approx 0.525$$
가중치 $w\approx0.53$ 이 절반을 넘어 크다 — 순서가 틀렸으니 세게 밀라는 신호다. 기울기는 $\log\pi_\theta(y_w)$ 를 높이고 $\log\pi_\theta(y_l)$ 를 내린다. 몇 스텝 뒤 $\log\pi_\theta(y_w)$ 가 $-4.3$ 으로 오르고 $\log\pi_\theta(y_l)$ 가 $-4.8$ 로 내렸다고 하면
| 응답 | $\log\pi_\theta$ | $\hat r$ |
|---|---|---|
| $y_w$ | $-4.3$ | $0.1\times(-4.3+4.6)=+0.03$ |
| $y_l$ | $-4.8$ | $0.1\times(-4.8+4.6)=-0.02$ |
이제 $\hat r_w=0.03>\hat r_l=-0.02$ — 순서가 바로잡혔다. 마진 $z=+0.05$, 손실 $-\log\sigma(0.05)\approx0.668$ 로 줄었고, 가중치 $w=\sigma(-0.05)\approx0.487$ 로 약간 내려가 이제 덜 급하게 민다. 방향이 정확히 의도대로 흘렀다. 여기서 주목할 것은 $\beta=0.1$ 이라는 작은 값 때문에 로그확률의 큰 변화($-5.0\to-4.3$)가 암묵적 보상에서는 작은 변화($-0.04\to0.03$)로 억제된다는 점이다 — $\beta$ 가 참조에서 벗어나는 정도를 조이는 감쇠기로 작동하는 것을 숫자로 볼 수 있다.
3.5.8 마진만 최적화한다는 함정 — 두 확률이 함께 떨어질 때
3.5.6에서 예고한 함정을 숫자로 정면으로 보자. DPO 손실은 마진 $\hat r_w-\hat r_l$ 만 키우면 줄어드는데, 마진은 두 방식으로 커질 수 있다 — $y_w$ 를 높이고 $y_l$ 을 내리거나(의도한 대로), 둘 다 내리되 $y_l$ 을 더 빨리 내리거나. 실제 학습에서는 후자가 흔히 관찰된다.
$\beta=0.1$ 로 두고 학습 전후를 상정하자. 참조는 $\log\pi_{ref}(y_w)=-2.0,\ \log\pi_{ref}(y_l)=-1.5$ 로 고정이다. 학습 초기에 정책이 참조와 같다고 하면 두 암묵적 보상이 모두 0, 마진 0이다. 이제 몇 스텝 뒤 정책이 이렇게 이동했다고 하자.
| 응답 | 학습 전 $\log\pi_\theta$ | 학습 후 $\log\pi_\theta$ | 확률 변화 | 학습 후 $\hat r$ |
|---|---|---|---|---|
| $y_w$ (선호) | $-2.0$ | $-2.5$ | $0.135\to0.082$ (−39%) | $0.1\times(-2.5+2.0)=-0.05$ |
| $y_l$ (비선호) | $-1.5$ | $-3.5$ | $0.223\to0.030$ (−86%) | $0.1\times(-3.5+1.5)=-0.20$ |
마진이 $0$ 에서 $\hat r_w-\hat r_l=-0.05-(-0.20)=+0.15$ 로 커졌다 — DPO 손실은 만족스럽게 내려간다. 그런데 정작 우리가 원하는 응답 $y_w$ 의 절대 확률이 $0.135$ 에서 $0.082$ 로 39% 떨어졌다. 마진이 커진 것은 오직 $y_l$ 이 86% 더 빨리 떨어졌기 때문이다. 두 확률이 함께 내려갔고, 빠져나간 확률질량은 $y_w$ 도 $y_l$ 도 아닌 제3의 응답들로 갔다.
이것이 왜 문제인가. $y_w$ 는 우리가 생성되기를 바라는 응답인데, 그 확률이 낮아지면 정책은 데이터에 없던 제3의 영역으로 질량을 옮긴다. 오프라인 데이터가 그 영역을 감독하지 않으므로 예측 못 한 출력이 나올 수 있다(3.5.9의 분포 이동으로 이어진다). DPO는 "선호 응답을 생성하라"를 직접 최적화하는 것이 아니라 "마진"을 최적화한다 — 이 미묘한 차이가 여러 변형의 출발점이다. 흔한 완화책은 DPO 손실에 SFT 항(선호 응답의 음의 로그우도)을 더해 $y_w$ 의 절대 확률을 고정해 두는 것이고, 뒤의 ORPO·CPO가 이 문제의식을 구조로 만든다. 이 "선호 확률이 같이 떨어진다"는 현상은 널리 관찰되지만 그 심각도는 데이터·$\beta$·초기화에 따라 다르다. 실무에서는 학습 곡선에 chosen 로그확률을 반드시 함께 기록해 이 하락을 감시한다.
3.5.9 왜 그렇게 단순한가, 그리고 그 대가
DPO가 실무에서 폭발적으로 채택된 이유는 분명하다. 보상 모델 학습 단계(데이터·학습·검증)가 전부 사라지고, 롤아웃·가치함수가 없어 생성 없이 고정 데이터셋에 대한 순전파·역전파만으로 학습한다. SFT와 거의 같은 인프라로 실행되고, 경험 버퍼도 RL 루프도 없다. 지도학습 손실이라 하이퍼파라미터 민감도가 PPO보다 낮아($\beta$ 와 학습률이 주된 조정 변수) 학습 곡선이 매끄럽고 재현이 쉽다. 메모리에 정책과 동결 참조 둘만 적재하니 GPU-시가 크게 준다 — 3.5.1에서 계산한 절반의 메모리와 0의 롤아웃이 그 실체다.
그러나 이 단순함은 값을 치른다. 그 값의 목록을 정직하게 적으면 이렇다.
| 얻은 단순함 | 그 대가 |
|---|---|
| 오프라인(롤아웃 없음) | 정책은 자기가 생성한 응답이 아니라 데이터셋의 응답에서만 배운다 → 분포 이동 |
| 보상 모델 없음 | 새 응답을 채점할 RM이 없다 → 반복·온라인화가 번거롭다(3.5.13) |
| 지도학습 손실 | 선호 데이터의 노이즈·편향을 그대로 흡수한다. RM처럼 여러 쌍을 평균해 매끈해지는 완충이 약하다 |
| 마진만 최적화 | 과적합 경향과 선호 응답 절대확률 하락(3.5.8) |
이 중 가장 근본적인 대가는 분포 이동이다. PPO는 온라인 — 현재 정책이 스스로 응답을 생성하고(on-policy) 그 응답을 채점해 배운다. 그래서 정책이 실제로 방문하는 영역을 감독한다. DPO는 오프라인 — 선호쌍 $y_w, y_l$ 은 보통 다른 모델이나 이전 정책, 또는 사람이 만든 것이다. 학습이 진행되면 정책 $\pi_\theta$ 가 그 데이터를 만든 분포에서 멀어지는데, 정작 정책이 새로 가는 영역에는 선호 라벨이 없다. 데이터셋이 커버하지 않는 출력에 대해 DPO는 감독 신호가 없어 예측 못 한 행동을 할 수 있다 — 3.5.8의 "제3의 응답" 문제가 여기서 다시 나온다.
한 문장으로 명시하면, DPO는 RLHF를 지도학습으로 접었지만 그 접힘의 대가로 온라인성(on-policy)을 잃었다. DPO와 PPO 논쟁의 핵심 축이 바로 이 온라인/오프라인 대립이고, 반복 DPO(3.5.13)는 이 축 위에서 오른쪽으로 조금 이동해 보려는 시도다.
3.5.10 DPO와 PPO — 무엇을 가졌는지가 다르다
두 접근을 축별로 나란히 놓되, 어느 쪽도 절대 우위가 아니라는 전제 위에서 읽는다. 이것은 승자를 가리는 표가 아니라 "무엇을 내주고 무엇을 얻었는가"의 대차대조표다.
| 축 | DPO (직접 선호 최적화) | PPO (RLHF의 RL) |
|---|---|---|
| 학습 방식 | 오프라인 지도학습(고정 데이터셋) | 온라인 RL(정책이 롤아웃 생성) |
| 필요 부품 | 정책 + 동결 참조 (2개) | 정책 + 참조 + 보상 모델 + 가치함수 (최대 4개) |
| 보상 모델 | 없음(정책이 암묵적 보상) | 명시적 RM 학습·재사용 |
| on/off-policy | off-policy(데이터가 만든 분포) | on-policy(현재 정책 분포) |
| 분포 이동 | 취약 — 정책이 데이터 밖으로 가면 무감독 | 강건 — 정책 자기 출력을 감독 |
| 안정성 | 높음(매끄러운 지도학습) | 낮음(하이퍼파라미터·보상 해킹 민감) |
| 비용 | 낮음(롤아웃·RM·크리틱 없음) | 높음(매 스텝 생성 + 추가 모델) |
| 과적합 경향 | 있음(결정적 선호·노이즈 흡수) | KL 페널티가 완충하나 보상 해킹 위험 |
| 참조 정책 의존 | 강함($\pi_{ref}$ 로그확률이 손실에 직접) | KL 기준으로 사용(간접) |
| 새 응답 활용 | 불가(오프라인) → 반복 DPO 필요 | 가능(온라인이 본질) |
| 검증가능 보상 활용 | 어려움(선호쌍 형태 필요) | 자연스러움(보상 함수 자리에 규칙·검증기) |
이 표를 결정으로 옮기면 이렇다. DPO가 맞는 경우는 좋은 선호 데이터셋이 이미 있고, 빠르고 저렴하게 안정적으로 정렬하고 싶을 때, 그리고 재현·반복 가능한 파이프라인이 중요할 때다. 자원과 전문성이 제약된 대부분의 오픈소스 정렬·파인튜닝이 여기 해당한다. PPO가 맞는 경우는 온라인 신호가 중요할 때 — 특히 수학 정답·코드 통과·규칙 기반 같은 검증 가능한 보상이 있어 보상 해킹 위험이 적고 on-policy 탐색이 이득일 때다. 대규모 프런티어 랩의 RLHF와 추론 RL(3.7)이 이쪽으로 기운다.
내 견해로는, 먼저 SFT로 기본기를 세우고 좋은 선호쌍이 있으면 DPO로 값싸게 정렬을 시작한 뒤, 검증 가능한 보상이나 on-policy 신호가 특히 중요한 영역(추론·안전)에서만 선택적으로 온라인 RL로 넘어가는 단계적 접근이 자원 대비 합리적일 때가 많다. 다만 이는 팀 역량·데이터·목표에 달렸고 절대 규칙이 아니다(3.5.15). 그리고 경계는 갈수록 흐릿하다 — 반복 DPO는 DPO를 온라인 쪽으로, GRPO는 PPO를 단순화 쪽으로 당겨, 두 계보가 중간에서 수렴하는 중이다.
3.5.11 변형 계보 — IPO·KTO·ORPO·CPO·SimPO
DPO의 성공은 곧 DPO의 약점을 겨냥한 변형들을 낳았다. 계보를 먼저 그리고, 각자가 무엇을 고치는가로 읽는다. GRPO는 결이 달라 다음 절로 뺐다.
3.5.11.1 IPO — 결정적 선호에서 KL 제약을 되살린다
IPO(Identity Preference Optimization, Azar et al. 2023) 는 DPO의 과적합 메커니즘을 이론적으로 다뤘다. DPO는 BT 가정 위에 서는데, 선호가 결정적이면 — 데이터에서 항상 $y_w\succ y_l$ 이라 $P\to1$ 이면 — 문제가 생긴다. BT에서 $P\to1$ 은 보상 차 $\to+\infty$ 를 뜻하기 때문이다.
이것을 숫자로 느껴 보자. DPO 손실 $-\log\sigma(z)$ 를 줄이려면 마진 $z$ 를 키워야 하는데, $\sigma(z)=0.99$ 를 만들려면 $z\approx4.6$, $0.999$ 면 $z\approx6.9$, $0.9999$ 면 $z\approx9.2$ 가 필요하다. 데이터가 결정적이면 손실은 $z$ 를 더 키울수록 계속 줄어들어 유한한 최솟값이 없다. 그래서 정책은 마진을 무한정 키우려 하고, 마진은 $\beta\log(\pi_\theta/\pi_{ref})$ 의 차이이므로 이를 키우려면 $\pi_\theta$ 가 $\pi_{ref}$ 에서 폭주해야 한다 — $\beta$ 로 걸어 둔 KL 제약이 사실상 무력화된다. 선호쌍이 적거나 노이즈가 있을 때 정책이 참조에서 튕겨 나가 과적합하는 이유가 이것이다.
IPO의 처방은 시그모이드 로그우도 대신, 로그비 마진을 유한한 목표값 $\frac{1}{2\beta}$ 에 맞추는 제곱 손실로 바꾸는 것이다.
$$\mathcal L_{\mathrm{IPO}}=\mathbb{E}\Big[\big(h_\theta(x,y_w,y_l)-\tfrac{1}{2\beta}\big)^2\Big],\quad h_\theta=\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)}-\log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}$$
이제 마진에는 명확한 표적이 있다 — 데이터가 아무리 결정적이어도 $h_\theta$ 를 $\frac{1}{2\beta}$ 로 회귀시키면 손실이 최소가 되고, 더 키우면 오히려 손실이 는다. 유한한 최적점이 생겼으니 KL 제약이 살아 있고 과적합이 억제된다.
3.5.11.2 KTO — 쌍 없이, 이진 신호로
KTO(Kahneman-Tversky Optimization, Ethayarajh et al. 2024) 는 데이터 형태 자체를 바꾼다. DPO·IPO는 쌍 $(y_w,y_l)$ 이 필요한데 — 3.5.5에서 봤듯 $Z(x)$ 소거가 같은 프롬프트의 두 응답을 요구하기 때문이다 — 현실의 피드백은 흔히 비페어 이진이다. "이 응답 좋아요/싫어요"(👍/👎), 별점, 통과/실패. 쌍을 맞추려면 추가 수집·매칭이 든다.
KTO는 행동경제학의 전망 이론(prospect theory) — 사람은 이득보다 손실에 더 민감하고(손실 회피), 가치를 기준점 대비로 느낀다 — 를 정렬 손실로 옮긴다. 각 예제가 $(x, y, \text{label}\in\{\text{desirable}, \text{undesirable}\})$ 형태면 되고 쌍이 필요 없으며, 기준점은 배치에서 추정한 KL 항으로 제어한다. 이득은 데이터 수집이 훨씬 쉽다는 것이다 — 자연 발생 피드백과 불균형 라벨을 허용하므로, 프로덕션 로그의 👍/👎를 거의 그대로 쓸 수 있다. 대가는 이론적 최적성 보장이 DPO와 다른 가정 위에 선다는 것이고, 성능은 데이터·설정에 의존한다.
3.5.11.3 ORPO — SFT와 결합, 참조모델 없이 한 단계로
ORPO(Odds Ratio Preference Optimization, Hong et al. 2024) 는 파이프라인 자체를 줄인다. 보통은 SFT → DPO 두 단계인데, ORPO는 하나의 손실로 합치고 참조 모델을 없앤다.
$$\mathcal L_{\mathrm{ORPO}}=\underbrace{\mathcal L_{\mathrm{SFT}}(y_w)}_{\text{선호 응답 지도학습}}+\lambda\cdot\underbrace{\Big(-\log\sigma\big(\log\tfrac{\mathrm{odds}_\theta(y_w|x)}{\mathrm{odds}_\theta(y_l|x)}\big)\Big)}_{\text{odds ratio 페널티}},\quad \mathrm{odds}(y|x)=\frac{\pi_\theta(y|x)}{1-\pi_\theta(y|x)}$$
여기엔 두 가지 설계가 겹쳐 있다. SFT 항이 선호 응답의 절대 확률을 직접 높여 3.5.8의 "선호 확률 하락" 문제를 구조적으로 막고, 로그확률비 대신 오즈비(odds ratio)를 쓰는데 이 형태 덕에 참조 정책 없이도 온건한 페널티가 된다. 오즈비는 로그비보다 완만하게 벌하므로 동결 참조 모델을 메모리에 안 적재해도 폭주하지 않는다 — 메모리와 복잡도를 더 던다. 이득은 한 단계·참조 없음이고, 대가는 SFT와 선호를 한 손실에 섞는 균형($\lambda$)을 맞춰야 한다는 것과 우열이 설정에 의존한다는 것이다.
3.5.11.4 CPO·SimPO — 참조를 없애고 길이를 정규화한다
두 기법 모두 참조 모델 $\pi_{ref}$ 를 없애 메모리를 더 줄이는 계열이다. CPO(Contrastive Preference Optimization, Xu et al. 2024) 는 DPO를 균일 참조(uniform reference) 가정으로 근사해 $\pi_{ref}$ 를 떼고, SFT 항을 더해 선호 응답 품질을 유지한다. 기계번역 등에서 제안·활용됐다.
SimPO(Simple Preference Optimization, Meng et al. 2024) 는 참조를 없애고 보상을 길이 정규화된 평균 로그확률로 정의하며, 여기에 목표 마진 $\gamma$ 를 더한다.
$$\mathcal L_{\mathrm{SimPO}}=-\log\sigma\!\left(\frac{\beta}{|y_w|}\log\pi_\theta(y_w|x)-\frac{\beta}{|y_l|}\log\pi_\theta(y_l|x)-\gamma\right)$$
핵심은 $\frac{1}{|y|}$, 즉 응답 길이로 나누는 것이다. 왜 이것이 필요한지는 숫자로 보면 선명하다. DPO의 보상은 로그확률 합인데, 실제로 모델이 어떤 시퀀스를 생성할지를 좌우하는 값은 대략 토큰당 평균 로그확률이다(디코딩이 길이로 정규화되기 때문). 이 둘은 길이가 다르면 어긋난다. 두 후보 응답을 보자. A는 40토큰에 토큰당 평균 $-0.3$ 이라 합이 $-12.0$, B는 5토큰에 평균 $-0.8$ 이라 합이 $-4.0$ 이다. 합으로 보면 B가 A보다 보상이 높지만($-4.0>-12.0$), 평균으로 보면 A가 높다($-0.3>-0.8$). 합을 최적화하는 DPO는 여기서 짧은 쪽에 유리한 신호를 주거나, 반대로 선호 데이터가 길이와 상관돼 있으면 정책이 "길면 좋다"를 학습하기 쉽다. SimPO의 길이 정규화는 보상 자체를 평균으로 만들어 이 어긋남을 직접 없앤다. 마진 $\gamma$ 는 참조를 뗀 자리에 최소 여유를 강제해 정칙화를 대신한다. 다만 참조 제거와 마진 도입은 정칙화의 성격을 바꾸므로 안정성·성능은 설정에 의존한다.
3.5.11.5 각 변형이 겨냥한 것
| 기법 | 데이터 형태 | 참조 모델 | 핵심 변경 | 겨냥한 문제 |
|---|---|---|---|---|
| DPO | 선호쌍 $(y_w,y_l)$ | 필요(동결) | BT + KL 닫힌형 → 로지스틱 손실 | RM·RL 제거(기준선) |
| IPO | 선호쌍 | 필요 | 시그모이드 → 제곱손실(목표 마진 $\tfrac1{2\beta}$) | 결정적 선호 과적합·KL 무력화 |
| KTO | 비페어 이진(👍/👎) | 필요 | prospect theory 가치함수 | 쌍 없는 데이터 활용 |
| ORPO | 선호쌍 | 불필요 | SFT + 오즈비 페널티, 단일 단계 | 파이프라인 단순화·선호확률 하락 |
| CPO | 선호쌍 | 불필요(근사) | 균일 참조 근사 + SFT 항 | 참조 제거·메모리 |
| SimPO | 선호쌍 | 불필요 | 길이 정규화 평균 로그확률 + 마진 $\gamma$ | 참조 제거·길이 편향 |
이 표는 "무엇을 고치려 했나"이지 "무엇이 더 낫다"가 아니다. 각 변형의 우위 주장은 원논문의 특정 설정·벤치마크에서 나온 결과이며, 독립 재현에서 순위가 뒤바뀌기도 한다. 어떤 기법이 자기 문제에 맞는지는 데이터 형태(쌍이 있나 없나)·자원(참조 모델을 적재할 수 있나)·편향(길이 상관이 있나)으로 먼저 좁히고, 자기 셋에서 검증하는 것이 옳다.
3.5.12 GRPO — DPO가 아니라 PPO를 단순화한 것
GRPO(Group Relative Policy Optimization, Shao et al. 2024, DeepSeekMath) 는 이 장의 다른 기법들과 결이 다르므로 절을 따로 두고, 그 위치를 정직하게 명시한다. 이름에 "Preference"가 들어가 DPO 사촌으로 오해받기 쉽지만, GRPO는 DPO처럼 오프라인 선호 최적화가 아니라 PPO 계열의 온라인 RL이다. 여전히 롤아웃(생성)을 하고, 보상 함수로 채점하고, on-policy로 배운다.
GRPO가 이 장에 있는 이유는 계보가 아니라 동기의 공통점이다. DPO가 RLHF에서 보상 모델(RM)을 지웠듯, GRPO는 PPO에서 가치함수(크리틱)를 지운다. 둘 다 "RLHF 기계의 무거운 부품 하나를 없앤다"는 같은 정신인데, 지운 부품이 다르고 그래서 성격이 정반대다 — DPO는 RM을 제거하고 오프라인으로 전환하는 반면, GRPO는 가치함수를 제거하고 온라인을 유지한 채 baseline만 바꾼다. 이 구분을 흐리면 안 된다. GRPO는 롤아웃과 보상이 필요한 온라인 RL이고, "DPO 변형"이라 부르면 그 인프라 요구 전체를 오판한다.
가치함수를 무엇으로 대체하는지가 GRPO의 착상이다. PPO는 어드밴티지 $A=r-V_\psi$ 를 위해 정책만 한 크기의 크리틱 $V_\psi$ 를 따로 학습한다 — 3.5.1에서 본 112 GB 크기의 부품이자 불안정의 큰 원인이다. GRPO는 같은 프롬프트에 여러 응답을 뽑아 그 그룹의 평균 보상을 baseline으로 쓰면 크리틱이 필요 없다고 본다. 프롬프트 $x$ 마다 정책으로 응답 그룹 $\{y_1,\dots,y_G\}$ 을 샘플하고 각각 보상 $r_i$ 를 매긴 뒤, 그룹 내 표준화로 어드밴티지를 만든다.
$$\hat A_i=\frac{r_i-\mathrm{mean}(\{r_1,\dots,r_G\})}{\mathrm{std}(\{r_1,\dots,r_G\})}$$
"이 응답이 같은 질문에 대한 다른 시도들보다 얼마나 나은가"라는 상대 평가다. 숫자로 보면 규모가 드러난다. 수학 문제에 $G=4$ 개 풀이를 뽑았는데 보상이 정답 1·오답 0으로 $[1,1,0,0]$ 이 나왔다 하자. 평균 0.5, 표준편차 0.5이므로 어드밴티지는 정답에 $+1$, 오답에 $-1$ 이다 — 맞은 풀이 쪽으로 밀고 틀린 풀이에서 민다. 이번엔 $[1,1,1,0]$ 이라 하자. 평균 0.75, 표준편차 $\approx0.433$ 이라 정답 셋은 각각 $(1-0.75)/0.433\approx+0.58$, 외로운 오답 하나는 $(0-0.75)/0.433\approx-1.73$ 을 받는다. 대부분 성공한 판에서 유일한 실패가 강한 음의 신호를 받아 집중적으로 교정된다. 그룹 평균이 baseline 역할을 해 분산을 줄이고, 학습 목적은 PPO의 클립 대리 목적 + 참조로의 KL을 그대로 쓰되 $\hat A_i$ 만 이 그룹 상대값으로 바꾼다.
GRPO가 주목받은 결정적 맥락은 추론 모델이다. 수학·코딩 추론에서는 검증 가능한 보상(verifiable reward)이 있다 — 최종 답이 맞나(수학), 테스트를 통과하나(코드), 형식이 맞나. 이런 규칙 기반 보상은 학습된 RM보다 보상 해킹에 강하고(정답은 속이기 어렵다) 별도 RM 학습도 필요 없다. 여기에 GRPO를 추가하면 크리틱도 없고(GRPO) RM도 없어(검증 보상) PPO의 네 모델 중 둘을 지운다 — 정책과 참조만 남아 대규모 추론 RL이 현실적이 된다. 게다가 그룹 상대 어드밴티지는 "여러 번 풀어 보고 그중 맞은 풀이 쪽으로 정책을 민다"는 추론 RL의 자연스러운 형태와 잘 맞는다. 최근 오픈 추론 모델들이 GRPO나 그 변형을 채택한 배경이 이것이다.
정직하게 덧붙이면, GRPO의 우위도 설정에 의존한다. 검증 가능한 보상이 있는 도메인에서 특히 빛나지만, 그런 보상이 없는 열린 대화·주관적 선호에서는 여전히 RM이나 선호 기반이 필요하다. "GRPO가 PPO를 항상 대체한다"가 아니라 "크리틱 비용을 그룹 샘플링 비용과 맞바꾼, 특정 조건에 강한 변형"이 정확한 표현이다 — 그룹 크기 $G$ 만큼 롤아웃이 늘어 생성 비용은 오르니, 지운 크리틱 메모리를 늘어난 생성으로 되사는 셈이다. 추론을 RL로 유도하는 이야기 전체는 3.7에서 test-time compute·사고사슬·검증·탐색과 함께 정면으로 다룬다.
3.5.13 온라인·반복 DPO — 오프라인의 장벽을 넘기
3.5.9에서 DPO의 근본 약점은 오프라인성, 즉 분포 이동이라 했다. 이를 완화하는 실무 패턴이 반복(iterative)·온라인 DPO다. 아이디어는 단순하다 — 현재 정책으로 새 응답을 뽑아, 새로 선호를 매겨, 데이터를 갱신하고 다시 DPO를 실행된다.
이렇게 하면 정책이 실제로 방문하는 분포에서 선호를 받으므로 오프라인 DPO의 분포 이동이 줄고, on-policy 신호가 들어와 PPO의 이점 일부를 흡수한다. 대가는 채점기가 되돌아온다는 것이다 — 새 응답에 선호를 매기려면 보상 모델, LLM-as-judge(4.2), 또는 사람이 필요하다. "DPO는 RM이 필요 없다"는 순수 오프라인에서의 이야기이고, 반복 DPO는 RM이나 심판을 다시 부른다. 즉 단순함의 일부를 온라인성과 맞바꾼다. 정책이 스스로 응답을 생성하고 스스로(또는 심판 모델로) 선호를 매겨 반복하는 self-rewarding·self-play 류가 이 흐름에 있는데, 라운드가 진행될수록 보상 해킹과 모드 붕괴(다양성 상실) 위험이 커져 라운드 수와 데이터 신선도를 관리해야 한다.
반복 DPO는 DPO와 PPO가 사실 하나의 연속선 위에 있음을 잘 보여 준다. 왼쪽 끝에 순수 오프라인 DPO(한 번), 가운데에 반복 DPO(여러 라운드, 채점기 필요), 오른쪽 끝에 온라인 RL(PPO·GRPO, 매 스텝 롤아웃)이 있다. 오른쪽으로 갈수록 on-policy 정도·비용·복잡도가 오르고 분포 이동에 강해진다.
어디에 설지가 3.5.10의 트레이드오프 결정이다. 자원이 부족하고 좋은 데이터가 있으면 왼쪽, 검증 보상과 on-policy 탐색이 중요하면 오른쪽, 둘을 절충하고 싶으면 가운데다.
3.5.14 결과를 가장 크게 좌우하는 변수는 데이터다
기법 논쟁에 가려지지만, 정렬 결과를 가장 크게 좌우하는 것은 손실 함수가 아니라 선호 데이터의 품질인 경우가 많다. DPO 계열은 오프라인 지도학습이라 "쓰레기가 들어가면 쓰레기가 나온다"가 특히 직접적이다 — RM처럼 여러 쌍을 평균해 노이즈를 완충하는 층이 얇기 때문이다.
주석자 간 선호가 엇갈리거나(낮은 일치도) 애매한 쌍이 많으면 DPO는 모순되는 방향으로 정책을 민다. 선호가 약한(거의 무승부) 쌍은 오히려 IPO류의 과적합 완화나 필터링을 요구한다. 더 교활한 것은 길이·형식 편향이다 — 주석자나 심판이 긴 응답·불릿·자신감 있는 어투를 내용과 무관하게 선호하면, 정책이 길이·형식을 정답으로 착각한다. 3.5.11.4에서 봤듯 DPO의 로그확률 합은 길이에 민감해 이 편향을 증폭하고, SimPO의 길이 정규화가 겨냥한 지점이 바로 여기다. 데이터 단계에서 $y_w, y_l$ 의 길이 분포를 맞추는 것도 방법이다. 분포 커버리지도 문제다 — 데이터가 정책이 실제 만날 입력·출력 영역을 덮지 못하면 그 밖에서 무감독이고(3.5.9), 반복 DPO나 커버리지를 넓힌 프롬프트 설계가 필요하다. on-policy 대 off-policy도 미묘하다 — 더 강한 모델이 만든 응답으로 만든 선호쌍은 시작점으로 좋지만, 학습 대상 정책과 분포가 멀면 학습이 어긋날 수 있어 현재 정책 근처에서 뽑은 쌍이 대체로 더 잘 듣는다. 마지막으로, "약간 나음"과 "확실히 나음"을 구분하는 신호(점수차·신뢰도)가 있으면 손실에 마진·가중치로 반영해 노이즈를 줄일 수 있다.
요점은 이렇다. "DPO냐 PPO냐"보다 "선호 데이터를 어떻게 모으고 정제하느냐"가 결과를 더 좌우하는 경우가 흔하다. 새 손실 함수를 좇기 전에 데이터의 일치도·편향·커버리지부터 점검하는 것이 대개 더 큰 이득이다. 이것은 견해이지만 여러 실무 보고와 부합한다.
3.5.15 "DPO가 항상 PPO보다 낫다"는 논쟁적이다
이 장에서 반드시 남겨야 할 균형이 이것이다. DPO 논문 이후 "간단한 DPO가 복잡한 PPO만큼, 또는 더 잘한다"는 인상이 널리 퍼졌지만, 이는 조건부 주장이며 반례가 많다.
DPO·변형 논문들은 각자 자기 실험 설정 — 특정 데이터셋·모델 크기·벤치마크·하이퍼파라미터 — 에서의 우위를 보고한다. 이는 "그 설정에서 그랬다"이지 "일반적으로 그렇다"가 아니다. 후속 연구 중에는 잘 튜닝한 PPO가 DPO를 앞선다고 보고한 것도, DPO가 충분하다고 한 것도 있어 양쪽 주장이 공존한다. 우열을 가르는 것은 대개 다음 넷이다 — 선호 데이터의 질·양·on-policy 여부(3.5.14), 검증 가능한 보상의 유무(있으면 온라인 RL이 유리, 3.5.12), 하이퍼파라미터 튜닝 노력(PPO는 잘 맞추면 강하지만 맞추기 어렵다), 그리고 평가 방식(자동 벤치마크냐 사람 평가냐, 오염 여부).
평가 방식은 특히 조심할 함정이다. 정렬 평가는 LLM-as-judge(4.2)나 자동 벤치마크에 의존하는데, 이들은 길이·형식·자기편향에 취약하다. "DPO 모델이 심판 점수가 높다"가 곧 "실제로 더 유용·안전"은 아니다. 평가셋 오염(4.1)도 순위를 교란한다. 게다가 논문 비교에서 한쪽 — 보통 baseline인 PPO — 이 덜 튜닝되는 일이 흔하다. "간단한 X가 복잡한 Y를 이겼다"는 서사는 Y를 얼마나 성실히 튜닝했는지에 좌우된다. 벤치마크 우열은 언제나 조건과 함께 읽어야 한다.
정확한 진술은 이렇다. DPO 계열은 단순·저비용·안정이라는 뚜렷한 실용 이점이 있고, 좋은 데이터가 있으면 강력한 baseline이다. PPO·GRPO 같은 온라인 RL은 검증 가능한 보상과 on-policy 신호가 중요할 때 이점이 있다. 어느 쪽이 이길지는 설정·데이터·평가에 의존하며, 자기 문제에서 검증해야 한다. "간단한 게 이겼다"도, "결국 RL이 이긴다"도 표어일 뿐이다.
이 장까지의 정렬은 인간 선호 — 사람이 만든 선호쌍과 보상 — 에 기댔다. 사람이 다는 라벨은 비용이 크고 느리고 확장이 어렵다. 다음 장(3.6)은 AI가 피드백을 만드는 방향(RLAIF)과, 사람이 쓴 원칙(헌법)으로 모델이 스스로를 비평·수정하게 하는 헌법적 AI를 다룬다 — 정렬의 병목인 인간 라벨을 줄이는 "확장 가능한 감독(scalable oversight)"의 이야기다. DPO·PPO가 어떻게 정렬하는가였다면, 다음은 정렬 신호를 누가·무엇으로 만드는가다.