RLHF и DPO

rlhf и dpo — методы обучения LLM на предпочтениях людей

Раздел
Обучение
Обновлено
18.05.26

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».

Сценарий:

  1. Пользователь спрашивает: «Расскажи о Москве».
  2. Модель генерирует два варианта ответа.
  3. Человек смотрит, выбирает: «Вариант A лучше — он структурнее и точнее».
  4. Записываем эту пару (A, B, prefer=A) в датасет.
  5. Повторяем 100 000 раз.

Теперь у нас есть 100К сигналов предпочтения. RLHF и DPO — два разных способа конвертировать эти сигналы в обновлённые веса модели.

К 2026-му оба метода — индустриальный стандарт. RLHF — классика OpenAI и Anthropic. DPO — более новый, появился в 2023-м (Stanford), быстро вытеснил RLHF в open-source.

Как это работает

RLHF (классический путь)

Три модели и три этапа:

  1. SFT-модель. Базовая LLM, дофайнтюненная на примерах «вопрос → правильный ответ».
  2. Reward Model (RM). Отдельная модель-судья. Принимает (prompt, response), выдаёт скалярную оценку. Обучается на парах: если человек выбрал A — RM должна давать A более высокую оценку.
  3. PPO-loop:
    • SFT-модель генерирует ответ на промпт.
    • RM оценивает ответ.
    • PPO (Proximal Policy Optimization) обновляет веса SFT-модели, чтобы получать выше оценки.
    • Ограничение: не уходить далеко от исходной модели (KL-divergence penalty).

Получается итеративный процесс: модель пишет → судья оценивает → веса корректируются → повторить.

DPO (упрощённый путь)

Один этап, без отдельной RM:

  1. Берём ту же базу — preference-пары (prompt, chosen, rejected).
  2. Применяем DPO-loss напрямую к модели:
    loss = -log(σ(β · (log P_θ(chosen|prompt) - log P_θ(rejected|prompt) - reference)))
    
  3. Модель учится: «делать 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.