ai papers
RLHF과 DPO의 차이점에 대하여
Junyoung Park · 2026-07-30 · 20 min
Preliminary
사람의 선호를 학습한다는 것
LLM을 학습시키는 가장 기본적인 방법은 생각보다 단순하다. 문장의 앞부분을 주고 다음에 나올 Token을 맞히게 하면 된다.
예를 들어 다음과 같은 문장이 있다고 하자.
오늘 점심으로 김치찌개를
그다음 Token으로 ‘먹었다’가 나올 확률을 높이면 된다. 이런 식으로 인터넷에 존재하는 수많은 문장을 학습하면 모델은 문법도 배우고, 지식도 배우고, 어느 정도의 추론 능력까지 가지게 된다.
그런데 여기에는 문제가 하나 있다. 모델이 다음 Token을 잘 맞히는 것과 사람이 원하는 대답을 잘하는 것은 완전히 같은 문제가 아니라는 것이다.
인터넷에는 친절한 답변도 있지만 불친절한 답변도 있고, 정확한 글도 있지만 틀린 글도 있다. 논리적으로 잘 정리된 글도 있지만, 자신감 있게 헛소리하는 글도 상당히 많다.
Pre-training model의 입장에서 이 문장들은 전부 똑같은 학습 데이터다. 모델은 그것이 좋은 답변인지 나쁜 답변인지 판단하는 것이 아니라, 단지 다음 Token으로 등장할 확률이 높은지를 학습한다. 쉽게 말하면 책을 굉장히 많이 읽기는 했는데, 시험에서 대체 어떤 식으로 답안을 작성해야 점수를 잘 받는지는 모르는 학생과 비슷하다.
그래서 등장한 방식이 SFT(Supervised Fine-tuning)이다.
사람이 직접 작성한 좋은 질문과 답변을 모아서 다음과 같은 Dataset을 만든다.
여기서 는 질문이고, 는 사람이 작성한 이상적인 답변이다. 그리고 모델이 해당 답변을 그대로 생성할 확률을 높이도록 학습한다.
이 방식은 직관적이고 잘 동작한다. 실제로 Instruction tuning을 거치면 Base model에 비해 사용자의 지시를 훨씬 잘 따르는 모델을 만들 수 있다.
그런데 사람이 모든 질문에 대해 완벽한 답변을 직접 작성하는 것은 꽤 어렵다.
예를 들어 다음 두 가지를 비교해보자.
- “강화학습을 처음 배우는 사람에게 PPO를 설명하는 완벽한 답변을 직접 작성해주세요.”
- “다음 두 답변 중 어떤 답변이 더 좋은지 골라주세요.”
대부분의 사람에게는 두 번째가 더 쉽다. 완벽한 답안을 처음부터 쓰는 것과, 이미 작성된 답안 두 개 중 더 나은 것을 고르는 것은 필요한 노력 자체가 다르다.
식당을 직접 운영할 줄 몰라도 음식이 맛있는지 맛없는지는 어느 정도 판단할 수 있는 것과 비슷하다. 물론 인터넷 리뷰를 보면 이 명제도 가끔 의심스럽기는 하지만, 아무튼 상대적인 비교가 직접적인 Demonstration 작성보다 쉬운 경우가 많다.
이러한 상대적인 비교 데이터를 이용해 LLM을 학습하는 방법이 Preference learning이고, 대표적인 방식이 RLHF(Reinforcement Learning from Human Feedback)이다.
RLHF
RLHF라는 이름만 보면 사람이 모델 옆에 붙어서 답변을 하나 생성할 때마다 칭찬하거나 혼내는 장면을 상상할 수 있다.
그러나 실제로 사람을 강화학습 Loop 안에 매번 앉혀두는 것은 아니다. 사람도 지치고, 무엇보다 비싸다.
일반적인 RLHF에서는 사람이 미리 여러 답변을 비교하여 Preference dataset을 만들고, 사람의 판단을 대신할 Reward Model을 학습한다. 이후에는 Reward Model이 사람을 대신해 Policy가 생성한 답변을 평가한다.
InstructGPT와 같은 일반적인 RLHF Pipeline은 크게 다음 세 단계로 구성된다.
- 좋은 답변 Dataset을 이용한 SFT
- Human preference를 이용한 Reward Model 학습
- Reward Model의 점수를 최대화하는 Policy optimization
우선 SFT model에 동일한 질문 를 여러 번 입력하여 서로 다른 답변을 생성한다.
사람에게 두 답변을 보여주고 더 나은 답변을 선택하게 한다. 선택된 답변을 , 선택되지 않은 답변을 이라고 표현한다.
여기서 는 Winner, 은 Loser 정도로 이해하면 된다. 논문에서는 Preferred response와 Dispreferred response라고 표현하기도 한다.
이렇게 모은 Preference dataset은 다음 형태를 가진다.
사람은 각 답변에 정확한 점수를 매기지 않았다.
사람이 “첫 번째 답변은 8.37점이고 두 번째 답변은 6.24점이다”라고 알려준 것이 아니라, 단지 첫 번째 답변이 두 번째 답변보다 낫다고 알려줬다.
그런데 강화학습을 하려면 모델이 생성한 답변을 숫자로 평가할 수 있어야 한다. 따라서 이 상대적인 순위 정보로부터 Scalar reward를 출력하는 Reward Model을 학습한다.
Reward Model
Reward Model을 라고 하자. 질문 와 답변 를 입력하면 하나의 Scalar 값을 출력한다.
Reward가 높을수록 사람이 선호할 가능성이 높은 답변이고, Reward가 낮을수록 사람이 선호하지 않을 가능성이 높은 답변이라고 가정한다.
이때 주로 사용하는 Preference model이 Bradley-Terry Model이다.
두 답변 , 가 있을 때 사람이 을 더 선호할 확률을 다음과 같이 정의한다.
Sigmoid를 이용하면 조금 더 간단하게 표현할 수 있다.
여기서 쓰는 값은 각 Reward의 절대값이 아니라 두 Reward 사이의 차이다.
예를 들어 다음 두 경우를 생각해보자.
두 경우 모두 Reward 차이는 2이므로 Bradley-Terry Model이 계산하는 Preference probability는 같다.
Reward Model이 학습해야 하는 것은 사람이 선택한 답변의 점수를 무조건 크게 만드는 것이 아니라, 선택된 답변의 Reward가 선택되지 않은 답변의 Reward보다 높아지도록 만드는 것이다.
Reward Model의 Loss는 다음과 같이 정의된다.
Reward Model이 선택된 답변에 더 높은 점수를 부여하면 Loss가 작아지고, 선택되지 않은 답변에 더 높은 점수를 부여하면 Loss가 커진다.
여기까지만 보면 그냥 Binary classification과 크게 다르지 않다.
Reward Model을 잘 학습했다고 일이 끝나지는 않는다. 우리가 원하는 것은 점수를 잘 매기는 심사위원보다 좋은 답변을 생성하는 LLM에 가깝다.
Reward Model은 어디까지나 사람의 선호를 흉내 내는 평가 모델이고, 이제 이 Reward를 높이는 방향으로 실제 Policy model을 학습해야 한다.
Reward를 최대화하는 Policy
학습하고자 하는 언어 모델을 라고 하자.
질문 가 주어졌을 때 Policy는 답변 를 생성한다.
가장 단순하게 생각하면 Reward Model이 높은 점수를 주는 답변을 생성하도록 다음 목적 함수를 최대화하면 된다.
그런데 이 목적 함수만 사용하면 Policy가 Reward Model의 빈틈을 찾아 이상한 답변을 생성할 수 있다.
Reward Model은 사람의 선호 그 자체가 아니라, 제한된 Preference dataset으로 학습한 근사 모델이다. Policy를 지나치게 강하게 최적화하면 사람이 실제로 좋아하는 답변이 아니라 Reward Model만 좋아하는 답변을 만들 가능성이 있다.
시험 채점 기준의 허점을 발견하고 내용은 별로 없는데 점수만 잘 받는 답안을 작성하는 것과 비슷하다. 학교 다닐 때 이런 능력도 나름 중요하긴 했지만, 우리가 LLM에게 원하는 능력은 아니다.
그래서 학습 중인 Policy가 기존의 Reference model에서 너무 멀어지지 않도록 KL divergence penalty를 추가한다.
여기서 는 일반적으로 SFT model을 고정한 Reference model이다.
첫 번째 Term은 Reward를 높이는 역할을 한다.
두 번째 Term은 Policy가 Reference model로부터 지나치게 멀어지는 것을 막는다.
가 크면 Reference model에 더 강하게 묶이고, 가 작으면 Reward를 높이기 위해 Policy가 더 크게 변할 수 있다.
결국 다음 두 목표 사이에서 적당한 타협점을 찾는 것이다.
- 사람이 선호할 만한 높은 Reward의 답변을 생성한다.
- 기존 SFT model의 언어 능력과 답변 분포에서 너무 멀어지지 않는다.
이 목적 함수를 실제로 최적화하기 위해 PPO가 주로 사용되었다.
여기서 주의할 점은 RLHF와 PPO가 같은 말은 아니라는 점이다.
RLHF는 Human Feedback을 이용해 모델을 학습하는 전체적인 Framework이고, PPO는 그중 Reward Model을 이용해 Policy를 업데이트하는 강화학습 알고리즘이다.
PPO 대신 다른 강화학습 방법을 사용할 수도 있다. 다만 LLM 기반 RLHF에서 PPO가 많이 사용되었기 때문에 두 개념이 거의 붙어 다니게 된 것이다.
PPO 기반 RLHF의 복잡성
PPO 기반 RLHF를 실제로 수행하려면 생각보다 많은 모델이 필요하다.
- 실제로 학습되는 Policy Model
- Policy의 기준점이 되는 Reference Model
- 생성된 답변을 평가하는 Reward Model
- 각 State의 미래 Reward를 예측하는 Value Model
모델 하나를 잘 가르치겠다고 뒤에서 모델 세 개를 더 불러다 놓는 셈이다. 교육에는 원래 돈이 많이 든다.
Policy Model은 답변을 생성한다. Reward Model은 전체 답변을 평가한다. Value Model은 각 Token을 생성하는 시점에서 미래에 받을 Reward를 예측하고, 이를 기반으로 Advantage를 계산한다.
그리고 PPO 학습 과정에서는 현재 Policy로 새로운 답변을 Sampling해야 한다.
생성한 답변을 Reward Model로 평가하고, Reference Model과의 KL penalty를 계산하고, Value Model로 Advantage를 추정한 뒤, PPO clipping을 이용해 Policy를 업데이트한다.
이를 반복하면 다음과 같은 순환 구조가 생긴다.
LLM의 답변은 길고, 모델도 크다. 따라서 답변을 생성하는 Rollout 자체가 비싸고, 여러 모델의 Forward 연산과 Policy의 Backward 연산까지 필요하다.
Reward와 Value의 Scale, KL coefficient, PPO clipping range, Advantage normalization 등 신경 써야 할 요소도 많다.
사실 앞서 PPO 글을 길게 작성한 이유가 바로 이 부분 때문이다. PPO는 잘 동작하지만, 절대 단순한 학습법은 아니다.
그렇다면 다소 근본적인 의문이 하나 생긴다.
사람은 이미 어떤 답변이 더 좋은지 알려줬는데, 꼭 Reward Model을 따로 학습하고 다시 PPO로 Policy를 학습해야 할까?
현재 RLHF의 구조는 다음과 같다.
사람의 선호를 Reward Model이 먼저 배우고, Policy는 다시 Reward Model의 선호를 배운다.
말 그대로 두 번 일한다.
그렇다면 Preference dataset을 이용해 Policy 자체를 직접 학습할 수는 없을까?
이 질문에서 출발한 방법이 Direct Preference Optimization, 줄여서 DPO이다.
Direct Preference Optimization
Reward Model 없이 학습하기
DPO 논문의 전체 제목은 다음과 같다.
Direct Preference Optimization: Your Language Model is Secretly a Reward Model
“당신의 언어 모델은 사실 Reward Model이다”라는 뜻이다. 논문 제목치고는 꽤 도발적이다. 약간 유튜브 썸네일 같기도 하다.
DPO의 가장 큰 아이디어는 새로운 Reward를 제안한 것이 아니다.
기존 RLHF에서 사용하던 KL-constrained Reward maximization Objective를 다시 정리해보면, Reward Model을 명시적으로 학습하지 않고도 Preference probability를 Policy의 확률로 직접 표현할 수 있다는 것이다.
기존 RLHF의 목적 함수를 다시 가져오면 다음과 같다.
이 목적 함수에서 Reward function 가 주어졌다고 가정하자.
해당 Objective를 최대화하는 Optimal policy는 다음 형태로 표현된다.
여기서 는 모든 답변의 확률 합을 1로 만들어주는 Partition function이다.
이 식을 직관적으로 보면 Reward가 높은 답변일수록 Reference model에서의 확률보다 더 높은 확률을 가지게 된다.
다만 Reference model이 원래 거의 생성하지 않던 답변은 Reward가 조금 높다고 해서 무한정 높은 확률을 가질 수는 없다. 가 일종의 기준점 역할을 한다.
이제 Optimal policy 식을 Reward에 대해 다시 정리해보자.
양쪽에 Log를 취하면 다음과 같다.
Reward는 다음과 같이 표현할 수 있다.
이 식이 DPO에서 가장 중요한 출발점이다.
Reward function을 별도의 Neural Network로 표현하는 대신, Policy와 Reference policy의 Log probability ratio로 표현할 수 있다.
그런데 여전히 가 남아있다.
모든 가능한 답변 에 대해 확률을 합산해야 하므로 LLM에서 를 정확하게 계산하는 것은 사실상 불가능하다. 가능한 문장의 수가 몇 개인지 생각해보면 당연하다.
다행히 Reward Model에서 사용했던 Bradley-Terry Model은 Reward의 절대값이 아니라 두 Reward의 차이만 사용한다.
앞에서 구한 Reward 표현을 대입해보자.
두 답변은 동일한 질문 에 대한 답변이므로 가 서로 상쇄된다.
바로 이 부분에서 별도의 Reward Model이 사라진다.
Reward의 차이를 Policy probability와 Reference probability만으로 표현할 수 있기 때문이다.
DPO Loss
Optimal policy 대신 실제로 학습할 Policy 를 대입하면 Preference probability는 다음과 같다.
사람이 실제로 를 선택한 Preference dataset이 있으므로, 이 확률을 높이는 Binary cross-entropy 형태의 Loss를 사용하면 된다.
이것이 DPO Loss의 거의 전부다.
PPO에서 사용하던 Rollout, Reward Model, Value Model, GAE, PPO clipping이 식에서 전부 사라졌다.
Preference pair를 Batch로 가져와 일반적인 Language Model Fine-tuning과 비슷하게 Gradient descent를 수행하면 된다.
그래서 이름이 Direct Preference Optimization이다. Reward Model이라는 중간 전달자를 거치지 않고 Preference dataset으로 Policy를 직접 최적화한다.
DPO가 실제로 비교하는 것
DPO Loss를 처음 보면 Log와 Fraction이 많아서 복잡해 보이지만, 실제로 비교하는 값은 단순하다.
다음 값을 Policy가 답변 에 부여하는 Implicit reward라고 정의하자.
그러면 DPO Loss는 다음과 같이 표현된다.
Reward Model의 Loss와 거의 똑같이 생겼다.
기존 Reward Model은 별도의 Network 가 Reward 차이를 예측했다.
DPO에서는 Policy와 Reference policy의 Log probability ratio가 Reward 역할을 한다.
Reward가 사라진 것은 아니다.
Reward를 별도의 모델에서 출력하지 않고 Policy 내부의 확률 변화로 표현한 것이다.
논문 제목인 “Your Language Model is Secretly a Reward Model”이 의미하는 부분도 이것이다.
보상 모델을 해고한 줄 알았는데, 알고 보니 Policy가 보상 모델 업무까지 겸직하고 있었다. 회사에서 자주 볼 수 있는 구조다.
Chosen의 절대 확률만 보면 안 되는 이유
여기서 DPO가 단순한 SFT와 어떻게 다른지도 생각해볼 필요가 있다.
SFT에서는 Preferred response 의 확률만 높인다.
Rejected response 에 대한 정보는 사용하지 않는다.
반면 DPO에서는 Preferred response와 Rejected response 사이의 상대적인 Margin을 학습한다.
DPO는 이 Margin이 커지도록 학습한다.
쉽게 말하면 다음 두 가지를 함께 수행한다.
- Reference model에 비해 Preferred response를 더 선호하도록 만든다.
- Reference model에 비해 Rejected response를 덜 선호하도록 만든다.
의 절대값만으로는 부족하다.
Reference model과 비교했을 때 Preferred response에 대한 상대적인 확률을 얼마나 높였는지를 본다.
예를 들어 Reference model이 원래부터 어떤 답변을 높은 확률로 생성했다면, Policy가 해당 답변에 높은 확률을 부여하는 것만으로는 충분하지 않다.
이 값은 Policy가 Reference model에 비해 해당 답변을 얼마나 더 선호하게 되었는지를 나타낸다.
DPO는 Preferred response의 단순 Likelihood가 아니라, Reference model로부터 변화한 상대적인 선호도를 학습하는 것이다.
Reference Model은 왜 남아있는가?
DPO에서 Reward Model과 Value Model은 사라졌지만 Reference Model은 남아있다.
Reference Model이 없다면 다음과 같이 단순하게 Chosen과 Rejected의 Log probability 차이만 학습할 수도 있다.
하지만 이렇게 학습하면 기존 RLHF Objective에 있던 KL constraint가 사라진다.
DPO의 Reference probability는 기존 RLHF에서 Policy가 기준 모델로부터 너무 멀어지지 않게 하던 KL regularization을 Loss 내부에 포함시키는 역할을 한다.
DPO는 Reference Model을 없앤 방법이 아니라, Reference Model과의 관계를 이용해 Reward를 재정의한 방법이라고 보는 편이 정확하다.
Reference Model은 일반적으로 SFT model을 고정해서 사용한다. 학습되는 Policy도 동일한 SFT checkpoint에서 시작한다.
학습 시작 시점에는 두 모델이 같으므로 다음 값은 거의 0이다.
학습이 진행되면서 Preferred response에 대해서는 이 값이 상대적으로 커지고, Rejected response에 대해서는 작아지도록 Policy가 변한다.
의 역할
DPO에서도 가 등장한다.
이 는 기존 KL-constrained RLHF Objective에서 Policy가 Reference Model로부터 얼마나 벗어나는지를 조절하던 계수에서 나온다.
이론적인 유도에서는 가 클수록 Reward를 조금 높이기 위해 Policy를 크게 바꾸는 것이 더 비싸진다. 따라서 Optimal policy가 Reference policy에 더 강하게 묶인다.
다만 실제 DPO Loss에서는 가 Logit의 Scale에도 직접 들어간다. 따라서 단순히 “가 크면 무조건 학습이 약해진다”라고만 이해하기보다는, Preference margin의 Scale과 Reference policy에 대한 Regularization을 함께 결정하는 Hyperparameter로 보는 편이 낫다.
가 너무 작으면 Policy가 Preference pair에 과하게 맞춰질 수 있고, 너무 크면 원하는 만큼 선호도 차이가 학습되지 않을 수 있다.
결국 다른 Hyperparameter와 마찬가지로 Dataset과 Model에 맞춰 조정해야 한다. 강화학습을 없앴다고 Hyperparameter tuning까지 완전히 사라지는 행복한 결말은 아니었다.
DPO Gradient의 직관
DPO Loss의 Gradient를 살펴보면 어떤 Preference pair가 더 강하게 학습되는지도 확인할 수 있다.
Implicit reward를 다시 정의하면 다음과 같다.
DPO Gradient는 다음과 같은 형태를 가진다.
뒤쪽 Term은 직관적이다.
Preferred response의 확률은 높이고, Rejected response의 확률은 낮춘다.
앞쪽의 Sigmoid Term은 현재 Policy가 두 답변의 순서를 얼마나 잘못 판단하고 있는지에 따라 Weight를 결정한다.
Policy가 이미 Preferred response에 훨씬 높은 Implicit reward를 부여하고 있다면 이 Weight는 작아진다.
반대로 Rejected response를 더 높게 평가하고 있다면 Weight가 커진다.
이미 잘 구분하는 Preference pair보다 현재 Policy가 순서를 잘못 판단한 Pair를 더 강하게 학습한다.
단순히 모든 Chosen probability를 무작정 높이고 모든 Rejected probability를 무작정 낮추는 것과는 조금 다르다.
RLHF와 DPO의 차이
무엇이 사라졌는가?
기존 PPO 기반 RLHF에서는 다음과 같은 과정이 필요했다.
DPO에서는 다음과 같이 단순해진다.
별도의 Reward Model이 필요하지 않다.
Value Model도 필요하지 않으므로 GAE를 계산하지 않는다.
PPO clipping이나 Advantage normalization도 없다.
학습 Loop 내부에서 현재 Policy로 답변을 계속 Sampling하고 Reward Model로 평가하는 Online rollout 과정도 필요하지 않다.
미리 수집된 Preference pair를 이용해 일반적인 Offline training을 수행할 수 있다.
실제 구현 관점에서는 다음 정보만 있으면 된다.
- Prompt
- Preferred response
- Rejected response
- Policy의 Log probability
- Reference Model의 Log probability
Reference Model은 학습하지 않으므로 Gradient가 필요하지 않다. Dataset에 대한 Reference Log probability를 미리 계산해둘 수도 있다.
이러한 차이 때문에 DPO는 PPO 기반 RLHF보다 구현이 단순하고, 일반적인 Supervised Fine-tuning Pipeline에 가깝게 학습할 수 있다.
무엇이 사라지지 않았는가?
DPO라는 이름 때문에 Human Feedback까지 필요 없어졌다고 생각할 수 있지만, 그렇지는 않다.
DPO에도 다음과 같은 Preference pair가 필요하다.
누군가는 어떤 답변이 더 좋은지 결정해야 한다.
그 누군가는 사람이 될 수도 있고, 강한 LLM Judge가 될 수도 있고, Rule-based verifier가 될 수도 있다. AI가 Preference label을 제공하면 RLAIF에 가까운 형태가 된다.
DPO가 없앤 것은 Feedback 자체가 아니다.
Feedback으로부터 별도의 Reward Model을 학습하고, 그 Reward Model을 다시 강화학습으로 최적화하는 중간 과정을 없앤 것이다.
이를 간단하게 비교하면 다음과 같다.
기존 RLHF:
DPO:
사람의 취향이 공짜로 생긴 것은 아니고, 취향을 Policy에 전달하는 경로가 짧아진 것이다.
DPO는 강화학습인가?
DPO는 강화학습 Objective에서 유도되었지만, 실제 학습 과정에서는 일반적인 의미의 Reinforcement Learning algorithm을 사용하지 않는다.
환경과 상호작용하면서 새로운 Trajectory를 수집하지 않고, Reward Model이 출력한 Scalar reward를 이용해 Policy Gradient를 계산하지도 않는다.
고정된 Preference dataset에서 Binary classification 형태의 Loss를 최소화한다.
DPO 논문에서는 이를 RL-free algorithm으로 설명한다.
다만 DPO가 완전히 별개의 목표를 갑자기 만들어낸 것은 아니다.
기존 RLHF에서 사용하던 다음 Objective의 Optimal policy를 분석하고,
Reward와 Policy 사이의 관계를 Closed-form으로 정리한 뒤 Preference Loss를 Policy에 직접 대입한 것이다.
그래서 다음 두 문장은 동시에 성립한다.
- DPO 학습 자체는 PPO와 같은 강화학습 Loop를 사용하지 않는다.
- DPO Loss는 KL-regularized RLHF Objective와 Bradley-Terry Preference Model에서 유도된다.
개인적으로는 DPO를 “강화학습을 하지 않는 강화학습 Objective의 풀이법” 정도로 이해하면 편한 것 같다. 표현이 조금 이상하지만 실제 구조가 그렇다.
DPO의 장점과 한계
학습이 단순해졌다
DPO의 가장 큰 장점은 역시 단순함이다.
PPO 기반 RLHF에서는 Policy, Reference, Reward, Value Model 사이의 상호작용을 관리해야 한다. 답변 Sampling과 Reward 계산도 학습 Loop 내부에서 수행해야 한다.
반면 DPO는 Preference pair의 Log probability를 계산하고 하나의 Loss를 최소화하면 된다.
일반적인 Language Model Fine-tuning 경험이 있다면 DPO 구현도 비교적 쉽게 이해할 수 있다.
Reward Model과 Value Model을 별도로 학습하고 저장할 필요가 없으므로 전체 Pipeline의 관리 부담도 줄어든다.
여기까지만 보면 DPO가 RLHF를 완전히 대체하는 상위호환 방법처럼 보이지만, 항상 그런 것은 아니다.
Offline Preference Dataset에 묶인다
기본적인 DPO는 미리 수집한 고정된 Preference dataset을 사용한다.
학습 중 Policy가 변화하더라도 새 Policy가 생성하는 답변에 대해 새로운 Feedback을 자동으로 받지는 않는다.
예를 들어 초기 SFT model이 생성한 답변으로 Preference dataset을 만들었다고 하자.
DPO 학습이 진행되면 Policy의 답변 분포가 바뀐다. 그런데 Dataset에는 여전히 초기 Model이 생성한 답변만 존재한다.
Policy가 학습 과정에서 새롭게 생성하게 된 이상한 답변이나, Dataset에 존재하지 않던 좋은 답변에 대해서는 직접적인 Preference signal이 없다.
반면 Online RLHF에서는 현재 Policy가 생성한 답변을 Reward Model로 계속 평가할 수 있다.
Reward Model이 충분히 일반화한다는 가정이 필요하지만, 적어도 현재 Policy의 Output distribution에서 새로운 Sample을 평가할 수 있다.
쉽게 말하면 다음과 같다.
- DPO는 기존에 채점해둔 답안지를 반복해서 공부한다.
- Online RLHF는 새로운 문제를 풀 때마다 Reward Model에게 채점을 받는다.
기존 답안지의 품질이 충분히 좋다면 DPO가 훨씬 효율적이다. 하지만 Policy가 Dataset 밖으로 크게 이동하거나 새로운 행동을 탐색해야 한다면 Online 방식이 유리할 수 있다.
Preference Label의 품질에 민감하다
DPO는 Preferred와 Rejected의 차이를 직접 Policy에 반영한다.
Preference label이 잘못되었거나, 두 답변의 품질 차이가 거의 없는데 억지로 Winner와 Loser를 정한 경우에도 해당 관계를 학습하게 된다.
사람의 Preference는 항상 일관되지 않는다.
어떤 사람은 짧고 직접적인 답변을 좋아하고, 어떤 사람은 길고 친절한 답변을 좋아한다. 동일한 사람도 컨디션에 따라 판단이 달라질 수 있다.
Bradley-Terry Model은 각 답변에 잠재적인 Scalar reward가 존재하고, 두 Reward의 차이로 Preference probability가 결정된다고 가정한다.
하지만 실제 사람의 선호가 항상 하나의 Scalar 값으로 깔끔하게 정렬된다고 보기는 어렵다.
A가 B보다 좋고, B가 C보다 좋은데, 특정 문맥에서는 다시 C가 A보다 좋을 수도 있다. 사람 마음이 원래 그렇게 일관적이지 않다.
DPO는 이러한 Preference model의 가정과 Dataset의 품질을 그대로 물려받는다.
Reward Model이 없어진다고 Preference modeling의 어려움까지 사라지는 것은 아니다.
Reward Model을 재사용할 수 없다
기존 RLHF에서 Reward Model은 별도의 평가 모델이다.
한 번 학습한 Reward Model을 여러 Policy의 비교, Rejection sampling, Dataset filtering 또는 새로운 Response 평가에 활용할 수 있다.
반면 DPO에서는 Reward가 Policy와 Reference Model의 Log probability ratio에 암묵적으로 포함된다.
이 Implicit reward는 현재 Policy와 Reference의 관계에 종속된다.
별도로 분리된 일반적인 Reward Model처럼 다른 Policy의 Output을 독립적으로 채점하는 용도로 사용하기는 어렵다.
최종 목적이 단일 Policy를 Preference dataset에 맞게 Fine-tuning하는 것이라면 DPO가 편리하지만, Reward Model 자체를 여러 과정에서 활용해야 한다면 기존 RLHF 구조가 더 적합할 수 있다.
Preference를 직접 최적화한다고 항상 안전한 것은 아니다
DPO는 Preferred response와 Rejected response 사이의 상대적인 Margin을 높인다.
그러나 상대적인 Margin이 높아졌다고 해서 Preferred response의 절대적인 Likelihood가 반드시 항상 증가하는 것은 아니다.
예를 들어 Preferred response의 Probability가 조금 감소하더라도 Rejected response의 Probability가 훨씬 더 크게 감소하면 두 답변 사이의 상대적인 Margin은 커질 수 있다.
DPO의 실제 목적은 Chosen response를 무조건 암기하는 것이 아니라, Reference model과 비교했을 때 Chosen과 Rejected 사이의 선호도 차이를 올바른 방향으로 만드는 것이다.
이 특성은 DPO의 장점이기도 하지만, Dataset 구성이나 Hyperparameter가 부적절하면 예상과 다른 Probability 변화가 나타날 수 있다는 뜻이기도 하다.
Loss가 단순해져도 Dataset 분석과 학습 결과 검증은 그대로 남는다.
다시 짚어보기
RLHF의 기본 아이디어는 사람의 선호를 Reward로 바꾸고, 높은 Reward를 얻는 답변을 생성하도록 Policy를 강화학습하는 것이다.
일반적인 PPO 기반 RLHF는 다음 순서로 진행된다.
DPO는 Reward Model과 Optimal policy 사이의 관계를 이용해 이 과정을 다음과 같이 줄인다.
DPO에서 Reward는 사라진 것이 아니라 다음 Log probability ratio로 Policy 내부에 암묵적으로 표현된다.
그리고 사람이 선택한 답변의 Implicit reward가 선택하지 않은 답변보다 높아지도록 학습한다.
DPO가 바꾼 것은 Human Feedback의 존재 여부가 아니다.
사람의 선호를 먼저 Reward Model에 학습하고 다시 PPO로 Policy에 전달하던 간접적인 과정을, Preference pair에서 Policy로 바로 연결한 것이다.
개인적으로 DPO를 가장 간단하게 요약하면 다음 문장이 될 것 같다.
사람의 취향을 점수로 번역한 뒤 다시 모델에게 가르치지 말고, 어떤 답변을 더 좋아했는지를 모델에게 바로 보여주자.
물론 바로 보여준다고 해서 모델이 사람 마음을 완벽하게 이해하는 것은 아니다. 사람도 사람 마음을 잘 모른다.
다만 적어도 모델 하나를 학습하기 위해 Reward Model과 Value Model을 추가로 데려오고, 답변을 계속 생성하면서 PPO를 돌려야 했던 복잡한 과정은 상당 부분 줄어들었다.
DPO의 가장 큰 의미는 새로운 Preference signal을 발견했다는 데 있지 않다.
기존 RLHF가 풀고 있던 문제를 다시 바라보고, Reward Model과 Policy를 별개의 단계로 학습할 필요가 없다는 사실을 수식적으로 정리했다는 점에 있다.