직접 선호 최적화 계열(The Direct Preference Optimization Family)

Rafailov et al.(2023)은 RLHF의 최적해(optimum)가 선호 데이터(preference data)에 대한 닫힌 형태(closed form)로 표현된다는 점을 보였습니다. 그래서 명시적인 보상 모델(explicit reward model)을 거치지 않고도 정책(policy)을 직접 최적화할 수 있습니다. 이 통찰이 IPO, KTO, SimPO, ORPO, BPO라는 한 가족(family)을 만들어 냈고, 각 변형은 DPO의 서로 다른 실패 양상(failure mode)을 보완합니다. 2026년 시점에서는 직접 정렬 알고리즘(Direct Alignment Algorithm; DAA)이 PPO보다 더 많은 프런티어(frontier) 사후 학습(post-training) 실행에 사용되고 있습니다. 다만 2강에서 본 과최적화 곡선(over-optimization curve)은 이 가족에도 그대로 적용됩니다. DAA는 굿하트(Goodhart)에서 벗어나지 못하며, 굿하트가 물어뜯는 지점만 옮길 뿐입니다.

유형: Learn 언어: Python (stdlib, six-variant preference-loss comparator) 선수 지식: Phase 18 · 01 (InstructGPT), Phase 18 · 02 (Reward hacking), Phase 10 · 08 (DPO basics) 예상 시간: 약 75분

학습 목표

  • KL 항이 있는 RLHF 목적함수(RLHF-with-KL optimum)에서 DPO의 닫힌 형태를 유도합니다.
  • IPO, KTO, SimPO, ORPO, BPO가 각각 DPO의 어떤 실패 양상(failure mode)을 보완하는지 설명합니다.
  • "암묵적 보상 간극(implicit reward gap)"과 "선호 강도(preference strength)"를 구분하고, IPO의 항등 사상(identity mapping)이 왜 중요한지 설명합니다.
  • Rafailov et al.(NeurIPS 2024)이 명시적 보상 모델(RM)이 없는 DAA에서도 과최적화(over-optimization)가 일어남을 증명한 이유를 설명합니다.

문제

RLHF 목적함수(1강)는 다음과 같습니다.

max_pi E_{x,y~pi} [ r(x, y) ] - beta * KL(pi || pi_ref)

이 식에는 잘 알려진 최적해가 있습니다.

pi*(y|x) = (1/Z(x)) * pi_ref(y|x) * exp(r(x, y) / beta)

그러므로 보상은 최적 정책(optimal policy)과 참조 정책(reference policy)의 비율로 암묵적(implicit)으로 정의됩니다.

r(x, y) = beta * log(pi*(y|x) / pi_ref(y|x)) + beta * log Z(x)

이 식을 브래들리-테리(Bradley-Terry) 선호 가능도에 대입하면, 분할 함수(partition function) Z(x)x에만 의존하므로 상쇄됩니다. 남는 것은 정책 매개변수(policy parameter)만 포함하는 손실 함수(loss)뿐입니다. 별도의 보상 모델이 필요 없습니다. 이것이 바로 DPO입니다.

함정은 있습니다. 이 유도는 최적해가 도달 가능(reachable)하고, 선호 데이터가 학습 분포 안(in-distribution)에 있으며, 참조 정책이 진짜 모드 기준점(true mode anchor) 역할을 한다고 가정합니다. 현실에서는 이 가정 중 어느 것도 정확히 성립하지 않습니다. 가족의 각 구성원은 서로 다른 위반된 가정(violated assumption)을 보완합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.DPO가 별도의 보상 모델 학습을 피할 수 있게 해주는 핵심 통찰은 무엇인가요?

2.BPO가 해결하는 '채택 응답 열화(Degraded Chosen Response)' 문제란 무엇인가요?

0/2 답변 완료

개념

DPO(Rafailov et al., 2023)

L_DPO = -log sigmoid(
  beta * log(pi(y_w | x) / pi_ref(y_w | x))
  - beta * log(pi(y_l | x) / pi_ref(y_l | x))
)

잘못될 수 있는 지점은 다음과 같습니다.

  • 암묵적 보상 간극 beta * (log(pi/pi_ref)_w - log(pi/pi_ref)_l)은 무계(unbounded)입니다. 아주 작은 선호도(preference)도 임의로 큰 간극을 만들 수 있습니다.
  • 손실은 채택된 응답(chosen)의 로그 확률과 거절된 응답(rejected)의 로그 확률을 서로 반대 방향으로 밀어냅니다. 거절된 응답이 더 빠르게 떨어지기만 하면, 채택된 응답의 절대 로그 확률이 함께 내려가도 손실은 줄어듭니다. 이것이 채택 응답 열화(Degraded Chosen Response) 현상입니다.
  • 학습 분포를 벗어난(out-of-distribution) 선호 쌍(예: 드문 응답 대 드문 응답)은 임의의 암묵적 보상을 만들어 냅니다.

IPO(Azar et al., 2024)

항등 선호 최적화(Identity Preference Optimization)는 로그-시그모이드(log-sigmoid)를 선호 확률(preference probability)에 대한 항등 사상으로 바꿉니다. 손실은 유계 목표(bounded target)에 대한 제곱 오차(squared-error)가 됩니다.

L_IPO = (log(pi(y_w | x) / pi_ref(y_w | x)) - log(pi(y_l | x) / pi_ref(y_l | x)) - 1/(2 beta))^2

마진(margin)은 1/(2 beta)로 유계입니다. 선호 강도와 암묵적 보상 간극은 비례(proportional) 관계를 유지합니다. 폭주(blow-up)가 없습니다.

KTO(Ethayarajh et al., 2024)

카네만-트버스키 최적화(Kahneman-Tversky Optimization)는 쌍 구조(pairwise structure)를 완전히 버립니다. 하나의 라벨된 출력과 "바람직함(desirable)" 또는 "바람직하지 않음(undesirable)"이라는 이진 신호만으로, 전망 이론(prospect theory)에 기반한 효용 함수(utility)로 사상(mapping)합니다.

v(x, y) = sigma(beta * log(pi(y|x) / pi_ref(y|x)) - z_ref)

이득과 손실에 서로 다른 가중치를 둡니다(손실 회피, loss aversion). 장점은 쌍을 이루지 않은 데이터(unpaired data)를 활용할 수 있다는 점입니다. 쌍이 없는 데이터는 일반적으로 훨씬 풍부합니다.

SimPO(Meng et al., 2024)

단순 선호 최적화(Simple Preference Optimization)는 학습 신호를 생성(generation)과 같은 방식으로 정렬합니다. 참조 정책을 완전히 없애고, 로그 가능도를 길이(length)로 정규화합니다.

L_SimPO = -log sigmoid(
  (beta / |y_w|) * log pi(y_w | x)
  - (beta / |y_l|) * log pi(y_l | x)
  - gamma
)

여기에 안정화를 위한 마진 gamma를 둡니다. 길이 정규화(length normalization)는 DPO의 길이 편향(length-bias) 실패 양상을 악용하려는 유인을 제거합니다. 즉 채택 응답 y_w가 길수록 구조적으로 더 큰 로그 확률 간극이 생기는 문제를 막아 줍니다.

ORPO(Hong et al., 2024)

오즈비 선호 최적화(Odds-Ratio Preference Optimization)는 표준 SFT 음의 로그 가능도(negative log-likelihood; NLL)에 선호 항을 추가합니다.

L_ORPO = L_NLL(y_w) + lambda * L_OR
L_OR = -log sigmoid(log(odds(y_w) / odds(y_l)))

참조 정책이 없습니다. SFT 항이 정규화 항(regularizer) 역할을 합니다. 기반 모델(base model)에서 정렬된 모델(aligned model)까지 단일 단계(single stage)로 학습합니다. 별도의 SFT 체크포인트(checkpoint)가 필요 없습니다.

BPO(ICLR 2026 submission, OpenReview id=b97EwMUWu7)

채택 응답 열화(Degraded Chosen Responses) 문제를 명시적으로 지적합니다. DPO는 y_w > y_l 순위(ranking)는 보존하지만, y_w의 절대 로그 확률(absolute log-prob)은 함께 떨어질 수 있습니다. BPO는 채택 응답이 아래로 움직이는 흐름에 벌점(penalty)을 부여하는 한 줄짜리 보정(single-line correction)을 추가합니다. Llama-3.1-8B-Instruct를 사용한 수학 추론(math reasoning) 평가에서 DPO 대비 +10.1% 정확도(accuracy) 향상이 보고되었습니다.

공통 결과: DAA도 여전히 과최적화됩니다

Rafailov et al. "Scaling Laws for Reward Model Overoptimization in Direct Alignment Algorithms"(NeurIPS 2024)는 여러 데이터셋(dataset)과 다양한 KL 예산(KL budget)에서 DPO, IPO, SLiC로 정책을 학습시켰습니다. 진짜 보상(gold reward) 대 KL 곡선은 Gao et al.이 보여 준 정점 후 붕괴(peak-and-collapse) 모양과 동일합니다. 학습 도중 암묵적 보상은 분포 밖 표본(out-of-distribution sample)을 조회하게 되고, KL 정규화만으로는 이를 안정화하지 못합니다.

DAA는 굿하트에서 벗어나지 못합니다. 단지 굿하트가 물어뜯는 표면을 "보상 모델이 과최적화된 지점"에서 "참조 정책 비율(reference policy ratio)이 과최적화된 지점"으로 옮길 뿐입니다. 더 좋은 데이터, 모델 앙상블(ensemble), 조기 종료(early stopping)라는 보편적 처방(universal fix)은 양쪽 모두에 그대로 적용됩니다.

2026년에 무엇을 고를 것인가

  • 쌍으로 라벨된(paired) 대규모 선호 데이터가 있다면: 보수적인 beta를 둔 DPO를 사용하고, 길이 편향이 두드러지면 SimPO로 전환합니다.
  • 쌍이 없는(unpaired) 이진 피드백(binary feedback)이 있다면: KTO를 선택합니다.
  • 기반 모델에서 단일 단계 파이프라인을 원한다면: ORPO를 선택합니다.
  • DPO 학습 로그에서 채택 로그 확률 열화(degraded chosen log-probs)가 보인다면: BPO를 사용합니다.
  • 선호 강도가 폭넓게 변하고 DPO가 포화(saturate)되는 양상이 보이면: IPO를 사용합니다.

모든 연구소(lab)는 다섯 방법을 모아 실험 묶음(battery)으로 돌린 뒤, 과제(task)별로 가장 성능이 좋은 변형을 고릅니다. 수학 추론과 안전성(safety)의 최적해가 같아야 할 이유는 없습니다.

사용해보기

code/main.py는 쌍마다 진짜 선호 강도(true preference strength)가 달라지는 장난감(toy) 선호 데이터셋 위에서 여섯 가지 손실(DPO, IPO, KTO, SimPO, ORPO, BPO)을 비교합니다. 각 손실은 동일한 500쌍 표본과 작은 소프트맥스 정책(softmax policy)으로 최적화됩니다. 방법(method)별로 최종 승률(final win rate), 채택 응답 로그 확률 변동(chosen-log-prob drift), 암묵적 보상 분산(implicit-reward spread)을 그림(plot)으로 비교합니다.

산출물 만들기

이 강의는 outputs/skill-preference-loss-selector.md를 만듭니다. 데이터셋 통계(쌍/비쌍, 가변/균일 선호 강도, 길이 분포)와 학습 목표(단일 단계 또는 SFT 이후 선호 학습)가 주어졌을 때, 적절한 선호 손실을 추천하고 그 손실이 막아 주는 실패 양상을 함께 보고합니다.

연습문제

  1. 쉬움: code/main.py를 실행합니다. DPO와 BPO에서 최종 채택 응답 로그 확률 하락 폭(final chosen-log-prob drop)을 보고합니다. BPO가 더 높은 채택 응답 절대 확률(absolute probability)을 유지해야 합니다. 이 점을 직접 확인합니다.

  2. 중간: 모든 쌍이 동일한 강도(equal strength)를 가지도록 선호 데이터를 수정합니다. 여섯 방법 중 어떤 방법이 가장 견고(robust)합니까? 어떤 방법이 성능이 떨어집니까? IPO가 여기서 갖는 장점(advantage)을 설명합니다.

  3. 중간: 거절된 응답(rejected response)이 채택된 응답보다 평균 2배 길어지도록 데이터를 바꿉니다. 다른 조건은 그대로 두고, DPO가 길이를 악용(length exploitation)하는 양상과 SimPO가 이를 보정하는 효과를 수치로 보여줍니다.

  4. 어려움: Rafailov et al.(NeurIPS 2024)은 DAA도 과최적화된다고 주장합니다. 단일 시점 버전(single-point version)을 재현하세요. 채택 응답과 거절 응답의 KL 발산 차이(chosen-minus-rejected KL divergence)를 그리고, 큰 beta 값에서 DPO의 과최적화 양상을 관찰합니다.

  5. 어려움: BPO 논문 초록(OpenReview b97EwMUWu7)을 읽습니다. BPO가 DPO에 추가한 한 줄짜리 보정 식을 적어 봅니다. code/main.py의 구현과 대조해 일치하는지 확인합니다.

핵심 용어

용어흔한 설명실제 의미
DPO"보상 모델 없는 RLHF"RLHF의 닫힌 형태 최적해에서 유도된, 정책 매개변수만 포함하는 손실
암묵적 보상(implicit reward)"로그 비(log-ratio)"`beta * log(pi(y
IPO"유계화된 DPO(bounded DPO)"로그-시그모이드를 항등 사상으로 바꾸고 암묵적 보상 간극을 1/(2 beta)로 묶음
KTO"비쌍 DPO(unpaired DPO)"손실 회피가 반영된 전망 이론 효용 함수를 단일 라벨에 적용
SimPO"참조 없는 DPO(reference-free DPO)"길이로 정규화한 로그 가능도와 마진. 참조 정책이 없음
ORPO"단일 단계 DPO(one-stage DPO)"NLL에 오즈비 선호 항을 더해, 기반 모델에서 한 번에 학습
BPO"채택 응답 보존 DPO(chosen-preserving DPO)"채택 응답의 절대 로그 확률이 떨어지는 흐름에 벌점을 주는 DPO 변형
채택 응답 열화(Degraded Chosen)"채택 응답이 내려간다"거절 응답이 더 빨리 떨어지는 한, DPO가 채택 응답의 로그 확률도 함께 낮추는 현상
DAA"직접 정렬 알고리즘(direct alignment algorithm)"명시적 보상 모델을 거치지 않는 선호 손실(preference-loss) 계열 방법

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

preference-loss-selector

Recommend a direct-alignment-algorithm loss given dataset shape and target stage.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.선호 학습(preference learning)에서 DPO 대신 KTO를 선택해야 하는 상황은 언제인가요?

2.SimPO는 로그 가능도를 응답 길이로 정규화합니다. 이것은 DPO의 어떤 실패 양상을 구체적으로 해결하나요?

3.Rafailov et al.(NeurIPS 2024)은 직접 정렬 알고리즘(DAA)도 과최적화된다는 것을 보였습니다. 이것이 DAA와 굿하트의 법칙의 관계에 대해 의미하는 바는 무엇인가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다