PPO 뒤에 남은 질문
지난 장에서 우리는 PPO가 언어 모델 정렬에서 어떤 역할을 하는지 살펴보았다. PPO는 보상 모델이 "이 답변은 좋다"라고 점수를 주면, 언어 모델이 그 점수를 더 많이 받는 방향으로 정책을 조금씩 바꾸는 방법이었다. 동시에 기준 모델에서 너무 멀어지지 않도록 KL 패널티라는 안전벨트를 채웠다.
하지만 PPO 기반 RLHF에는 피할 수 없는 복잡함이 있었다. 먼저 같은 프롬프트에 대해 여러 답변을 만들고, 사람이 더 나은 답변을 고른다. 그 선호 데이터를 이용해 별도의 보상 모델을 학습한다. 그다음 언어 모델이 새 답변을 생성하고, 보상 모델이 점수를 매기고, PPO가 정책을 업데이트한다.
말로만 들어도 길다. 실제로는 더 복잡하다. 학습 중인 정책 모델, 기준 모델, 보상 모델, 가치 함수 모델이 얽힌다. 보상 모델이 편향될 수도 있고, PPO의 하이퍼파라미터가 조금만 어긋나도 학습이 흔들릴 수 있다. 그래서 자연스러운 질문이 등장한다.
"사람이 이미 어떤 답변이 더 좋은지 골라 주었는데, 꼭 보상 모델을 따로 만들고 강화학습 루프까지 돌려야 할까?"
DPO, 즉 Direct Preference Optimization은 바로 이 질문에서 출발한다. 이름 그대로 선호를 직접 최적화하자는 접근이다. DPO 논문은 기존 RLHF가 보상 모델을 학습한 뒤 강화학습으로 언어 모델을 조정하는 복잡한 절차인 반면, DPO는 선호쌍 데이터만으로 언어 모델을 직접 미세조정할 수 있음을 보였다.1

선호쌍으로 바로 배우기
DPO가 사용하는 데이터는 매우 단순한 모양을 가진다. 하나의 프롬프트가 있고, 그 프롬프트에 대한 두 개의 답변이 있다. 사람 또는 평가 시스템은 둘 중 더 나은 답변을 고른다.
{
"prompt": "초보자에게 강화학습을 설명해줘.",
"chosen": "강화학습은 에이전트가 행동하고 보상을 받으며 더 좋은 전략을 배우는 방법입니다.",
"rejected": "강화학습은 그냥 AI가 알아서 똑똑해지는 기술입니다."
}여기서 chosen은 선택된 답변이고, rejected는 거부된 답변이다. DPO의 목표는 직관적으로 말하면 아주 간단하다. 같은 프롬프트가 들어왔을 때 모델이 chosen 답변을 만들 확률은 높이고, rejected 답변을 만들 확률은 낮춘다.
그런데 DPO는 단순히 "좋은 답변의 확률을 무조건 올려라"에서 끝나지 않는다. 중요한 비교 대상이 하나 더 있다. 바로 기준 모델(reference model)이다. 기준 모델은 보통 SFT까지 마친 모델이다. 다시 말해, 이미 어느 정도 지시를 따르고 자연스럽게 말할 줄 아는 모델이다.
DPO는 현재 학습 중인 모델이 기준 모델에 비해 선택 답변을 얼마나 더 선호하게 되었는지, 그리고 거부 답변을 얼마나 덜 선호하게 되었는지를 비교한다. 핵심은 "절대 확률"이 아니라 "기준 모델 대비 상대적 변화"다.
예를 들어 기준 모델도 선택 답변을 이미 꽤 좋아하고 있었다면, 현재 모델이 그 답변을 조금 더 좋아하게 만드는 정도면 충분할 수 있다. 반대로 기준 모델이 거부 답변을 이상하게 높게 보고 있었다면, 현재 모델은 그 답변의 확률을 낮추는 방향으로 학습해야 한다. DPO는 이 상대적 조정을 하나의 손실 함수 안에 넣는다.
보상 모델이 사라진 것이 아니라 숨어 있다
DPO를 처음 들으면 이렇게 오해하기 쉽다.
"DPO는 보상을 쓰지 않는 방법이구나."
겉으로는 맞는 말이다. DPO는 PPO 기반 RLHF처럼 별도의 보상 모델을 학습하지 않는다. 학습 중에 보상 모델에게 새 답변 점수를 묻지도 않는다. 하지만 더 정확히 말하면, 보상이 완전히 사라진 것이 아니라 언어 모델의 확률 안으로 숨어 들어간 것이다.
RLHF의 목적은 대략 다음과 같이 볼 수 있다.
[ text{좋은 답변의 보상은 크게 만들되, 기준 모델에서 너무 멀어지지는 말자.} ]
수식으로 쓰면 보상을 최대화하면서 현재 정책 (pi_theta)가 기준 정책 (pi_{ref})에서 지나치게 벗어나지 않도록 KL 제약을 둔다. 이 문제를 풀면 최적 정책은 기준 모델의 확률에 보상의 영향을 곱한 형태로 나타난다. DPO의 핵심 통찰은 이 관계를 거꾸로 푸는 데 있다.
즉, 어떤 답변 (y)에 대한 보상을 다음처럼 생각할 수 있다.
[ r(x, y) approx beta log frac{pi_theta(y|x)}{pi_{ref}(y|x)} ]
여기서 (x)는 프롬프트, (y)는 답변이다. (pi_theta(y|x))는 현재 모델이 그 답변을 낼 확률이고, (pi_{ref}(y|x))는 기준 모델이 그 답변을 낼 확률이다.
이 식을 아주 쉽게 풀어 말하면 이렇다.
현재 모델이 기준 모델보다 어떤 답변을 훨씬 더 만들고 싶어 한다면, 그 답변은 현재 모델 안에서 높은 암묵적 보상을 가진 것처럼 해석할 수 있다. 반대로 현재 모델이 기준 모델보다 어떤 답변을 덜 만들고 싶어 한다면, 그 답변은 낮은 암묵적 보상을 가진 것처럼 볼 수 있다.
그래서 DPO 논문의 부제는 "당신의 언어 모델은 사실 몰래 보상 모델이다"에 가깝다. 별도의 점수 예측기를 만들지 않아도, 현재 모델과 기준 모델의 확률비가 보상처럼 작동한다는 뜻이다.1
Bradley-Terry 모델을 다시 만나다
이제 사람의 선호를 어떻게 확률로 표현할지 생각해 보자. RLHF에서 보상 모델을 학습할 때도 우리는 Bradley-Terry 모델을 사용했다. 이름은 낯설지만 아이디어는 간단하다.
두 답변이 있을 때, 사람이 첫 번째 답변을 더 선호할 확률은 두 답변의 보상 차이에 따라 정해진다. 선택 답변의 보상이 거부 답변보다 훨씬 높으면 선택될 확률이 1에 가까워진다. 둘의 보상이 비슷하면 거의 동전 던지기처럼 0.5에 가까워진다.
DPO는 이 자리에 명시적 보상 모델 대신 방금 본 확률비 기반의 암묵적 보상을 넣는다. 그러면 선택 답변 (y_w)와 거부 답변 (y_l) 사이의 비교는 다음 직관으로 바뀐다.
[ log frac{pi_theta(y_w|x)}{pi_{ref}(y_w|x)}
log frac{pi_theta(y_l|x)}{pi_{ref}(y_l|x)} ]
앞부분은 "현재 모델이 기준 모델보다 선택 답변을 얼마나 더 밀어 주는가"를 뜻한다. 뒷부분은 "현재 모델이 기준 모델보다 거부 답변을 얼마나 더 밀어 주는가"를 뜻한다. DPO는 앞부분이 뒷부분보다 커지도록 학습한다.
여기서 중요한 점이 하나 있다. 원래 최적 정책을 유도할 때는 모든 가능한 답변에 대한 정규화 상수 (Z(x))가 등장한다. 언어 모델에서 "모든 가능한 답변"을 다 더하는 것은 사실상 불가능하다. 하지만 Bradley-Terry 모델은 두 답변의 보상 차이만 보기 때문에, 프롬프트 (x)에만 의존하는 정규화 항은 서로 빼는 순간 사라진다. DPO가 계산 가능한 손실 함수로 떨어지는 이유가 바로 여기에 있다.
수학의 마술처럼 보이지만, 직관은 단순하다. 사람은 보통 "이 답변의 절대 점수는 83점"이라고 말하지 않는다. "A가 B보다 낫다"라고 비교한다. 비교만 필요하다면, 두 답변에 공통으로 붙어 있는 기준점은 없어져도 된다.
DPO 손실 함수의 직관
DPO 손실 함수는 보통 다음 형태로 표현된다.
[ mathcal{L}{DPO} = -mathbb{E}left[log sigmaleft(beta left( log frac{pi_theta(y_w|x)}{pi{ref}(y_w|x)}
log frac{pi_theta(y_l|x)}{pi_{ref}(y_l|x)} right)right)right] ]
처음 보면 복잡하지만, 세 덩어리로 나누면 어렵지 않다.
첫째, 선택 답변과 거부 답변의 로그확률을 계산한다. 언어 모델에서 어떤 문장의 확률은 각 토큰을 순서대로 생성할 확률의 곱이고, 실제 학습에서는 로그확률의 합으로 다룬다.
둘째, 현재 모델의 로그확률에서 기준 모델의 로그확률을 뺀다. 이것은 "기준 모델 대비 얼마나 더 선호하는가"를 나타낸다.
셋째, 선택 답변의 상대 점수가 거부 답변의 상대 점수보다 커지도록 로지스틱 손실을 적용한다. 시그모이드 (sigma)는 점수 차이를 0과 1 사이의 확률처럼 바꿔 주는 함수다.
결국 DPO는 이렇게 말하는 셈이다.
"기준 모델의 언어 능력을 크게 망가뜨리지 않는 선에서, 사람이 고른 답변은 더 가능하게 만들고 사람이 덜 선호한 답변은 덜 가능하게 만들어라."
이 문장이 DPO의 거의 전부다.
기준 모델과 β라는 안전장치
DPO에서 기준 모델은 매우 중요하다. 기준 모델이 없다면 모델은 선호 데이터에 지나치게 끌려갈 수 있다. 예를 들어 선호 데이터에 긴 답변이 자주 선택되어 있다면, 모델은 "길면 좋은 답변"이라고 과하게 배울 수 있다. 기준 모델은 이런 과격한 변화에 제동을 건다.
기준 모델은 일종의 출발점이자 앵커다. 현재 모델이 선호 데이터를 따라 조금씩 움직이더라도, 원래 가지고 있던 언어 능력과 상식적 분포에서 완전히 벗어나지 않게 잡아 준다. PPO에서 KL 패널티가 하던 역할이 DPO 안에서는 기준 모델과 확률비 형태로 녹아 들어간다.
(beta) 역시 중요한 조절 장치다. (beta)는 선호 신호를 얼마나 강하게 반영할지 조절한다. 값이 너무 작거나 크면 구현마다 해석이 조금 달라질 수 있지만, 큰 그림은 같다. (beta)는 인간 선호를 따르는 힘과 기준 모델 분포를 보존하는 힘 사이의 균형을 정한다.
선호를 너무 강하게 밀면 모델은 데이터의 우연한 편향까지 배울 수 있다. 반대로 너무 약하게 밀면 모델은 거의 변하지 않는다. 좋은 DPO 학습은 "선호를 배우되, 모델의 기본 체력은 잃지 않는 지점"을 찾는 과정이다.
게임으로 비유해 보자. 기준 모델은 캐릭터의 기본 능력치다. DPO는 유저가 선호하는 플레이 스타일에 맞춰 스킬 포인트를 재분배한다. 그런데 공격력만 끝없이 올리면 방어력과 이동성이 무너진다. (beta)는 스킬 포인트를 얼마나 과감하게 옮길지 정하는 조절 손잡이다.
PPO 기반 RLHF와 DPO 비교하기
PPO 기반 RLHF와 DPO는 둘 다 인간 선호를 모델 행동에 반영하려는 방법이다. 그러나 작업 방식은 꽤 다르다.
PPO 기반 RLHF에서는 먼저 보상 모델을 만든다. 그 보상 모델이 현재 정책이 생성한 새 답변에 점수를 준다. 정책은 그 점수를 높이는 방향으로 업데이트된다. 이 과정에서는 샘플링, 보상 계산, 어드밴티지 추정, 정책 업데이트, KL 제약 같은 강화학습 요소가 함께 움직인다.
DPO에서는 선호쌍 데이터가 곧 학습 신호다. 선택 답변과 거부 답변을 비교하여, 선택 답변 쪽의 상대 로그확률이 커지도록 모델을 직접 학습한다. 별도의 보상 모델도, 가치 함수도, PPO 루프도 필요하지 않다.
| 구분 | PPO 기반 RLHF | DPO |
|---|---|---|
| 핵심 데이터 | 선호 데이터와 프롬프트 샘플 | 선호쌍 데이터 |
| 보상 모델 | 별도로 학습 | 명시적으로 만들지 않음 |
| 학습 방식 | 보상 모델 점수를 이용한 강화학습 | 선호쌍에 대한 직접 최적화 |
| 주요 장점 | 온라인 탐험과 복잡한 보상 설계에 유리 | 구현이 단순하고 계산 비용이 낮음 |
| 주요 부담 | 불안정성, 많은 모델, 하이퍼파라미터 | 데이터 품질 의존, 오프라인 한계 |
이 차이 때문에 DPO는 실무에서 빠르게 주목받았다. 특히 자원이 제한된 팀에게 매력적이다. 보상 모델을 따로 만들고 PPO를 안정화하는 일은 상당한 엔지니어링을 요구한다. 반면 DPO는 기존 지도학습 파이프라인에 훨씬 가깝다.
실제 제품 환경에서도 선호 최적화의 핵심은 알고리즘만이 아니라 데이터 구성이다. 사용자가 답변을 다시 생성했는지, 답변을 수정했는지, 대화를 이어갔는지 같은 행동 신호는 선호 데이터의 재료가 될 수 있다. 다만 이런 신호는 항상 깨끗하지 않다. 사용자가 재생성을 눌렀다고 해서 반드시 첫 답변이 나빴다는 뜻은 아닐 수 있다. 그래서 어떤 신호를 chosen/rejected 페어로 만들지, 어떤 노이즈를 제거할지가 결과를 크게 좌우한다.2
DPO의 한계: 단순함은 공짜가 아니다
DPO는 강력하고 우아하지만 만능은 아니다. 가장 큰 한계는 고정된 선호 데이터에 크게 의존한다는 점이다. DPO는 보통 오프라인 데이터셋으로 학습한다. 이미 만들어진 프롬프트, 선택 답변, 거부 답변을 보고 배운다. 학습 중에 현재 모델이 새롭게 만들어 낼 이상한 답변을 직접 탐험하고 평가하는 구조는 아니다.
이 점은 강화학습의 관점에서 중요하다. PPO 기반 RLHF는 비용이 크지만, 현재 정책이 실제로 생성하는 답변을 샘플링하고 그 답변에 대해 보상을 계산할 수 있다. 즉, 모델이 변하면 그 모델의 현재 행동을 다시 평가할 수 있다. 반면 DPO는 데이터셋 밖의 행동에 약할 수 있다. 선호 데이터에 없던 유형의 답변, 새로운 도메인, 모델이 학습 중 우연히 발견한 이상한 패턴에는 충분히 대응하지 못할 수 있다.
또 다른 문제는 선호 데이터의 편향이다. 사람이 긴 답변을 더 성의 있어 보인다고 자주 고르면, 모델은 길이를 품질로 오해할 수 있다. 평가자가 특정 말투를 좋아하면, 모델은 그 말투를 과도하게 흉내 낼 수 있다. 선택 답변과 거부 답변의 차이가 애매한 데이터가 많으면 학습 신호가 흐려진다.
최근 연구들은 DPO가 강력한 방법이지만 모든 상황에서 PPO보다 우월하다고 단정하기 어렵다는 점도 지적한다. 특히 잘 튜닝된 PPO는 복잡한 과제나 온라인 피드백 환경에서 여전히 강한 성능을 낼 수 있으며, DPO는 데이터 분포 변화와 OOD 응답에 취약할 수 있다.3
그러므로 DPO를 "PPO를 완전히 대체한 방법"으로 이해하면 곤란하다. 더 정확한 표현은 이렇다.
DPO는 PPO 기반 RLHF가 필요로 하던 보상 모델과 강화학습 루프를 많은 상황에서 단순한 선호 최적화 문제로 바꿔 준 강력한 대안이다. 하지만 온라인 탐험, 복잡한 장기 보상, 검증 가능한 보상, 새로운 행동 발견이 중요한 경우에는 PPO나 GRPO 같은 강화학습 계열 방법이 여전히 필요할 수 있다.
IPO, KTO, 그리고 선호 최적화 가족
DPO 이후에는 다양한 선호 최적화 방법들이 등장했다. 이들은 모두 같은 문제의식에서 출발한다. "사람의 선호를 더 단순하고 안정적으로 모델에 반영할 수 없을까?"
IPO는 DPO가 선택 답변과 거부 답변 사이의 차이를 계속 벌리려는 성향을 완화하려는 방법이다. 인간의 선호는 무한히 강한 신호가 아니다. 어떤 답변이 다른 답변보다 조금 더 나을 뿐인데, 모델이 그 차이를 절대적인 것으로 받아들이면 과신이 생길 수 있다. IPO는 선호 간격에 목표값을 두어, 무작정 차이를 키우기보다 적절한 마진에 맞추려 한다.
KTO는 데이터 형식의 제약을 줄이려는 흐름이다. DPO는 같은 프롬프트에 대해 chosen/rejected 쌍이 필요하다. 하지만 실제 서비스에서는 "이 답변이 좋았다" 또는 "이 답변이 별로였다" 같은 개별 피드백이 더 흔할 수 있다. KTO 계열 접근은 이런 이진 피드백을 선호 학습에 활용하려 한다.
ORPO, SimPO 같은 방법들은 기준 모델 사용 방식이나 SFT와 선호 최적화의 결합 방식을 바꾸며 비용과 복잡도를 더 줄이려 한다. 각각의 방법은 장단점이 다르다. 어떤 방법은 메모리를 줄이고, 어떤 방법은 길이 편향을 줄이고, 어떤 방법은 노이즈에 더 강해지려 한다.
중요한 것은 이름을 모두 외우는 것이 아니다. 흐름을 이해하는 것이다. LLM 정렬은 "보상 모델을 만들고 PPO로 최적화한다"는 하나의 길에서, "선호 데이터를 어떤 손실 함수로 가장 잘 학습할 것인가"라는 넓은 문제로 확장되었다. DPO는 그 전환점에 있는 방법이다.
다시 강화학습의 언어로 돌아오면
이 책의 처음으로 돌아가 보자. 강화학습의 기본 흐름은 상태를 보고, 행동을 선택하고, 보상을 받고, 다음 상태로 이동하며, 장기 보상이 커지는 전략을 배우는 것이었다.
언어 모델에서는 프롬프트와 대화 맥락이 상태에 가깝다. 다음 토큰 또는 전체 답변이 행동이다. 사람의 선호는 보상에 해당한다. PPO 기반 RLHF는 이 구조를 비교적 직접적으로 따른다. 보상 모델을 만들고, 그 보상을 높이는 방향으로 정책을 업데이트한다.
DPO는 조금 다른 길을 택한다. "보상을 명시적으로 만들지 않아도, 선택 답변과 거부 답변의 확률비를 조정하면 같은 방향으로 움직일 수 있다"고 말한다. 강화학습의 언어를 지도학습에 가까운 손실 함수로 번역한 셈이다.
그래서 DPO는 강화학습을 배운 사람에게 특히 흥미롭다. 겉으로는 RL 루프가 사라졌지만, 안쪽에는 여전히 정책, 기준 정책, KL 제약, 보상 차이, 선호 확률이 숨어 있다. DPO를 이해하면 LLM 정렬이 단순한 파인튜닝도 아니고, 전통적인 게임 강화학습도 아닌, 그 사이 어딘가에 있는 새로운 학습 방식임을 보게 된다.
다음 장에서는 이 흐름을 AI 에이전트로 확장한다. 언어 모델이 단순히 답변을 생성하는 것을 넘어 도구를 호출하고, 계획을 세우고, 환경과 상호작용할 때 강화학습의 관점은 다시 더 중요해진다. DPO는 선호를 직접 학습하는 길을 열었지만, 에이전트의 세계에서는 다시 행동, 결과, 피드백, 장기 전략의 문제가 고개를 든다.
참고
1Direct Preference Optimization: Your Language Model is Secretly a Reward Model
2유저와 함께 만드는 LLM — 제타에 Preference Optimization 도입하기
3Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.