AI VIDEO BRIEFING
DPO 완전 해설: 보상 모델과 강화학습 루프 없이 언어모델을 정렬하는 손실 함수 유도 원리
ChatGPT를 길들인 RLHF는 보상 모델 학습과 강화학습 루프가 필요했다. DPO는 이 두 단계를 지우고 선호 쌍 분류 손실 하나로 같은 정렬을 얻는데, 그 수식이 나오기까지의 유도 과정을 단계별로 짚어본다.

핵심 메시지
쉽게 이해하기
초기 ChatGPT가 사람에게 도움이 되도록 학습된 방식은 세 단계였다. 같은 프롬프트에 대한 두 답변을 사람에게 보여주고 어느 쪽이 더 나은지 고르게 해 선호 데이터를 모으고, 그 판단을 흉내 내는 별도의 신경망인 보상 모델을 학습시킨 뒤, 그 보상을 높이는 방향으로 강화학습을 돌린다. 영상은 이 파이프라인이 메모리에 네 개의 모델을 올려야 하고 강화학습 루프 자체가 다루기 까다롭다는 점을 지적하며 출발한다.
직접 선호 최적화(DPO)는 여기서 대담한 주장을 한다. 뒤의 두 단계, 즉 보상 모델과 강화학습이 전혀 필요 없다는 것이다. 데이터는 그대로 쓴다. 각 프롬프트마다 사람이 선택한 답변과 버린 답변이 한 쌍으로 있고, 이를 승자와 패자로 둔다. '사람들이 이쪽을 더 좋아한다'를 수식으로 옮기는 고전적인 도구가 체스 선수 랭킹에 쓰이는 브래들리-테리 모델이며, 승자가 패자를 이길 확률을 두 보상의 차이에 시그모이드를 씌운 값으로 본다.
표준 방식은 이 선호 데이터로 보상 모델을 맞춘 뒤, 정책이 그 보상을 최대한 높이되 원래 참조 모델에서 너무 멀어지지 않도록 만든다. 목적함수는 보상을 좇는 힘과 참조 모델에서 벗어나지 말라는 힘으로 갈리고, 계수 베타가 두 번째 힘의 세기를 정한다. 영상은 이를 목줄에 비유한다. 목줄이 없으면 정책은 보상 모델만 좋아하는 이상한 문장, 반복되는 토큰 같은 전형적인 보상 해킹을 찾아낸다.
DPO의 출발점은 교과서 수준의 수학이다. 이 KL 제약 목적함수에는 종이에 적을 수 있는 정확한 해가 있는데, 최적 정책은 참조 정책에 보상을 베타로 나눈 값의 지수를 곱해 다시 정규화한 형태다. 이 식을 뒤집어 보상에 대해 풀면 보상은 '베타 × 최적 정책과 참조 모델의 로그 비율 + 베타 log Z(x)'가 된다. 문제는 Z(x)로, 모델이 만들어낼 수 있는 모든 문장에 대한 합이라 계산할 방법이 없다.
막다른 길처럼 보이는 지점에서 브래들리-테리가 보상 자체가 아니라 같은 프롬프트에 대한 두 답변의 보상 '차이'만 필요로 한다는 사실이 되살아난다. 승자와 패자 모두 같은 베타 log Z(x)를 달고 있으니 빼는 순간 사라지고, 남는 것은 정책과 고정된 참조 모델의 로그 확률뿐이다. 이 차이를 브래들리-테리 우도에 넣고 음의 로그를 취하면 DPO 손실이 되며, 보상 모델도 샘플링도 강화학습 루프도 없이 일반적인 경사하강법으로 학습되는 분류 손실만 남는다.
주요 인사이트
- 논문 부제 '당신의 언어모델은 사실 보상 모델이다'의 의미는 정책과 참조 모델의 로그 비율에 베타를 곱한 값이 암묵적 보상으로 작동한다는 데 있다.
- 선호를 분류하도록 정책을 학습시키는 일은, 그 최적 정책이 바로 지금 학습 중인 정책인 보상 모델을 맞추는 일과 같다.
- 기울기를 보면 매 업데이트가 승자의 확률을 올리고 패자의 확률을 내리되, 모델이 현재 그 쌍을 얼마나 잘못 순위 매겼는지에 비례해 가중치가 붙는다.
- 파이프라인 비교가 차이를 압축해 보여준다. PPO 기반 RLHF는 네 개의 모델과 온라인 샘플링, 예민한 강화학습 루프가 필요한 반면 DPO는 두 개의 모델과 고정된 데이터셋, 지도학습 손실 하나면 된다.
- DPO는 보상 모델을 삭제한 것이 아니라, 정책이 처음부터 보상 모델이었다는 사실을 드러낸 것에 가깝다.
자주 묻는 질문
DPO가 없앤 단계는 정확히 무엇인가?
선호 데이터를 모으는 첫 단계는 그대로 두고, 별도의 보상 모델을 학습하는 단계와 그 보상에 대해 강화학습을 돌리는 단계를 없앤다. 남는 것은 선호 쌍에 대한 하나의 분류 손실이다.
계산할 수 없는 분배함수 Z(x)는 어떻게 처리되나?
Z(x)는 모델이 만들 수 있는 모든 응답에 대한 합이라 계산이 불가능하다. 다만 브래들리-테리 모델이 같은 프롬프트에 대한 두 응답의 보상 차이만 요구하고, 승자와 패자가 같은 프롬프트를 공유하므로 Z(x) 항이 서로 상쇄되어 사라진다.
참조 모델에서 멀어지지 않게 하는 제약은 왜 필요한가?
제약 없이 보상만 강하게 좇으면 정책이 보상 모델만 유독 좋아하는 엉뚱한 출력, 예컨대 반복되는 토큰이나 이상한 표현을 찾아내는 전형적인 보상 해킹이 일어난다. 베타는 이 제약의 강도를 정한다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗