Happy-LLM, глава 6 (дополнение): выравнивание предпочтений через RL
Полный перевод незавершённого дополнительного раздела 6.4 книги Datawhale «Строим большую модель с нуля»: откуда взялось обучение с подкреплением, его основные понятия и цель, модель награды и сбор данных о предпочтениях в формате chosen/rejected.
6.4 Выравнивание предпочтений с помощью обучения с подкреплением
Заголовок раздела «6.4 Выравнивание предпочтений с помощью обучения с подкреплением»Прежде чем погружаться в детали обучения с подкреплением, посмотрим, откуда оно взялось. Обучение с подкреплением (Reinforcement Learning, сокращённо RL) — вовсе не новинка. Его теоретические основы восходят к поведенческой психологии начала XX века, прежде всего к исследованиям научения у животных Эдварда Торндайка и Б. Ф. Скиннера. Торндайк сформулировал «закон эффекта»: если поведение приводит к положительному результату, вероятность его повторения растёт. Скиннер развил эту мысль в теорию оперантного обусловливания: поведение формируется наградами и наказаниями.
Обучение с подкреплением в информатике выросло из этих психологических принципов. В 1980-х годах, с ростом вычислительных мощностей и развитием математической теории, эти биопсихологические идеи научения стали применять к машинам и компьютерным программам — так возникло обучение с подкреплением в современном смысле.
6.4.1 Основные принципы обучения с подкреплением
Заголовок раздела «6.4.1 Основные принципы обучения с подкреплением»Теперь перейдём к главному — основным принципам обучения с подкреплением.
- Состояние (State) — конкретная ситуация системы в некоторый момент. Например, в настольной игре состояние — это текущее расположение всех фигур на доске. Для беспилотного автомобиля состояние может включать скорость и положение машины, а также положение окружающих препятствий.
- Действие (Action) — операция, которую агент может выполнить в данном состоянии. Для велосипеда это, например, «ехать вперёд», «остановиться», «повернуть». В сложной системе множество действий может быть огромным.
- Награда (Reward) — обратная связь, которую агент получает после выполнения действия; обычно это число. Награда бывает немедленной или отложенной. Хорошее действие может получить положительную награду, плохое — отрицательную.
- Политика (Policy) — набор правил, по которым агент выбирает действия. Проще говоря, политика говорит агенту, что делать в каждом состоянии.
- Функция ценности (Value Function) — инструмент оценки политики: она предсказывает, какую суммарную награду в долгосрочной перспективе можно получить, начиная с текущего состояния. Функция ценности помогает агенту учитывать не только награду текущего шага, но и лучше взвешивать краткосрочную и долгосрочную выгоду.
- Модель (Model) — в некоторых системах обучения с подкреплением строят модель среды, которая помогает агенту предвидеть последствия своих действий. Это очень полезно во многих сложных вычислительных задачах.
flowchart TB A["Агент (Agent)"] -- "действие a_t" --> E["Среда (Environment)"] E -- "состояние s_t" --> A E -- "награда r_t" --> A
Эти элементы работают вместе и помогают агенту, постоянно пробуя и ошибаясь в виртуальной среде, выучить наилучшую стратегию поведения. В обучении с подкреплением агент — субъект обучения и принятия решений. Он взаимодействует со средой так:
- Наблюдает состояние: сначала агент видит текущее состояние (State).
- Выбирает действие: по наблюдаемому состоянию и заданной политике агент выбирает действие (Action).
- Выполняет действие: агент совершает выбранное действие.
- Получает награду и новое состояние: после действия агент получает от среды соответствующую награду (Reward) и обновлённое состояние (State).
- Обновляет политику: агент использует полученную награду, чтобы скорректировать политику и в будущем получать лучшие результаты.
Процесс повторяется снова и снова: в многократном взаимодействии агент улучшает политику, и цель — чтобы в данной задаче он действовал всё лучше и лучше.
6.4.2 Цель обучения с подкреплением
Заголовок раздела «6.4.2 Цель обучения с подкреплением»Цель обучения с подкреплением очень ясна: многократно пробуя и обучаясь в данной среде, научить агента выбирать последовательность действий, которая максимизирует его суммарную накопленную награду. Звучит, пожалуй, абстрактно — сравним с компьютерной игрой. В игре цель игрока — серией действий (ходить, прыгать, бить монстров) набрать много очков или пройти уровень. В обучении с подкреплением высоким очкам или прохождению уровня соответствует «максимизация награды».
Математически цель можно записать как обучение политики , при которой действия агента во всех состояниях максимизируют математическое ожидание отдачи . Конкретно мы хотим максимизировать такое ожидание:
где:
- — математическое ожидание отдачи траектории при политике ;
- — отдача траектории , то есть сумма всех наград от начального до конечного состояния;
- — траектория, то есть последовательность состояний и действий агента в среде;
- — вероятность породить траекторию при параметрах ; обычно её задаёт политика или сеть-политика;
- — параметры политики, которые управляют поведением политики .
Чтобы найти такую политику, используют градиентный подъём: параметры политики постоянно обновляют так, чтобы всё время росло.
Читаем формулу (от переводчика). Сумма перебирает все возможные траектории: «сколько дала траектория» × «насколько вероятно, что политика её выберет». Пример: у политики две траектории — с отдачей 1 (вероятность 0,3) и с отдачей 0 (вероятность 0,7). Ожидаемая отдача . Обучение сдвигает так, чтобы вероятность хорошей траектории росла. Как посчитать градиент этой суммы, не перебирая все траектории, — теорема о градиенте политики из урока 6.3.1.
Такой способ обучения очень эффективен, потому что не зависит от большого количества размеченных данных: он учится на прямом взаимодействии со средой и обратной связи от неё. Поэтому обучение с подкреплением показало огромный потенциал во многих сложных задачах, требующих адаптации и принятия решений, — в управлении роботами, автономном вождении, финансовой торговле и даже в играх.
А применение обучения с подкреплением в больших моделях, например AlphaGo и AlphaZero, ещё яснее показало его силу в сложных задачах. Эти модели методами обучения с подкреплением постоянно улучшали стратегию и в итоге обыграли лучших игроков-людей в го, шахматах и других играх, продемонстрировав огромный потенциал обучения с подкреплением в сложных задачах.
Примечание переводчика. AlphaGo (2016) и AlphaZero (2017) — не языковые модели, а системы для настольных игр из нейросетей и поиска по дереву (MCTS). «Большие модели» здесь в широком смысле.
Обучение с подкреплением можно применить и к задаче выравнивания предпочтений — например, научить большую модель подражать тому, как общаются люди; его используют и в автономном вождении и других областях. Применений у обучения с подкреплением очень много, и в будущем их станет ещё больше.
6.4.3 Модель награды
Заголовок раздела «6.4.3 Модель награды»В обработке естественного языка большие языковые модели (серии Llama, Qwen и другие) уже показали сильные способности к пониманию и генерации текста. Однако предобученные модели не всегда прямо отвечают конкретным бизнес-задачам и человеческим ценностям. Поэтому их обычно «дообучают на инструкциях» (Instruction Tuning): дают модели конкретные инструкции (prompts) и примеры, чтобы в диалогах, ответах на вопросы, генерации текста и других задачах она вела себя ближе к ожиданиям людей.
Закончив начальное дообучение на инструкциях, мы хотим, чтобы ответы модели были не только правильными, но и как можно лучше соответствовали человеческим представлениям о хорошем, ценностям и стандартам безопасности. Для этого ввели понятие обучения с подкреплением на основе обратной связи от людей (Reinforcement Learning from Human Feedback, RLHF). В RLHFобучение с подкреплением на основе отзывов людей (RLHF)EN reinforcement learning from human feedback (RLHF) сначала получают от людей-разметчиков их предпочтения относительно ответов модели (например, показывают несколько ответов и просят их ранжировать), а затем этой обратной связью направляют обучение модели, постоянно повышая согласие её текстов с человеческими предпочтениями.
Чтобы в процессе RLHF автоматически «оценивать» ответы модели (выдавать награду), нужна специальная модель наградымодель вознагражденияEN reward model (Reward Model). Её обучают на данных, размеченных людьми, а в реальной работе она самостоятельно и автоматически оценивает выходы модели — это снижает затраты и задержки постоянного участия людей.
6.4.4 Построение датасета
Заголовок раздела «6.4.4 Построение датасета»Прежде чем строить модель награды (Reward Model), нужно подготовить качественный датасет человеческой обратной связи. Его главная задача — для каждой заданной подсказки (prompt) дать несколько вариантов ответа (completion), которые люди-разметчики тщательно оценили и упорядочили. Сравнивая и отбирая ответы, мы получаем для модели ясный ориентир, который помогает ей дальше учиться порождать в данной задаче ответы, больше соответствующие ожиданиям людей.
Данные можно собирать так:
-
Собрать исходные ответы. Сначала из «большой модели», уже прошедшей базовое дообучение (обычно это предобученная модель с определёнными способностями понимать инструкции и генерировать текст), для набора тщательно продуманных подсказок генерируют по нескольку ответов. Они станут основой дальнейшей разметки людьми.
-
Разметить и оценить вручную. Получив несколько вариантов ответа, приглашаем профессиональных разметчиков или краудсорсинг оценить качество каждого. Оценка обычно идёт по набору заранее заданных критериев: точность ответа, полнота, уместность в контексте, беглость языка, соблюдение этических норм и правил безопасности. Сравнение и ранжирование разных ответов помогает выделить лучшие и худшие из них — так получаются ценные обучающие данные.
-
Отформатировать и упорядочить данные. После разметки данные приводят в порядок и форматируют — обычно в JSON, CSV или другой структурированный формат, удобный для обработки компьютером. В датасете нужно явно указать каждый вопрос (prompt), соответствующие ему несколько ответов (completions) и выбор разметчиков (например, лучший ответ помечают как “chosen”, худший — как “rejected”). Эти пометки прямо служат сигналом обучения для модели награды: при обучении она сама начинает склоняться к качественным ответам.
Ниже простой пример данных: два вопроса (question), ответы на них и результат оценки людьми. Сравнивая поля “chosen” и “rejected”, легко увидеть, какой ответ лучше.
[ { "question": "Что такое список в Python?", "chosen": "Список в Python — это упорядоченный изменяемый контейнер: он хранит несколько элементов, к которым можно обращаться по индексу.", "rejected": "Список в Python нужен для хранения данных." }, { "question": "Что такое кортеж в Python?", "chosen": "Кортеж в Python — это упорядоченный неизменяемый контейнер: он хранит несколько элементов, и после создания его нельзя изменить.", "rejected": "Кортеж в Python нужен для хранения данных." }]В этом примере разметчики сочли ответы в поле “chosen” лучше соответствующих “rejected” по описанию, точности и информативности. Например, в определении списка ответ “chosen” яснее объясняет свойства списка (упорядоченный, изменяемый, доступ по индексу), а не ограничивается общей фразой «нужен для хранения данных».
7.2.2 Обучение модели награды
Заголовок раздела «7.2.2 Обучение модели награды»Обучить модель награды можно с помощью фреймворка обучения с подкреплением для больших моделей TRL (Transformer Reinforcement Learning). TRL — фреймворк обучения на основе обучения с подкреплением; его цель — с помощью обратной связи от людей направлять модель к ответам, которые больше соответствуют ожиданиям людей. В TRL модель награды — это отдельный компонент, который оценивает ответы модели и по результатам оценки выдаёт награду или наказание.
На этом текст оригинала обрывается.
Продолжение от переводчика: как обучают модель награды
Заголовок раздела «Продолжение от переводчика: как обучают модель награды»Ниже — не перевод, а наше краткое продолжение, чтобы довести мысль раздела до рабочего кода.
Устройство. Модель награды — это обычно та же LLM (часто SFT-модель), у которой языковую «голову» заменили линейным слоем с одним выходом: на вход — prompt и ответ, на выход — одно число , «насколько хорош ответ».
Функция потерь. Модель учится на парах: для подсказки лучший ответ (chosen) должен получить оценку выше худшего (rejected). Потери по модели Брэдли–Терри (модель Брэдли–Терримодель Брэдли–ТерриEN Bradley–Terry modelP(A ≻ B) = σ(r_A − r_B). Та же модель стоит за рейтингом Эло и лидербордом Chatbot Arena.):
Словами: берём разность оценок, пропускаем через сигмоиду (получаем «вероятность, что chosen лучше») и штрафуем, если эта вероятность мала. Пример: , , разность 1,5, , потери . Если бы модель ошиблась и дала chosen на 1,5 меньше, потери были бы — в 8,5 раза больше.
Минимальный код на TRL. RewardTrainer ждёт столбцы chosen и rejected (и при желании prompt), поэтому
поле question из примера выше переименуем в prompt:
from datasets import Datasetfrom transformers import AutoModelForSequenceClassification, AutoTokenizerfrom trl import RewardConfig, RewardTrainer
model_name = "Qwen/Qwen2.5-0.5B-Instruct" # маленькая модель для опытаtokenizer = AutoTokenizer.from_pretrained(model_name)# num_labels=1: вместо распределения по словарю модель выдаёт одно число — наградуmodel = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=1)model.config.pad_token_id = tokenizer.pad_token_id # голове классификации нужен pad-токен
data = [ {"prompt": "Что такое список в Python?", "chosen": "Упорядоченный изменяемый контейнер с доступом по индексу.", "rejected": "Нужен для хранения данных."}, # ... здесь должны быть тысячи пар]train_dataset = Dataset.from_list(data)
args = RewardConfig(output_dir="rm-out", per_device_train_batch_size=2, num_train_epochs=1)trainer = RewardTrainer(model=model, args=args, train_dataset=train_dataset, processing_class=tokenizer)trainer.train()Дальше обученную модель награды используют в PPO (см. урок 6.3.2), а DPO обходится без неё — модель награды «прячется» внутри функции потерь (урок 6.3.3). В главе 8 книги (GRPO) модели награды тоже нет: там награду выдаёт программа-проверяльщик ответа.
Словарик
Заголовок раздела «Словарик»| English | Русский |
|---|---|
| reinforcement learning, RL | обучение с подкреплением |
| law of effect | закон эффекта |
| operant conditioning | оперантное обусловливание |
| state / action / reward | состояние / действие / награда |
| policy | политика |
| value function | функция ценности |
| agent | агент |
| trajectory | траектория |
| return | отдача |
| gradient ascent | градиентный подъём |
| RLHF | обучение с подкреплением на обратной связи от людей |
| reward model | модель награды |
| instruction tuning | дообучение на инструкциях |
| annotator | разметчик |