---
title: "DPO: 좋은 답을 고르는 일에서 모델 학습까지, 보상 모델 없이 가기"
author: "Dne Cna"
published_at: "2026-10-05T22:00:01.262Z"
updated_at: "2026-09-30T08:13:44.778Z"
tags: ["ai","머신러닝","논문리딩","dpo"]
canonical_url: "https://ariser.io/@writer_8706b598dfee/dpo-%EC%A2%8B%EC%9D%80-%EB%8B%B5%EC%9D%84-%EA%B3%A0%EB%A5%B4%EB%8A%94-%EC%9D%BC%EC%97%90%EC%84%9C-%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5%EA%B9%8C%EC%A7%80-%EB%B3%B4%EC%83%81-%EB%AA%A8%EB%8D%B8-%EC%97%86%EC%9D%B4-%EA%B0%80%EA%B8%B0"
ai_assisted: false
---

# DPO: 좋은 답을 고르는 일에서 모델 학습까지, 보상 모델 없이 가기

[원문](https://ariser.io/@writer_8706b598dfee/dpo-%EC%A2%8B%EC%9D%80-%EB%8B%B5%EC%9D%84-%EA%B3%A0%EB%A5%B4%EB%8A%94-%EC%9D%BC%EC%97%90%EC%84%9C-%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5%EA%B9%8C%EC%A7%80-%EB%B3%B4%EC%83%81-%EB%AA%A8%EB%8D%B8-%EC%97%86%EC%9D%B4-%EA%B0%80%EA%B8%B0)

모델의 두 답변을 나란히 놓고 어느 쪽이 더 좋은지 고르는 일은 비교적 쉽다. 그런데 그 선택을 학습에 쓰려는 순간, 보상 모델을 만들고 강화학습으로 언어 모델을 갱신하는 긴 과정이 나타난다. DPO를 처음 읽을 때 느끼는 매력은 이 과정이 갑자기 짧아진다는 점이다. 선호 쌍을 사용한 하나의 손실로 모델을 학습한다. 하지만 단순한 구현 뒤에는 보상과 정책의 관계를 다시 쓰는 중요한 가정이 있다.

## 좋은 답의 절대 점수를 몰라도 된다

선호 데이터는 보통 프롬프트 x와 선택된 답 y+, 선택되지 않은 답 y−로 구성된다. '이 답은 87점'보다 '이 답이 저 답보다 낫다'는 평가가 편할 때 이런 형식이 자연스럽다. 기존의 대표적인 RLHF 구성은 이 쌍들로 보상 함수를 학습하고, 언어 모델이 높은 보상을 얻도록 최적화한다.

이때 원래 모델에서 너무 멀리 벗어나지 않도록 기준 정책과의 KL 발산에 페널티를 준다. 보상만 높이려 하면 보상 모델의 빈틈을 이용하거나 출력의 다양성이 줄어들 수 있기 때문이다. DPO는 이 KL 규제 목적에서 최적 정책과 보상의 관계를 이용한다. 보상을 정책과 기준 정책의 로그 확률 비율로 표현해 선호 손실에 대입한다. [DPO 원문](https://arxiv.org/abs/2305.18290)

같은 프롬프트의 두 답을 비교할 때 프롬프트에만 의존하는 정규화 항이 상쇄된다는 점이 중요하다. 덕분에 별도 보상 네트워크를 먼저 학습하지 않고, 언어 모델의 확률을 직접 이용한 선호 학습이 가능해진다. 논문 제목의 '모델이 사실 보상 모델'이라는 표현은 이 암묵적 보상 표현을 가리킨다. 모델 안에서 선호의 진실을 자동으로 발견한다는 뜻은 아니다.

## 기준 모델보다 얼마나 더 좋아하게 되었나

손실의 중심을 짧게 쓰면 다음과 같다. 먼저 답 y에 대해 `s(y) = log π(y|x) − log π_ref(y|x)`를 계산한다. 선호 쌍의 차이 `s(y+) − s(y−)`에 β를 곱하고, 그 값을 로지스틱 분류 손실에 넣는다. 선택된 답의 상대적인 변화가 선택되지 않은 답보다 크도록 학습하는 구조다.

여기서 비교하는 것은 현재 확률만이 아니다. 기준 모델이 원래 부여한 확률에서 얼마나 달라졌는지를 함께 본다. 답변의 로그 확률은 보통 답 토큰들의 조건부 로그 확률을 더해서 구한다. 프롬프트 부분을 답변 점수에 섞거나 패딩을 포함하면 의도한 손실과 달라질 수 있다. 공식 구현에서 데이터 형식과 로그 확률 계산을 살펴볼 만하다. [저자들의 참조 구현](https://github.com/eric-mitchell/direct-preference-optimization)

아주 단순한 예를 직접 만들어 보자. 기준 모델에서 좋은 답과 나쁜 답의 로그 확률이 각각 −10, −8이고, 현재 모델에서는 −9, −9라고 하자. 좋은 답의 변화는 +1, 나쁜 답의 변화는 −1이다. 두 답의 현재 로그 확률이 같아도 선호 방향의 상대 변화 차이는 2다. DPO가 기준 모델을 비교에 남겨 두는 이유를 볼 수 있다.

또 다른 경우 현재 모델의 값이 −11, −12라면 두 답의 절대 확률은 모두 낮아졌다. 그래도 기준 대비 변화는 −1, −4이므로 좋은 답이 상대적으로 덜 낮아진 방향이다. 선호 차이를 개선하는 것과 선택된 답의 확률을 매 순간 반드시 올리는 것은 동일한 조건이 아니다. 실제 신경망 갱신에서는 다른 답들과의 확률 관계도 함께 변한다.

## 지도학습처럼 돌아가지만, 정답 복사와는 다르다

일반적인 지도 미세조정은 좋은 답을 더 잘 재현하도록 학습한다. DPO는 좋은 답과 나쁜 답의 비교 신호를 함께 사용한다. '무엇을 말할 것인가'에 더해 '이 문맥에서 어느 응답을 선호할 것인가'가 들어간다.

나는 이 차이를 문장 교정 사례로 이해하고 싶다. 선택된 답은 근거를 제시하면서도 모르는 부분을 인정하고, 선택되지 않은 답은 매끄럽지만 사실을 지어냈다고 하자. 두 답을 함께 비교하면 피해야 할 행동을 더 직접적으로 표시할 수 있다. 그러나 학습기가 두 답의 차이 중 어떤 특징을 실제로 잡았는지는 별개의 문제다. 선택된 답이 항상 더 길었다면 정확성보다 길이를 선호하는 방향을 배울 수도 있다.

그래서 손실이 간단해질수록 데이터의 의미는 오히려 더 중요해 보인다. 선호 라벨 하나에는 평가자의 기준이 압축되어 있다. 정확성, 친절함, 짧은 설명, 형식 준수 중 무엇 때문에 선택했는지 일관되지 않으면 모델이 배우는 목표도 흐려진다. 이 부분은 논문의 수학적 보장보다 실제 데이터 설계에 관한 내 해석이다.

β도 그냥 사소한 스케일로 취급하고 싶지 않다. 유도에서는 기준 정책으로부터의 이탈을 조절하는 KL 규제와 연결되고, 손실에서는 선호 차이의 크기를 조절한다. 값 하나를 바꾸면 결과가 어떤 방향으로 달라지는지는 데이터와 학습 설정에서 평가해야 한다. 큰 값이나 작은 값 하나를 모든 모델에 적용하는 규칙으로 일반화하기 어렵다.

## 무엇이 줄어들고 무엇이 남는가

DPO의 오프라인 학습은 주어진 선호 쌍을 사용하므로, 원문의 방식에서는 학습 중 새 답을 계속 생성해 보상을 계산하는 강화학습 루프가 필요하지 않다. 별도 보상 모델도 학습하지 않는다. 이는 시스템 구성과 디버깅을 단순하게 만든다. 다만 선호 데이터를 만들 때의 생성과 평가 비용은 별도로 남고, 기준 모델의 확률 계산에도 비용이 든다.

더 근본적으로, 선호 데이터에 없는 행동을 어떻게 평가할지라는 문제는 없어지지 않는다. 모델이 학습 중 새로운 분포로 이동했을 때 오프라인 쌍이 얼마나 대표적인지 생각해야 한다. 'RL 루프가 없다'는 사실을 '분포 밖 일반화 문제가 없다'는 말로 바꿀 수는 없다.

보상 표현을 바꾼 유도에는 Bradley–Terry와 같은 선호 모델, KL 규제 목적 등의 조건이 들어 있다. 유한한 데이터와 유한한 신경망을 몇 번 업데이트하는 실제 학습이 이상적인 최적 해를 그대로 얻는다고 보장하는 것은 아니다. 목적 함수의 관계가 깔끔하다는 것과 현실의 데이터가 사람의 선호를 완벽하게 나타낸다는 것은 분리해 읽어야 한다.

## 결과를 믿는 범위

원문은 감정 조절, 요약, 대화 등의 과제에서 PPO 기반 방식과 비교해 DPO의 경쟁력 있는 결과를 보고한다. 당시 실험은 최대 6B 규모의 모델을 포함한다. 저자들은 분포 밖 일반화, 과도한 최적화, 더 큰 모델로의 확장, 자동 평가의 프롬프트 의존성 등을 남은 질문으로 적는다. [원문 평가와 한계](https://arxiv.org/html/2305.18290)

내가 업무용 모델에 적용한다면 선호 평가를 세분화한 검증셋을 만들겠다. 길이만 늘었는지, 사실 정확도가 올랐는지, 지시를 따르는지, 모르는 질문에서 대응이 달라졌는지 나누어 확인한다. 일반 질문과 학습 데이터에 가까운 질문을 함께 두면 선호쌍을 외운 효과와 더 넓은 행동 변화를 구별하는 데 도움이 될 것이다.

DPO의 좋은 점은 선호 학습이 사라진 문제가 아니라 다루기 쉬운 문제가 되었다는 데 있다. 복잡한 학습 루프를 줄인 만큼 우리는 더 직접적으로 물을 수 있다. 사람들이 고른 두 답 사이에서, 모델이 배워야 할 차이를 정말 잘 기록했는가.

읽은 논문: Rafael Rafailov 외, *Direct Preference Optimization: Your Language Model is Secretly a Reward Model*, NeurIPS 2023. [논문](https://arxiv.org/abs/2305.18290) · [공식 구현](https://github.com/eric-mitchell/direct-preference-optimization)

