Chapter 9: 길이 편향 — 합이 공정한가?

의문

토큰의 로그확률은 항상 ≤0\le 0이다. 문장의 로그확률은 이것들의 합이다. 그렇다면 토큰이 많을수록 문장의 로그확률은 마이너스 쪽으로 멀어진다. 길이가 다른 두 응답을 이 값으로 비교하는 것은 공정한가?

합의 잣대: 긴 응답은 길다는 이유만으로 진다

길고 자신 있는 정답과 짧고 머뭇거리는 오답이 있다고 하자. 사람이라면 망설임 없이 정답을 고른다. 그런데 토큰마다 1보다 작은 확률을 곱해 나가는 문장 확률은 어느 쪽을 고를까?

세 가지 잣대로 재 보기

같은 두 응답을 세 가지 잣대로 재 보자. 정답 ywy_w는 12토큰이고 토큰마다 확률 0.8로 자신 있게 생성된다. 오답 yly_l은 4토큰이고 토큰마다 확률 0.6이다. 토큰 하나하나로 보면 정답 쪽이 명백히 더 확신에 차 있다.

잣대 식 ywy_w (12토큰 × 0.8) yly_l (4토큰 × 0.6) 이기는 쪽
확률 ∏tpt\prod_t p_t 0.812=0.0690.8^{12} = 0.069 0.64=0.1300.6^{4} = 0.130 ✗ 오답
로그확률의 합 ∑tlog⁡pt\sum_t \log p_t −2.68-2.68 −2.04-2.04 ✗ 오답
토큰당 평균 1∣y∣∑tlog⁡pt\frac{1}{\lvert y \rvert}\sum_t \log p_t −0.22-0.22 −0.51-0.51 ✓ 정답

확률과 로그확률의 합은 같은 순서를 준다(로그는 단조 함수다). 둘 다 길다는 이유만으로 정답을 진다고 판정한다. 곱할 때마다 1보다 작은 수가 붙으니, 아무리 좋은 답이어도 길기만 하면 확률이 바닥으로 간다. 평균으로 나누어야 비로소 토큰당 확신의 차이가 드러난다.

아래 위젯에서 두 응답의 길이와 토큰당 확률을 바꿔 보라. 선이 길게 뻗을수록 끝점이 아래로 내려간다. 단추는 아래 문제 2의 두 길이를 불러온다.

ML에서: DPO도 합을 쓴다

DPO의 마진은 로그확률의 합으로 만든다. 다만 원래 로그확률이 아니라, 학습 중인 정책(응답을 뽑는 모델) πθ\pi_\theta 와 레퍼런스(학습을 시작할 때 복사해 얼려 둔 모델) πref\pi_\text{ref} 의 비율 log⁡πθπref\log \frac{\pi_\theta}{\pi_\text{ref}} 의 합이다. 이것이 DPO의 암묵적 보상이다.

rDPO(x,y)=β∑t=1∣y∣log⁡πθ(yt∣x,y<t)πref(yt∣x,y<t)\textcolor{#d9670b}{r_\text{DPO}}(\textcolor{#0093b8}{x}, \textcolor{#1c9c60}{y}) = \textcolor{#827717}{\beta} \sum_{t=1}^{\textcolor{#915a08}{|y|}} \log \frac{\textcolor{#1565c0}{\pi_\theta}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{x}, \textcolor{#1c9c60}{y_{<t}})}{\textcolor{#6f6f78}{\pi_\text{ref}}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{x}, \textcolor{#1c9c60}{y_{<t}})}
rDPODPO의 암묵적 보상 (토큰별 로그비율의 합)βKL 강도πθ학습 중인 정책πref레퍼런스 정책∣y∣응답의 토큰 수 \small\begin{array}{ll} \textcolor{#d9670b}{r_\text{DPO}} & \text{DPO의 암묵적 보상 (토큰별 로그비율의 합)} \\ \textcolor{#827717}{\beta} & \text{KL 강도} \\ \textcolor{#1565c0}{\pi_\theta} & \text{학습 중인 정책} \\ \textcolor{#6f6f78}{\pi_\text{ref}} & \text{레퍼런스 정책} \\ \textcolor{#915a08}{|y|} & \text{응답의 토큰 수} \end{array}

레퍼런스로 나누기 때문에 위 표 같은 노골적인 편향은 학습을 시작할 때는 없다. 처음에는 πθ=πref\textcolor{#1565c0}{\pi_\theta} = \textcolor{#6f6f78}{\pi_\text{ref}} 라 모든 응답의 보상이 0이다. 그렇다면 DPO는 길이 편향에서 자유로울까? 보상이 여전히 토큰마다 더한 합이라는 점이 학습이 진행되면서 무슨 일을 하는지는 아래 문제 3에서 계산해 본다.

온라인 정책 그래디언트라고 이 문제에서 자유로운 것은 아니다. 응답 전체에 점수 하나를 주고 토큰별로 나눠 싣는 순간, "합으로 볼 것인가 평균으로 볼 것인가"가 다시 나타난다. 온라인 방법의 목적함수에도 응답 길이로 나누는 자리가 숨어 있고, 그 나누기를 둘지 말지가 다시 길이 편향을 가른다.

문제 1 — 분량이 다른 두 보고서

조교가 보고서를 쪽마다 감점해 채점한다. 보고서 A는 10쪽이고 쪽마다 평균 1점씩 깎였다. 보고서 B는 2쪽이고 쪽마다 평균 3점씩 깎였다. (가) 감점 합계가 적은 쪽이 이긴다면 누가 이기는가? 쪽당 감점으로 비교하면? (나) 감점 합계로 A가 B를 이기려면 A의 쪽당 감점이 얼마 아래여야 하는가?

김민준 (평상)
김민준
(가)는 합계로 A가 10점, B가 6점이니 B가 이겨요. 쪽당으로는 A가 1점, B가 3점이라 A가 이기고요.
김민준 (자신만만)
김민준
(나)는 쉽죠. 쪽마다 B보다 덜 깎이면, 3점 아래면 돼요.
선생님 (질문)
선생님
민준 학생, A가 쪽당 2점씩 깎이면 합계는 몇 점이죠?
김민준 (난처함)
김민준
20점이요… B는 6점인데요. 10×d<610 \times d < 6 이어야 하니까 쪽당 0.6점 아래여야 해요.
이서연 (평상)
이서연
쪽마다 B보다 다섯 배는 꼼꼼해야 합계로 겨우 이기는 거네. 분량이 곱해지니까.

정리 (가) 합계: A 10점, B 6점 → B 승. 쪽당: A 1점, B 3점 → A 승. (나) 10d<610d < 6, 곧 쪽당 0.6점 아래. 합계로 비교하면 분량이 곱해져, 쪽마다 한참 나아도 진다.

문제 2 — 정답이 길어지면 문턱은

오답은 그대로 4토큰 × 0.6이다. (가) 정답이 12토큰일 때, 로그확률의 합으로 정답이 이기려면 정답의 토큰당 확률이 얼마를 넘어야 하는가? (나) 정답이 24토큰, 48토큰이면? (다) 정답이 아무리 길어도 이길 수 있는 확률 값이 늘 있는가? 위젯의 단추로 두 길이를 불러와 토큰당 확률을 밀어 보며 답과 견주어 보라.

김민준 (자신만만)
김민준
(가)는 12log⁡p>4log⁡0.6=−2.0412\log p > 4\log 0.6 = -2.04 니까 log⁡p>−0.17\log p > -0.17, p>0.84p > 0.84 예요. 문턱이 0.84니까 24토큰이든 48토큰이든 0.84만 넘기면 이기겠죠.
선생님 (질문)
선생님
민준 학생, 방금 식의 12는 어디서 왔죠? 24토큰이면 그 자리에 무엇이 들어가요?
김민준 (난처함)
김민준
아, 길이가 식 안에 있었네요. 24토큰이면 log⁡p>−2.04/24=−0.085\log p > -2.04/24 = -0.085, p>0.92p > 0.92. 48토큰이면 0.96이에요. 위젯에서 24토큰에 0.91이면 지고 0.92면 이겨요.
이서연 (평상)
이서연
한 줄로 쓰면 p>0.64/np > 0.6^{4/n} 이야. (다)는 지수 4/n4/n 이 0으로 가니까 문턱이 1에 붙어. 1보다 작은 문턱이 늘 있기는 한데, 100토큰이면 벌써 0.98이야.
선생님 (평상)
선생님
그래요. 그럼 응답이 길어질 때 합의 잣대가 정답에게 요구하는 건 무엇이죠?
이서연 (아하)
이서연
토큰 하나하나가 거의 틀림없어야 해요. 긴 답일수록 한 토큰의 망설임도 용서가 안 되네요.
김민준 (평상)
김민준
아까 보고서 문제랑 같네요. 토큰마다 받는 로그확률이 쪽마다 깎이는 감점이고, 분량이 늘수록 쪽당 허용치가 줄어드는 거예요.

정리 (가) 12log⁡p>4log⁡0.6=−2.0412\log p > 4\log 0.6 = -2.04, 곧 p>0.61/3≈0.84p > 0.6^{1/3} \approx 0.84. (나) 정답이 nn 토큰이면 p>0.64/np > 0.6^{4/n}: 24토큰 0.92, 48토큰 0.96. (다) 문턱은 늘 1보다 작지만 nn 이 커질수록 1로 다가간다(100토큰이면 0.98). 합의 잣대는 길이가 길수록 토큰마다 더 틀림없는 확신을 요구한다.

문제 3 — (킬러) 레퍼런스는 길이 편향을 막는가

선호 응답은 평균 40토큰, 비선호 응답은 평균 10토큰인 데이터로 DPO(β=0.1\textcolor{#827717}{\beta} = 0.1)를 학습한다. 학습이 선호 응답의 모든 토큰에서 로그 비율을 +0.05+0.05씩, 비선호 응답의 모든 토큰에서 −0.05-0.05씩 바꿨다고 하자. (가) 학습 전 두 응답의 암묵적 보상은? (나) 학습 후의 보상 마진은? 선호 응답도 10토큰이었다면? (다) 이 데이터로 학습한 모델의 응답 길이는 어떻게 변하겠는가? (나)의 계산으로 까닭을 대고, 막을 방법을 둘 이상 드시오.

김민준 (자신만만)
김민준
(가)는 0이에요. DPO는 레퍼런스로 나누니까 길이 편향이 없어요. 처음엔 πθ=πref\textcolor{#1565c0}{\pi_\theta} = \textcolor{#6f6f78}{\pi_\text{ref}} 라 비율이 전부 1이고 로그는 0이죠.
선생님 (평상)
선생님
처음엔 그렇죠. (나)를 계산해 보면요?
김민준 (평상)
김민준
선호 응답이 40×0.05=2.040 \times 0.05 = 2.0, 비선호가 10×(−0.05)=−0.510 \times (-0.05) = -0.5. 마진은 β×2.5=0.25\textcolor{#827717}{\beta} \times 2.5 = 0.25. 선호 응답이 10토큰이면 β×(0.5+0.5)=0.1\textcolor{#827717}{\beta} \times (0.5 + 0.5) = 0.1 이요.
김민준 (놀람)
김민준
토큰마다 똑같이 배웠는데 긴 쪽이 마진이 2.5배 크네요. 처음에 0이라고 해서 끝이 아니구나.
이서연 (평상)
이서연
근데 그건 스케일 문제 아니야? 합은 평균에 길이를 곱한 거니까, 전체 손실을 어떤 상수배로 늘린 거랑 같잖아. 최적점은 안 바뀌어.
선생님 (질문)
선생님
서연 학생, 그 "상수"는 모든 예제에서 같은가요?
이서연 (생각)
이서연
아… 예제마다 길이가 다르니까 곱해지는 수가 달라요. 전체에 같은 상수를 곱하는 게 아니라, 예제마다 다른 가중치(곱하는 수 — 신경망 파라미터가 아니다)를 곱하는 거네요.
이서연 (깨달음)
이서연
그러면 긴 선호 응답이 있는 예제가 손실을 더 쉽게 줄여요. 같은 노력으로 마진이 더 벌어지니까. 모델 입장에선 "선호되는 답 = 긴 답"이 가장 싸게 배울 수 있는 규칙이 되는 거고요.
선생님 (평상)
선생님
그래요. 그게 (다)의 답이에요. 이 데이터로 학습하면 응답이 점점 길어져요. 실제로 2024년 스탠퍼드의 라이언 박(Ryan Park)과 동료들이 재 보니, 선호 응답이 비선호 응답보다 조금 길 뿐인 공개 데이터(평균 길이 79.6 대 75.7, 37.9 대 35.2)로 DPO를 학습한 모델이 평균 두 배쯤 긴 답을 냈어요. 막으려면요?
김민준 (평상)
김민준
토큰 수로 나눠 평균으로 비교하거나, 선호 응답이 긴 만큼 마진을 이미 벌린 것으로 쳐서 덜 밀거나. 아니면 데이터에서 선호/비선호 길이를 맞춰 놓거나요.
이서연 (평상)
이서연
선형대수에서 "스칼라배는 해를 안 바꾼다"는 전체 식에 같은 스칼라를 곱할 때만 맞는 거였어요. 행마다 다른 수를 곱하면 그건 스케일링이 아니라 가중 최소제곱이고, 해가 바뀌죠.
김민준 (평상)
김민준
조별과제 평가를 "각자 쓴 문장 수 × 문장당 점수"로 하면 다들 길게 쓰기 시작하는 거랑 같네요.

정리 (가) 0 — 학습 전에는 πθ=πref\textcolor{#1565c0}{\pi_\theta} = \textcolor{#6f6f78}{\pi_\text{ref}}. (나) 40토큰: β(2.0+0.5)=0.25\textcolor{#827717}{\beta}(2.0 + 0.5) = 0.25, 10토큰: β(0.5+0.5)=0.1\textcolor{#827717}{\beta}(0.5 + 0.5) = 0.1. 같은 토큰당 변화로 긴 선호 응답이 2.5배 큰 마진을 얻는다. (다) 예제마다 길이가 다르므로 합은 모든 예제에 같은 수를 곱한 것이 아니라 예제별 가중치다. 선호 응답이 긴 데이터에서 모델은 "길게 쓰기"를 가장 싼 규칙으로 배운다. 선호 응답이 조금 길 뿐인 실제 데이터에서도 DPO 모델의 답이 두 배쯤 길어졌다는 보고가 있다(박과 동료들, 2024). 길이로 나눈 평균 보상, 선호 응답이 긴 만큼 덜 미는 길이 벌점, 길이를 맞춘 데이터로 막는다.