English translation is not available yet. Showing Russian content.

Как работает RLHF (Reinforcement Learning from Human Feedback) технически?

Краткий тезис

RLHF (Reinforcement Learning from Human Feedback) — это трёхэтапный метод тонкой настройки языковых моделей, который выравнивает их поведение с человеческими предпочтениями. Сначала модель дообучается на инструкциях (SFT), затем обучается reward model на парах «лучший/худший» ответ, и наконец сама LLM оптимизируется с помощью алгоритма PPO, используя reward model как функцию награды. Технически RLHF решает проблему субъективности качества генерации, заменяя автоматические метрики человеческой оценкой.


1. Зачем нужен RLHF? Проблема выравнивания (alignment)

Обычный Supervised Fine-Tuning (SFT) учит модель повторять ответы из датасета, но не гарантирует, что модель будет следовать сложным инструкциям, избегать токсичности или давать полезные ответы. Проблема в том, что «хороший ответ» — субъективное понятие, которое сложно формализовать в виде функции потерь. RLHF решает эту проблему, используя человеческие предпочтения как сигнал награды.

Ключевая идея: вместо того чтобы вручную писать правила «хорошего ответа», мы учим модель на основе того, что люди считают лучшим. Это позволяет выравнивать модель под ценности и ожидания пользователей.


2. Этап 1: Supervised Fine-Tuning (SFT) на инструкциях

Первый шаг — взять предобученную LLM (Large Language Model) и дообучить её на датасете инструкций с ожидаемыми ответами. Это обычный fine-tuning с кросс-энтропийной потерей.

Цель научить модель базово следовать инструкциям и генерировать осмысленные ответы в диалоговом формате.

Технические детали

  • Датасет: пары (prompt, answer), где ответ написан человеком или взят из качественного источника.
  • Функция потерь: стандартная cross-entropy loss на токенах ответа.
  • Гиперпараметры: learning rate ~1e-5, batch size 64–128, 1–3 эпохи.

Результат модель умеет отвечать на инструкции, но ещё не оптимизирована под предпочтения пользователя (может быть многословной, небезопасной или нечестной).


3. Этап 2: Обучение Reward Model (RM)

На этом этапе мы учим отдельную модель (обычно ту же LLM, но с заменой головы классификации) предсказывать, насколько ответ хорош с точки зрения человека.

3.1 Сбор данных предпочтений

Для обучения RM нужен датасет сравнений: для каждого промпта собирается несколько ответов (например, от разных моделей или от одной модели с разной температурой), и люди ранжируют их от лучшего к худшему. Чаще всего используется формат pairwise comparison: две пары (ответ_A, ответ_B) и метка, какой лучше.

Пример:

Prompt: "Объясни квантовую запутанность простыми словами"
Answer A: "Это когда две частицы связаны так, что изменение одной мгновенно влияет на другую."
Answer B: "Квантовая запутанность — это явление, при котором квантовые состояния двух или более частиц взаимозависимы."
Label: A > B (A лучше, потому что проще)

3.2 Архитектура и функция потерь

Reward model — это LLM, у которой последний слой заменён на линейный слой с одним выходом (скалярная награда). На вход подаётся промпт + ответ, на выходе — одно число (чем выше, тем лучше).

Функция потерь Bradley-Terry loss для парных сравнений. Для пары (x, y), где x лучше y, вероятность того, что x будет выбран, равна:

P(x > y) = sigmoid(r(x) - r(y))

где r(x) — награда для ответа x. Лосс — отрицательное логарифмическое правдоподобие:

L = -log(sigmoid(r(x) - r(y)))

Обучение минимизируем этот лосс на всех парах. После обучения RM может оценить любой ответ числом.

3.3 Практические аспекты

  • Размер RM обычно того же размера, что и LLM (или меньше, например, 6B для 70B LLM).
  • Количество сравнений десятки-сотни тысяч пар.
  • Качество данных важно, чтобы аннотаторы были согласованы (inter-annotator agreement). Используют Krippendorff's alpha для оценки.

4. Этап 3: Reinforcement Learning (PPO) для оптимизации LLM

Теперь у нас есть:

  • Policy (политика) — сама LLM, которую мы хотим улучшить.
  • Reward model — функция, которая оценивает ответы.

Задача: обновить параметры LLM так, чтобы она генерировала ответы с высокой наградой от RM. Для этого используется алгоритм Proximal Policy Optimization (PPO).

4.1 Базовая схема PPO в RLHF

  1. Генерация ответов текущая LLM (policy) генерирует ответы на промпты из датасета.
  2. Оценка награды reward model оценивает каждый ответ, выдавая скаляр r.
  3. Вычисление преимущества (advantage): чтобы учесть, насколько ответ лучше среднего, вычитаем baseline (обычно средняя награда по батчу или значение от value head — дополнительной головы, предсказывающей ожидаемую награду).
  4. Обновление policy PPO обновляет параметры LLM, максимизируя ожидаемую награду, но с ограничением на изменение политики (чтобы не уйти далеко от исходной модели).

4.2 Функция потерь PPO

Стандартная PPO loss для RLHF:

L_PPO = -E[ min( ratio * A, clip(ratio, 1-ε, 1+ε) * A ) ]

где:

  • ratio = π_new(a|s) / π_old(a|s) — отношение вероятностей нового и старого policy для сгенерированного ответа.
  • Aadvantage (награда минус baseline).
  • ε — гиперпараметр клиппинга (обычно 0.2).

Дополнительно добавляют KL-дивергенцию между текущей policy и исходной SFT-моделью, чтобы модель не забыла, как генерировать связные тексты:

L_total = L_PPO + β * KL(π_θ || π_SFT)

где β — коэффициент регуляризации (обычно 0.01–0.1).

4.3 Итеративный процесс

Обучение идёт несколько эпох. На каждой итерации:

  • Генерируются новые ответы (on-policy).
  • Reward model оценивает их.
  • PPO обновляет LLM.

Важно reward model не обновляется во время PPO, иначе награда будет «движущейся мишенью».


5. Детали реализации PPO в RLHF

5.1 Value Head

Для вычисления advantage часто добавляют value head — ещё один линейный слой поверх LLM, который предсказывает ожидаемую награду для данного промпта. Это позволяет использовать Generalized Advantage Estimation (GAE).

5.2 Пакетная обработка

Промпты группируются в батчи. Для каждого промпта генерируется один ответ (или несколько, если используется multiple sampling). Затем reward model оценивает все ответы, и PPO обновляет policy.

5.3 Гиперпараметры

ПараметрТипичное значение
Learning rate1e-6 – 1e-5
KL penalty (β)0.01 – 0.1
PPO clip ε0.2
Batch size64 – 256 промптов
Steps per iteration1000 – 5000

6. Альтернативы PPO: Direct Preference Optimization (DPO)

DPO — это более простой метод, который не требует отдельной reward model и PPO. Вместо этого он напрямую оптимизирует LLM на парах предпочтений, используя аналитическое выражение для оптимальной политики.

Формула DPO

L_DPO = -E[ log σ( β * (log π_θ(y_w|x) - log π_ref(y_w|x) - (log π_θ(y_l|x) - log π_ref(y_l|x)) ) ) ]

где y_w — предпочитаемый ответ, y_l — непредпочитаемый, π_ref — reference модель (обычно SFT).

Преимущества DPO проще в реализации, стабильнее, не требует RM. Недостатки может быть менее эффективен на сложных задачах, где нужен on-policy сбор данных.


7. Проблемы и ограничения RLHF

7.1 Reward hacking

Модель может научиться «обманывать» reward model, генерируя ответы, которые получают высокую награду, но на самом деле плохи (например, слишком длинные или льстивые). Это решается KL-регуляризацией и тщательным дизайном RM.

7.2 Сложность сбора данных

Человеческие аннотации дороги и субъективны. Разные аннотаторы могут иметь разные предпочтения. Требуется тщательная инструкция и контроль качества.

7.3 Нестабильность PPO

PPO чувствителен к гиперпараметрам. Неправильный learning rate или KL penalty могут привести к коллапсу модели (генерация бессмысленного текста).

7.4 Ограниченность reward model

RM обучается на конечном наборе сравнений и может не обобщаться на новые типы запросов. Это приводит к переобучению под конкретный датасет.


8. Сравнение этапов RLHF

ЭтапЦельВходные данныеВыходАлгоритм
SFTНаучить следовать инструкциям(prompt, answer)Обновлённая LLMCross-entropy
RMОценивать качество ответа(prompt, answer_A, answer_B, label)Reward modelBradley-Terry loss
PPOОптимизировать LLM под награду(prompt, reward model)Улучшенная LLMPPO + KL

Пет-проект для закрепления

Задача реализовать упрощённый RLHF для небольшой модели (например, GPT-2) на синтетических данных предпочтений.

Инструменты

  • Python, PyTorch, Transformers (Hugging Face)
  • Датасет: возьмите набор инструкций (например, Alpaca) и сгенерируйте два ответа для каждого промпта: один «хороший» (длинный, информативный) и один «плохой» (короткий, нерелевантный). Используйте rule-based подход для создания меток.
  • Библиотека TRL (Transformer Reinforcement Learning) от Hugging Face — содержит готовые реализации PPO и DPO.

Шаги:

  1. SFT дообучите GPT-2 на датасете инструкций (можно взять 1000 примеров).
  2. Обучение RM создайте reward model на базе GPT-2 с головой регрессии. Обучите на парах (хороший/плохой ответ) с Bradley-Terry loss.
  3. PPO используйте trl.PPOTrainer для оптимизации SFT-модели. Подавайте промпты, генерируйте ответы, оценивайте RM, обновляйте policy.
  4. Оценка сравните ответы до и после PPO по субъективному качеству и длине.

Ожидаемый результат модель после PPO должна генерировать более развёрнутые и релевантные ответы, чем SFT-версия. Вы также увидите, как KL-регуляризация предотвращает слишком сильное отклонение.


Связь с другими вопросами

ВопросТема
325Что такое alignment и зачем он нужен?
327Как работает DPO и чем отличается от RLHF?
328Какие метрики используются для оценки alignment?
330Как собирать данные для RLHF?
332Что такое reward hacking и как с ним бороться?
340Как устроен процесс fine-tuning LLM?

Навигация