English translation is not available yet. Showing Russian content.
Как работает Direct Preference Optimization (DPO) в деталях (потеря, градиенты)?
Краткий тезис
Direct Preference Optimization (DPO) — это метод выравнивания языковых моделей по предпочтениям человека без явного обучения отдельной reward model (модели вознаграждения). В отличие от RLHF (Reinforcement Learning from Human Feedback), DPO использует аналитическое (closed-form) выражение для оптимальной политики, что позволяет переписать задачу оптимизации как простую бинарную классификацию. loss|Потеря DPO имеет вид -log σ(β * (log(π(y_w)/π_ref(y_w)) - log(π(y_l)/π_ref(y_l)))), а градиенты этой функции напрямую увеличивают вероятность предпочитаемых ответов и уменьшают вероятность непредпочитаемых, причём сила обновления зависит от того, насколько модель «ошибается» относительно референсной политики.
1. От RLHF к DPO: почему понадобился новый метод
RLHF — стандартный пайплайн выравнивания:
- Собрать Collection|data датасет предпочтений
(x, y_w, y_l), гдеy_w— предпочитаемый ответ,y_l— непредпочитаемый. - Обучить reward model
r(x, y)на этих парах (обычно через логистическую регрессию). - Оптимизировать политику
π(языковую модель) методом PPO (Policy Optimization|Proximal Policy Optimization]]), максимизируя ожидаемое вознаграждение с KL-регуляризацией к референсной модели π_ref.
Недостатки RLHF:
- Требует обучения и хранения отдельной reward model.
- PPO — сложный и нестабильный алгоритм (чувствителен к гиперпараметрам, требует много памяти).
- Высокие вычислительные затраты.
DPO (Rafailov et al., 2023) устраняет эти проблемы, напрямую оптимизируя политику на основе предпочтений, используя аналитическое решение для оптимальной политики в терминах reward.
2. Термин: Implicit reward и closed-form решение
Ключевая идея DPO — implicit reward (неявное вознаграждение). Вместо того чтобы учить отдельную reward model, DPO выражает reward через отношение вероятностей текущей политики π и референсной π_ref:
r(x, y) = β * log(π(y|x) / π_ref(y|x)) + β * log(Z(x))
где Z(x) — нормировочная константа (partition function). В RLHF оптимальная политика имеет вид:
π*(y|x) = ([[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]]/Z(x)) * π_ref(y|x) * exp(r(x,y)/β)
DPO замечает, что можно выразить reward через политику:
r(x,y) = β * log(π(y|x) / π_ref(y|x)) + β * log(Z(x))
Подставляя это в модель предпочтений Брэдли-Терри (вероятность предпочесть y_w над y_l равна σ(r(x,y_w) - r(x,y_l))), получаем вероятность предпочтения, зависящую только от π и π_ref:
p(y_w > y_l | x) = σ(β * log(π(y_w|x)/π_ref(y_w|x)) - β * log(π(y_l|x)/π_ref(y_l|x)))
Таким образом, reward model исчезает, и мы можем напрямую максимизировать вероятность правильного порядка пар.
3. Потеря DPO: вывод и формула
Потеря DPO — это отрицательное логарифмическое правдоподобие модели предпочтений Брэдли-Терри:
L_DPO(π; π_ref) = -E_{(x, y_w, y_l) ~ D} [ log σ( β * log(π(y_w|x)/π_ref(y_w|x)) - β * log(π(y_l|x)/π_ref(y_l|x)) ) ]
Обозначим:
s_w = log(π(y_w|x) / π_ref(y_w|x))
s_l = log(π(y_l|x) / π_ref(y_l|x))
Тогда:
L_DPO = -log σ(β * (s_w - s_l))
Интуиция: мы хотим, чтобы разница s_w - s_l была как можно больше (положительной). Сигмоида превращает эту разницу в вероятность, а логарифм делает потерю выпуклой и гладкой.
Почему это работает Если π совпадает с π_ref, разница равна нулю, и потеря равна -log σ(0) = -log(0.5) ≈ 0.693. При обучении модель увеличивает s_w (делает предпочитаемый ответ более вероятным относительно референса) и уменьшает s_l (делает непредпочитаемый менее вероятным).
4. Градиенты DPO: что они делают
Вычислим градиент потери по параметрам θ модели π_θ. Для одного примера (x, y_w, y_l):
∇_θ L = -β * [ σ(β * (s_l - s_w)) * (∇_θ log π_θ(y_w|x) - ∇_θ log π_θ(y_l|x)) ]
Обозначим δ = β * (s_w - s_l) — «запас» (margin) между предпочитаемым и непредпочитаемым. Тогда:
∇_θ L = -β * σ(-δ) * (∇_θ log π_θ(y_w|x) - ∇_θ log π_θ(y_l|x))
Интерпретация:
- Множитель
σ(-δ)— это вес ошибки. Еслиδбольшой положительный (модель уже правильно ранжирует),σ(-δ)близок к 0, и градиент мал — обновление слабое. - Если
δотрицательный (модель ошибается, предпочитает y_l),σ(-δ)близок к 1, градиент большой — модель сильно корректируется. - Градиент увеличивает
log π_θ(y_w|x)(через положительный вклад) и уменьшаетlog π_θ(y_l|x)(через отрицательный). Это похоже на contrastive learning (контрастивное обучение).
Важно: градиент не требует вычисления reward model или сложной выборки из политики — только forward pass на двух ответах.
5. Сравнение DPO и RLHF
| Характеристика | RLHF (PPO) | DPO |
|---|---|---|
| Необходимость отдельной reward model | Да | Нет (implicit reward) |
| Алгоритм оптимизации | PPO (actor-critic) | Простая бинарная классификация |
| Стабильность | Низкая (чувствителен к гиперпараметрам) | Высокая (нет adversarial обновлений) |
| Память | Требует хранения reward model + policy | Только policy и reference model |
| Скорость обучения | Медленнее (много шагов PPO) | Быстрее (одна loss на пару) |
| Теоретическая эквивалентность | Приближение через KL | Точное closed-form решение (при Bradley-Terry) |
| Ограничения | Reward hacking, collapse | Зависит от качества пар предпочтений |
6. Преимущества DPO
- Простота реализации: loss — одна строка в PyTorch.
- Стабильность: нет проблем с reward hacking, так как reward не учится отдельно.
- Эффективность: не нужно генерировать онлайновые выборки (off-policy).
- Масштабируемость: легко применять к большим моделям (LLaMA, Mistral).
7. Недостатки и ограничения
- Зависимость от референсной модели:
π_refдолжна быть фиксирована, иначе loss не определён. - Предположение Брэдли-Терри: предпочтения должны быть транзитивны и независимы от контекста (не всегда верно для сложных задач).
- Off-policy: DPO использует статический датасет, не адаптируется к новым предпочтениям в процессе обучения (в отличие от онлайн-методов).
- Чувствительность к β: гиперпараметр β контролирует «жёсткость» выравнивания; слишком большое β может привести к переобучению на пары.
8. Применение DPO в Agentic RAG
В контексте Agentic RAG (агентные системы с поиском) DPO может использоваться для выравнивания поведения агента:
- Траектории агента: последовательность действий (retrieval, reasoning, tool use) можно рассматривать как «ответ» на запрос.
- Сбор предпочтений: эксперты или автоматические метрики (например, успешность выполнения задачи) ранжируют траектории.
- Fine-tuning: DPO применяется к политике агента (LLM, принимающей решения), чтобы увеличить вероятность успешных траекторий и уменьшить — неудачных.
Пример: агент для ответа на вопросы с поиском. Для запроса «Какая столица Франции?» одна траектория (поиск → извлечение → ответ) успешна, другая (поиск → ошибка → неверный ответ) — нет. DPO учит агента выбирать правильные действия.
9. Пет-проект для закрепления
Задача: Реализовать DPO для fine-tuning небольшой языковой модели (например, GPT-2) на синтетическом датасете предпочтений.
Инструменты:
- Python, PyTorch, Hugging Face Transformers
- Датасет:
Anthropic/hh-rlhf(или сгенерировать свои пары с помощью LLM) - Референсная модель: та же архитектура, но замороженная
Шаги:
- Загрузить предобученную модель (например,
distilgpt2) и её токенизатор. - Создать референсную модель (копия с замороженными весами).
- Реализовать loss DPO:
def dpo_loss(policy_logps, ref_logps, beta=0.1): # policy_logps: [batch, 2] — log probs для y_w и y_l # ref_logps: [batch, 2] — log probs от reference модели s_w = policy_logps[:, 0] - ref_logps[:, 0] s_l = policy_logps[:, 1] - ref_logps[:, 1] logits = beta * (s_w - s_l) loss = -F.logsigmoid(logits).mean() return loss - Обучить модель на парах
(x, y_w, y_l). - Оценить: сравнить вероятность предпочитаемых ответов до и после обучения.
Ожидаемый результат: После fine-tuning модель будет с большей вероятностью генерировать ответы, похожие на y_w, и реже — на y_l. Можно проверить на held-out парах.
10. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 334 | RLHF и PPO для alignment |
| 336 | Reward modeling и Bradley-Terry |
| 337 | Контрастивное обучение в NLP |
| 338 | Fine-tuning LLM с предпочтениями |
| 340 | Agentic RAG: обучение агентов |
| 332 | KL-дивергенция и регуляризация политики |
11. Навигация
- Предыдущий: 334
- Следующий: 336
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 334
- Следующий: 336
- Индекс: 00. Индекс разборов