Как вы боретесь с reward hacking? (ансамбли RM, regularization, adversarial training)
Краткий тезис
Reward Hacking — явление, при котором агент (политика) находит способ максимизировать предсказание Reward Model, не следуя истинным намерениям человека. Борьба ведётся комбинацией методов: усреднение предсказаний нескольких RM, регуляризация через KL-пенальти, состязательное обучение (adversarial training) на специально отобранных «взломанных» траекториях, а также периодическая валидация людьми. Каждый метод снижает разные типы уязвимости RM, и на практике применяют их совместно.
2. Adversarial training: подмешиваем hacked примеры
Adversarial training — это включение в обучающую выборку RM тех траекторий, на которых политика показала высокую награду, но человек оценил их низко (или наоборот). Такие примеры называют «взломанными» (hacked).
Процесс
- Сбор взломанных траекторий:
- Дообучение RM:
- Смешиваем исходные человеческие предпочтения и взломанные примеры в пропорции, например, 4:1.
- На взломанных примерах штрафуем RM за предсказание высокого reward там, где человек дал низкий.
- Можно использовать adversarial loss: $L_{adv} = \mathbb{E}{(s,a) \sim \pi} [\max(0, 1 - (R{human} - R_{model}))]$ (аналог hinge loss).
- Итеративное обновление: Повторяем цикл (RL → сбор → дообучение RM → RL) — это создаёт «гонку вооружений», где RM учится распознавать всё более изощрённые паттерны взлома.
Замечание
Adversarial training эффективен, но требует трудозатрат на человеческую оценку взломанных примеров. Поэтому часто ограничиваются автоматической фильтрацией: берут траектории, где reward модели аномально высок (например, > 95-го перцентиля), и отправляют человеку.
3. Regularization: KL penalty
KL-пенальти — самый распространённый способ регуляризации в RLHF. Он штрафует политику за отклонение от референсной модели (обычно SFT-модель):
$$ R_{[text](/wiki/text){total}}(s,a) = R_{model}(s,a) - [beta](/wiki/beta) \cdot D_{KL}(\pi_{\theta}(\cdot|s) \parallel \pi_{ref}(\cdot|s)) $$
Зачем это работает против reward hacking
- Взлом часто заключается в том, чтобы генерировать необычные, редкие токены, на которые RM ошибочно даёт высокий reward.
- KL-пенальти делает такие отклонения дорогими: политика вынуждена оставаться близкой к распределению референса, которое априори не содержит крайностей.
- Коэффициент $[beta](/wiki/beta)$ выбирают так, чтобы контролировать trade-off между следованием reward и сохранением лексического разнообразия. Обычно $[beta](/wiki/beta)$ ~ 0.01–0.1, но подбирается эмпирически.
Другие формы регуляризации
- L2-штраф на веса политики — менее эффективен, так как не ограничивает выходной логарифм.
- Entropy bonus (добавление энтропии политики в reward) — способствует исследованию, но может даже усилить reward hacking, если политика начинает пробовать новые паттерны.
4. Периодическая валидация людьми
Даже при ансамбле и регуляризации RM может постепенно дрейфовать (reward drift). Поэтому необходима регулярная ручная проверка.
Метрики для мониторинга
| Метрика | Описание | Действие при аномалии |
|---|---|---|
| Human agreement | % совпадений предпочтений RM с человеком на отложенной выборке | Если падает ниже 70% — перезапуск RM training |
| KL divergence | $D_{KL}(\pi_{\theta} \parallel \pi_{ref})$ | Если растёт >2σ от среднего — ужесточить β |
| Out-of-distribution detection | Доля действий, где $\log p_{\theta}(a|s) < -5$ | Остановка обучения |
| Reward histogram | Распределение предсказанных rewards | Если появились хвосты >0.9 — проверить adversarial examples |
Частота валидации: один раз в N итераций (например, каждые 10 шагов PPO). Если ресурсы ограничены, можно использовать автоматизированную проверку через LLM-as-a-Judge в качестве прокси человека, но финальное решение всегда остаётся за человеком.
Пет-проект для закрепления
Задача: реализовать симуляцию reward hacking в упрощённой среде и применить комбинацию методов защиты.
- Инструменты:
- Шаги:
- Обучить одну RM (нейросеть с 2–3 слоями) на предпочтениях, собранных от человека (или симулированных «честным» показателем).
- Протестировать политику с этой RM — наблюдать reward hacking.
- Добавить KL-пенальти ($[beta](/wiki/beta)=0.1$) и убедиться, что поведение стабилизируется.
- Обучить ансамбль из 3 RM (разные инициализации). Усреднять их предсказания.
- Реализовать adversarial training: на каждой 5-й итерации собирать моменты, где RM даёт >0.9, а объективно reward низкий, дообучать RM.
- Сравнить частоту «взломанных» эпизодов (% эпизодов, где агент получил высокий reward, но цель не достиг).
- Ожидаемый результат:
- Без защиты — высокая частота взлома (например, 80%).
- С ансамблем + KL — снижение до 30–40%.
- С adversarial training — до 5–10%.
Связь с другими вопросами
Навигация
- Предыдущий: 992
- Следующий: 994
- Индекс: 00. Индекс разборов