modelscope-classroom: «PPO и GRPO»
Полный перевод короткой статьи учебника ModelScope о PPO и GRPO: интуиция «осторожного учителя кулинарии», отношение вероятностей и клиппинг, зачем DeepSeek отказался от модели ценности, схема обучения DeepSeek-R1 и выбор фреймворка — с примечаниями переводчика о неточностях оригинала.
Обучение с подкреплением — ещё одна ветвь искусственного интеллекта помимо глубокого обучения, и мыслит она иначе. Несколько примеров, где применяется обучение с подкреплением:
- автоматический поиск пути в онлайн-играх;
- робот, который переносит камень;
- AlphaGo, играющая в го.
Основная идея обучения с подкреплением: агент выбирает действие, получает информацию от среды и по текущей награде и ожидаемой будущей награде выбирает следующее действие — и так по кругу.
В последние годы обучение с подкреплением всё чаще применяют к большим моделям, потому что генерация токенов большой моделью по сути тоже идёт шаг за шагом — токен за токеном.
PPO: проксимальная оптимизация политики
Заголовок раздела «PPO: проксимальная оптимизация политики»Представьте, что вы учитесь готовить, и у вас очень осторожный учитель.
Ситуация. Вчера вы научились готовить жареный рис с яйцом, а сегодня хотите освоить новые приправы. (Модель уже предобучена, а теперь мы хотим подправить манеру её ответов.)
Ученик. Сегодня я добавлю кучу новых приправ! (Я буду менять параметры модели и сдвигать распределение её ответов!)
Учитель. Погоди, не меняй слишком много. Вчера ты положил ложку соли — вышло хорошо. Сегодня клади не больше 1,2 ложки, а не сразу две, иначе испортишь блюдо. (Не уходи далеко от текущих параметров модели, чтобы не забыть знания и не развалить обучение, — отсюда «проксимальная», то есть «ближняя», оптимизация политики.)
Математика PPO
Заголовок раздела «Математика PPO»Выборка по значимости
Заголовок раздела «Выборка по значимости»У классического градиента политики есть проблема: данные собирает старая политика , а обновляем мы новую политику .
Исправляем это с помощью выборки по значимостивыборка по значимости (importance sampling)EN importance samplingПеревзвешивание сэмплов старой политики отношением π_new / π_old — основа PPO.:
Определяем отношение вероятностей (коэффициент выборки по значимости):
PPO-Clip
Заголовок раздела «PPO-Clip»Целевая функция PPO:
где:
- — функция преимуществапреимущество (advantage)EN advantageA = r − b или A(s, a) = Q(s, a) − V(s): насколько действие лучше среднего в этой ситуации.: насколько действие лучше среднего;
- — параметр обрезки, обычно 0,1 или 0,2;
- функция clip ограничивает отношение диапазоном .
Подробное объяснение
Заголовок раздела «Подробное объяснение»Когда (хорошее действие):
- если : новая политика слишком сильно повысила вероятность этого хорошего действия — обрезаем;
- если : новая политика слишком сильно понизила вероятность этого хорошего действия — тоже обрезаем.
Когда (плохое действие):
- если : новая политика слишком сильно повысила вероятность плохого действия — обрезаем;
- если : новая политика слишком сильно понизила вероятность плохого действия — тоже обрезаем.
Так обновления политики не бывают слишком резкими.
(В оригинале здесь две картинки: формула PPO и схема «PPO против GRPO» из статьи DeepSeekMath. На схеме видно: у PPO есть модель ценности, которая оценивает каждый шаг, у GRPO её нет — вместо неё группа ответов на один вопрос и сравнение наград внутри группы.)
GRPO происходит из статьи DeepSeekMath команды DeepSeek.
Зачем нужен GRPO
Заголовок раздела «Зачем нужен GRPO»- Модель ценности (Value Model) в PPO поначалу неточна и обучается одновременно с моделью политики (Policy Model), что может вызывать нестабильность обучения.
- Дополнительная модель ценности усложняет инженерию крупномасштабного обучения и увеличивает расход ресурсов.
- Людям проще судить об относительных величинах, чем об абсолютных. Поэтому точно оценить ответ абсолютным баллом при разметке трудно, а RL-обучению нужно только относительное преимущество — значит, проще заменить оценку выборкой.
Главная идея GRPO — заменить абсолютную оценку относительным преимуществом внутри выборки. Приведём процесс обучения DeepSeek с GRPO:
- Сначала собирают немного качественных данных для холодного старта (несколько тысяч примеров) и дообучают на них модель DeepSeek-V3-Base — получается модель A.
- Модель A обучают с GRPO, чтобы у неё проявилась способность к рассуждениям; сошедшаяся модель — B.
- Модель B генерирует качественные данные для SFT; их смешивают с качественными данными других областей, сгенерированными DeepSeek-V3, — получается качественный датасет.
- На этом датасете обучают исходную DeepSeek-V3-Base — модель C.
- С моделью C снова проходят шаг 2, но уже на данных всех областей; сошедшаяся модель — D, это и есть DeepSeek-R1.
- Данными, на которых обучали модель C, дистиллируют маленькие модели — и это тоже работает очень хорошо.
Приведём ключевые места из статьи:
Функция ценности в PPO обычно — ещё одна модель того же размера, что и модель политики, а это огромная нагрузка на память и вычисления. Кроме того, при RL-обучении функция ценности служит базовой линией (baseline) при вычислении преимущества, чтобы снизить дисперсию. А в контексте больших языковых моделей оценку от модели награды обычно получает только последний токен, и это может усложнять обучение функции ценности, точной на каждом токене. Чтобы решить эту проблему, как показано на рисунке 4, мы предлагаем оптимизацию политики с групповой относительностью (GRPO): она убирает нужду в дополнительной аппроксимации функции ценности, как в PPO, а в качестве базовой линии использует среднюю награду нескольких выборочных ответов на один и тот же вопрос. Точнее, для каждого вопроса GRPO выбирает из старой политики группу ответов и оптимизирует модель политики, максимизируя следующую цель:
(В оригинале — картинка с этой формулой.)
… Групповой относительный подход GRPO хорошо согласуется со сравнительной природой моделей награды: модели награды обычно обучают на датасетах сравнений разных ответов на один и тот же вопрос. Заметим также, что GRPO не добавляет штраф KL в награду, а регуляризует, добавляя KL-расхождение между обучаемой и референсной политикой прямо в функцию потерь, — это не усложняет вычисление . В отличие от штрафа KL в PPO, мы оцениваем KL-расхождение следующей несмещённой оценкой (Schulman, 2020):
(В оригинале — картинка с этой формулой; это оценка k3оценка KL «k3»EN k3 KL estimatorρ − log ρ − 1, где ρ = π_ref / π_θ: несмещённая оценка KL(π_θ ‖ π_ref) по сэмплу, всегда ≥ 0. В verl — kl_loss_type=low_var_kl., она всегда неотрицательна.)
… Для каждого вопроса из старой модели политики выбирается группа ответов . Затем модель награды оценивает ответы, давая соответствующих наград . После этого награды нормируют: вычитают среднее по группе и делят на стандартное отклонение группы. Контроль по результату даёт нормированную награду в конце каждого ответа , и преимущество всех токенов ответа полагается равным нормированной награде: , после чего политику оптимизируют, максимизируя цель из формулы выше.
GRPO снял огромные затраты на разметку данных для дообучения с подкреплением, упростил требования к формату датасета и само обучение — это одна из важных причин, почему DeepSeek-R1 так прогремела.
Выбор фреймворка обучения
Заголовок раздела «Выбор фреймворка обучения»Выберите подходящий вам фреймворк. Несколько хороших открытых вариантов:
- SWIFT: поддерживает предобучение (PT), SFT, RLHF, мультимодальные модели, Megatron, дистилляцию, GRPO, отбор с отклонением (rejection sampling) и др.;
- veRL: крупномасштабное RL-обучение, особенно в связке Megatron + Ray;
- OpenRLHF: аналог veRL, крупномасштабное RL-обучение, особенно Megatron + Ray;
- TRL: фреймворк сообщества Hugging Face, прост в использовании, подходит для небольшого RL-обучения.