평균으로 나누면 길이는 잣대에서 빠진다. 그런데 평균 확률 0.95와 0.75의 차이는, 0.6과 0.4의 차이와 같은 무게로 다뤄야 할까? 이미 잘하는 답을 조금 더 확신하게 만드는 일과, 서툰 답을 조금 덜 서툴게 만드는 일은 다르다. 평균 위에 확률을 한 번 더 비틀어 보는 방법이 있다.
확률을 오즈로 옮겨 보기
오즈(odds)는 일어날 확률을 일어나지 않을 확률로 나눈 값이다. 내기에서 「3 대 1」이라고 말하는 그 비다. 확률 0.75면 네 번에 세 번 일어나고 한 번 안 일어나니 오즈는 3이다. 몇 값을 옮겨 보자.
확률 p
오즈 p/(1−p)
로그오즈 log1−pp
0.05
0.053
−2.94
0.25
0.333
−1.10
0.5
1
0
0.75
3
1.10
0.95
19
2.94
0.99
99
4.60
확률이 0.5에서 0.75로 0.25 오를 때 로그오즈는 1.10 오르지만, 0.75에서 0.99로 0.24 오를 때는 3.50 오른다. 1에 가까워질수록 일어나지 않을 몫 1−p 가 작아지고, 그것으로 나누기 때문이다. 같은 폭의 확률 차이가 로그오즈에서는 1 근처일수록 크게 늘어난다.
평균 위에 오즈를 씌우기 — ORPO
2024년 KAIST의 홍지우(Jiwoo Hong)와 동료들이 낸 ORPO(Odds Ratio Preference Optimization, 오즈비 선호 최적화)도 출발은 평균이다. 토큰당 평균 로그확률을 다시 확률로 되돌린 값 Pˉθ(y∣x)=exp(∣y∣1∑tlogπθ(yt∣⋅)) — 토큰 확률의 기하평균 — 을 쓰고, 여기에 오즈를 씌운다.
뒤의 항은 Pˉ(yw) 가 1에 가까울수록 커진다. 평균 확률이 0.95인 선호 응답과 0.75인 비선호 응답이라면 평균 로그확률 차는 log(0.95/0.75)=0.24 이지만 로그오즈 차는 2.94−1.10=1.85 다. 확신이 높은 영역에서 차이를 더 벌려 보이게 만드는 것이 오즈의 몫이다.
ORPO가 이 모양을 고른 까닭은 SFT 항과 함께 쓰기 때문이다. 저자들이 작은 언어모델을 선호 응답만으로 SFT 해 보니, 선호 응답의 로그확률이 오르는 동안 비선호 응답의 로그확률도 함께 올랐다. 두 응답은 같은 질문에 같은 말투로 쓴 글이라, 선호 응답을 따라 쓰게 하는 손실이 비선호 응답까지 끌어올린 것이다. 그래서 비선호 응답을 누르는 항이 따로 필요하다. 다만 선호 응답은 SFT 항이 이미 강하게 끌어올리므로, 누르는 항은 약해도 된다. 선호 응답이 앞설 때 로그오즈 차는 평균 로그확률 차보다 크므로, 같은 손실에 닿는 데 두 응답의 확률을 덜 벌려도 된다. 저자들은 확률 비율을 쓰면 비선호 응답을 지나치게 세게 누르게 된다며 오즈 비를 골랐다. 레퍼런스 모델은 없다. 선호 응답을 그대로 따라 쓰게 하는 SFT 항이 모델을 선호 데이터의 말투와 영역 안에 붙잡아 두어, 레퍼런스 대신 선호 데이터가 목줄의 기둥 노릇을 한다.
아래 위젯에서 두 응답의 길이를 같게 두고 토큰당 확률만 바꿔 보라. 표의 두 줄은 평균 로그확률과 로그오즈이고, 마지막 칸은 두 응답의 차다. 단추는 본문의 쌍과 아래 문제 7의 두 쌍을 불러온다.
ML에서: 세 잣대 비교
DPO
SimPO
ORPO
응답 점수
로그 비율의 합
로그확률의 평균
평균 위의 로그오즈
레퍼런스
필요
불필요 (목표 마진 γ)
불필요 (SFT 항)
길이 편향
학습이 진행되며 누적
잣대에서 제거
잣대에서 제거
검색 엔진이 문서 순위를 매기는 공식 BM25(Best Matching 25)에도 두 장치가 함께 들어 있다. 드문 낱말일수록 크게 쳐 주는 IDF 항(inverse document frequency, 역문서 빈도 — 그 낱말이 든 문서가 드물수록 커지는 값)은 로그오즈 꼴이고, 문서 길이로 점수를 누르는 손잡이가 따로 있다.
문제 6 — 정시 도착률 3%p
택배 회사 두 곳이 정시 도착률을 똑같이 3%p 올렸다. 회사 A는 94%에서 97%로, 회사 B는 50%에서 53%로. (가) 늦게 오는 택배는 각각 몇 % 줄었는가? (나) 「정시 : 지각」의 비(오즈)는 각각 몇 배가 되었는가?
김민준
둘 다 3%p 올렸으니 똑같이 잘한 거죠.
선생님
민준 학생, 택배 100개를 보낸다면 늦는 택배가 각각 몇 개에서 몇 개가 됐죠?
김민준
A는 6개에서 3개, B는 50개에서 47개요.
김민준
A는 늦는 게 절반이 됐는데 B는 6% 줄었을 뿐이네요.
이서연
오즈로 보면 A는 94/6=15.7 에서 97/3=32.3 으로 2.06배, B는 1에서 53/47=1.13 으로 1.13배야. 같은 3%p가 끝 근처에서는 훨씬 큰 변화네.
정리 (가) A: 늦는 택배 6개 → 3개(50% 감소), B: 50개 → 47개(6% 감소). (나) A: 15.7 → 32.3(2.06배), B: 1 → 1.13(1.13배). 같은 폭의 확률 차이도 1 근처에서는 「일어나지 않는 쪽」을 크게 줄이므로 오즈가 크게 바뀐다.
문제 7 — 오즈는 어디서 차이를 벌리나
평균 확률 Pˉ 가 0.8 vs 0.6인 쌍과 0.3 vs 0.1인 쌍에서, 평균 로그확률 차와 로그오즈 차를 각각 구하시오. 오즈가 차이를 더 크게 벌리는 것은 어느 쌍이고, 왜인가? 위젯의 단추로 두 쌍을 불러와 풀이와 견주어 보라.
김민준
0.8 vs 0.6: 로그 차는 log(0.8/0.6)=0.29, 로그오즈 차는 log4−log1.5=0.98. 0.3 vs 0.1: 로그 차는 log3=1.10, 로그오즈 차는 −0.85−(−2.20)=1.35.
김민준
둘 다 오즈 쪽이 커요. 오즈는 항상 차이를 더 벌리네요. 그러니까 낮은 확률 쪽이 더 크게 벌어지는 거죠, 1.35가 0.98보다 크니까.
이서연
절대값 말고 비율로 봐야지. 0.8 vs 0.6은 0.29가 0.98로 3.4배가 됐고, 0.3 vs 0.1은 1.10이 1.35로 1.2배밖에 안 됐어.
선생님
식에서 오즈가 더하는 항은 뭐였죠?
이서연
log1−Pˉ(yw)1−Pˉ(yl). 0.8 vs 0.6이면 log(0.4/0.2)=0.69, 0.3 vs 0.1이면 log(0.9/0.7)=0.25. 분모 1−Pˉ(yw) 가 0에 가까울수록, 즉 확신이 높을수록 커져요.
김민준
아, 나는 결과 숫자 크기만 봤네. 원래 차이가 얼마였는지를 안 보고.
선생님
맞아요. 오즈는 확신이 높은 영역을 늘려 보는 돋보기예요.
김민준
아까 택배 문제랑 같네요. 둘 다 3%p였지만 늦는 택배가 절반이 된 쪽이 훨씬 큰 변화였던 것처럼, 원래 얼마였는지와 견줘 봐야 하는 거예요.
정리 0.8 vs 0.6: 0.29→0.98 (3.4배), 0.3 vs 0.1: 1.10→1.35 (1.2배). 오즈가 더하는 항 log1−Pˉw1−Pˉl 은 Pˉw 가 1에 가까울수록 커진다 — 확신이 높은 영역에서 차이를 벌린다.