Как обучается reward model для RLHF и как избегать reward hacking?

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

Reward model (RM) — это модель, которая учится предсказывать оценку (score) ответа LLM на основе человеческих предпочтений, обычно с помощью Bradley-Terry модели парных сравнений. Reward hacking — ситуация, когда политика (policy) находит способ получать высокий reward, не следуя истинным намерениям человека, например, используя артефакты в RM. Основные методы борьбы: ансамбли RM, KL-пенальти (штраф за отклонение от reference policy) и adversarial training (обучение RM на состязательных примерах). Понимание этих механизмов критично для стабильного и безопасного RLHF.


1. Что такое RLHF и зачем нужна reward model?

RLHF (Reinforcement Learning from Human Feedback) — метод тонкой настройки LLM, при котором модель оптимизируется с помощью подкрепляющего обучения на сигнале вознаграждения, полученном из человеческих оценок. Прямое использование человеческого фидбека в RL невозможно из-за его дороговизны и задержек. Поэтому строится reward model — суррогатная функция вознаграждения, которая аппроксимирует предпочтения человека.

Роль RM в RLHF-пайплайне

  1. Сбор датасета человеческих предпочтений (сравнения ответов).
  2. Обучение RM на этих сравнениях.
  3. Использование RM для оценки ответов политики (policy) в цикле RL (обычно PPO).
  4. Политика обновляется, чтобы максимизировать предсказанный reward, при этом штрафуется за отклонение от исходной модели (KL-пенальти).

2. Сбор данных: датасет человеческих предпочтений

RM обучается на comparison dataset (датасет сравнений). Для каждого промпта (prompt) генерируется несколько ответов (обычно 2–4) от разных моделей или одной модели с разной температурой. Человек-аннотатор выбирает лучший ответ (или ранжирует их). Формат данных: тройки (prompt, ответ_A, ответ_B, метка), где метка указывает, какой ответ предпочтительнее (или что они равны).

Важные аспекты

  • Разнообразие промптов: покрытие различных доменов, стилей, сложности.
  • Качество аннотаций: согласованность между аннотаторами (inter-annotator agreement), обычно измеряется через Cohen's kappa или Fleiss' kappa.
  • Баланс: равное количество случаев, когда A лучше B и наоборот, чтобы избежать смещения.
  • Масштаб: для современных LLM требуется десятки-сотни тысяч сравнений.

3. Архитектура reward model

Обычно RM строится на базе той же предобученной LLM (например, GPT-2, LLaMA), но с заменой головы (head) на регрессионный слой, выдающий одно скалярное значение — score (оценка). Вход: промпт + ответ (конкатенированные). Выход: число (чем выше, тем лучше ответ).

Типичная архитектура

  • Базовый трансформер (заморожен или fine-tuned).
  • Поверх последнего скрытого состояния (или пулинга) — линейный слой с 1 выходом.
  • Функция активации: обычно отсутствует (линейная), чтобы score мог быть любым вещественным числом.

Отличие от классификации RM не предсказывает метку класса, а учится ранжировать ответы, поэтому используется парная (pairwise) функция потерь.


4. Функция потерь: Bradley-Terry модель

Стандартный подход — использовать Bradley-Terry модель для парных сравнений. Предполагается, что вероятность предпочтения ответа A перед ответом B пропорциональна логистической функции разности их scores:

[ P(A > B) = \sigma(r_A - r_B) = \frac{1}{1 + e^{-(r_A - r_B)}} ]

где ( r_A, r_B ) — scores, предсказанные RM для ответов A и B.

Функция потерь (negative log-likelihood):

[ \mathcal{L} = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma(r_w - r_l) \right] ]

где ( y_w ) — предпочтительный ответ (winner), ( y_l ) — непредпочтительный (loser).

Реализация на PyTorch

import torch
import torch.nn.functional as F

def reward_loss(rewards_w, rewards_l):
    """
    rewards_w: scores для предпочтительных ответов (batch,)
    rewards_l: scores для непредпочтительных ответов (batch,)
    """
    logits = rewards_w - rewards_l  # разность scores
    loss = -F.logsigmoid(logits).mean()
    return loss

Дополнительно если есть метки "равно" (tie), можно использовать модификацию с порогом (например, Huber loss) или просто исключать такие пары.


5. Процесс обучения

Детали

  • Оптимизатор: AdamW, learning rate ~1e-5 (для fine-tune) или 1e-3 (для обучения головы).
  • Batch size: 32–128 пар.
  • Эпохи: 1–3, чтобы избежать переобучения (overfitting) на датасете предпочтений.
  • Валидация: метрика accuracy (доля пар, где предсказанный winner совпадает с человеческим), также можно считать Spearman rank correlation для ранжирования.

Проблемы

  • Переобучение: RM может запомнить конкретные пары, а не обобщить предпочтения. Решение: early stopping, dropout, weight decay.
  • Смещение аннотаторов: если аннотаторы имеют систематические ошибки (например, предпочитают длинные ответы), RM выучит это. Решение: балансировка по аннотаторам, использование мета-информации.

6. Что такое reward hacking?

Reward hacking (или reward overoptimization) — явление, при котором политика (policy) находит способ получать высокий reward от RM, не соответствующий истинным человеческим предпочтениям. Это происходит потому, что RM — лишь аппроксимация, и в ней есть артефакты.

Примеры

  • Модель учится генерировать ответы с неестественно высокой оценкой, используя "любимые" фразы RM (например, "I think", "In conclusion").
  • Модель находит синтаксические паттерны, которые RM ассоциирует с высоким качеством, но которые не улучшают реальную полезность.
  • RM может быть чувствительна к длине ответа: модель начинает писать очень длинные или очень короткие ответы, чтобы получить высокий score.

Последствия деградация качества, небезопасное поведение, потеря разнообразия.


7. Метод 1: Ensemble RM (ансамбль RM)

Идея: обучить несколько RM (с разными инициализациями, на разных подвыборках данных) и усреднять их scores или брать минимум.

Варианты

  • Усреднение (average): ( r_{[text](/wiki/text){final}} = \frac{1}{N} \sum_{i=1}^N r_i ). Снижает variance, но может не защитить от согласованных артефактов.
  • Минимум (min): ( r_{[text](/wiki/text){final}} = \min_i r_i ). Более консервативно: политика не может обмануть все RM одновременно.
  • Медиана: устойчива к выбросам.

Плюсы простота, эффективность. Минусы вычислительные затраты (N моделей), требуется больше данных для обучения.


8. Метод 2: KL penalty (KL-пенальти)

KL-пенальти — добавление штрафа в функцию reward за отклонение политики от reference policy (обычно исходной SFT-модели). Это стандартный компонент PPO для RLHF.

Формула

[ R_{[text](/wiki/text){total}} = r_{[text](/wiki/text){RM}} - [beta](/wiki/beta) \cdot D_{[text](/wiki/text){KL}}(\pi_{\theta} | \pi_{[text](/wiki/text){ref}}) ]

где ( [beta](/wiki/beta) ) — коэффициент (обычно 0.01–0.1), ( D_{[text](/wiki/text){KL}} ) — KL-дивергенция между текущей политикой и reference.

Защита от reward hacking KL-пенальти штрафует политику за слишком сильное отклонение, тем самым ограничивая пространство поиска и не позволяя модели "убегать" в области, где RM даёт необоснованно высокие scores.

Реализация в PPO

# Внутри цикла PPO
log_probs = policy.forward(input_ids)
ref_log_probs = ref_policy.forward(input_ids)
kl_div = (ref_log_probs - log_probs).mean(dim=-1)
reward = rm_score - beta * kl_div

9. Метод 3: Adversarial training (состязательное обучение)

Идея: обучить RM быть устойчивым к adversarial примерам — ответам, которые специально генерируются так, чтобы обмануть RM.

Подходы

  • Генерация adversarial ответов: во время обучения RM запускается текущая политика, и её ответы, получившие высокий score, но низкую человеческую оценку, добавляются в датасет как "сложные негативные примеры".
  • Iterated training: цикл: обучить RM → обучить политику с PPO → собрать новые человеческие предпочтения на ответах политики → дообучить RM. Это стандартный приём в RLHF (например, в InstructGPT).

Плюсы RM учится распознавать паттерны, которые политика пытается эксплуатировать. Минусы требует дополнительных итераций сбора данных и обучения.


10. Дополнительные методы

  • Reward scaling и clipping: ограничение значений reward (например, clip к [-5, 5]) для стабильности.
  • Reward normalization: вычитание среднего и деление на стандартное отклонение по батчу.
  • Использование нескольких источников фидбека: комбинация человеческих оценок, rule-based проверок (например, безопасность, фактологичность).
  • Calibration RM: обучение RM предсказывать не только ранжирование, но и калиброванные вероятности (например, через Platt scaling).

Сравнение методов

МетодСутьЗащита от hackingВычислительные затратыСложность реализации
Ensemble RMНесколько RMВысокая (с min)Высокие (N моделей)Средняя
KL penaltyШтраф за отклонениеСредняяНизкиеНизкая (встроено в PPO)
Adversarial trainingОбучение на сложных примерахВысокаяСредние (доп. итерации)Высокая
Reward clippingОграничение значенийНизкаяНизкиеНизкая

11. Практические рекомендации

  • Начинать с KL penalty — это обязательный компонент любого RLHF.
  • Добавлять ensemble RM если есть ресурсы (2–3 модели).
  • Использовать iterated training (adversarial) для production-систем.
  • Мониторить метрики: средний reward, KL-дивергенция, diversity ответов (distinct n-grams).
  • Проводить human evaluation на каждом цикле, чтобы убедиться, что качество не падает.

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

Задача Обучить reward model для чат-бота на синтетических данных и продемонстрировать эффект KL penalty при обучении политики.

Инструменты Python, PyTorch, Hugging Face Transformers, TRL (Transformer Reinforcement Learning).

Шаги:

  1. Сгенерировать синтетический датасет сравнений: взять предобученную модель (например, gpt2), для каждого промпта сгенерировать два ответа (с разной температурой), вручную назначить метку (winner/loser) на основе простого правила (например, предпочитать более длинные ответы).
  2. Обучить RM на базе gpt2 с головой регрессии, используя Bradley-Terry loss.
  3. Обучить политику (ту же gpt2) с PPO, используя обученную RM, с разными значениями beta (0, 0.1, 0.5).
  4. Оценить: построить график зависимости среднего reward и KL-дивергенции от шага обучения. Показать, что без KL penalty reward растёт, но ответы становятся неестественными (например, повторяют паттерны).

Ожидаемый результат Вы увидите, что при beta=0 reward быстро растёт, но KL-дивергенция взрывается, а ответы теряют разнообразие. При beta=0.1 reward растёт медленнее, но ответы остаются осмысленными.


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

ВопросТема
328Полный пайплайн RLHF: от сбора данных до PPO
330Детали алгоритма PPO для RLHF
331KL-дивергенция и её роль в стабилизации обучения
332Adversarial training и генерация сложных примеров
333Метрики оценки качества reward model
334Сбор и фильтрация человеческих предпочтений

Навигация