6. DPO의 재등장 — 보상 모델을 수식으로 지우다

DPO가 버린 것: 생성 루프

DPO는 RLHF와 같은 목적함수의 최적해를 겨냥한다. 그렇다면 PPO로 푼 RLHF와 무엇이 같고, 무엇이 다를까? 같은 선호 데이터를 주면 같은 모델이 나올까?

지킨 것과 버린 것
PPO로 푸는 RLHF: 모델 넷이 도는 고리 ① 정책 새 응답을 뽑는다 ② 보상 모델 그 응답을 채점 ③ 비평가 어드밴티지 계산 업데이트 잘라 가며 조금씩 ④ 레퍼런스 KL 벌점 한 바퀴마다 지금 정책이 만든 응답으로 배운다 DPO: 모델 둘, 한 방향 선호 데이터셋 미리 모아 둔 좋은·나쁜 답 쌍 정책 · 레퍼런스 로그확률만 잰다 새로 뽑지 않는다 DPO 손실 마진을 벌리도록 업데이트 다음 묶음으로 데이터셋으로 돌아가는 화살표가 없다
PPO-RLHF DPO
목적함수 E[r]−βKL\mathbb{E}[\textcolor{#d9670b}{r}] - \textcolor{#827717}{\beta}\textcolor{#8c564b}{\mathrm{KL}} 같다 — 그 최적해를 직접 겨냥
선호 모델 Bradley-Terry로 보상 모델 학습 같다 — BT를 정책에 바로 적용
필요한 모델 정책·레퍼런스·보상 모델·비평가 (4) 정책·레퍼런스 (2)
응답은 누가 만드나 학습 중인 정책 자신 (온라인·온폴리시: 학습 도중 지금 정책이 새로 만든 데이터) 미리 만든 데이터셋 (오프라인·오프폴리시: 남이 미리 만든 고정 데이터)
탐색 새 응답을 만들어 보며 배운다 데이터셋에 있는 응답만 본다
구현 생성·채점·학습 루프 SFT(정답을 따라 쓰게 하는 지도 미세조정)와 같은 지도학습 루프, 손실만 교체

지킨 것은 목적함수와 선호 모델이다. 버린 것은 생성 루프다. 이 선택이 DPO의 장점과 한계를 동시에 만든다. 장점: 지도학습처럼 안정적이고 싸다. 코드 몇 줄로 기존 파이프라인에 붙는다. 한계: 정책 그래디언트는 "지금의 정책이 뽑은 응답"에서만 올바른 그래디언트를 준다. DPO는 남이 만든 응답만 본다. 모델이 지금 실제로 저지르는 실수가 데이터셋에 없다면 그 실수는 교정되지 않는다.

ML에서: PPO와 DPO를 나란히 돌려 보면

같은 목적함수를 겨냥하니 결과도 같을까? 칭화 대학의 쉬(Shusheng Xu)와 동료들은 2024년 ICML에 실린 비교 연구 「Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study」에서 두 방법을 대화 과제부터 코드 경진 문제까지 나란히 돌렸고, 잘 조율한 PPO가 모든 실험에서 DPO를 앞섰다. 차이가 가장 컸던 것은 코드 경진 문제 모음(CodeContests)이다. 340억 파라미터 코드 모델(Code Llama 34B)을 같은 출발점에서 세 가지로 다듬고, 문제마다 코드 1,000개를 뽑아 문제에 딸린 공개 예제로 거른 뒤 10개를 제출해 숨은 시험을 통과한 비율을 쟀다.

다듬는 법 시험 문제 통과율
SFT만 15.2%
DPO 0.0%
PPO 22.4%

DPO로 다듬은 모델은 한 문제도 풀지 못했고, 저자들은 이 모델이 뜻 없는 코드 조각을 잔뜩 내놓았다고 적었다. PPO 쪽은 410억 파라미터 AlphaCode의 16.4%도 넘었다. 목적함수가 같은데 어디서 이런 차이가 났을까? 아래 두 문제에서 숫자로 따져 본다.

문제 5 — 4배라는 말만 들었을 때

30명인 반에서 반장 선거를 한다. 후보는 민서, 준호, 서아 셋이고, 모두 한 표씩 던진다. 사전 조사 결과는 「민서를 찍겠다는 학생이 준호를 찍겠다는 학생의 4배」라는 말만 전해졌다(준호를 찍겠다는 학생은 한 명 이상). (가) 민서가 받을 수 있는 표는 몇 표에서 몇 표 사이인가? (나) 이 말만으로 민서가 당선된다고 할 수 있는가?

김민준 (자신만만)
김민준
4배면 압도적이죠. 민서 당선이요.
선생님 (질문)
선생님
민준 학생, 준호가 3표라면 민서와 서아는 몇 표죠?
김민준 (평상)
김민준
민서 12표, 서아는 30 − 15 = 15표…
김민준 (난처함)
김민준
서아가 이기네요.
이서연 (평상)
이서연
두 사람 사이의 비율만 들었지, 서아한테 간 표는 아무 말도 없었으니까. 준호는 1표부터 6표까지 다 될 수 있고, 민서는 4표에서 24표까지 어디든 돼.
선생님 (평상)
선생님
그래요. 두 사람의 비만 정한 말은 나머지 한 사람의 몫을 정하지 못해요.

정리 (가) 준호가 kk 표면 민서 4k4k 표, 서아 30−5k30 - 5k 표. k=1,…,6k = 1, \ldots, 6 이므로 민서는 4표에서 24표 사이다. (나) 할 수 없다. 준호가 4표 이상이면 민서가 이기지만(k=4k = 4: 16 대 10), 3표 이하면 서아가 이긴다(k=3k = 3: 12 대 15). 두 후보 사이의 비율은 셋째 후보의 몫을 정하지 않는다.

문제 6 — (킬러) 같은 최적해, 같은 모델?

민준: “DPO는 RLHF 목적함수의 최적해를 정확히 유도했으니, 같은 선호 데이터라면 PPO-RLHF와 같은 모델이 나와야 해요.” 서연: “최적해가 같다는 건 끝점이 같다는 뜻이고, 경로만 다를 뿐이야. 충분히 학습하면 결국 같은 데 도착해.” DPO 학습 중에 πθ(yw)\textcolor{#1565c0}{\pi_\theta}(\textcolor{#e000a5}{y_w})가 0.3→0.2, πθ(yl)\textcolor{#1565c0}{\pi_\theta}(\textcolor{#e000a5}{y_l})이 0.3→0.05로 변했다(레퍼런스는 둘 다 0.3). 손실은 줄었는가? 두 주장의 문제는 무엇인가?

선생님이 칠판에 π_θ(y_w): 0.3 → 0.2, π_θ(y_l): 0.3 → 0.05 를 적는다.
선생님 (평상)
선생님
먼저 계산부터요. 손실은 줄었나요?
김민준 (평상)
김민준
Δ_ref = log(0.3/0.3) = 0. Δ_θ = log(0.2/0.05) = 1.39. z = 1.39 > 0 이니까 손실은 0.693보다 작아졌어요. 잘 학습된 거죠.
선생님 (질문)
선생님
좋은 답 y_w의 확률은 어떻게 됐죠?
김민준 (평상)
김민준
0.3에서 0.2로…
김민준 (놀람)
김민준
떨어졌어요. 좋은 답인데요?
이서연 (평상)
이서연
둘 다 떨어졌는데 y_l이 더 많이 떨어져서 마진이 벌어진 거야. 그럼 원래 0.6이던 두 응답의 확률 중 0.35는 어디로 갔어?
김민준 (평상)
김민준
데이터셋에 없는 다른 응답들로요. 그게 좋은 응답인지는… 모르겠네요.
선생님 (평상)
선생님
민준 학생, 처음 주장으로 돌아가 볼까요. “최적해를 정확히 유도했으니 같은 모델이 나온다.”
김민준 (당황)
김민준
유도는 정확했는데, 손실은 데이터셋에 있는 쌍의 마진만 보고 있어요. 나머지 응답에 확률이 어떻게 흩어지든 손실은 신경 안 쓰네요.
김민준 (평상)
김민준
시험 범위만 공부한 거랑 같아요. 기출 문제의 정답과 오답은 확실히 구분하는데, 범위 밖 문제가 나오면 뭘 쓸지 아무도 모르는.
이서연 (평상)
이서연
그건 유한 데이터 얘기잖아. 데이터가 충분하면 결국 같은 최적점에 가는 거고, 그러니까 내 말대로 경로 차이 아니야?
선생님 (질문)
선생님
서연 학생, DPO 손실의 최소점은 몇 개죠?
이서연 (생각)
이서연
손실은 데이터에 있는 쌍마다 로그비율의 차이만 정해요. 데이터에 없는 응답의 확률은 식에 아예 안 나오고요. 그러면 조건을 만족하는 π_θ가… 무수히 많아요.
이서연 (깨달음)
이서연
최적점이 하나가 아니라 집합이네요. PPO는 정책이 직접 뽑은 응답을 보상 모델이 채점하니까 데이터 밖으로 흘러간 확률도 결국 평가받는데, DPO는 그걸 볼 방법이 없어요. 끝점이 같은 게 아니라, DPO의 끝점 후보 중 하나가 PPO의 끝점인 거예요.
선생님 (평상)
선생님
정확해요. "같은 목적함수의 최적해"라는 말은 모든 응답에 대해 보상이 주어졌을 때의 이야기예요. 유한한 오프라인 데이터에서는 해가 유일하지 않고, 그중 어디로 가는지는 데이터가 덮지 못한 곳에서 결정돼요.
이서연 (평상)
이서연
연립방정식에서 식보다 미지수가 많을 때랑 같네요. 해가 있긴 한데 하나로 안 정해지는.
김민준 (평상)
김민준
아까 반장 선거 문제랑도 같아요. 좋은 답이 나쁜 답의 4배라는 것만 정해졌지, 서아처럼 데이터 밖에 있는 응답의 몫은 아무 말도 없었어요.
선생님 (평상)
선생님
이 현상은 실제로 보고돼요. 선호 응답의 확률까지 같이 떨어지는 것. 이걸 막으려고 SFT 항을 섞는 변형들이 나왔고, 데이터를 정책 자신이 만들게 해서 빈 곳을 없애는 온라인 DPO도 나왔어요.

정리 Δθ=log⁡(0.2/0.05)≈1.39>Δref=0\textcolor{#1565c0}{\Delta_\theta} = \log(0.2/0.05) \approx 1.39 > \textcolor{#6f6f78}{\Delta_\text{ref}} = 0 — 손실은 줄었다. 그러나 선호 응답의 확률도 떨어졌고, 사라진 확률 0.35는 데이터셋 밖의 응답으로 갔다. 민준: 유도는 맞지만, 유한한 오프라인 쌍만 보는 손실은 데이터 밖을 통제하지 못한다. 서연: 문제는 경로가 아니라 최소점이 유일하지 않다는 것 — 데이터에 없는 응답의 확률은 손실에 나타나지 않는다. PPO는 자기가 뽑은 응답을 채점받으므로 이 빈 곳이 드러난다.