リソース/モデルのトレーニング/トレーニング手法

手法

GRPOのステップバイステップ

Group Relative Policy Optimizationは、同じプロンプトに対する複数の回答をスコアリングし、グループの平均を上回るものを強化します。PPOの独立したバリューモデルを、このシンプルな比較に置き換えます。

第7章読了時間 2分参考文献 5件

GRPOの由来

GRPOは、2024年のDeepSeekMathの論文において、InstructGPTで使用されたRLHFを含む、言語モデルの初期の強化学習ファインチューニングの大部分を支えたアルゴリズムであるPPO(Proximal Policy Optimization、2017年)の軽量版として導入されました。DeepSeek-R1が大規模に採用したことで広く知られるようになり、現在ではHugging Face TRLなどのオープンソースのトレーナーや、ほとんどのRFTサービスにおいてデフォルトの強化学習手法となっています。

PPO · 学習済みベースライン
プロンプト→モデルが1つの回答を作成→報酬モデルがスコアを付与→価値モデルトークンごとに期待されるスコアを予測→アドバンテージ = スコア − 予測値

通常、価値モデルは学習対象のモデルとほぼ同じ大きさであり、並行して学習されます。

GRPO · グループベースライン
プロンプト→モデルがN個の回答を生成→評価者がそれぞれを採点→グループの平均とばらつき学習ではなく計算による算出→アドバンテージ = (スコア − 平均) ÷ ばらつき

学習やメモリに保持するための価値モデルは不要です。その代償として、プロンプトごとに1つではなくN個の回答を生成します。

PPOは、回答がどれほど優れているべきかを推測するために、2つ目のネットワークである価値モデルを必要とします。GRPOはこれを省略し、同じプロンプトに対して複数の回答をサンプリングし、その平均スコアを基準として使用します。

PPOは、生のスコアを優位性に変換するためのベースラインを必要とし、それを学習します。つまり、回答が向かっているスコアをトークンごとに予測するバリューモデル(「クリティック」)です。DeepSeekMathの著者らは、このバリューモデルは通常、トレーニング対象のモデルとほぼ同じ大きさであり、メモリと計算の負担が大きく、報酬が最後にしか得られない場合にすべてのトークンで値を予測することは困難であると指摘しています。GRPOはこれを排除します。各プロンプトに対する回答のグループをサンプリングし、そのグループ自身の平均スコアをベースラインとして使用します。

アルゴリズム

  1. プロンプトのサンプリング。 データからプロンプトのバッチを取得します。
  2. グループの生成。 各プロンプトに対して、現在のモデルはN個の回答を作成し、それらが異なるようにランダム性を伴ってサンプリングします。4〜16のグループが一般的ですが、DeepSeekMathは64を使用しました。
  3. スコアリング。 グレーダーはすべての回答に報酬(ここでは0〜1)を与えます。
  4. グループ内での正規化。 各回答の優位性は、そのスコアからグループの平均を引き、グループの標準偏差で割ったものです。回答のすべてのトークンが同じ優位性を得ます。
  5. クリップされた目的関数による更新。 正の優位性を持つ回答の確率を上げ、負の優位性を持つ回答の確率を下げますが、1つのステップで設定された比率を超えることはありません(下記参照)。
  6. オプションで、乖離にペナルティを科す。 開始モデルの凍結されたコピーからのKLダイバージェンスのβ倍を差し引きます。
プロンプトグループ平均 0.50.8回答 1+0.30.3回答 2−0.20.6回答 3+0.10.3回答 4−0.2アドバンテージ = (スコア − グループ平均) ÷ グループのばらつき
1ステップでのGRPO。モデルは同じプロンプトに4回回答し、評価者がそれぞれを採点します。すべての回答は、そのグループの平均と比較されます。平均以上のものは強化され、平均以下のものは抑制されます。
図のグループにおける、グループ相対アドバンテージ
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
4つの回答グループにおけるアドバンテージの計算
  1. 評価者は、1つのプロンプトに対する4つの回答を0.8、0.3、0.6、0.3とスコアリングします。
  2. グループ平均 = (0.8 + 0.3 + 0.6 + 0.3) ÷ 4 = 0.5。平均との差:+0.3、−0.2、+0.1、−0.2。
  3. ばらつき(4つの値の標準偏差) = √((0.09 + 0.04 + 0.01 + 0.04) ÷ 4) = √0.045 ≈ 0.21。
  4. アドバンテージ = 差 ÷ 0.21 ≈ +1.41、−0.94、+0.47、−0.94。回答1の確率が最も引き上げられ、回答3も少し引き上げられます。回答2と4は等しく引き下げられます。
  5. 一部のライブラリでは、ばらつきを計算する際にn − 1で割ります(ここでは≈ 0.24となり、+1.22、−0.82、+0.41、−0.82となります)。モデルを導く要素である符号と順位は同じです。
学習量が大きく異なる2つのグループ
  1. グループAのスコアは0、0、0、0:すべての回答が失敗しました。平均0、ばらつき0であるため、すべてのアドバンテージは0となり、このプロンプトは何も寄与しません。(実装では、ゼロ除算を防ぐためにばらつきに微小な定数を追加します。)
  2. グループBのスコアは0.61、0.60、0.60、0.59:実質的に同一です。しかし、ばらつきが非常に小さい(≈ 0.007)ため、アドバンテージは+1.41、0、0、−1.41となり、実際の差があるグループと同じくらい大きくなります。
  3. ばらつきで割ることで、ばらつきの小さいプロンプトに過大な重みが与えられ、評価者のノイズが強力なシグナルになってしまいます。これが、Dr. GRPOのバリアントが割り算を省略する理由の1つであり、大まかでも一貫したスコアを出す評価者が、正確に見えるノイズを出す評価者に勝る理由でもあります。

クリップされた目的関数(平易な解説)

優位性が判明すると、モデルは更新されます。多くの場合、同じ回答に対して数回のミニバッチで行われます。その都度、トレーナーは、現在のモデルが回答を見出す確率と、それを作成したモデルが見出した確率を比較します。ステップ開始時のこの比率は1.0です。GRPOが引き継いでいるPPOのアイデアは、比率が十分に移動した時点で評価を与えるのをやめるというものです。通常のε = 0.2の場合、平均以上の回答は確率が1.2倍を超えてもそれ以上の評価を得ることはなく、平均以下の回答は0.8倍を下回ってもそれ以上評価が下がることはありません。

信頼領域 0.8–1.20.51.0 · 変化なし1.5平均以上: 上限あり平均以下: 下限に到達回答の新しい確率 ÷ 古い確率
1つの回答に対するクリップされた目的関数。平均以上の回答(緑)は、以前の確率の最大1.2倍まで確率が高くなることに対して評価されます。平均以下の回答(ピンク)は、最小0.8倍まで確率が低くなることに対して評価されます。これらの境界を超えると勾配はゼロになるため、1つの幸運なバッチがモデルを大きく逸脱させることはありません。

その結果が信頼領域です。各ステップでは、データを生成したモデルから限られた距離しかモデルを移動させることができず、これにより、1つの幸運または不運なバッチが急激な変動を引き起こすのを防ぎます。TRLは、制限が適用された頻度をclip_ratioとして記録します。この値が高いまま推移する場合は、更新が限界に達し続けていることを意味し、多くの場合、学習率が大きすぎる兆候です。

簡略化されたGRPOの目的関数
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です。
  • 正確に見えるグレーダーを信頼すること。小さくノイズの多いスコア差が、フルサイズの優位性へと拡大されます。

参考文献および関連資料

外部ソースは新しいタブで開きます。

  1. 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%へと向上しました。
  2. 02Proximal Policy Optimization AlgorithmsSchulman et al., 2017 · arXiv · arxiv.orgGRPOが継承するクリップされた目的関数と信頼領域のアイデア。
  3. 03Understanding R1-Zero-Like Training: A Critical PerspectiveLiu et al., 2025 · arXiv · arxiv.orgGRPOの長さのバイアスを発見し、バイアスのないバリアントであるDr. GRPOを提案。
  4. 04DAPO: An Open-Source LLM Reinforcement Learning System at ScaleYu et al., 2025 · arXiv · arxiv.orgGRPOへの実用的な修正:トークンレベルの損失、非対称クリッピング、ゼロシグナルグループのフィルタリング。
  5. 05GRPO TrainerHugging Face TRL docs · huggingface.co損失のバリアント、デフォルト、およびGRPOの実行が記録する指標。

専門家が数週間かける作業を数分に短縮します

Scalataがお客様のチーム、データ、および統制にどのように適合するかをご確認ください。

営業へのお問い合わせ