Chapter 11: Bradley-Terry — 시그모이드는 왜 거기 있는가?

의문

DPO 손실의 바깥 껍질은 −log⁡σ(⋅)-\log\sigma(\cdot) 이다. 이 껍질은 처음 보는 것이 아니다. RLHF(사람의 선호로 보상 모델을 학습하고, 그 보상으로 모델을 강화학습하는 방식)의 보상 모델 rψr_\psi 를 학습할 때 쓴 손실이 바로

LRM=−log⁡σ(rψ(x,yw)−rψ(x,yl))\textcolor{#d62728}{\mathcal{L}_\text{RM}} = -\log \sigma\big(\textcolor{#d9670b}{r_\psi}(\textcolor{#0093b8}{x}, \textcolor{#e000a5}{y_w}) - \textcolor{#d9670b}{r_\psi}(\textcolor{#0093b8}{x}, \textcolor{#e000a5}{y_l})\big)
LRM보상 모델 학습 손실rψ보상 모델이 매긴 점수 (파라미터 ψ)x프롬프트yw, yl사람이 더 낫다고 고른 응답, 덜 낫다고 고른 응답σ시그모이드 \small\begin{array}{ll} \textcolor{#d62728}{\mathcal{L}_\text{RM}} & \text{보상 모델 학습 손실} \\ \textcolor{#d9670b}{r_\psi} & \text{보상 모델이 매긴 점수 (파라미터 }\psi\text{)} \\ \textcolor{#0093b8}{x} & \text{프롬프트} \\ \textcolor{#e000a5}{y_w},\ \textcolor{#e000a5}{y_l} & \text{사람이 더 낫다고 고른 응답, 덜 낫다고 고른 응답} \\ \sigma & \text{시그모이드} \end{array}

였다. DPO는 여기의 rψ\textcolor{#d9670b}{r_\psi} 자리에 암묵적 보상 βlog⁡πθπref\textcolor{#827717}{\beta} \log \frac{\textcolor{#1565c0}{\pi_\theta}}{\textcolor{#6f6f78}{\pi_\text{ref}}} — 학습 중인 정책(응답을 뽑는 모델) πθ\textcolor{#1565c0}{\pi_\theta} 와, 학습을 시작할 때 복사해 얼려 둔 레퍼런스 πref\textcolor{#6f6f78}{\pi_\text{ref}} 의 로그비율 — 를 끼워 넣었을 뿐이다. 보상 모델을 지웠어도 보상 모델을 학습하던 방식은 그대로 물려받은 것이다.

그렇다면 질문은 이것이다. 마진은 실숫값이고, 크게 만들면 그만일 것 같은데 — 왜 시그모이드를 씌우고 −log⁡-\log 를 취하는가?

Bradley-Terry 모델: 승률은 실력 차의 시그모이드다

점수 차를 크게 만들기만 하면 될 것 같은데, 보상 모델과 DPO는 왜 굳이 점수 차를 확률로 바꿀까? 바꾼다면 왜 하필 시그모이드로 바꿀까?

점수 차를 확률로

사람이 남긴 라벨은 "A가 B보다 낫다"는 사건이다. 이 사건을 설명하는 모델을 세우고 그 우도(likelihood — 모델이 관측된 라벨에 주는 확률)를 최대화하려면, 모델은 "A가 B보다 나을 확률"을 내놓아야 한다. 확률은 0과 1 사이다. 반면 두 응답의 점수 차는 −∞-\infty 부터 +∞+\infty 까지 아무 값이나 된다. 그러니 실숫값을 (0,1)(0, 1) 로 보내는 함수가 필요하다.

점수 차 σ(점수 차)\sigma(\text{점수 차}) 뜻
크게 양수 ≈ 1 거의 확실히 A가 낫다
0 0.5 반반
크게 음수 ≈ 0 거의 확실히 B가 낫다

하지만 실숫값을 확률로 바꾸는 함수는 시그모이드만 있는 게 아니다(정규분포의 누적분포함수도 있다). 왜 하필 이 함수인가? 답은 체스 대회의 성적표를 두고 고민하던 사람들에게서 나왔다.

역사: 체스 대회 성적표에서 실력을 읽어 내기

대회가 끝나면 선수마다 딴 점수가 남는다. 그런데 점수 합계는 누구와 붙었는지를 모른다. 강한 상대를 많이 만난 선수와 약한 상대를 많이 만난 선수의 5점은 같은 5점이 아니다. 1929년 독일의 수학자 에른스트 체르멜로(Ernst Zermelo)는 이 문제를 확률 문제로 바꿨다. 선수마다 보이지 않는 "힘"이 하나씩 있고, 두 선수가 붙으면 한 선수가 이길 확률은 두 힘 가운데 자기 힘이 차지하는 비율이라고 두었다. 그리고 실제로 나온 승패가 나올 확률이 가장 커지도록 힘을 정했다 — 최대우도다. 그는 이 방법을 1924년 뉴욕 대회(라스커, 카파블랑카, 알레힌 같은 당대 최강자들이 나온 대회)의 성적에 적용했다. 논문 제목이 곧 생각이었다: 「대회 결과의 계산을 확률론의 최대 문제로」.

이 논문은 독일어 수학 학술지에 실려 통계학자들의 눈에 잘 띄지 않았다. 1952년 미국의 통계학자 랠프 브래들리(Ralph A. Bradley)와 밀턴 테리(Milton E. Terry)는 학술지 Biometrika 에 실은 「불완전 블록 설계의 순위 분석: 쌍비교 방법」에서 같은 모델을 다시 세웠다. 제목의 「불완전 블록」은 한 번의 실험 묶음에서 모든 대상을 다 비교하지 못하는 실험 설계를 가리킨다. 둘씩만 비교한 결과를 모아 전체의 줄을 세우는 도구가 필요했던 것이다. 이후 이 모델은 두 사람의 이름으로 불리게 되었다.

BT 모델: 점수 하나, 승률은 점수 차로

Bradley-Terry 모델(BT)은 쌍비교 데이터에서 각 대상의 "실력"을 추정한다. 각 대상 ii 에 실력 점수 ri\textcolor{#d9670b}{r_i} 하나를 주고,

P(i가 j를 이긴다)=σ(ri−rj)=erieri+erj\textcolor{#0033ff}{P}(i \text{가 } j \text{를 이긴다}) = \sigma(\textcolor{#d9670b}{r_i} - \textcolor{#d9670b}{r_j}) = \frac{e^{\textcolor{#d9670b}{r_i}}}{e^{\textcolor{#d9670b}{r_i}} + e^{\textcolor{#d9670b}{r_j}}}
ri, rj두 선수(응답)의 실력 점수P이길 확률 \small\begin{array}{ll} \textcolor{#d9670b}{r_i},\ \textcolor{#d9670b}{r_j} & \text{두 선수(응답)의 실력 점수} \\ \textcolor{#0033ff}{P} & \text{이길 확률} \end{array}

오른쪽 모양이 체르멜로의 가정 그대로다. 실력을 ere^{\textcolor{#d9670b}{r}} 라는 "힘"으로 바꾸면, 이길 확률은 두 힘의 비율이다. 두 응답 중 하나를 고르는 소프트맥스와 똑같은 모양이다.

0 0.5 1 −4 −2 0 2 4 점수 차 ri − rj 차가 0이면 반반 i가 확실히 이긴다 → ← j가 확실히 이긴다 P(i가 j를 이긴다)
왜 하필 시그모이드인가: 힘의 비율에서 나온다

대회에서는 모든 선수가 서로 붙지 않는다. 붙어 본 적 없는 두 선수의 승부를 점쳐야 할 일이 대진표를 짤 때마다 생긴다. 힘의 비율이라는 가정이 무엇을 뜻하는지 숫자로 보자. A가 B에게 2 대 1로 이기고(이길 확률 2/3), B가 C에게 3 대 1로 이긴다면(3/4), A는 C에게 몇 대 몇일까? 힘이 비율로만 승부를 정한다면 힘을 곱하면 된다. A의 힘은 B의 2배, B의 힘은 C의 3배이니 A는 C의 6배, 곧 6 대 1이고 이길 확률은 6/7 ≈ 0.857 이다. 이긴 확률 ÷ 진 확률을 오즈라 부르면, 오즈가 곱해진다.

곱해지는 양은 로그를 씌우면 더해진다. 점수를 힘의 로그 r=log⁡(힘)\textcolor{#d9670b}{r} = \log(\text{힘}) 로 적으면 ln⁡2+ln⁡3=ln⁡6\ln 2 + \ln 3 = \ln 6 — 오즈의 곱이 점수 차의 합이 된다.

P1−P=erierj=eri−rj⟺P=σ(ri−rj)\frac{\textcolor{#0033ff}{P}}{1 - \textcolor{#0033ff}{P}} = \frac{e^{\textcolor{#d9670b}{r_i}}}{e^{\textcolor{#d9670b}{r_j}}} = e^{\textcolor{#d9670b}{r_i} - \textcolor{#d9670b}{r_j}} \quad\Longleftrightarrow\quad \textcolor{#0033ff}{P} = \sigma(\textcolor{#d9670b}{r_i} - \textcolor{#d9670b}{r_j})
P선수 i 가 j 를 이길 확률P/(1−P)오즈: 이길 확률을 질 확률로 나눈 값ri, rj실력 점수 = 힘의 로그 \small\begin{array}{ll} \textcolor{#0033ff}{P} & \text{선수 } i \text{ 가 } j \text{ 를 이길 확률} \\ \textcolor{#0033ff}{P}/(1-\textcolor{#0033ff}{P}) & \text{오즈: 이길 확률을 질 확률로 나눈 값} \\ \textcolor{#d9670b}{r_i},\ \textcolor{#d9670b}{r_j} & \text{실력 점수 = 힘의 로그} \end{array}

로그 오즈가 점수 차와 정확히 같아지는 함수가 시그모이드다. 그러니 시그모이드는 편해서 고른 모양이 아니라 "이길 확률은 힘의 비율"이라는 가정 하나에서 나온다. 가정이 다르면 함수도 다르다. 한 판 한 판의 실력 발휘가 정규분포로 흔들린다고 보면, 이길 확률은 정규분포의 누적분포함수로 나온다. 심리학의 쌍비교는 먼저 이 가정을 썼다. 어느 가정이 맞는지는 데이터가 정한다.

체스의 Elo 레이팅(Elo 는 머리글자가 아니라 이 방식을 만든 물리학 교수이자 체스 마스터 아르파드 엘로(Arpad Elo)의 이름이다)이 그 비교를 실제로 겪었다. 미국 체스 연맹이 1960년에, 국제 체스 연맹(FIDE)이 1970년에 엘로의 방식을 받아들였는데, 엘로는 처음에 한 판의 실력 발휘를 정규분포로 두었다. 뒤에 쌓인 대국 기록을 보니 약한 선수가 이기는 일이 정규분포가 예상하는 것보다 잦았고, 미국 체스 연맹은 로지스틱 곡선(시그모이드) 쪽으로 옮겼다. 지금 쓰는 Elo는 단위만 다른 BT다 — Elo 400점 차가 오즈 10배가 되도록 척도를 잡았다. Elo 400점 차면 승률 91%다. 온라인 게임의 등급 점수도 같은 갈래다. 1995년 마크 글리크먼(Mark Glickman)의 Glicko는 같은 로지스틱 곡선에 "이 점수를 얼마나 믿을 만한가"를 더했고, 마이크로소프트 연구소가 Xbox Live에 쓴 TrueSkill(2005년부터)은 실력 발휘를 정규분포로 두는 쪽을 택했다.

물론 BT는 절대적 진리가 아니라 가정이다. "선호는 대상마다 하나의 점수로 요약되고, 점수 차만이 승률을 정한다"는 가정. 쓸모 있는 단순화이고, 그 가정이 깨지는 곳은 다음 절에서 본다.

ML에서: LLM 순위표

사람들이 같은 질문에 대한 두 모델의 답을 나란히 보고 더 나은 쪽에 투표하는 LLM 순위표 Chatbot Arena도 처음에는 체스처럼 Elo를 썼다. 투표가 들어올 때마다 두 모델의 점수를 조금씩 고치는 방식이라, 같은 투표라도 들어온 순서에 따라 점수가 달라졌다. 체스 선수는 실력이 변하니 최근 경기를 더 믿는 것이 맞지만, 한 번 공개된 모델은 파라미터가 바뀌지 않는다. 그래서 2023년 12월 운영진(LMSYS)은 그때까지 모인 13만 건이 넘는 투표 전체에 BT를 최대우도로 한 번에 맞추는 방식으로 바꿨다. 보상 모델이 선호 쌍 데이터에서 점수를 배우는 것과 같은 계산이다.

문제 1 — Elo에서 승률로

BT에서 Elo 점수 EE 와 실력 점수 r\textcolor{#d9670b}{r} 의 관계는 r=E⋅ln⁡10400\textcolor{#d9670b}{r} = E \cdot \frac{\ln 10}{400} 이다. Elo 200점 차의 승률을 계산하시오.

김민준 (평상)
김민준
r=200×ln⁡10/400=1.15\textcolor{#d9670b}{r} = 200 \times \ln 10 / 400 = 1.15, σ(1.15)=0.76\sigma(1.15) = 0.76. 76%예요.
이서연 (평상)
이서연
400점이면 r=ln⁡10\textcolor{#d9670b}{r} = \ln 10 이니까 σ(ln⁡10)=10/11=0.91\sigma(\ln 10) = 10/11 = 0.91. 오즈가 정확히 10배네.
선생님 (평상)
선생님
맞아요. 그럼 Elo 1600과 2000의 승률 차이와, 800과 1200의 승률 차이는 어느 쪽이 클까요?
김민준 (자신만만)
김민준
1600이랑 2000이 더 크죠. 고수끼리는 차이가 더 크게 나니까.
이서연 (의심)
이서연
식에 들어가는 건 차이뿐이잖아. 둘 다 400점 차면 똑같이 91%야.
김민준 (당황)
김민준
아, BT는 절대 점수가 아니라 차이만 보는구나. 모든 점수에 100을 더해도 승률은 안 변하고.
선생님 (평상)
선생님
그래요. 그래서 BT의 점수는 “기준점을 어디 두든 상관없는” 상대적인 양이에요.
김민준 (평상)
김민준
학점 상대평가 같네요. 반 전체가 다 잘 봐도 차이만 같으면 등급은 그대로인.

정리 σ(1.15)=0.76\sigma(1.15) = 0.76. BT의 승률은 점수 차이에만 의존한다 — 모든 점수에 같은 상수를 더해도 변하지 않는다.