59 GRPO
Контекст
RLHF (#44) крутит PPO (#33), а PPO держит отдельную value/critic-сеть — она оценивает ожидаемую награду (baseline), чтобы снизить дисперсию advantage. На масштабе LLM критик по размеру сопоставим с самой политикой: это ×2 память и compute на RL-стадии. Дорого.
Идея и механизм
Убрать критика. Для каждого промпта старая политика сэмплит группу из G ответов; каждый получает награду (reward-модель или проверяемая награда — математика, код). Baseline — среднее награды по группе; advantage каждого ответа — насколько он лучше среднего (с нормировкой на разброс). Дальше — тот же клиппованный surrogate и KL к референсу, что в PPO, но advantage групповой-относительный. Отдельная value-сеть не нужна: сравнение нескольких ответов на один вопрос и есть оценка baseline.
обучение с подкреплением Групповой advantage вместо критика
Сэмплим G ответов \( o_1,\dots,o_G \) на промпт, награды \( r_1,\dots,r_G \). Advantage — относительно группы:
Цель — клиппованный PPO-суррогат с этим advantage плюс KL к референсной модели (\( \rho_i = \pi_\theta(o_i)/\pi_{\text{old}}(o_i) \)):
Сравните с PPO (#33): там advantage считает отдельная value-сеть (через GAE). GRPO заменяет её среднем по группе — положительный advantage у ответов выше среднего, отрицательный у тех, что ниже. Клип не даёт большим шагам разносить политику, KL держит рядом с референсом. Критик исчез, а стабилизаторы PPO остались.
Python GRPO: advantage из наград группы
def grpo_advantages(rewards): # rewards: [G] — награды ответов на ОДИН промпт
mu, sd = rewards.mean(), rewards.std() + 1e-6
return (rewards - mu) / sd # относительно среднего по группе — без критика
# обновление политики: тот же клип+KL, что в PPO, но A — групповой
# loss = -min(rho*A, clip(rho,1-eps,1+eps)*A) + beta*KL(pi||ref)
Почему это важно
GRPO удешевил RL для LLM (нет критика — вдвое меньше «тяжёлых» сетей и памяти) и стал рабочей лошадкой reasoning-RL: DeepSeekMath → R1 и волна открытых reasoning-моделей. Это открытый, воспроизводимый рецепт того, что делает o1-подобное рассуждение (#58) — из закрытого фронтира в общедоступный инструмент.
Связи
GRPO — это PPO без value-сети: тот же клиппованный surrogate и KL, но advantage берётся из среднего по группе сэмплов, а не из отдельного критика. Стабилизаторы PPO сохранены, самая дорогая деталь убрана.
Reasoning, которым славится o1, выращивают RL — и GRPO стал открытым таким движком: наградой за верный ответ он учит модель длинным самопроверяемым цепочкам. То, что o1 показал закрыто, GRPO дал воспроизвести.
Обе снимают сложность RLHF, но по-разному: DPO убирает RL целиком (classification на парах, офлайн), GRPO оставляет online-RL, но убирает критика. Отсюда разделение ролей: DPO — дешёвое preference-выравнивание, GRPO — reasoning с проверяемыми наградами, где важен онлайн-сэмплинг.
Вопросы пытливого ума
Почему критика можно выкинуть без потери — он же снижал дисперсию?
Критик нужен как baseline, вычитаемый из награды для снижения дисперсии policy-gradient. Но если насэмплировать несколько ответов на один промпт, их средняя награда — уже хороший, несмещённый baseline для этого промпта. Группа заменяет обученную value-сеть, экономя половину памяти и compute — и часто работает не хуже, особенно с проверяемыми наградами.
Тогда чем GRPO отличается от REINFORCE с baseline?
По сути это policy gradient с групповым baseline, но с двумя деталями от PPO: клип отношения вероятностей (чтобы большой шаг не разнёс политику) и KL к референсу (чтобы не уехать далеко от разумной модели). Плюс нормировка advantage на разброс группы делает его относительным и устойчивым. Это «REINFORCE, укреплённый стабилизаторами PPO, но без критика».
Где GRPO слаб?
Групповой baseline требует сэмплить несколько ответов на промпт — это стоит инференса на каждом шаге RL. Оценка advantage грубее, чем у обученного критика, и шумит на маленьких группах. И как всякий RL с наградой, GRPO чувствителен к её качеству: на «мягких» задачах без проверяемой награды нужна хорошая reward-модель со всеми её рисками (reward hacking, sycophancy — см. #44).
Что читать в оригинале
Читать выборочно: из DeepSeekMath (arXiv 2402.03300) — вывод цели GRPO и мотивацию «зачем убирать критика» (главная ценность); из отчёта R1 — как GRPO разворачивают в reasoning на проверяемых наградах. Полезно читать сразу после PPO (#33), чтобы видеть, что именно убрано и что сохранено.