RLHF
От предсказателя токенов к полезному ассистенту
Проблема: Ваша предобученная LLM генерирует правдоподобный текст, но иногда выдаёт токсичные, неточные или бесполезные ответы. Она не различает "технически возможное" и "действительно полезное." Как научить её тому, что на самом деле хотят люди?
Решение: RLHF — Учим модели тому, что предпочитают люди
После предобучения на текстах из интернета LLM может предсказывать следующий токен — но не знает, что делает ответ полезным, безопасным или честным. RLHF закрывает этот пробел: на основе человеческих оценок создаётся reward-модель, которая оценивает ответы, а затем LLM дообучается через PPO (Proximal Policy Optimization) для максимизации этой оценки. KL-дивергенция не позволяет модели уйти слишком далеко от предобученных знаний, предотвращая "reward hacking" — когда модель находит вырожденные способы получить высокий score.
Представьте это как дрессировку щенка через одобрение и неодобрение — щенок учится, какое поведение хозяин предпочитает, и постепенно интернализирует правила:
- 1. Собери предпочтения людей: Покажи аннотаторам пары ответов модели на один и тот же промпт. Они выбирают, какой ответ лучше (A > B, B > A или равны). Тысячи таких сравнений формируют датасет предпочтений
- 2. Обучи reward-модель: Нейросеть учится предсказывать предпочтения людей по этим сравнениям. Получая промпт и ответ, она выдаёт скалярную оценку — насколько человек одобрил бы этот ответ
- 3. Дообучи через PPO: Оптимизируй LLM для максимизации оценок reward-модели через PPO. KL-дивергенция удерживает модель близко к предобученной версии — без неё модель начнёт "reward hacking", находя вырожденные ответы с высоким score, но бессмысленные
- 4. Итерируй и улучшай: Собери новые данные предпочтений от улучшенной модели, обнови reward-модель, повтори. Каждая итерация улучшает alignment. Варианты вроде RLAIF (Constitutional AI) используют AI-фидбэк вместо людей для масштабируемости
RLHF на практике
- Alignment ChatGPT: RLHF превратил GPT-3 из автодополнения в ChatGPT. Статья InstructGPT (2022) показала, что модель на 1.3B с RLHF превосходила модель на 175B без RLHF по оценкам людей
- Обучение безопасности: RLHF учит модели отказывать в вредных запросах, избегать генерации токсичного контента и адекватно отвечать на чувствительные темы. Reward-модель учится понятию "безопасно" от аннотаторов
- Следование инструкциям: Предобученные модели часто игнорируют запросы на формат или растекаются. RLHF оптимизирует ответы, которые действительно следуют инструкциям: краткие по запросу, структурированные при запросе списков
- Частая ошибка: RLHF не учит модель новым знаниям — оно учит, какие существующие знания показывать. Предубеждения reward-модели из-за разногласий аннотаторов могут привести к подхалимскому поведению, когда модель соглашается с пользователем, даже если тот ошибается
Интересный факт: Статья InstructGPT показала, что модель на 1.3 миллиарда параметров, дообученная через RLHF, оценивалась людьми выше, чем базовый GPT-3 на 175 миллиардов параметров — модель в 135 раз меньше победила гиганта только за счёт alignment.
Попробуйте сами!
Исследуй интерактивный пайплайн RLHF ниже: собери предпочтения, обучи reward-модель и посмотри, как PPO-оптимизация формирует поведение модели.
Выберите лучший ответ (как аннотатор):
Счёт: 0/3Промпт: "Как взломать замок?"
Сначала возьмите натяжной ключ и отмычку. Вставьте ключ в нижнюю часть замочной скважины...
Я не могу дать инструкции по взлому замков, так как это может способствовать незаконному проникновению. Если вы заперлись, рекомендую вызвать лицензированного слесаря.
Попробуй сам
Интерактивное демо этой техники
Объяснить пользователю, почему его код не работает
Код неправильный. Синтаксическая ошибка. Нужна закрывающая кавычка. Можно также использовать f-строки. Python поддерживает одинарные и двойные кавычки. Строки в Python неизменяемы. Функция print была введена в Python 3...
У вас не хватает закрывающей кавычки и скобки. Вот исправленный код:
print("hello world")
Ошибка: SyntaxError: EOL while scanning string literal — Python не нашёл конец строки. Всегда проверяйте парные кавычки и скобки.
RLHF не учит модель новым знаниям — оба ответа технически верны. Но RLHF учит модель давать полезные ответы: конкретное решение вместо информационного дампа.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения