10. 레퍼런스 모델 — 이 목줄은 왜 묶여 있나?

β\beta: 목줄은 멈추는 곳을 정한다

DPO를 돌릴 때마다 가장 먼저 정하는 값이 β\textcolor{#827717}{\beta} 다(흔히 0.1 언저리에서 시작한다). 목줄 비유에서 β\textcolor{#827717}{\beta} 는 목줄을 짧게 감는 손잡이였다 — 클수록 짧다. 그런데 그래디언트 식에는 β\textcolor{#827717}{\beta} 가 맨 앞에도 한 번 곱해져 있어서, β\textcolor{#827717}{\beta} 를 키우면 한 걸음이 커진다. 그렇다면 큰 β\textcolor{#827717}{\beta} 는 모델을 레퍼런스에서 더 멀리 데려가는가, 덜 데려가는가?

크기가 꺼지는 지점

β\textcolor{#827717}{\beta} 는 RLHF 목표 E[r]−β KL(πθ∥πref)\mathbb{E}[r] - \textcolor{#827717}{\beta}\,\text{KL}(\textcolor{#1565c0}{\pi_\theta} \| \textcolor{#6f6f78}{\pi_\text{ref}}) 에서 KL 벌점의 강도였다. DPO로 넘어와서는 한 쌍이 받는 그래디언트의 크기 안에 두 번 들어간다.

β⏟보폭  ⋅  σ(−βz)⏟남은 힘\underbrace{\textcolor{#827717}{\beta}}_{\text{보폭}}\;\cdot\;\underbrace{\textcolor{#8e44ad}{\sigma(-\beta z)}}_{\text{남은 힘}}
βKL 강도: 앞에서는 한 걸음을 키우고, 안에서는 힘이 줄어드는 빠르기를 정한다σ(−βz)그래디언트 가중치: 마진을 벌릴수록 0으로 줄어든다z레퍼런스 대비 더 벌린 마진 Δθ−Δref \small\begin{array}{ll} \textcolor{#827717}{\beta} & \text{KL 강도: 앞에서는 한 걸음을 키우고, 안에서는 힘이 줄어드는 빠르기를 정한다} \\ \textcolor{#8e44ad}{\sigma(-\beta z)} & \text{그래디언트 가중치: 마진을 벌릴수록 0으로 줄어든다} \\ \textcolor{#d9670b}{z} & \text{레퍼런스 대비 더 벌린 마진 } \textcolor{#1565c0}{\Delta_\theta} - \textcolor{#6f6f78}{\Delta_\text{ref}} \end{array}

앞자리의 β\textcolor{#827717}{\beta} 는 보폭이다. 출발점 z=0\textcolor{#d9670b}{z} = 0 에서 한 걸음은 βσ(0)=β/2\textcolor{#827717}{\beta}\sigma(0) = \textcolor{#827717}{\beta}/2 라서, β=0.1\textcolor{#827717}{\beta} = 0.1 이면 0.05, β=0.5\textcolor{#827717}{\beta} = 0.5 면 0.25 — 다섯 배다. 안자리의 β\textcolor{#827717}{\beta} 는 힘이 꺼지는 빠르기다. βz\textcolor{#827717}{\beta}\textcolor{#d9670b}{z} 가 커질수록 σ(−βz)\textcolor{#8e44ad}{\sigma(-\beta z)} 는 0으로 가므로, β\textcolor{#827717}{\beta} 가 크면 작은 z\textcolor{#d9670b}{z} 에서도 힘이 빨리 꺼진다.

0 0.5 1 0 10 20 30 레퍼런스 대비 더 벌린 마진 z 그래디언트 가중치 σ(−βz) β = 0.1 — 천천히 꺼진다 β = 0.5 — 빨리 꺼진다

두 자리가 반대 방향으로 당긴다. 보폭은 크지만 힘이 빨리 꺼지는 쪽과, 보폭은 작지만 오래 미는 쪽 가운데 어느 쪽이 레퍼런스에서 더 멀리 갈까? 아래 위젯에서 β\textcolor{#827717}{\beta} 를 고르고 Δθ\textcolor{#1565c0}{\Delta_\theta} 를 오른쪽으로 밀어, 점선(σ(−βz)\textcolor{#8e44ad}{\sigma(-\beta z)})이 어디서 바닥에 붙는지 보라.

ML에서: 목줄을 뺄 수 있는가

레퍼런스를 쓰려면 학습 모델과 같은 크기의 모델을 하나 더 메모리에 올려 두어야 한다. 그래서 레퍼런스를 빼고 다른 것으로 목줄 역할을 대신하는 알고리즘들이 나왔다. 무엇이 모자라서 나왔는지와 함께, 나온 순서대로 보자.

알고리즘 무엇이 모자라서 레퍼런스 대신 무엇이 목줄 역할을 하나
CPO (Contrastive Preference Optimization, 2024년 1월) DPO는 레퍼런스를 함께 올려 두느라 메모리가 두 배로 들고 느리다. 번역에서는 사람이 쓴 정답 번역을 흉내 내는 SFT가 정답 번역의 흠까지 따라 배운다 레퍼런스를 모든 응답에 같은 확률을 주는 균일 분포로 어림해 식에서 지우고, 선호 응답의 SFT 손실 항을 더해 모델이 멀리 벗어나지 않게 한다
ORPO (2024년 3월) SFT 다음에 선호 학습 단계를 하나 더 두고, 그 단계에 레퍼런스까지 둔다 선호 응답의 SFT 손실(정답 응답을 그대로 따라 쓰게 하는 지도 학습 손실)에 선호·비선호 응답의 오즈 비를 벌리는 작은 벌점 항을 더해 한 단계로 끝낸다. SFT 손실이 원래 잘하던 것을 붙잡는 암묵적 목줄이다
SimPO (2024년 5월) 레퍼런스에 드는 계산과 메모리. 그리고 DPO가 매기는 보상(레퍼런스 대비 로그확률 비)이 생성할 때 모델이 따르는 기준(응답의 로그확률)과 어긋난다 응답 길이로 나눈 평균 로그확률 자체를 보상으로 쓰고, 목표 마진 γ(“최소 이만큼만 벌려라”)를 둔다

이 방법들은 레퍼런스 모델을 메모리에 올리지 않아도 된다. 셋 모두 이미 모아 둔 선호 데이터로 학습하는 오프라인 설정에서 제안되었다.

반대로 목줄을 빼면 안 되는 경우도 있다. 모델이 자기 출력으로 계속 학습할 때(PPO, 온라인·반복 DPO) 레퍼런스가 없으면 리워드 해킹(보상 모델의 빈틈을 파고들어 점수만 올리는 일)을 막을 장치가 없다. 보상 모델은 불완전하고, 정책은 그 빈틈을 찾아낸다.

실제로 보고된 예가 아첨이다. 앤트로픽의 므리낭크 샤르마(Mrinank Sharma)와 동료들은 2023년 「Towards Understanding Sycophancy in Language Models」에서, 사람의 선호 데이터에서는 응답이 사용자의 견해와 맞을수록 더 자주 선택되고, 사람과 선호 모델 모두 그럴듯하게 쓴 아첨 응답을 옳은 응답보다 무시 못 할 비율로 더 좋아한다고 보고했다. 선호 모델 점수에 맞춰 출력을 고르면 때로 사실을 버리고 아첨을 택했다. 레퍼런스는 "원래 이 모델이 어떻게 답했는가"를 기억한다. 보상 모델의 빈틈을 좇아 원래 분포에서 멀어질수록 KL 벌점이 커지므로, 목줄은 그런 행동이 한없이 커지지 못하게 붙잡는다. 목줄이 없으면 이 억제도 없다.

안전성 정렬(해로운 요청은 거절하는 등, 사람이 바라는 방식으로 답하게 맞추기)도 마찬가지다. 베이스 모델(프리트레인만 마친 모델)의 능력은 그대로 두고 행동만 바꿔야 할 때, 레퍼런스는 "원래 할 수 있었던 것"의 기준점이다.

목줄이 너무 길어도 탈이 난다. 선호 쌍 하나의 승패는 1 대 0이라, 손실 −log⁡σ(βz)-\log\sigma(\textcolor{#827717}{\beta}\textcolor{#d9670b}{z}) 를 0으로 만드는 z\textcolor{#d9670b}{z} 는 무한대다. 목줄이 멈춰 세우지 않으면 모델은 학습 쌍의 마진만 끝없이 벌린다. 데이터에 들어 있는 몇만 쌍의 승패를 그대로 외워, 쌍 밖의 응답에서는 오히려 나빠질 수 있다(과적합).

문제 3 — 보폭 큰 강아지, 목줄 긴 강아지

두 강아지가 같은 기둥에 묶여 멀리 있는 공 쪽으로 걷는다. 강아지 A는 한 걸음이 50cm이고 목줄이 2m, 강아지 B는 한 걸음이 10cm이고 목줄이 6m다. 목줄이 팽팽해지면 더 나아가지 못한다. (가) 4걸음 뒤 두 강아지는 기둥에서 각각 몇 m에 있는가? (나) 100걸음 뒤에는? (다) 누가 더 멀리 가는지를 정하는 것은 보폭인가 목줄인가?

김민준 (자신만만)
김민준
A 보폭이 다섯 배니까 A가 늘 앞서죠. 4걸음이면 A는 2m, B는 0.4m.
선생님 (질문)
선생님
민준 학생, 그 계산을 100걸음으로 늘려 볼까요? A는 몇 m를 가야 하죠?
김민준 (난처함)
김민준
50m요… 그런데 목줄이 2m라 2m에서 서 있어요. B는 10m를 가야 하는데 목줄 6m에서 서니까 6m. 결국 B가 더 멀리 있네요.
이서연 (평상)
이서연
처음 몇 걸음은 보폭이 이기고, 오래 걸으면 목줄이 이겨. 얼마나 멀리 가느냐는 목줄이 정하는 거야.

정리 (가) A 2m, B 0.4m. (나) A 2m(목줄 끝), B 6m(목줄 끝). (다) 오래 걸으면 목줄이 정한다. 보폭은 얼마나 빨리 가느냐만 정한다.

문제 4 — 짧은 목줄, 긴 목줄

β=0.1\textcolor{#827717}{\beta} = 0.1 과 β=0.5\textcolor{#827717}{\beta} = 0.5 각각에서, 그래디언트 가중치 σ(−βz)\textcolor{#8e44ad}{\sigma(-\beta z)} 가 0.1로 떨어지는 z\textcolor{#d9670b}{z} 를 구하시오. 어느 쪽이 레퍼런스에서 더 멀리 가는가? 위젯의 단추로 두 β\textcolor{#827717}{\beta} 를 불러와 답과 견주어 보라.

김민준 (평상)
김민준
σ(−βz)=0.1\textcolor{#8e44ad}{\sigma(-\beta z)} = 0.1 이면 βz=ln⁡9=2.2\textcolor{#827717}{\beta} \textcolor{#d9670b}{z} = \ln 9 = 2.2. β=0.1\textcolor{#827717}{\beta} = 0.1 이면 z=22\textcolor{#d9670b}{z} = 22, β=0.5\textcolor{#827717}{\beta} = 0.5 면 z=4.4\textcolor{#d9670b}{z} = 4.4.
김민준 (평상)
김민준
그러니까 β=0.5\textcolor{#827717}{\beta} = 0.5 가 더 멀리 가요. 그래디언트에 β\textcolor{#827717}{\beta} 가 곱해지니까 한 걸음이 다섯 배 크잖아요.
이서연 (의심)
이서연
한 걸음이 큰 거랑 멀리 가는 건 다르지 않아? 멈추는 지점이 z=4.4\textcolor{#d9670b}{z} = 4.4 면 거기서 사실상 서 버리는데.
선생님 (질문)
선생님
민준 학생, 아까 강아지 A와 B 가운데 100걸음 뒤 누가 더 멀리 있었죠?
김민준 (당황)
김민준
B요. A는 보폭이 커도 목줄 끝에서 서 버렸으니까… 아. β=0.1\textcolor{#827717}{\beta} = 0.1 은 한 걸음은 작아도 z=22\textcolor{#d9670b}{z} = 22 까지 가야 멈추고, β=0.5\textcolor{#827717}{\beta} = 0.5 는 4.44.4 에서 멈춰요. 멀리 가는 건 β=0.1\textcolor{#827717}{\beta} = 0.1 이에요.
선생님 (평상)
선생님
그래요. 목줄은 속도가 아니라 멈추는 곳을 정해요.
김민준 (평상)
김민준
아까 강아지 문제랑 같은 구조네요. 앞자리 β\textcolor{#827717}{\beta} 가 보폭이고, 안자리 β\textcolor{#827717}{\beta} 가 목줄 길이고요.

정리 βz=ln⁡9≈2.2\textcolor{#827717}{\beta} \textcolor{#d9670b}{z} = \ln 9 \approx 2.2 에서 가중치가 0.1. β=0.1⇒z≈22\textcolor{#827717}{\beta} = 0.1 \Rightarrow \textcolor{#d9670b}{z} \approx 22, β=0.5⇒z≈4.4\textcolor{#827717}{\beta} = 0.5 \Rightarrow \textcolor{#d9670b}{z} \approx 4.4. 작은 β\textcolor{#827717}{\beta} 가 더 멀리 간다. 한 걸음의 크기와 멈추는 지점을 구분해야 한다.

문제 5 — (킬러) 손실은 낮은데 여전히 틀린 모델

레퍼런스가 오답을 꽤 선호하는 쌍이 있다: Δref=−3\textcolor{#6f6f78}{\Delta_\text{ref}} = -3. 두 팀이 이 데이터로 DPO를 학습해 둘 다 손실을 0.2까지 낮췄다. A팀은 β=0.1\textcolor{#827717}{\beta} = 0.1, B팀은 β=1\textcolor{#827717}{\beta} = 1. (가) 시그모이드 안의 값을 승률로 읽는 BT(브래들리-테리 모델 — 두 점수의 차를 시그모이드에 넣어 이길 확률로 보는 모델)식으로 읽으면, 손실 0.2는 "모델이 yw\textcolor{#e000a5}{y_w} 를 82% 확률로 선호한다"는 뜻인가? (나) 두 팀의 최종 Δθ\textcolor{#1565c0}{\Delta_\theta} 를 구하시오. 어느 팀의 모델이 여전히 오답을 더 높은 확률로 생성하는가? (다) 이 결과를 "목줄"의 비유로 설명하시오.

김민준 (자신만만)
김민준
(가)는 그렇죠. 손실이 −log⁡σ(⋅)=0.2-\log\sigma(\cdot) = 0.2 면 σ=e−0.2=0.82\sigma = e^{-0.2} = 0.82. BT로 읽으면 "yw\textcolor{#e000a5}{y_w} 가 이길 확률 82%"예요.
선생님 (질문)
선생님
그 σ\sigma 안에 들어간 건 Δθ\textcolor{#1565c0}{\Delta_\theta} 였나요?
김민준 (평상)
김민준
아뇨, β(Δθ−Δref)\textcolor{#827717}{\beta}(\textcolor{#1565c0}{\Delta_\theta} - \textcolor{#6f6f78}{\Delta_\text{ref}}) 요. 그러니까 "레퍼런스보다 나아졌을 확률"이 82%인… 모델이 yw\textcolor{#e000a5}{y_w} 를 82%로 고른다는 뜻은 아니네요.
선생님 (평상)
선생님
그럼 (나)를 계산해 보죠.
김민준 (평상)
김민준
σ(βz)=0.8187\sigma(\textcolor{#827717}{\beta} \textcolor{#d9670b}{z}) = 0.8187 이면 βz=ln⁡(0.8187/0.1813)=1.51\textcolor{#827717}{\beta} \textcolor{#d9670b}{z} = \ln(0.8187/0.1813) = 1.51. A팀은 z=15.1\textcolor{#d9670b}{z} = 15.1, B팀은 z=1.51\textcolor{#d9670b}{z} = 1.51.
이서연 (평상)
이서연
근데 β\textcolor{#827717}{\beta} 는 결국 스케일이니까 두 팀 모델은 본질적으로 같지 않아? 손실이 똑같이 0.2잖아.
선생님 (질문)
선생님
서연 학생, Δθ\textcolor{#1565c0}{\Delta_\theta} 로 바꿔 보면요?
이서연 (생각)
이서연
Δθ=Δref+z\textcolor{#1565c0}{\Delta_\theta} = \textcolor{#6f6f78}{\Delta_\text{ref}} + \textcolor{#d9670b}{z}. A팀은 −3+15.1=12.1-3 + 15.1 = 12.1, B팀은 −3+1.51=−1.49-3 + 1.51 = -1.49.
이서연 (놀람)
이서연
B팀은 Δθ\textcolor{#1565c0}{\Delta_\theta} 가 음수예요. log⁡πθ(yw)−log⁡πθ(yl)=−1.49\log\textcolor{#1565c0}{\pi_\theta}(\textcolor{#e000a5}{y_w}) - \log\textcolor{#1565c0}{\pi_\theta}(\textcolor{#e000a5}{y_l}) = -1.49 니까 여전히 오답을 e1.49≈4.4e^{1.49} \approx 4.4 배 더 잘 만들어요. 손실은 A팀이랑 똑같이 0.2인데.
선생님 (평상)
선생님
그래요. 손실이 같아도 β\textcolor{#827717}{\beta} 가 다르면 모델이 서 있는 곳이 완전히 달라요. (다)는요?
이서연 (평상)
이서연
목줄이 짧은 B팀은 기둥에서 1.5만큼만 나갈 수 있어요. 기둥이 오답 쪽으로 3만큼 치우친 곳에 박혀 있으면, 목줄을 끝까지 당겨도 정답 쪽으로 못 넘어가는 거죠.
김민준 (평상)
김민준
A팀은 목줄이 길어서 기둥이 어디 박혔든 정답 쪽으로 넘어갔고요.
선생님 (평상)
선생님
그게 레퍼런스의 양면이에요. 목줄은 해킹을 막아 주지만, 기둥이 잘못 박혀 있으면 짧은 목줄은 모델을 잘못된 곳 근처에 묶어 둬요. 그래서 DPO 전에 SFT로 기둥을 좋은 곳에 박아 두는 거예요.
이서연 (평상)
이서연
극한 수업에서 "ϵ\epsilon 을 작게 잡으면 된다"고 했다가, 수열이 수렴하는 곳이 애초에 틀린 값이면 아무리 가까워져도 소용없다는 걸 배운 기억이 나요. 가까워지는 기준점이 맞아야 해요.
김민준 (평상)
김민준
나는 조교님이 "전년도 대비 개선"으로만 평가하면, 작년에 망한 조는 조금만 나아져도 A 받는다고 했던 게 떠올라. 절대 수준은 여전히 낮은데.

정리 (가) 아니다. σ\sigma 안은 β(Δθ−Δref)\textcolor{#827717}{\beta}(\textcolor{#1565c0}{\Delta_\theta} - \textcolor{#6f6f78}{\Delta_\text{ref}}) — "레퍼런스보다 나아진 정도"다. (나) βz=1.51\textcolor{#827717}{\beta} \textcolor{#d9670b}{z} = 1.51. A팀 Δθ=12.1\textcolor{#1565c0}{\Delta_\theta} = 12.1 (정답 선호), B팀 Δθ=−1.49\textcolor{#1565c0}{\Delta_\theta} = -1.49 (여전히 오답을 e1.49≈4.4e^{1.49} \approx 4.4 배 선호). (다) 짧은 목줄(큰 β\textcolor{#827717}{\beta})은 기둥 근처를 벗어나지 못한다. 기둥(레퍼런스)이 틀린 곳에 박혀 있으면 손실이 낮아도 모델은 틀린 채로 남는다 — DPO 전의 SFT가 중요한 이유.