GRPO (Group Relative Policy Optimization) vs PPO — чем отличается и зачем нужен?

Краткий тезис

GRPO (Group Relative Policy Optimization) — это алгоритм оптимизации политики для LLM, предложенный DeepSeek в 2025 году. В отличие от PPO (Policy Optimization|Proximal Policy Optimization]]), GRPO не требует отдельной reward model и value network, а оценивает качество ответов, сравнивая их внутри группы, сгенерированной для одного промпта. Это снижает вычислительные затраты, упрощает реализацию и повышает стабильность обучения]], особенно в задачах reasoning (например, математика, логика). GRPO стал ключевым компонентом моделей DeepSeek-R1 и DeepSeek-V3.


1. Контекст: RLHF и оптимизация политики

RLHF (Reinforcement Learning from Human Feedback) — стандартный подход для выравнивания LLM с предпочтениями человека. Он включает три этапа:

  1. SFT (Supervised Fine-Tuning) — дообучение на демонстрациях.
  2. Обучение reward model — модель, предсказывающая оценку ответа.
  3. RL-оптимизация — максимизация ожидаемой награды при ограничении отклонения от исходной политики.

На этапе RL чаще всего используется PPO, но он требует:

  • reward model (RM) для оценки каждого ответа;
  • value network (критик) для оценки преимущества (advantage);
  • сложной реализации с clipping, GAE и несколькими loss-функциями.

GRPO упрощает этот пайплайн, заменяя RM и value network на групповое сравнение.


2. PPO: как работает и в чём сложность

PPO — это алгоритм on-policy RL, который обновляет политику, ограничивая шаг изменения с помощью clipping. Для LLM он выглядит так:

  • Для каждого промпта генерируется один ответ.
  • Reward model оценивает этот ответ, выдавая скалярную награду.
  • Value network (критик) предсказывает ожидаемую награду для каждого токена.
  • Вычисляется advantage (разница между реальной наградой и предсказанной ценностью).
  • Обновляется политика (LLM) с помощью PPO-целевой функции:

[ L^{PPO}(\theta) = \mathbb{E} \left \min\left( r_t(\theta) \hat{A}_t, [text{clip}(r_t(\theta), 1-[epsilon](/wiki/Epsilon), 1+[epsilon](/wiki/Epsilon)) \hat{A}_t \right) \right] ]

где ( r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{[text](/wiki/text){old}}(a_t|s_t)} ) — отношение вероятностей.

Проблемы PPO:

  • Дорого: нужно обучать и поддерживать reward model и value network (дополнительные модели, память, вычисления).
  • Нестабильность: чувствительность к гиперпараметрам, clipping, scaling награды.
  • Сложность реализации: GAE (Generalized Advantage Estimation), несколько loss-функций (policy, value, entropy).

3. GRPO: принцип работы

GRPO (Group Relative Policy Optimization) был представлен в работе DeepSeekMath (2025) и затем использован в DeepSeek-R1. Основная идея:

  • Для каждого промпта генерируется группа ответов (например, 8–64) с текущей политикой.
  • Каждый ответ оценивается без отдельной reward model — вместо этого используется rule-based reward (например, правильность математического ответа) или learned reward model, но только для оценки, а не для обучения критика.
  • Преимущество (advantage) каждого ответа вычисляется относительно среднего по группе:

[ A_i = \frac{R_i - \mu_R}{\sigma_R} ]

где ( R_i ) — награда i-го ответа, ( \mu_R ) и ( \sigma_R ) — среднее и стандартное отклонение наград в группе.

  • Политика обновляется с помощью клиппированного surrogate loss, аналогичного PPO, но без value network:

[ L^{GRPO}(\theta) = -\mathbb{E} \left \frac{1}{G} \sum_{i=1}^G \min\left( r_i(\theta) A_i, [text{clip}(r_i(\theta), 1-[epsilon](/wiki/Epsilon), 1+[epsilon](/wiki/Epsilon)) A_i \right) \right] ]

где ( G ) — размер группы, ( r_i(\theta) = \frac{\pi_\theta([text](/wiki/text){ответ}i)}{\pi{[text](/wiki/text){old}}([text](/wiki/text){ответ}_i)} ).

Ключевые моменты:

  • Нет value networkadvantage вычисляется напрямую из наград группы.
  • Нет отдельной reward model (опционально) — можно использовать простые правила (например, совпадение с ответом в задачнике).
  • Групповая нормализация делает алгоритм устойчивым к масштабу наград.

4. Сравнение PPO и GRPO (таблица)

ХарактеристикаPPOGRPO
Необходимость reward modelДа (отдельная обученная модель)Нет (можно rule-based или легковесная модель)
Value network (критик)ДаНет
Вычисление advantageЧерез GAE с value networkНормализация по группе
Количество генераций на промпт1G (обычно 8–64)
Вычислительные затратыВысокие (RM + value network + RL)Средние (больше генераций, но меньше моделей)
СтабильностьЧувствителен к гиперпараметрамБолее стабилен за счёт групповой нормализации
Сложность реализацииВысокая (GAE, clipping, entropy bonus)Средняя (только policy loss + KL penalty)
ПамятьТребует хранения value network и RMТолько политика (LLM)
ПрименимостьУниверсальный RLHFОсобенно хорош для задач с объективной наградой (math, code)

5. Зачем нужен GRPO? Преимущества

  1. Снижение вычислительных затрат:

    • Не нужно обучать и запускать reward model (экономия GPU-часов).
    • Отсутствие value network уменьшает объём памяти и вычислений при обучении.
  2. Упрощение пайплайна:

    • Меньше компонентов — меньше точек отказа.
    • Легче воспроизвести и масштабировать.
  3. Повышение стабильности:

    • Групповая нормализация автоматически адаптирует масштаб наград, уменьшая необходимость тонкой настройки гиперпараметров.
    • Меньше проблем с расходимостью политики.
  4. Эффективность для reasoning:

    • В задачах с чёткими правилами (математика, программирование) rule-based reward даёт надёжную обратную связь без RM.
    • GRPO позволяет модели исследовать несколько путей решения и учиться на относительных сравнениях.
  5. Лучшая работа с длинными цепочками рассуждений:

    • DeepSeek-R1 показал, что GRPO эффективно обучает модель генерировать длинные CoT (Chain-of-Thought) без коллапса.

6. Математическая интуиция GRPO

Формально, GRPO для каждого промпта ( q ) генерирует группу ответов ( {o_1, \dots, o_G} ) из старой политики ( \pi_{[text](/wiki/text){old}} ). Затем для каждого ответа вычисляется награда ( R_i ) (например, 1 если ответ правильный, 0 иначе). Advantage:

[ A_i = \frac{R_i - [text](/wiki/text){mean}({R_1,\dots,R_G})}{[text](/wiki/text){std}({R_1,\dots,R_G})} ]

Целевая функция GRPO (с KL-штрафом для предотвращения слишком большого отклонения от reference policy):

[ J_{GRPO}(\theta) = \mathbb{E}{q \sim P(Q), {o_i} \sim \pi{[text](/wiki/text){old}}} \left \frac{1}{G} \sum_{i=1}^G \left( \min\left( \frac{\pi_\theta(o_i|q)}{\pi_{[text{old}}(o_i|q)} A_i, [text](/wiki/text){clip}\left( \frac{\pi_\theta(o_i|q)}{\pi_{[text](/wiki/text){old}}(o_i|q)}, 1-[epsilon](/wiki/Epsilon), 1+[epsilon](/wiki/Epsilon) \right) A_i \right) - [beta](/wiki/beta) \cdot [text](/wiki/text){KL}(\pi_\theta | \pi_{[text](/wiki/text){ref}}) \right) \right] ]

Здесь ( [beta](/wiki/beta) ) — коэффициент KL-регуляризации, ( \pi_{[text](/wiki/text){ref}} ) — исходная модель (обычно SFT-модель).

Интуиция:

  • Ответы с наградой выше среднего получают положительный advantage → их вероятность увеличивается.
  • Ответы ниже среднего — отрицательный advantage → вероятность уменьшается.
  • Клиппинг предотвращает слишком резкие обновления.
  • KL-штраф удерживает политику близко к reference, сохраняя языковые способности.

7. Пример: обучение математического reasoning с GRPO

Допустим, мы хотим обучить LLM решать уравнения. Промпт: "Решите 2x + 3 = 7."

Шаги GRPO:

  1. Генерируем 8 ответов текущей моделью.
  2. Для каждого ответа проверяем правильность (rule-based reward: 1 если ответ "x=2", иначе 0).
  3. Вычисляем среднюю награду: например, 5 из 8 правильных → mean=0.625, std≈0.48.
  4. Advantage для правильных: (1-0.625)/0.48 ≈ 0.78; для неправильных: (0-0.625)/0.48 ≈ -1.30.
  5. Обновляем политику: увеличиваем вероятность правильных ответов, уменьшаем — неправильных.

После многих итераций модель начинает стабильно генерировать правильные решения.


8. Когда выбирать PPO, а когда GRPO?

СценарийРекомендация
Есть качественная reward model (обучена на человеческих предпочтениях)PPO (или GRPO с RM)
Задача с объективной наградой (math, code, фактологическая точность)GRPO (rule-based reward)
Ограниченные вычислительные ресурсыGRPO (не требует RM и value network)
Требуется максимальная стабильностьGRPO (групповая нормализация)
Необходимо тонкое выравнивание с субъективными предпочтениямиPPO (reward model лучше улавливает нюансы)
Исследовательский проект, быстрый прототипGRPO (проще реализовать)

9. Ограничения GRPO

  • Зависимость от размера группы: слишком маленькая группа → шумные advantage; слишком большая → дорого.
  • Rule-based reward не всегда возможен: для творческих задач (письмо, диалог) нужна RM.
  • Меньше исследовано для субъективного выравнивания: PPO остаётся стандартом для RLHF с человеческими предпочтениями.
  • Риск переобучения на групповые артефакты: модель может научиться "играть" в групповую статистику.

10. Пет-проект для закрепления

Задача: Реализовать упрощённую версию GRPO для обучения небольшой LLM (например, GPT-2) на задаче генерации простых арифметических выражений с правильным ответом.

Инструменты: Python, PyTorch, Hugging Face Transformers, TRL (библиотека для RLHF).

Шаги:

  1. Подготовить датасет промптов вида "Сколько будет 2+3?" с правильными ответами.
  2. Загрузить предобученную GPT-2 (или TinyLlama).
  3. Реализовать rule-based reward: 1 если ответ содержит правильное число, 0 иначе.
  4. Написать цикл GRPO:
    • Для каждого батча промптов сгенерировать G=8 ответов.
    • Вычислить награды.
    • Нормализовать advantage.
    • Обновить модель с клиппированным loss и KL-штрафом.
  5. Оценить точность на тестовом наборе до и после обучения.

Ожидаемый результат: Модель начинает генерировать правильные ответы с высокой точностью (например, с 20% до 80%) за несколько итераций.

Дополнительно: Сравнить с PPO (используя TRL) — заметить разницу в стабильности и скорости.


11. Связь с другими вопросами

ВопросТема
327RLHF и PPO для LLM
329Reward modeling
330Direct Preference Optimization (DPO)
325Fine-tuning LLM
331Alignment и безопасность
326SFT vs RL

12. Навигация


Навигация