나쁜 예로 나쁜 답에서 멀어지고, KL 목줄로 레퍼런스 근처에 머문다. 이 두 걸음을 손실 하나에 어떻게 담을까? 두 걸음을 합치는 세 번째 걸음이 DPO다.
역사: 2023년의 지름길
DPO는 2023년 스탠퍼드 대학의 라파일로프(Rafael Rafailov), 샤르마(Archit Sharma), 미첼(Eric Mitchell), 에르몬(Stefano Ermon), 매닝(Christopher Manning), 핀(Chelsea Finn)이 발표했다. 논문 첫머리에 적힌 고민은 이렇다. 사람이 쓴 방대한 글로 학습한 언어모델은 사람들의 절반이 믿는 흔한 오해까지 배운다. 모델이 그 오해를 아는 것은 괜찮지만, 그 오해를 묻는 질문의 절반에서 오해가 옳다고 답해서는 안 된다. 모델이 이미 가진 넓은 지식 가운데 바라는 답과 행동을 골라내야 한다는 것이다. 데이터를 그대로 흉내 내는 학습만으로는 이 골라내기가 되지 않는다. 당시 골라내는 방법은 여러 단계를 거쳤고, 논문은 그 절차를 「복잡하고 자주 불안정하다」고 적었다. 연구진은 같은 목표를 분류 문제처럼 간단한 손실 하나로 풀 수 있음을 보였다. 논문은 그해 NeurIPS에 실렸고, 학회가 뽑은 우수 논문 준우승(Outstanding Main Track Runner-Up) 두 편 가운데 하나가 되었다. 이름의 "직접(Direct)"은 보상 모델을 따로 학습하는 단계를 거치지 않는다는 뜻이다. 그 단계가 무엇이었는지는 이 장 끝에서 다시 묻는다.
손실이 0이 아니다. 레퍼런스와 똑같이 구분하는 것은 "잘하는 것"이 아니라 "출발선"이다. 레퍼런스가 이미 90 대 10으로 구분하던 쌍이라면, 지금 모델도 90 대 10이면 아직 한 일이 없다.
그렇다면 흔히 하는 요약 — “좋은 답의 확률은 올리고 나쁜 답은 내린다” — 은 이 손실을 제대로 말하는가? 좋은 답과 나쁜 답의 확률이 함께 움직이면 손실은 어느 쪽으로 갈까? 아래 문제들에서 따져 보자.
문제 4 — 떡볶이가 끼어든 급식 투표
작년 급식 메뉴 투표에서 짜장면이 60표, 짬뽕이 20표를 받았다. 올해는 떡볶이가 새 후보로 들어와 표가 나뉘었고, 짜장면 30표, 짬뽕 10표, 떡볶이 40표가 나왔다. (가) 올해 학생들은 짬뽕에 견주어 짜장면을 덜 좋아하게 되었는가? (나) 올해 짬뽕이 10표가 아니라 5표였다면?
김민준
짜장면이 60표에서 30표로 반토막 났으니 인기가 떨어졌죠.
선생님
민준 학생, 물은 건 짬뽕에 견주어서예요. 짬뽕은 어떻게 됐죠?
김민준
짬뽕도 20표에서 10표로 반이에요. 작년에도 올해도 짜장면이 짬뽕의 세 배네요. 떡볶이가 둘에게서 똑같은 비율로 표를 가져갔을 뿐이고요.
이서연
(나)면 짜장면이 짬뽕의 여섯 배야. 짜장면 표는 줄었는데 짬뽕보다는 오히려 더 앞선 거지.
선생님
그래요. "몇 표가 줄었나"와 "상대의 몇 배인가"는 서로 다른 물음이에요.
정리 (가) 아니다. 작년 60 : 20도, 올해 30 : 10도 3배다. 떡볶이가 두 메뉴의 표를 같은 비율로 가져갔다. (나) 30 : 5는 6배라서 짜장면이 짬뽕보다 더 앞선다. 짜장면 표 자체는 줄었어도 그렇다.
문제 5 — 둘 다 반으로 떨어지면
레퍼런스 모델이 "서울"과 "부산"에 0.6, 0.2의 확률을 준다. 학습 도중의 지금 모델은 “서울” 0.3, “부산” 0.1을 준다(나머지 확률은 다른 답들로 옮겨 갔다). 좋은 답 "서울"의 확률이 반으로 줄었다. (가) 이 쌍의 DPO 손실은 학습을 시작할 때보다 커졌는가? 값을 구하시오. (나) 이 손실만으로 학습하면 "서울"의 확률이 줄어드는 것을 막을 수 있는가?
김민준
정답 확률이 0.6에서 0.3으로 반토막 났으니 손실이 커졌겠죠. 학습이 뒤로 간 거잖아요.
똑같네요. 괄호 안이 0이라 손실은 −logσ(0)≈0.693, 학습을 시작할 때와 같아요.
이서연
둘 다 반이 되면 비율은 3 대 1 그대로니까. 로그확률의 차이는 두 확률의 비율만 보고, 둘이 함께 얼마나 올라가고 내려갔는지는 못 봐.
선생님
그럼 (나)는요? 이 손실이 "서울"의 확률 자체를 지켜 주나요?
이서연
못 지켜요. 서울과 부산이 같은 비율로 계속 떨어져도 손실은 그대로예요. 0.03과 0.01로 떨어져도 같아요. 선호 쌍 바깥의 다른 답으로 확률이 새어 나가도 이 손실은 모르는 거예요.
김민준
아까 급식 투표 문제랑 같네요. 짜장면 표가 반으로 줄어도 짬뽕보다 세 배 인기인 건 그대로였잖아요.
정리 (가) Δθ=log(0.3/0.1)=log3=Δref 이므로 z=0, 손실은 −logσ(0)=log2≈0.693 으로 학습을 시작할 때와 같다. (나) 막지 못한다. DPO 손실은 좋은 답과 나쁜 답의 확률의 비율만 보므로, 둘이 같은 비율로 줄어 확률이 선호 쌍 바깥으로 새어 나가도 손실은 변하지 않는다.
문제 6 — β가 크면 목줄은
레퍼런스보다 마진을 z=Δθ−Δref 만큼 더 벌렸다. (가) z=2 일 때 β=0.1 과 β=1 에서 손실은 각각 얼마인가? (나) 손실을 0.2까지 낮추려면 두 β 에서 z 가 각각 얼마여야 하는가? (다) β 를 크게 하면 학습된 모델은 레퍼런스 근처에 머무는가, 멀리 가는가?
선생님
서연 학생, (가)부터 볼까요. 같은 z=2 인데 손실이 같던가요?
이서연
β=0.1 이면 σ 안이 0.2라서 −logσ(0.2)≈0.598, β=1 이면 −logσ(2)≈0.127 이에요. β가 괄호 앞에 곱해지니까, 마진을 조금만 벌려도 σ 안의 값이 커져서 손실이 금방 0에 가까워져요. 그러니까… 조금만 움직여도 만족하니까 레퍼런스 근처에 머물 거예요.
김민준
난 반대로 생각했어. β가 크면 그래디언트도 β배로 커지니까 더 많이 움직이지 않을까?
선생님
둘 다 식의 한 부분씩을 보고 있어요. 민준 학생, (나)를 계산해 보죠. 손실을 0.2까지 낮추려면 z 가 얼마나 필요해요?