RLHF и DPO
rlhf и dpo — методы обучения LLM на предпочтениях людей
RLHF (Reinforcement Learning from Human Feedback) и DPO (Direct Preference Optimization) — главные методы обучения LLM на предпочтениях. RLHF — классика ChatGPT: люди оценивают пары ответов, отдельная reward model судит, главная модель тренируется через PPO. DPO — современный преемник: тот же сигнал, но без отдельной reward model, проще и стабильнее. К 2026-му большинство новых моделей используют DPO.
Коротко
Коротко. RLHF и DPO — два метода обучить LLM «нравиться людям». На вход — пары ответов с пометкой «A лучше B». RLHF тренирует отдельную reward model, потом PPO-итерации главной модели. DPO делает то же одним проходом без reward model. Цель одинаковая: модель учится предпочитать «хорошие» ответы. К 2026-му DPO стал стандартом за счёт простоты и стабильности; RLHF остаётся «золотым» для крупных лабораторий.
Что это такое
ChatGPT в декабре 2022-го показал миру магию RLHF. На той же GPT-3.5, но с правильно настроенным поведением, получился прорыв.
Идея простая. Базовая модель умеет писать любой текст: и полезный, и бесполезный, и опасный. Чтобы научить её выбирать «полезный» — нужны примеры предпочтений. Не «правильный ответ vs неправильный», а «ответ A лучше ответа B».
Сценарий:
- Пользователь спрашивает: «Расскажи о Москве».
- Модель генерирует два варианта ответа.
- Человек смотрит, выбирает: «Вариант A лучше — он структурнее и точнее».
- Записываем эту пару
(A, B, prefer=A)в датасет. - Повторяем 100 000 раз.
Теперь у нас есть 100К сигналов предпочтения. RLHF и DPO — два разных способа конвертировать эти сигналы в обновлённые веса модели.
К 2026-му оба метода — индустриальный стандарт. RLHF — классика OpenAI и Anthropic. DPO — более новый, появился в 2023-м (Stanford), быстро вытеснил RLHF в open-source.
Как это работает
RLHF (классический путь)
Три модели и три этапа:
- SFT-модель. Базовая LLM, дофайнтюненная на примерах «вопрос → правильный ответ».
- Reward Model (RM). Отдельная модель-судья. Принимает (prompt, response), выдаёт скалярную оценку. Обучается на парах: если человек выбрал A — RM должна давать A более высокую оценку.
- PPO-loop:
- SFT-модель генерирует ответ на промпт.
- RM оценивает ответ.
- PPO (Proximal Policy Optimization) обновляет веса SFT-модели, чтобы получать выше оценки.
- Ограничение: не уходить далеко от исходной модели (KL-divergence penalty).
Получается итеративный процесс: модель пишет → судья оценивает → веса корректируются → повторить.
DPO (упрощённый путь)
Один этап, без отдельной RM:
- Берём ту же базу — preference-пары
(prompt, chosen, rejected). - Применяем DPO-loss напрямую к модели:
loss = -log(σ(β · (log P_θ(chosen|prompt) - log P_θ(rejected|prompt) - reference))) - Модель учится: «делать chosen вероятнее, rejected — менее вероятным».
Никакой PPO, никакой RM. Просто один градиентный спуск по другой loss-функции.
Сравнение:
| RLHF | DPO | |
|---|---|---|
| Reward Model | Отдельная | Не нужна |
| Алгоритм оптимизации | PPO + KL | Прямой градиент |
| Стабильность | Капризный | Стабильнее |
| Память | 4 модели в RAM | 2 модели |
| Время | Дольше | Быстрее |
| Качество в пределе | Equal | Equal |
| Когда применять | Большие лаборатории, проверенный pipeline | Все остальные |
Пример на практике
Команда хочет дообучить Llama 3 8B как ассистента для финансовых консультаций.
Шаг 1: Собирают данные. 5000 финансовых вопросов. Для каждого Llama генерирует 2 ответа. Эксперты-финансисты выбирают лучший.
Шаг 2: DPO-тренировка. Через библиотеку trl (Hugging Face):
from trl import DPOTrainer
trainer = DPOTrainer(
model=base_model, # Llama 3 8B
ref_model=ref_model, # копия базовой
train_dataset=preference_data,
beta=0.1, # сила preference signal
args=TrainingArguments(num_train_epochs=3)
)
trainer.train()
Через 8 часов на одной A100 — модель Llama-3-8B-Finance-DPO. Стала аккуратнее в финансовых ответах, реже выдумывает цифры, отказывается от советов «купи криптовалюту X прямо сейчас».
Если бы делали через RLHF: пришлось бы сначала обучить reward model (ещё несколько часов), потом PPO-loop (более капризный, может развалиться, требует тюнинга гиперпараметров). DPO даёт тот же результат за половину времени.
В Stable Diffusion аналогичные техники: Diffusion-DPO (2023) и SPIN — тоже preference-based fine-tuning, но для генерации изображений.
С чем часто путают
- RLHF и SFT — SFT учит «правильным ответам» по примерам. RLHF учит предпочитать один ответ другому по людским оценкам. Разные сигналы.
- RLHF и Fine-tuning — RLHF это частный случай fine-tuning. Fine-tuning — общий термин.
- DPO и RLHF — оба используют preference data. DPO без отдельной reward model. Результат сопоставимый.
- RLHF и RLAIF — RLAIF использует AI-judge вместо людей. Дешевле, быстрее, качество близко.
- Reward Model и Reward Hacking — Reward Model это судья. Reward Hacking — патология, когда модель находит способ получать высокую оценку без реальной полезности.
Частые ошибки и заблуждения
- «RLHF делает модель умнее». Не делает. RLHF делает модель более удобной для общения. Знания не меняются, меняется поведение.
- «DPO — это упрощение RLHF». В каком-то смысле да, но математически эквивалентен в оптимуме. Не «менее мощный», просто более прямой путь.
- «PPO в RLHF — единственный вариант». Есть варианты: PPO, REINFORCE, GRPO, RLOO. PPO — самый распространённый.
- «Reward Hacking — редкая проблема». На практике встречается часто: модель учится «казаться» хорошей по метрикам RM, при этом ухудшается на реальных задачах. Главная боль RLHF.
- «DPO не требует базовую модель». Требует reference model для KL-penalty. Обычно это копия базовой модели до DPO.
Связанные термины
- Alignment — общая цель, RLHF/DPO — методы достижения.
- Reward Model — судья в классическом RLHF.
- PPO — алгоритм RL, используемый в RLHF.
- SFT — предыдущий этап обучения.
- Constitutional AI — Anthropic-альтернатива, использует RLAIF + принципы.
- Preference Data — главный исходник для обоих методов.
- TRL / Axolotl — главные библиотеки для DPO/RLHF.
Частые вопросы
RLHF или DPO — что выбрать в 2026? Для большинства задач — DPO. Проще, быстрее, стабильнее. RLHF имеет смысл в крупных лабораториях с проверенным pipeline или специфичных задачах.
Сколько preference-пар нужно? Минимум 1000 для заметного эффекта, оптимально 10–50К. Качество данных важнее количества.
Можно ли использовать AI вместо людей-оценщиков? Да, это RLAIF (RL from AI Feedback). GPT-4 или Claude оценивают пары. Качество близко к human на многих задачах, дешевле в 100 раз.
RLHF используется в Stable Diffusion? Аналоги — Diffusion-DPO, SPIN. Принцип такой же (preference learning), реализация другая под image generation.
Что такое KTO? Kahneman-Tversky Optimization — ещё один вариант preference learning, появился в 2024. Использует только бинарные сигналы (good/bad), без явных пар. Тоже стабильный.
Можно ли применить DPO к моей задаче? Если есть preference-сигнал (ваши оценщики, A/B тесты, юзер-лайки) — да. Из 1К пар можно получить заметный эффект.
Главное
RLHF и DPO — два метода научить LLM «нравиться людям» через обучение на парах предпочтений. RLHF — классика ChatGPT: отдельная reward model + PPO-loop. DPO — современный преемник: тот же сигнал, без RM, одним проходом. К 2026-му DPO — стандарт для большинства open-source файнтюнингов; RLHF остаётся в больших лабораториях с проверенным pipeline. Цель у обоих — alignment поведения модели. Главная опасность RLHF — reward hacking (модель оптимизирует RM, не реальную полезность). DPO от этого защищён лучше. Из библиотек: trl, axolotl, LLaMA-Factory поддерживают оба метода. Принципиально — это не магия, а одна из техник fine-tuning, просто специально под preference data.