Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#981

Что такое RLHF (Reinforcement Learning from Human Feedback) в 3 шагах? (SFT, Reward Model, RL)

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

RLHF (Reinforcement Learning from Human Feedback) — это трёхэтапный метод тонкой настройки языковых моделей, который позволяет согласовать поведение модели с человеческими предпочтениями без явной разметки правильных ответов. Процесс включает: (1) супервизированную тонкую настройку (SFT) на демонстрациях, (2) обучение модели вознаграждения (Reward Model) на парных сравнениях, (3) оптимизацию политики с помощью PPO (Proximal Policy Optimization) с использованием предсказанного вознаграждения. Итерационное повторение цикла позволяет постепенно улучшать качество выдачи.

-------|-------------------| | Размер датасета | 10k – 50k примеров | | Learning rate | 1e-5 – 2e-5 | | Число эпох | 1–3 (чтобы избежать переобучения) | | Base model | GPT-3.5, LLaMA 7B/13B, Pythia |

Важно: SFT не делает модель «дружелюбной» или «безопасной» — она просто учится генерировать ответы в стиле демонстраций. Переход к следующему шагу необходим для учёта нюансов предпочтений.


2. Шаг 2: обучение Reward Model (RM) на сравнениях

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

  • Сбор данных: аннотаторам показывают один и тот же промпт и два ответа (от SFT-модели или разных политик). Человек выбирает лучший (или «значительно лучше» / «немного лучше»).
  • Архитектура RM: обычно та же предобученная модель (LLM) с заменой последнего слоя на линейный головной слой, выдающий одно скалярное значение (reward). Вход — конкатенация промпта и ответа.
  • Функция потерь: Binary Cross-Entropy для парных сравнений. Для пары (ответа (y_a) и (y_b)) с предсказанными rewards (r_a, r_b) лосс:

[ \mathcal{L}{RM} = -\mathbb{E}{(a,b)} \Big[ \sigma(r_a - r_b) \cdot \mathbb{1}(a > b) + \sigma(r_b - r_a) \cdot \mathbb{1}(b > a) \Big] ]

где (\sigma) — сигмоида.

  • Размер датасета RM: 100k – 1M сравнений (обычно 500k–1M для InstructGPT).
  • Результат: Reward Model, которая может оценивать любой ответ числом: чем выше reward, тем больше вероятность, что человек предпочтёт этот ответ.
МетрикаОжидаемое значение
Accuracy на валидации65–75% (человеческое согласие ≈ 80%)
Spearman correlation с человеческими оценками0.3–0.5

3. Шаг 3: RL (PPO) с reward от RM

Финальный этап — дообучение SFT-модели с помощью алгоритма RL так, чтобы максимизировать ожидаемое вознаграждение, предсказанное Reward Model, но без слишком сильного отклонения от исходной политики (чтобы не возник «режим коллапса» — модель, которая выучила обманывать RM).

  • Алгоритм: PPO (или его вариации, например, GRPO). PPO — on-policy, используется clipped surrogate objective.
  • Компоненты:
    • Policy (Actor) — SFT-модель, которую дообучаем.
    • Reward Model — заморожена и выдаёт reward для полного сгенерированного ответа.
    • Value Model — часто копия policy, предсказывающая ожидаемый reward (critic).
    • KL penalty — штраф за расхождение (KL divergence) между текущей политикой и исходной SFT-моделью. Это предотвращает вырождение.

Функция потерь для PPO (упрощённо):

[ \mathcal{L}{PPO} = -\mathbb{E}{t} \left \min\left( \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} \hat{A}_t, ,[text{clip}\left( \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}, 1-[epsilon](/wiki/Epsilon), 1+[epsilon](/wiki/Epsilon) \right) \hat{A}t \right) \right] + [beta](/wiki/beta)\cdot KL(\pi{\theta} | \pi_{SFT}) ]

  • Гиперпараметры:

    • ([beta](/wiki/beta)) (KL penalty) — обычно 0.01–0.1.
    • ([epsilon](/wiki/Epsilon)) (clip range) — 0.2.
    • Число итераций PPO на одном batch сравнений — 1–4.
  • Процесс:

    1. Собираем партию промптов.
    2. Генерируем ответ текущей политикой.
    3. Reward Model оценивает каждый ответ.
    4. PPO обновляет веса политики, используя advantage (reward – baseline).
    5. Повторяем.
  • Результат: модель (RLHF-модель), которая генерирует ответы, более предпочтительные для людей, чем SFT-базовый вариант.


4. Итерации улучшения

RLHF редко выполняется один раз — обычно это итеративный процесс:

  1. После первого цикла получаем RL-модель.
  2. С её помощью генерируем новые ответы на новых промптах.
  3. Аннотаторы сравнивают ответы RL-модели с ответами SFT-модели (или предыдущей версии RL).
  4. На обновлённых сравнениях переобучаем Reward Model (или дообучаем её).
  5. Повторяем шаг PPO с улучшенной RM.

Цель: постепенное смещение распределения ответов в сторону человеческих предпочтений. На практике хватает 2–3 итераций, чтобы получить заметный прирост (как в DeepSeek-R1 или Claude).

ИтерацияReward Model accuracyHuman preference win rate vs SFT
0 (SFT)—50% (базовая линия)
168%70–80%
272%85%+

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

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

Инструменты:

  • Python 3.10+; PyTorch 2.x; Transformers; TRL (Transformer Reinforcement Learning); Weights & Biases для логирования.

Шаги:

  1. SFT: Возьмите предобученную DistilGPT2 и дообучите на наборе из 1k пар (промпт + хороший ответ) из датасета OpenAssistant Conversations (oasst1). Используйте стандартный Trainer с DataCollatorForLanguageModeling.
  2. Reward Model: Создайте классификатор на базе той же DistilGPT2: добавьте линейный слой на [CLS]-токен (или последний скрытый). Подготовьте 10k пар сравнений (можно синтезировать, взяв SFT-модель и добавив шум к ответам). Обучайте с парным лоссом.
  3. PPO (RL):
    • Используйте библиотеку trl.PPOTrainer.
    • Определите policy как DistilGPT2, reward_model как загруженную RM.
    • Соберите 500 промптов, генерируйте ответы, векторизуйте их, получите reward, обновите policy через PPO (с KL penalty = 0.02).
    • Повторите 5–10 шагов (эпох).
  4. Итерация: сгенерируйте новые сравнения от обученной модели, дообучите RM, повторите PPO.

Ожидаемый результат:

  • На тестовых промптах RLHF-модель будет генерировать ответы, которые получают выше средний reward от RM (проверить можно замерив average reward на выборке).
  • Субъективно ответы станут более полными и менее токсичными (если начальные RM была обучена на «хороших» ответах).

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

ВопросТема
326Что такое PPO и как применяется в RLHF?
980Основные понятия Alignment (выравнивания) LLM
982Что такое DPO (Direct Preference Optimization) и чем отличается от RLHF?

Навигация

  • Предыдущий: 980
  • Следующий: 982
  • Индекс: 00. Индекс разборов zation)|982]]
  • Индекс: 00. Индекс разборов