DPO가 "좋다"고 배운 응답은 실제로 생성할 때 더 잘 나올까? DPO가 올리는 값과 모델이 생성할 때 쓰는 값이 같다면 그렇겠지만, 두 값은 같지 않다. 마지막 약점은 이 어긋남이다.
약점 5: 학습 목표와 생성 목표가 다르다
DPO가 키우는 것은 응답의 레퍼런스 대비 로그비율의 합 βlogπref(y)πθ(y) 이다. 그런데 모델이 답을 만들 때는 레퍼런스를 보지 않는다. 자기 로그확률 logπθ(y) 가 높은 쪽, 여러 후보 가운데 하나를 고를 때는 흔히 길이로 나눈 평균 로그확률이 높은 쪽이 나온다. 두 잣대가 어긋나는 경우를 숫자로 보자(β=0.1).
응답
토큰 수
레퍼런스 로그확률 합
정책 로그확률 합
DPO의 보상 βlogπrefπθ
정책의 평균 로그확률
선호 yw
20
−30
−28
+0.2
−1.4
비선호 yl
10
−11
−12
−0.1
−1.2
DPO의 잣대로는 yw 가 이기고 있다. 레퍼런스보다 올랐고 yl 은 내려갔다. 하지만 정책이 지금 주는 확률로는 합으로도(−28 대 −12), 평균으로도(−1.4 대 −1.2) yl 이 앞선다. 학습에서 "좋다"고 판단한 응답이 실제 생성에서는 나오지 않을 수 있다. DPO가 매기는 암묵적 보상이 생성할 때의 지표와 따로 노는 것이다.
SimPO 팀이 본 증상
2024년 버지니아 대학과 프린스턴 대학의 멍(Yu Meng), 샤(Mengzhou Xia), 천(Danqi Chen)은 이 어긋남을 실제로 재 보았다. DPO로 학습한 모델에서 훈련 데이터의 (프롬프트, 선호 응답, 비선호 응답) 묶음 가운데, DPO의 보상 순위와 평균 로그확률의 순위가 일치하는 것은 약 50%뿐이었다. 동전 던지기와 다름없다. 그들의 SimPO(NeurIPS 2024)는 보상을 생성할 때 쓰는 그 양, 토큰당 평균 로그확률로 바꿨다.
이 한 번의 바꿈으로 세 가지가 함께 풀린다. 첫째, 학습이 키우는 값이 생성할 때의 지표와 같아진다. 둘째, 토큰 수 ∣y∣ 로 나누므로 긴 응답이 길다는 이유만으로 로그확률 합에서 지는 길이 편향이 사라진다. 셋째, 식에 레퍼런스가 없으니 약점 4의 메모리 부담도 함께 사라진다. 레퍼런스가 하던 "어디까지 벌리면 충분한가"는 목표 마진 γ 가 일부 대신한다. "최소 이만큼은 벌려라"는 하한이다.
결과도 컸다. 저자들은 AlpacaEval 2(지시문 805개에 대한 답을 GPT-4 Turbo의 답과 견주어 GPT-4 Turbo가 이긴 쪽을 고르는 평가. 길이 보정 승률은 응답 길이의 영향을 걸러 낸 승률이다)에서 DPO보다 최대 6.4점, Arena-Hard(Chatbot Arena에 올라온 질문 가운데 어려운 500개를 골라 같은 방식으로 견주는 평가)에서 최대 7.5점 높았다고 보고했다. 구글의 공개 모델 Gemma 2(파라미터 90억 개)를 지시를 따르게 다듬은 Gemma-2-9B-it에 SimPO를 건 모델은, 익명의 두 모델이 낸 답을 사용자가 보고 투표해 순위를 매기는 Chatbot Arena에서 36위에서 25위로 올라 파라미터 100억 개 미만 모델 가운데 1위에 올랐다(논문 발표 시점).
문제 8 — 레퍼런스보다 올랐는데 아직 진다
한 쌍에서 선호 응답 yw 는 8토큰, 비선호 응답 yl 은 4토큰이다. 학습 중인 정책의 로그확률 합은 yw 가 −8, yl 이 −3.2이고, 레퍼런스의 합은 yw 가 −10, yl 이 −3이다. (가) DPO의 레퍼런스 대비 마진 z 와 손실을 구하시오(KL 강도 0.1). (나) 모델이 평균 로그확률로 응답을 고른다면 어느 응답이 앞서는가? (다) SimPO(β=2, γ=0.5)의 손실은 얼마이고, 이 쌍에서 무엇을 하라고 미는가?
김민준
z=(−8+3.2)−(−10+3)=−4.8+7=2.2. 레퍼런스보다 2.2나 더 벌렸으니 모델은 yw 를 더 잘 만들게 된 거죠. 손실도 −logσ(0.22)≈0.589 로 출발점 0.693보다 낮고요.
선생님
민준 학생, 모델이 답을 만들 때 레퍼런스를 보나요?
김민준
아뇨, 자기 확률만 보죠. 평균 로그확률은 yw 가 −8/8=−1.0, yl 이 −3.2/4=−0.8. yl 이 앞서요.
이서연
DPO가 본 건 "레퍼런스보다 얼마나 나아졌나"고, 생성이 보는 건 "지금 확률이 얼마인가"네. yw 는 레퍼런스에서 많이 올랐지만 아직 yl 보다 낮은 거야.
선생님
그래요. 그럼 SimPO는 이 쌍을 어떻게 볼까요?
이서연
마진이 2×(−1.0−(−0.8))−0.5=−0.9 라서 손실은 −logσ(−0.9)≈1.241. 아직 지고 있으니 yw 의 평균 로그확률을 yl 보다 올리라고 세게 밀어요.
이서연
해석학에서 수열이 증가한다는 것과 어떤 값보다 크다는 게 다른 말인 거랑 같네요. 올랐다고 앞선 건 아니에요.
정리 (가) z=2.2, DPO 손실 약 0.589. (나) 평균 로그확률은 yw −1.0, yl −0.8 로 yl 이 앞선다. DPO는 만족해 가는데 생성은 yl 쪽이다. (다) SimPO 마진 −0.9, 손실 약 1.241. 평균 로그확률에서 yw 가 yl 을 γ 이상 앞서도록 민다.