DPO 손실은 보상 모델 손실의 보상 자리에 βlogπrefπθ 를 끼운 것이었다. 그렇다면 DPO의 σ 와 −log 도 BT에서 나온 것일까, 아니면 편해서 고른 활성화 함수와 손실일까?
라벨 세 개의 우도
작은 예부터 보자. 사람이 세 쌍에 "이쪽이 낫다"는 라벨을 달았고, 지금 보상 모델이 매긴 점수 차(고른 응답 − 버린 응답)가 각각 2, 0, −1 이라 하자. 셋째 쌍은 모델이 라벨과 반대로 점수를 매긴 쌍이다. BT는 각 라벨이 나올 확률을 σ(2)=0.881, σ(0)=0.5, σ(−1)=0.269 로 본다. 세 라벨이 한꺼번에 나올 확률, 곧 이 점수에서의 우도는 셋의 곱 0.118 이다.
곱은 쌍이 늘수록 0으로 빠르게 작아져서 다루기 어렵다. 로그를 씌우면 곱이 합이 되고, 부호를 뒤집으면 "줄일수록 좋은 양"이 된다. −log0.118=2.133 은 쌍마다의 −logσ(점수차) 인 0.127+0.693+1.313 과 같다. 라벨과 반대로 매긴 셋째 쌍이 손실의 대부분을 낸다.
−log 는 최대우도에서 나온다 — “관측된 라벨의 확률을 최대화하라”. 이진 분류의 크로스 엔트로피와 같은 것이다.
그림처럼 두 손실은 점수 자리만 다르고, 점수 차에서 손실까지 가는 길은 같다. DPO의 σ 는 아무렇게나 넣은 활성화 함수가 아니라, BT 선호 모델 + 최대우도 추정이라는 통계적 선택의 결과다.
ML에서: 바깥 함수를 바꾸는 변형들
−logσ 자리에 다른 함수를 넣은 DPO 변형도 있다. 제곱 오차를 쓰는 IPO(Identity Preference Optimization, 아자르(Azar)와 동료들, 2023)와 힌지 손실을 쓰는 SLiC-HF(Sequence Likelihood Calibration with Human Feedback, 자오(Zhao)와 동료들, 2023)가 그렇다. −logσ 의 무엇이 모자라서 바꾸고 싶어지는지는 아래 문제 6의 (다)에서 드러난다. 아래 위젯은 앞 절의 Bradley-Terry 곡선에 문제 6의 값을 불러오는 단추와, 같은 대회를 여러 번 치러 보는 단추를 더한 것이다.
문제 4 — 사흘 일기예보 채점하기
사흘 내리 비가 왔다. 예보관 갑은 사흘 동안 비 올 확률을 0.99, 0.95, 0.2 로, 예보관 을은 0.7, 0.7, 0.7 로 예보했다. (가) 두 예보관이 비 온 날마다 준 확률의 평균은 각각 얼마인가? (나) 하루하루의 날씨가 따로 정해진다고 보고, 두 예보관이 「사흘 내리 비」라는 실제 기록에 준 확률을 구하시오. (다) 날마다 −log(그날비에준확률) 을 벌점으로 매겨 더하면 누가 더 나은 예보관인가? 벌점을 가장 많이 낸 날은 언제인가?
김민준
(가)만 봐도 되겠는데요. 갑은 (0.99 + 0.95 + 0.2) ÷ 3 = 0.713, 을은 0.7. 갑이 조금 더 잘 맞혔어요. 이틀은 거의 확신하고 맞혔고요.
평균에서는 셋째 날의 0.2 가 다른 두 날과 더해져 묽어지는데, 곱에서는 0.2 가 기록 전체에 그대로 곱해져. 확신하고 크게 틀린 하루가 기록 전체의 확률을 끌어내리는 거야.
선생님
그래요. 그 하루가 얼마나 끌어내렸는지를 날마다 따로 볼 수 있게 한 것이 (다)의 벌점이에요.
이서연
갑은 0.010 + 0.051 + 1.609 = 1.671, 을은 0.357 씩 세 번이라 1.070. 을이 나은 예보관이에요. 갑의 벌점은 거의 다 셋째 날에서 나왔고요.
김민준
벌점의 합이 −log 0.188 = 1.671 이랑 같네요. 기록에 건 확률의 곱이 −log 를 씌우니까 날마다 벌점의 합이 된 거고요.
김민준
조교님이 퀴즈에서 「확실함」에 체크하고 틀린 문제를 크게 깎던 거랑 같네요. 평균은 괜찮아 보여도 자신 있게 틀린 한 문제가 점수를 다 깎아 먹었어요.
정리 (가) 0.713 대 0.7. (나) 0.188 대 0.343. (다) 벌점 1.671 대 1.070 으로 을이 낫다. 갑의 벌점은 거의 다 셋째 날(1.609)에서 나온다. 벌점의 합은 기록에 준 확률의 −log 이고, 확신하고 크게 틀린 날 하나가 합을 좌우한다.
문제 5 — 시그모이드를 정규분포로 바꾸면
손실 −logσ(z) 의 σ 자리에, 가운데서는 σ 와 거의 같은 곡선 Φ(z/1.7) 을 넣은 손실 −logΦ(z/1.7) 을 생각하자(Φ 는 표준정규분포의 누적분포함수, z 는 고른 응답과 버린 응답의 점수 차). (가) z=2 인 쌍에서 두 손실과 그래디언트 크기 ∣dL/dz∣(마진을 미는 힘)를 비교하시오. (나) 라벨이 잘못 붙어, 모델이 라벨과 반대로 크게 벌려 둔 쌍 z=−6 에서는? (다) 두 곡선은 서로 다른 가정에서 나왔지만 가운데서는 거의 겹친다. 그렇다면 학습도 사실상 같은가? 틀린 라벨을 대하는 방식으로 답하시오.
김민준
가정이 다르다는 건 알겠는데, 가운데서 거의 겹치는 곡선이면 학습은 사실상 같겠죠. (가)를 돌려 보면 z=2 에서 손실은 둘 다 0.127, 미는 힘은 σ(−2)=0.119 대 0.133 이에요. 거의 같네요.
선생님
민준 학생, 그 쌍은 이미 라벨대로 벌어진 쌍이에요. 라벨이 틀려서 모델이 반대로 6만큼 벌려 둔 쌍이면요?
김민준
z=−6 에서 σ 쪽은 손실 6.00, 미는 힘 0.998. Φ 쪽은 손실 8.48, 미는 힘 2.22.
김민준
두 배 넘게 세게 당겨요. 가운데서는 같은 곡선이었는데.
이서연
σ 쪽 미는 힘은 σ(−z) 라서 z 가 아무리 작아져도 1을 못 넘어. 정규분포 쪽은 꼬리가 훨씬 빨리 0으로 가니까, 크게 틀린 쌍일수록 −log 가 z2 처럼 커지고 미는 힘도 ∣z∣ 에 비례해서 커져.
선생님
그래요. 그럼 두 손실은 세상을 어떻게 다르게 보고 있는 거죠?
이서연
정규분포 쪽은 "점수 차가 6이나 나는데 약한 쪽이 이기는 일은 거의 없다"고 봐요. 그래서 그런 기록 하나를 크게 믿고 세게 당겨요. 로지스틱은 그런 이변을 더 흔한 일로 봐서, 한 쌍이 끌 수 있는 힘에 천장이 있고요.
김민준
그러면 두 가정의 차이는 가운데가 아니라 꼬리에서 드러나네요. σ 는 "이변이 얼마나 흔한가"에 대한 가정이고, 라벨이 가끔 틀리는 선호 데이터에서는 그 가정이 학습을 바꾸고요. 일기예보에서 크게 틀린 하루가 벌점을 거의 다 냈던 것처럼, 크게 틀린 쌍을 얼마나 무겁게 치느냐가 갈리는 거예요.
이서연
통계 수업에서 로지스틱 회귀와 프로빗 회귀를 링크 함수만 다른 형제로 배웠어요. 보상 모델 학습이나 DPO는 쌍에 대한 로지스틱 회귀고, Φ 로 바꾸면 프로빗 회귀가 되는 거네.
김민준
과제 코드에서 아무 생각 없이 쓰던 BCEWithLogitsLoss 가 이런 뜻이었구나. 매번 조교님이 "왜 이 손실 썼어요?"라고 물었던 이유가.
정리 (가) z=2: 손실 0.127 대 0.127, 미는 힘 0.119 대 0.133 — 거의 같다. (나) z=−6: 손실 6.00 대 8.48, 미는 힘 0.998 대 2.22. σ 쪽 힘은 1을 넘지 못하고, Φ 쪽 힘은 크게 틀릴수록 커진다. (다) 같지 않다. 가운데서 겹쳐도 꼬리가 다르다. σ 는 "점수 차가 벌어져도 이변이 이만큼은 일어난다"는 선호 가정이고, 바꾸면 틀린 라벨을 대하는 학습이 달라진다. σ 를 고르면 쌍에 대한 로지스틱 회귀, Φ 를 고르면 프로빗 회귀다.
문제 6 — (킬러) 7승 5패의 실력 차
A선수와 B선수의 상대 전적이 7승 5패다. (가) “승수 차 2를 실력 차로 보면 다음 경기 승률은 σ(2)=88%” — 이 추론은 맞는가? BT의 최대우도로 실력 차를 추정하면? (나) 두 선수의 실력이 똑같을 때 12경기에서 A가 7승 이상 할 확률은? (다) DPO 데이터의 선호 쌍 하나는 “1승 0패” 기록 하나와 같다. 이 기록의 최대우도 실력 차는 얼마이며, 그것이 DPO 학습에 무엇을 뜻하는가?
김민준
쉽죠. 승수 차가 2니까 σ(2)=88%.
선생님
민준 학생, 그 선수들이 1000경기를 해서 507승 493패가 되면요?
김민준
승수 차가 14니까 σ(14) 는… 거의 100%?
김민준
507 대 493이면 거의 반반인데 100%는 말이 안 되네요.
선생님
그래요. 승수 차는 경기 수가 늘면 같이 커져요. 실력 차가 아니에요. 그럼 최대우도로 제대로 추정하면요?
김민준
BT에서 A의 승률이 p=σ(Δ) 고, 12경기 7승이면 우도 p7(1−p)5 를 최대화… 최적은 p=7/12. 그러면 Δ=ln1−pp=ln57=0.34. 승률 58%예요.
선생님
88%와 58%, 꽤 다르죠. (나)는요?
이서연
7승 5패면 표본 승률이 0.58로 0.5보다 크니까, A가 더 강하다고 봐도 되지 않을까요? 최대우도 추정값도 양수고.
선생님
서연 학생, 실력이 같아도 그 정도 기록이 나올 확률은 얼마죠?
김민준
돌려볼게요. 이항분포 n=12, p=0.5 에서 P(X≥7)=1586/4096=0.39. BT 위젯에서 실력 차 0으로 두고 12경기를 몇 번 돌려도 7승 5패가 자주 나와요.
이서연
39%면 전혀 드문 일이 아니네요. 추정값의 부호만 보고 결론을 내리면 안 되고 분산을 봐야 해요. 12경기로는 둘을 구분할 수 없어요.
선생님
그럼 (다). 선호 쌍 하나는 1승 0패예요.
이서연
우도가 p1(1−p)0=p 니까 p=1 에서 최대, Δ=+∞ 예요. 최대우도 추정값이 존재하지 않아요.
김민준
그러면 DPO는 쌍 하나하나에서 마진을 무한대로 보내려고 하는 거네요. 한 번 이긴 걸로 "완벽하게 이긴다"를 배우려고.
선생님
바로 그게 DPO가 오래 학습하면 과적합하는 이유예요. 손실 곡선이 0에 닿지 않으니 마진을 끝없이 벌리죠. IPO가 목표 마진을 두고, 레퍼런스와 β 가 목줄 역할을 하는 게 이 무한대를 막으려는 거예요.
이서연
통계 수업에서 로지스틱 회귀가 완전 분리된 데이터에서 계수가 한없이 커지는 걸 봤어요. 규제 항을 넣어야 수렴했죠. 같은 현상이네요.
김민준
한 번 과제 A+ 받았다고 "나는 이 과목 완벽"이라고 결론 내리는 거랑 같네. 한 번의 관측으로는 운이랑 실력을 못 가르는데.
정리 (가) 틀렸다. 승수 차는 경기 수에 비례해 커지므로 실력 차가 아니다. BT 최대우도는 σ(Δ)=7/12, Δ=ln(7/5)=0.34, 승률 58%. (나) P(X≥7∣p=0.5)=0.39 — 12경기로는 구분할 수 없다. (다) 1승 0패의 최대우도 실력 차는 +∞. DPO는 쌍마다 마진을 끝없이 벌리려 하며, 이것이 과적합의 뿌리다. 목표 마진(IPO)이나 레퍼런스·β 같은 규제가 이를 막는다.