GRPOの由来
GRPOは、2024年のDeepSeekMathの論文において、InstructGPTで使用されたRLHFを含む、言語モデルの初期の強化学習ファインチューニングの大部分を支えたアルゴリズムであるPPO(Proximal Policy Optimization、2017年)の軽量版として導入されました。DeepSeek-R1が大規模に採用したことで広く知られるようになり、現在ではHugging Face TRLなどのオープンソースのトレーナーや、ほとんどのRFTサービスにおいてデフォルトの強化学習手法となっています。
通常、価値モデルは学習対象のモデルとほぼ同じ大きさであり、並行して学習されます。
学習やメモリに保持するための価値モデルは不要です。その代償として、プロンプトごとに1つではなくN個の回答を生成します。
PPOは、生のスコアを優位性に変換するためのベースラインを必要とし、それを学習します。つまり、回答が向かっているスコアをトークンごとに予測するバリューモデル(「クリティック」)です。DeepSeekMathの著者らは、このバリューモデルは通常、トレーニング対象のモデルとほぼ同じ大きさであり、メモリと計算の負担が大きく、報酬が最後にしか得られない場合にすべてのトークンで値を予測することは困難であると指摘しています。GRPOはこれを排除します。各プロンプトに対する回答のグループをサンプリングし、そのグループ自身の平均スコアをベースラインとして使用します。
アルゴリズム
- プロンプトのサンプリング。 データからプロンプトのバッチを取得します。
- グループの生成。 各プロンプトに対して、現在のモデルはN個の回答を作成し、それらが異なるようにランダム性を伴ってサンプリングします。4〜16のグループが一般的ですが、DeepSeekMathは64を使用しました。
- スコアリング。 グレーダーはすべての回答に報酬(ここでは0〜1)を与えます。
- グループ内での正規化。 各回答の優位性は、そのスコアからグループの平均を引き、グループの標準偏差で割ったものです。回答のすべてのトークンが同じ優位性を得ます。
- クリップされた目的関数による更新。 正の優位性を持つ回答の確率を上げ、負の優位性を持つ回答の確率を下げますが、1つのステップで設定された比率を超えることはありません(下記参照)。
- オプションで、乖離にペナルティを科す。 開始モデルの凍結されたコピーからのKLダイバージェンスのβ倍を差し引きます。
advantage_i = (score_i − mean(group)) / std(group)
answer 1 2 3 4
score 0.8 0.3 0.6 0.3
− mean +0.3 −0.2 +0.1 −0.2 mean = 0.5
÷ std +1.41 −0.94 +0.47 −0.94 std ≈ 0.21- 評価者は、1つのプロンプトに対する4つの回答を0.8、0.3、0.6、0.3とスコアリングします。
- グループ平均 = (0.8 + 0.3 + 0.6 + 0.3) ÷ 4 = 0.5。平均との差:+0.3、−0.2、+0.1、−0.2。
- ばらつき(4つの値の標準偏差) = √((0.09 + 0.04 + 0.01 + 0.04) ÷ 4) = √0.045 ≈ 0.21。
- アドバンテージ = 差 ÷ 0.21 ≈ +1.41、−0.94、+0.47、−0.94。回答1の確率が最も引き上げられ、回答3も少し引き上げられます。回答2と4は等しく引き下げられます。
- 一部のライブラリでは、ばらつきを計算する際にn − 1で割ります(ここでは≈ 0.24となり、+1.22、−0.82、+0.41、−0.82となります)。モデルを導く要素である符号と順位は同じです。
- グループAのスコアは0、0、0、0:すべての回答が失敗しました。平均0、ばらつき0であるため、すべてのアドバンテージは0となり、このプロンプトは何も寄与しません。(実装では、ゼロ除算を防ぐためにばらつきに微小な定数を追加します。)
- グループBのスコアは0.61、0.60、0.60、0.59:実質的に同一です。しかし、ばらつきが非常に小さい(≈ 0.007)ため、アドバンテージは+1.41、0、0、−1.41となり、実際の差があるグループと同じくらい大きくなります。
- ばらつきで割ることで、ばらつきの小さいプロンプトに過大な重みが与えられ、評価者のノイズが強力なシグナルになってしまいます。これが、Dr. GRPOのバリアントが割り算を省略する理由の1つであり、大まかでも一貫したスコアを出す評価者が、正確に見えるノイズを出す評価者に勝る理由でもあります。
クリップされた目的関数(平易な解説)
優位性が判明すると、モデルは更新されます。多くの場合、同じ回答に対して数回のミニバッチで行われます。その都度、トレーナーは、現在のモデルが回答を見出す確率と、それを作成したモデルが見出した確率を比較します。ステップ開始時のこの比率は1.0です。GRPOが引き継いでいるPPOのアイデアは、比率が十分に移動した時点で評価を与えるのをやめるというものです。通常のε = 0.2の場合、平均以上の回答は確率が1.2倍を超えてもそれ以上の評価を得ることはなく、平均以下の回答は0.8倍を下回ってもそれ以上評価が下がることはありません。
その結果が信頼領域です。各ステップでは、データを生成したモデルから限られた距離しかモデルを移動させることができず、これにより、1つの幸運または不運なバッチが急激な変動を引き起こすのを防ぎます。TRLは、制限が適用された頻度をclip_ratioとして記録します。この値が高いまま推移する場合は、更新が限界に達し続けていることを意味し、多くの場合、学習率が大きすぎる兆候です。
ratio r = P_new(answer) / P_old(answer) # 1.0 when the step starts
objective min( r × A , clip(r, 1 − ε, 1 + ε) × A ) − β × KL(new ‖ reference)
A = the answer's advantage
ε = 0.2 (how far one step may move an answer's probability)
β = 0 … 0.04 (pull back toward the starting model; 0 = none)KLペナルティ
オリジナルのGRPOは、もう1つの項を追加します。それは、トレーニング中のモデルと、その開始時点の凍結されたコピー(リファレンス)との間のKLダイバージェンスのβ倍です。KLダイバージェンスは、2つの確率分布がどれだけ異なるかを測定します。ここでは、モデルの単語選択がリファレンスから乖離するにつれて増加します。βが0より大きい場合、乖離は報酬の損失となるため、モデルは元の言語やスタイルを維持しながらタスクを改善します。DeepSeekMathはβ = 0.04を使用し、ペナルティを報酬から差し引くのではなく、損失に直接追加しました。
その後の研究により、検証可能な回答を伴うタスクではペナルティが不要であることが多いと判明し、現在TRLのデフォルトはβ = 0となっています。これにより、リファレンスのコピーを読み込む必要がないため、メモリの節約にもなります。ジャッジモデルがグレーダーであり、回答が劣化し始める場合(不自然な言い回し、フォーマットの崩れ、言語の切り替わりなど)、ジャッジが罰しない可能性のある乖離に対しては、依然としてペナルティを設ける価値があります。設定方法については、RFT設定で説明しています。
既知の特異な挙動
- 長さのバイアス。 元の計算式では、各回答の損失はその長さで平均化されるため、長い誤答は短い誤答よりもトークンあたりのペナルティが少なくなります。Dr. GRPOの論文は、これが特に誤答において回答の長さを増大させることを示しました。TRLのデフォルトの損失タイプである
dapoは、代わりにバッチ内のすべてのトークンで平均化します。 - ゼロシグナルグループ。 簡単なプロンプト(すべて正答)や絶望的なプロンプト(すべて誤答)は、更新を生み出しません。TRLはそれらの割合を
frac_reward_zero_stdとして記録します。DAPOレシピは、そのようなグループを除外し、さらにサンプリングを行います。 - 生成がコストを支配する。 N個の回答をトークンごとに作成することは、各ステップの時間の大部分を占めるため、グループサイズと回答の長さが速度と価格の主な調整要素となります。
よくある間違い
- 単一のスコアを単独で読み取ること。GRPOでは、回答のスコアは同じプロンプトに対する他の回答との相対的な関係においてのみ意味を持ちます。
- 時間を節約するためにサイズ2のグループを使用すること。回答が2つの場合、評価者のノイズであっても、わずかな差が完全な+1 / −1のシグナルになります。
- 極端に簡単すぎる、または難しすぎるプロンプトを入力すること。どちらの場合も、グループ内で同一のスコアとなり、シグナルは得られません。
- KLペナルティが有効であると想定すること。現在の多くのライブラリでは、デフォルトはβ = 0です。
- 正確に見えるグレーダーを信頼すること。小さくノイズの多いスコア差が、フルサイズの優位性へと拡大されます。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsShao et al., 2024 · arXiv · arxiv.orgGRPOを導入。その強化学習ステップにより、GSM8Kは82.9%から88.2%へ、MATHは46.8%から51.7%へと向上しました。
- 02Proximal Policy Optimization AlgorithmsSchulman et al., 2017 · arXiv · arxiv.orgGRPOが継承するクリップされた目的関数と信頼領域のアイデア。
- 03Understanding R1-Zero-Like Training: A Critical PerspectiveLiu et al., 2025 · arXiv · arxiv.orgGRPOの長さのバイアスを発見し、バイアスのないバリアントであるDr. GRPOを提案。
- 04DAPO: An Open-Source LLM Reinforcement Learning System at ScaleYu et al., 2025 · arXiv · arxiv.orgGRPOへの実用的な修正:トークンレベルの損失、非対称クリッピング、ゼロシグナルグループのフィルタリング。
- 05GRPO TrainerHugging Face TRL docs · huggingface.co損失のバリアント、デフォルト、およびGRPOの実行が記録する指標。