GRPO(ジーアールピーオー)
Group Relative Policy Optimization の略。DeepSeek R1 の強化学習訓練に使用された PPO 改良アルゴリズム。グループ内の相対報酬を利用してバリュー関数を不要にし、メモリ効率と学習安定性を大幅に改善した。
GRPO とは
GRPO(Group Relative Policy Optimization)は、2024 年 12 月に DeepSeek AI が発表した論文「DeepSeek-R1」で提案された強化学習アルゴリズムです。
従来の RLHF で主流だった PPO(Proximal Policy Optimization)は、バリュー関数(クリティック)を別途訓練する必要があり、LLM サイズと同等のバリューネットワーク(例:70B モデルに 70B クリティック)が必要でした。GRPO はこのバリュー関数を廃止し、グループ内の相対評価で代替することでメモリと計算コストを大幅削減します。
主な特徴・仕組み
- グループサンプリング: 同一プロンプトに対して G 個(通常 8〜16)の回答を生成
- 相対報酬: グループ内の回答の平均報酬を基準として相対スコアを計算
- バリュー関数不要: クリティックモデルが不要→メモリ 50% 削減
- KL ダイバージェンス制約: 参照モデルからの逸脱を防ぐ正則化項
- ルールベース報酬: コード実行・数式検証など客観的報酬関数が特に有効
PPO vs GRPO 比較表
| 項目 | PPO | GRPO |
|---|---|---|
| バリュー関数 | 必要(同サイズモデル) | 不要 |
| メモリ消費 | 2× model | 1× model |
| 訓練安定性 | 中 | 高(グループ統計で安定) |
| グループサイズ G | — | 8〜16 |
| 主な使用例 | InstructGPT, LLaMA 2 | DeepSeek-R1, DeepSeek-Math |
| 実装複雑度 | 高(2モデル管理) | 中(1モデル) |
DeepSeek-R1 での採用実績
DeepSeek R1(2025 年 1 月公開)は GRPO を核として 4 段階の訓練パイプラインを構築した:SFT(思考連鎖データで初期化)→ GRPO 強化学習(数学・コード・論理の客観報酬)→ 拒絶サンプリング SFT(GRPO 出力から高品質データ蒸留)→ 再度 GRPO(汎用タスクも包括した最終チューニング)。この手法により 671B MoE モデルが OpenAI o1 と同等の推論性能を達成した。
実装例(Hugging Face TRL)
from trl import GRPOTrainer, GRPOConfig
config = GRPOConfig(
model_name="deepseek-ai/deepseek-r1-distill-qwen-7b",
num_generations=8,
temperature=0.7,
max_new_tokens=2048,
kl_coeff=0.04,
learning_rate=5e-7,
per_device_train_batch_size=1,
)
trainer = GRPOTrainer(
config=config,
reward_funcs=[math_reward_fn, format_reward_fn],
)
trainer.train()
よくある質問(FAQ)
Q1: GRPO は一般的な LLM ファインチューニングに使えますか? A: 数学・コード・論理など客観的な正解判定ができるタスクで最も効果的。主観的タスクには報酬モデル(RM)を別途用意する必要があります。
Q2: DPO と GRPO はどちらが良いですか? A: DPO はオフライン学習に適し実装が簡単。GRPO はオンライン強化学習で推論能力向上に特化しており、数学・コードでは GRPO が有利です。
Q3: グループサイズ G はいくつが最適ですか? A: 論文では G=8 が推奨。大きいほど分散推定精度が上がりますが計算コストも G 倍になります。メモリ制約下では G=4 でも効果があります。
まとめ
- バリュー関数を廃止してメモリ 50% 削減を実現した PPO 改良版強化学習アルゴリズム
- DeepSeek R1 の o1 レベル推論能力を支えるコア技術
- 数学・コード・論理など客観報酬が定義できるタスクで特に効果的
- TRL ライブラリで実装済み、7B〜70B モデルのファインチューニングに活用可能