DPO를 돌릴 때마다 가장 먼저 정하는 값이 β 다(흔히 0.1 언저리에서 시작한다). 레퍼런스 모델을 기둥에, KL 페널티를 목줄에 빗대면 KL 강도 β 는 목줄의 길이를 정한다. 클수록 목줄이 짧다. 그런데 그래디언트 식에는 β 가 맨 앞에도 한 번 곱해져 있어서, β 를 키우면 업데이트 한 스텝이 커진다. 그렇다면 큰 β 는 모델을 레퍼런스에서 더 멀리 데려가는가, 덜 데려가는가?
크기가 꺼지는 지점
β 는 RLHF 목표 E[r]−βKL(πθ∥πref) 에서 KL 페널티의 강도였는데, DPO로 넘어와서는 한 쌍이 받는 그래디언트의 크기 안에 두 번 들어간다.
σ 앞에 곱한 β 는 스텝 크기를 정한다. 출발점 z=0 에서 그래디언트 크기는 βσ(0)=β/2 라서, β=0.1 이면 0.05, β=0.5 면 0.25로 다섯 배다. σ 안의 β 는 가중치가 꺼지는 마진을 정한다. βz 가 커질수록 σ(−βz) 는 0으로 가므로, β 가 크면 작은 z 에서도 가중치가 0에 가까워진다.
두 자리의 β 는 반대로 작용한다. 스텝 크기는 크지만 가중치가 빨리 꺼지는 β=0.5 와, 스텝 크기는 작지만 가중치가 오래 남는 β=0.1 가운데 어느 쪽이 레퍼런스에서 더 멀리 갈까? 아래 위젯에서 β 를 고르고 Δθ 를 오른쪽으로 밀어, 점선(σ(−βz))이 어디서 0에 가까워지는지 보라.
ML에서: 레퍼런스 모델을 뺄 수 있는가
레퍼런스를 쓰려면 학습 모델과 같은 크기의 모델을 하나 더 메모리에 올려 두어야 한다. 그래서 레퍼런스를 빼고 다른 항으로 모델이 원래 모델에서 멀어지지 않게 붙잡는 알고리즘들이 나왔다. 무엇이 모자라서 나왔는지와 함께, 나온 순서대로 보자.
DPO는 레퍼런스를 함께 올려 두느라 메모리가 두 배로 들고 느리다. 번역에서는 사람이 쓴 정답 번역을 흉내 내는 SFT가 정답 번역의 흠까지 따라 배운다
레퍼런스를 모든 응답에 같은 확률을 주는 균일 분포로 어림해 식에서 지우고, 선호 응답의 SFT 손실 항을 더해 모델이 멀리 벗어나지 않게 한다
ORPO (2024년 3월)
SFT 다음에 선호 학습 단계를 하나 더 두고, 그 단계에 레퍼런스까지 둔다
선호 응답의 SFT 손실(정답 응답을 그대로 따라 쓰게 하는 지도 학습 손실)에 선호·비선호 응답의 오즈 비를 벌리는 작은 페널티 항을 더해 한 단계로 끝낸다. 레퍼런스 대신 SFT 손실이 모델이 원래 잘하던 것을 붙잡는다
SimPO (2024년 5월)
레퍼런스에 드는 계산과 메모리. 그리고 DPO가 매기는 보상(레퍼런스 대비 로그확률 비)이 생성할 때 모델이 따르는 기준(응답의 로그확률)과 어긋난다
응답 길이로 나눈 평균 로그확률 자체를 보상으로 쓰고, 목표 마진 γ(“최소 이만큼만 벌려라”)를 둔다
이 방법들은 레퍼런스 모델을 메모리에 올리지 않아도 되며, 셋 모두 이미 모아 둔 선호 데이터로 학습하는 오프라인 설정에서 제안되었다.
반대로 레퍼런스와 KL 페널티를 빼면 안 되는 경우도 있다. 모델이 자기 출력으로 계속 학습할 때(PPO, 온라인·반복 DPO) 레퍼런스가 없으면 리워드 해킹(보상 모델의 빈틈을 파고들어 점수만 올리는 일)을 막을 장치가 없다. 보상 모델은 불완전하고, 정책은 그 빈틈을 찾아낸다.
실제로 보고된 예가 아첨이다. 앤트로픽의 므리낭크 샤르마(Mrinank Sharma)와 동료들은 2023년 「Towards Understanding Sycophancy in Language Models」에서, 사람의 선호 데이터에서는 응답이 사용자의 견해와 맞을수록 더 자주 선택된다고 보고했다. 사람과 선호 모델 모두 그럴듯하게 쓴 아첨 응답을 옳은 응답보다 무시 못 할 비율로 더 좋아해서, 선호 모델 점수에 맞춰 출력을 고르면 때로 사실을 버리고 아첨을 택했다. 레퍼런스는 이럴 때 "원래 이 모델이 어떻게 답했는가"를 기억한다. 보상 모델의 빈틈을 좇아 원래 분포에서 멀어질수록 KL 페널티가 커지므로, KL 페널티는 아첨 같은 행동이 한없이 커지지 못하게 붙잡는다. 레퍼런스가 없으면 이 억제도 없다.
안전성 얼라인먼트(해로운 요청은 거절하는 등, 사람이 바라는 방식으로 답하게 맞추기)도 마찬가지다. 베이스 모델(프리트레인만 마친 모델)의 능력은 그대로 두고 행동만 바꿔야 할 때, 레퍼런스는 "원래 할 수 있었던 것"의 기준점이다.
KL 강도 β 가 너무 작아도(목줄이 너무 길어도) 탈이 난다. 선호 쌍 하나의 승패는 1 대 0이라, 손실 −logσ(βz) 를 0으로 만드는 z 는 무한대다. β 가 작아 가중치 σ(−βz) 가 늦게 꺼지면 모델은 학습 쌍의 마진만 끝없이 키운다. 데이터에 들어 있는 몇만 쌍의 승패를 그대로 외워, 쌍 밖의 응답에서는 오히려 나빠질 수 있다(오버피팅).
문제 3: 걸음이 큰 강아지, 목줄이 긴 강아지
두 강아지가 같은 기둥에 묶여 멀리 있는 공 쪽으로 걷는다. 강아지 A는 한 걸음이 50cm이고 목줄이 2m, 강아지 B는 한 걸음이 10cm이고 목줄이 6m다. 목줄이 팽팽해지면 더 나아가지 못한다. (가) 네 걸음 뒤 두 강아지는 기둥에서 각각 몇 m에 있는가? (나) 백 걸음 뒤에는? (다) 누가 더 멀리 가는지를 정하는 것은 한 걸음의 길이인가 목줄의 길이인가?
김민준
A가 한 걸음에 다섯 배를 가니까 A가 늘 앞서죠. 네 걸음이면 A는 2m, B는 0.4m.
선생님
민준 학생, 그 계산을 백 걸음으로 늘려 볼까요? A는 몇 m를 가야 하죠?
김민준
50m요… 그런데 목줄이 2m라 2m에서 서 있어요. B는 10m를 가야 하는데 목줄 6m에서 서니까 6m. 결국 B가 더 멀리 있네요.
이서연
처음 몇 걸음은 한 걸음의 길이가 이기고, 오래 걸으면 목줄이 이겨. 얼마나 멀리 가느냐는 목줄이 정하는 거야.
정리 (가) A 2m, B 0.4m. (나) A 2m(목줄 끝), B 6m(목줄 끝). (다) 오래 걸으면 목줄이 정하고, 한 걸음의 길이는 얼마나 빨리 가느냐만 정한다.
문제 4: 작은 β, 큰 β
β=0.1 과 β=0.5 각각에서, 그래디언트 가중치 σ(−βz) 가 0.1로 떨어지는 z 를 구하시오. 어느 쪽이 레퍼런스에서 더 멀리 가는가? 위젯의 단추로 두 β 를 불러와 답과 비교해 보라.
그러니까 β=0.5 가 더 멀리 가요. 그래디언트에 β 가 곱해지니까 업데이트 한 스텝이 다섯 배 크잖아요.
이서연
한 스텝이 큰 거랑 멀리 가는 건 다르지 않아? 멈추는 지점이 z=4.4 면 거기서 사실상 서 버리는데.
선생님
민준 학생, 아까 강아지 A와 B 가운데 백 걸음 뒤 누가 더 멀리 있었죠?
김민준
B요. A는 걸음이 커도 목줄 끝에서 서 버렸으니까… 아. β=0.1 은 한 스텝은 작아도 z=22 까지 가야 멈추고, β=0.5 는 4.4 에서 멈춰요. 멀리 가는 건 β=0.1 이에요.
선생님
그래요. KL 강도 β 도 목줄처럼 속도가 아니라 멈추는 곳을 정해요.
김민준
아까 강아지 문제랑 같은 구조네요. σ 앞의 β 가 강아지의 한 걸음이고, σ 안의 β 가 목줄 길이고요.
정리βz=ln9≈2.2 에서 가중치가 0.1. β=0.1⇒z≈22, β=0.5⇒z≈4.4. 작은 β 가 더 멀리 가므로, 한 스텝의 크기와 멈추는 지점을 구분해야 한다.
문제 5: (킬러) 손실은 낮은데 여전히 틀린 모델
레퍼런스가 오답을 꽤 선호하는 쌍이 있다: Δref=−3. 두 팀이 이 데이터로 DPO를 학습해 둘 다 손실을 0.2까지 낮췄다. A팀은 β=0.1, B팀은 β=1. (가) 시그모이드 안의 값을 승률로 읽는 BT(브래들리-테리 모델. 두 점수의 차를 시그모이드에 넣어 이길 확률로 보는 모델)식으로 읽으면, 손실 0.2는 "모델이 yw 를 82% 확률로 선호한다"는 뜻인가? (나) 두 팀의 최종 Δθ 를 구하시오. 어느 팀의 모델이 여전히 오답을 더 높은 확률로 생성하는가? (다) (나)에서 구한 두 팀의 결과를, 레퍼런스를 기둥에, KL 페널티를 목줄에 빗댄 비유로 설명하시오.
김민준
(가)는 그렇죠. 손실이 −logσ(⋅)=0.2 면 σ=e−0.2=0.82. BT로 읽으면 "yw 가 이길 확률 82%"예요.
선생님
그 σ 안에 들어간 건 Δθ 였나요?
김민준
아뇨, β(Δθ−Δref) 요. 그러니까 "레퍼런스보다 나아졌을 확률"이 82%인… 모델이 yw 를 82%로 고른다는 뜻은 아니네요.
근데 β 는 결국 스케일이니까 두 팀 모델은 본질적으로 같지 않아? 손실이 똑같이 0.2잖아.
선생님
서연 학생, Δθ 로 바꿔 보면요?
이서연
Δθ=Δref+z. A팀은 −3+15.1=12.1, B팀은 −3+1.51=−1.49.
이서연
B팀은 Δθ 가 음수예요. logπθ(yw)−logπθ(yl)=−1.49 니까 여전히 오답을 e1.49≈4.4 배 더 잘 만들어요. 손실은 A팀이랑 똑같이 0.2인데.
선생님
그래요. 손실이 같아도 β 가 다르면 모델이 서 있는 곳이 완전히 달라요. (다)는요?
이서연
목줄이 짧은 B팀은 기둥에서 1.5만큼만 나갈 수 있어요. 기둥이 오답 쪽으로 3만큼 치우친 곳에 박혀 있으면, 목줄을 끝까지 당겨도 정답 쪽으로 못 넘어가는 거죠.
김민준
A팀은 목줄이 길어서 기둥이 어디 박혔든 정답 쪽으로 넘어갔고요.
선생님
그게 레퍼런스의 양면이에요. 목줄은 해킹을 막아 주지만, 기둥이 잘못 박혀 있으면 짧은 목줄은 모델을 잘못된 곳 근처에 묶어 둬요. 그래서 DPO 전에 SFT로 기둥을 좋은 곳에 박아 두는 거예요.
이서연
극한 수업에서 "ϵ 을 작게 잡으면 된다"고 했다가, 수열이 수렴하는 곳이 애초에 틀린 값이면 아무리 가까워져도 소용없다는 걸 배운 기억이 나요. 가까워지는 기준점이 맞아야 해요.
김민준
나는 조교님이 "전년도 대비 개선"으로만 평가하면, 작년에 망한 조는 조금만 나아져도 A 받는다고 했던 게 떠올라. 절대 수준은 여전히 낮은데.
정리 (가) 아니다. σ 안은 β(Δθ−Δref) 로, "레퍼런스보다 나아진 정도"다. (나) βz=1.51. A팀 Δθ=12.1 (정답 선호), B팀 Δθ=−1.49 (여전히 오답을 e1.49≈4.4 배 선호). (다) 짧은 목줄(큰 β)은 모델을 기둥(레퍼런스) 근처에 묶어 두므로, 기둥이 틀린 곳에 박혀 있으면 손실이 낮아도 모델은 틀린 채로 남는다. 그렇기 때문에 DPO 전에 SFT로 레퍼런스를 좋은 출발점으로 만들어 둔다.