1. はじめに / 背景
本記事は、日本語医療特化型LLMの開発プロジェクトにおいて、モデルの強化学習(GRPO)を担当した際の以下の経験をまとめたものです。
- アドバンテージ崩壊(advantage collapse)という失敗モードに直面したこと
- 学習データの難易度を調整してそれに対処したこと
まとめるに当たって、主に2つの論文を参照しました。
1本目は、アドバンテージ崩壊の度合いをACR(Advantage Collapse Rate)として定量化した論文(以下、ACR論文)です。この論文は、中難易度の問題を選ぶことによって、この崩壊が緩和されうることを示唆しています。
2本目は、訓練対象モデル自身が正答した数によって、問題の難易度をL1–L6に分類する方法を提案したAlphaMedです。
TL;DR
- 医療ドメインのGRPOで、難易度に関係なく全問題で学習すると、バッチの約4分の3のグループで8つの回答の報酬がすべて同じになり、学習信号が失われていた(アドバンテージ崩壊)
- ms-swiftの実装で、動的サンプリング(§2.4)を有効にしていても、毎回動的サンプリングに失敗し、崩壊したグループを含むバッチで学習していた
- 難易度で問題の分類を行い、学習前のモデルが5回とも正解・5回とも不正解だった問題を除外すると、動的サンプリングが毎回成功するようになった
- 動的サンプリングを有効にしている場合、
frac_reward_zero_std=0は、「崩壊が起きなかった」ではなく「動的サンプリングが成功した」という意味になるため、読み方に注意する
※本記事では、アドバンテージ(Advantage)が0でなく勾配に寄与する状態を「学習信号がある」と呼んでいます(ACR論文の"learning signal"、"gradient signal"に対応)。
2. GRPOのアドバンテージ崩壊(1本目:ACR論文)
2.1 GRPOの学習信号はグループ内の報酬の差から生まれる
GRPO(Group Relative Policy Optimization)は、DeepSeekMath(Shao et al., 2024)で提案された強化学習の手法です。GRPOのベースにあたるPPOでは、将来得られる累積報酬の期待値を予測する価値モデル(critic)を用いてAdvantage(その回答が期待よりどれだけ良かったか)を推定します。一方、GRPOは価値モデルを使いません。GRPOがAdvantageを計算する手順は次のとおりです。
- 1つの問題(プロンプト)に対して、モデルにG個の回答を生成させる(本実験ではG=8)。このG個の回答をまとめて「グループ」と呼ぶ
- 各回答に報酬 $r_i$ を与える。本実験では、最終解答が正解なら1、不正解なら0とするルールベースの報酬を用いる1
- グループ内の報酬の平均と標準偏差を使って、各回答のAdvantage $A_i$ を計算する
A_i = \frac{r_i - \mathrm{mean}(r_1, \dots, r_G)}{\mathrm{std}(r_1, \dots, r_G)}
以上のようにGRPOは、同じ問題に対して複数の回答を生成し、正誤判定(あるいは報酬モデル)で評価した報酬の平均と標準偏差から、相対的なAdvantageを計算します。グループ内の報酬の平均は、その問題で期待される報酬を、G個の回答から見積もった値です。つまりGRPOは、価値モデルに予測させる代わりに、実際に生成した回答グループを用いて期待報酬を推定していると言えます。
Advantageが正の回答は「グループの平均より良かった回答」です。この回答を生成する確率2を「上げる」方向に、モデルの重みが更新されます(本実験ではLoRAで学習しているため、更新されるのはLoRAアダプタの重み)。Advantageが負の回答は「平均より悪かった回答」で、生成する確率を「下げる」方向に更新されます。
具体例を示します。8つの回答(G=8)のうち5個が正解だったとすると、グループの平均は5/8 = 0.625です。
| 回答 | 報酬 | Advantage(標準偏差で割る前) | 更新の方向 |
|---|---|---|---|
| 正解(5個) | 1 | 1 − 0.625 = +0.375 | 生成確率を上げる |
| 不正解(3個) | 0 | 0 − 0.625 = −0.625 | 生成確率を下げる |
正解の5個は生成確率を上げる方向に、不正解の3個は下げる方向に、重みが更新されます。
ここで正解数(k)を変えると、次のようになります。
| 正解数k(8回中) | グループの平均 | 正解のAdvantage | 不正解のAdvantage |
|---|---|---|---|
| 1 | 0.125 | +0.875 | −0.125 |
| 4 | 0.5 | +0.5 | −0.5 |
| 7 | 0.875 | +0.125 | −0.875 |
8回中1回しか正解できない難しい問題では、正解の回答の勾配には係数+0.875が、不正解の各回答の勾配には係数−0.125が掛かって、足し合わされます。逆に、8回中7回正解できる易しい問題では、正解の各回答の勾配に+0.125、不正解の回答の勾配に−0.875が掛かります。グループの中で少数派の回答ほど、Advantageの大きさ(正負を問わない値の大きさ)が大きくなります。
標準偏差で割るかどうかは設定によって変わります(ms-swiftではscale_rewardsで指定する)。割ってもAdvantageの大きさが変わるだけで、正負の符号は変わりません。
このようにGRPOでは、報酬の値そのものではなく、「グループ内の報酬の差」が学習信号の元になっています。
一方、グループ内の8つの回答がすべて同じ報酬だったらどうなるかを次節で説明します。
2.2 アドバンテージ崩壊とACR
§2.1の表に、正解数k=0とk=8の行を加えてみます。
| 正解数k(8回中) | グループの平均 | 正解のAdvantage | 不正解のAdvantage |
|---|---|---|---|
| 0 | 0 | (正解なし) | 0 − 0 = 0 |
| 8 | 1 | 1 − 1 = 0 | (不正解なし) |
上の表のように、8つの回答すべてに同じ報酬が割り当てられると、グループの平均は個別の報酬と等しくなり、どの回答でも「報酬 − 平均」が0になります。そのため、8個の回答の勾配にはすべて係数0が掛かり、この崩壊したグループは重みの更新に寄与しません3。
モデルにとって難しい問題のときほど全問不正解が起きやすい一方、易しい問題ほど全問正解が起きやすくなります。グループ内の報酬の差がなくなって学習信号が失われるこの現象は、「アドバンテージ崩壊(advantage collapse)」と呼ばれています。ACR論文は、この現象の度合いを定量化する指標として、ACRを提案しました。
ACR(Advantage Collapse Rate)とは、「バッチ内のグループのうち、報酬がすべて同じだったグループの割合」のことを指しています。以下が定義式です(ACR論文の定義4.1)。
\mathrm{ACR} = \frac{1}{N} \sum_{j=1}^{N} \mathbb{I}\left(\sigma_{j} < \tau\right)
ここで、$N$はバッチ内のグループの数、$\sigma_j$ はj番目のグループの報酬の標準偏差(論文では$\sigma_{R_j}$と表記)、$\mathbb{I}(\cdot)$ は条件を満たせば1、満たさなければ0を返す指示関数、τは計算上の誤差で標準偏差がわずかに0からずれても0とみなすための、微小な閾値(論文では10⁻⁶)です。
ACR論文は、モデル規模・難易度・グループサイズの組み合わせを変えた245通りの設定で学習を行い、学習の最初の100ステップの平均ACRが高い設定ほど、最終的な精度(MATH-500)が低くなることを示しました(相関係数r=−0.785)。つまりACRは、学習の初期に問題のある設定を見つけるための指標として利用できます。
本実験で使ったフレームワークms-swiftが記録するfrac_reward_zero_stdは、ACRと実質的に同じ定義の指標に当たります(§4.3)。
では、どうすればACRを下げられるのか。
モデルがその問題に1回で正解する確率を$p$とすると、全問正解・全問不正解になる確率は、$P(\text{崩壊}) = p^G + (1-p)^G$で表されます。ACR論文の付録Fに、ACRに影響する要因として次の4つが挙げられています。
- 問題の難易度($p$に影響)
- モデルのサイズ($p$に影響。大きいほど良いとは限らず、問題の難易度と関連する)
- サンプリング温度($p$に影響)
- グループサイズ$G$
本記事では、この中の「問題の難易度」に注目します(§2.3)。また、§2.4では崩壊したグループを後から取り除く方法(動的サンプリング)にも触れます。
2.3 中難易度で崩壊が減る理由
下記の表は、§2.2の式 $P(\text{崩壊}) = p^G + (1-p)^G$ に、本実験の$G$=8を代入して計算した結果です。式は$p$と$1-p$について対称なので、$p$が0.1の問題と0.9の問題は「崩壊する確率」が同じ値になります。
| 1回で正解する確率p | 崩壊する確率 |
|---|---|
| 0.05または0.95 | 0.66 |
| 0.1または0.9 | 0.43 |
| 0.2または0.8 | 0.17 |
| 0.3または0.7 | 0.06 |
| 0.5 | 0.008 |
$p$が1に近いと全問正解の確率$p^G$が、0に近いと全問不正解の確率$(1-p)^G$が大きくなります。一方、$p$が0.5に近いと、どちらも小さくなります。そのため、$p$が0や1に近い問題ほど崩壊しやすく、0.5に近い中難易度の問題ほど崩壊しにくくなります。
ACR論文では、7段階の難易度で分けた問題を学習させて、易しい問題と難しい問題ではACRが高く、中難易度の問題ではACRが最も低くなること(U字型の関係)を示しました。そのうえで、「中難易度の問題を選ぶカリキュラム学習は、アドバンテージ崩壊を緩和しうる」ことを示唆しています(ACR論文の付録G.4)。
本実験は、ACR論文の公開前に行われたものですが、中難易度の問題を学習データに選ぶという示唆と同じ方針をとっています。§3では本実験で行った難易度分類の方法を説明します。
2.4 代表的な対策:DAPOの動的サンプリング
§2.3の表を見ると、中難易度の問題を選んでも、崩壊が起きる確率は0にはなりません。$p$=0.8の問題でも、17%の確率で8つの回答すべてが正解になります。学習中に残る崩壊グループへの代表的な対策が、DAPOで提案された動的サンプリング(dynamic sampling)です。手順は次のとおりです。
- バッチ内の各問題について、G個の回答を生成して採点する
- グループ内で全問正解・全問不正解の問題を除外する
- バッチ1つ分の問題を追加で取り出し、それぞれG個の回答を生成して採点する。崩壊していないグループがバッチ1つ分たまるまで繰り返す
崩壊していないグループでバッチが埋まれば、バッチ内のすべてのグループから学習信号が得られます。DAPO論文の方法では、「バッチが埋まるまで」動的にサンプリングを続けます。
本実験で用いたms-swiftにも動的サンプリングの実装が用意されています。ただしms-swiftの実装は、再サンプリング(学習データから別の問題を取り出し、回答を生成し直すこと)を上限回数(max_resample_times)で打ち切り、それでもバッチが埋まらなければ、警告を出して、最初に生成したバッチに戻り、崩壊したグループも含めてそのまま学習します。そのため、ACRが高く、再サンプリングしてもバッチが埋まらない場合は、動的サンプリングを有効にしていても、崩壊したグループを含むバッチで学習することになります。本実験では、動的サンプリングを有効にして学習しています(§4.2)。
3. 難易度の測り方(2本目:AlphaMed)
3.1 AlphaMed方式のL1–L6分類
AlphaMed(arXiv:2505.17952)は、ルールベースの報酬による強化学習だけで、医療LLMの推論能力を引き出せることを示した研究です。この研究では、データの量・多様性・難易度が推論能力にどう影響するかを分析しています。難易度の分析では、次の方法で問題の難易度を定量化しています。
- 学習するモデル(AlphaMedのベースであるLlama3.1-8B-Instruct)に、問題ごとに5つの回答を生成させる
- 5つの回答の正解数で、問題をL1〜L6の6段階に分ける
| レベル | 5回中の正解数 |
|---|---|
| L1 | 5 |
| L2 | 4 |
| L3 | 3 |
| L4 | 2 |
| L5 | 1 |
| L6 | 0 |
5回の回答の正答率(正解数÷5)は、§2.3の「1回で正解する確率$p$」を、学習するモデル自身の5回の回答から推定した値です。L1(5回とも正解)の問題は$p$が1に近く、L6(5回とも不正解)の問題は$p$が0に近いと考えられます。§2.3の表では、$p$が0や1に近いほど崩壊する確率が高くなり($p$が0.05または0.95で0.66)、L1とL6は学習中に崩壊しやすい問題と見なせます。
3.2 本実験での適用
本実験では、AlphaMed方式の難易度分類を行いました。学習するモデル(Qwen3-235B-A22Bに医療ドメインの継続事前学習を行ったモデル)に、専門医試験と医師国家試験(IgakuQA)の各問題について5つの回答を生成させ、正解数でL1〜L6に分けました。そのうえでL1とL6を除外し、L2〜L5の問題だけを学習データに採用しました。
| データ | 問題数 | L1 | L2 | L3 | L4 | L5 | L6 |
|---|---|---|---|---|---|---|---|
| 専門医試験 | 3,713 | 2,164 | 294 | 223 | 180 | 216 | 636 |
| 医師国家試験(2001〜2022年) | 8,095 | 7,061 | 325 | 154 | 119 | 150 | 286 |
モデルの5回の回答がすべて正解だった(L1)問題は、専門医試験では58%、医師国家試験では87%に上りました。L2〜L5の問題数は、専門医試験で913問、医師国家試験で748問でした。
※その後、人手による確認で一部の問題を除いたため、学習データの問題数(専門医試験846問、医師国家試験743問)は、これより若干少なくなっています。
この難易度は学習を始める前のモデルで測ったもので、学習中には測り直していません。
3.3 AlphaMedとの違い:両端(L1・L6)を除く判断
AlphaMedは、難易度ごとに分けたデータで学習した実験から、「Mixed difficulty training is crucial for generalizable reasoning」(推論の汎化能力にとって難易度を混合した訓練が重要である)と結論し、最終的な学習データにはL1〜L6のすべてのレベルの問題を使用しています。本実験は、L2〜L5の4つのレベルの問題を混ぜている点ではこれと同じですが、崩壊を減らすために両端のL1とL6を除いている点でAlphaMedの実験と異なります。両端を除いたことが汎化に与える影響は、本実験では評価していません。
4. 実験設定
4.1 比較した3条件
学習データが異なる3つの条件でモデルを学習し、学習中の指標の推移を比較しました。
| 条件 | 学習データ |
|---|---|
| L1–L6 | 専門医試験のすべての問題 |
| L2–L5 | 専門医試験のL2〜L5の問題 |
| L2–L5+IgakuQA | 専門医試験と医師国家試験のL2〜L5の問題 |
4.2 学習設定
3つの条件に共通する主な設定は次のとおりです。
- モデル:Qwen3-235B-A22Bに医療ドメインの継続事前学習を行ったモデル。LoRAで学習
- アルゴリズム:GRPO、グループサイズG=8
- 報酬:「正解判定」+0.2×「長さのペナルティ」
- 正解判定:正解なら1、不正解なら0
- 長さのペナルティ(soft_overlong):回答が2,048トークン以下なら0。2,048〜4,096トークンでは、長くなるほど0から−1まで直線的に下がる
- 動的サンプリング:有効(再サンプリングの上限回数
max_resample_times=3)
4.3 モニタリングした指標
アドバンテージ崩壊の度合いを見るために、ms-swiftが記録するfrac_reward_zero_std(報酬の標準偏差が0のグループの割合。ACRと同じ定義)をモニタリングしました。ms-swiftのコードでは、次のように計算されます。
\texttt{frac_reward_zero_std} = \frac{1}{N} \sum_{j=1}^{N} \mathbb{I}\left(\sigma_j \le 10^{-8}\right)
記号の意味は§2.2のACRと同じです。異なっているのは、ACRが「$\sigma_j$ がτ未満か($\sigma_{j} < \tau$)」で判定するのに対し、frac_reward_zero_stdが「$\sigma_j$ が10⁻⁸以下か($\sigma_j \le 10^{-8}$)」で判定する点だけなので、ACRと同じ「バッチ内で報酬がすべて同じだったグループの割合」と読めます。
ただし、この指標は「動的サンプリングの処理の後」のバッチで計算されます。そのため、動的サンプリングによって、崩壊していないグループでバッチが埋まったかどうかで、frac_reward_zero_stdの値の意味が変わります。
- バッチが埋まったステップ:崩壊したグループを捨てて、崩壊していないグループだけでバッチを組むので、
frac_reward_zero_stdの値は必ず0になります(§2.4)。この0は、最初に生成したバッチのACRではなく、動的サンプリングが成功したことを示すだけです。 - バッチが埋まらなかったステップ:最初に生成したバッチに戻り、崩壊したグループも含めてそのまま学習するので、
frac_reward_zero_stdの値は、最初に生成したバッチのACRそのものです。
5. 結果
5.1 L1–L6:崩壊が続き、動的サンプリングも失敗した
L1–L6の条件では、frac_reward_zero_stdが学習の間ずっと0.72〜0.75で推移しました(図1の青線)。これは、バッチ内の約4分の3のグループで、8つの回答の報酬がすべて同じであったことを示しています。
(図1:3条件のfrac_reward_zero_stdの推移と、§5.2の上限(1−1/R≈0.67)の破線)
L1–L6の条件でも動的サンプリングを有効にしていましたが、frac_reward_zero_stdが0になるステップは一度もありませんでした。§4.3で述べたように、動的サンプリングでバッチが埋まっていれば、frac_reward_zero_stdは必ず0になるはずです。値が0になっていないということは、L1–L6の実験中、再サンプリングが上限回数に達してもバッチが埋まらず、崩壊したグループを含む最初に生成したバッチで学習していたことになります。そのため、この条件のfrac_reward_zero_stdの値は、動的サンプリングを使わなかった場合と同じく、最初に生成したバッチのACRを意味しています。
この0.72〜0.75という値は、§3.2の難易度分類で両端(L1とL6)に入った問題の割合に近い値です。専門医試験では、5回とも正解(L1)か5回とも不正解(L6)だった問題が、合わせて75%ありました。L1とL6の問題は学習中も崩壊しやすいので(§3.1)、学習前の難易度分類で両端に入った問題の割合は、学習中のACRのおおよその目安になりそうです。
5.2 動的サンプリングが機能するACRの上限
なぜ再サンプリングしてもバッチが埋まらなかったのかを、L1–L6の条件設定で考えてみます。
L1–L6の条件では、1回の生成で768個の回答を作ります(generation_batch_size=768)。1問につき8個の回答を生成するので、1回あたり96問(96グループ)分の回答を生成しています。つまり、1バッチを埋めるには、崩壊していないグループが96個必要になります。
しかし、L1–L6の条件ではACRが約0.73なので、崩壊していないグループは約27%、つまり96グループ中約26グループしかありません。動的サンプリングでは、最初に生成したバッチと再サンプリングしたバッチを合わせた3バッチ(96×3=288グループ)を評価します4。この中で崩壊していないグループの数の期待値は、L1–L6の場合、約26×3=78グループになります。78グループではバッチを埋めるのに必要な96グループに届かないため、毎回失敗してしまい、最初に生成したバッチに戻っていた、というわけです。
仮にACRが0.5なら、崩壊していないグループは1バッチあたり48グループで、3バッチでは144グループになるため、余裕を持ってバッチを埋めることができます。計算すると、ACRが約0.67のときちょうど96グループに届きます。
これを一般化すると、崩壊していないグループの割合(1−ACR)と、評価できるバッチの数R(max_resample_times=3)を掛けた値が、バッチ1つ分(=1)に届けば、バッチを埋められると言えます。
(1 - \mathrm{ACR}) \times R \ge 1 \quad \Longleftrightarrow \quad \mathrm{ACR} \le 1 - \frac{1}{R}
⟺の右側は、左側の式をACRについて解いたものです。ACRが$1-1/R$以下であれば、動的サンプリングでバッチを埋められます。つまり、$1-1/R$が、動的サンプリングが機能するACRの上限です。$R$=3の設定では、上限は$1-1/3$≈0.67です(図1の灰色の破線)。この上限は、ms-swiftの実装から本記事で導いた期待値による近似で、ACR論文に書かれたものではありません。
5.3 L2–L5:動的サンプリングが毎回成功した
L2–L5とL2–L5+IgakuQAの条件では、frac_reward_zero_stdは全ステップで0でした(図1)。§4.3で述べたように、動的サンプリングに失敗したステップでは0より大きい値が記録されるので、どちらの条件でも、動的サンプリングは毎回成功していたことになります。
どちらの条件も、難易度でL1とL6を除いたために、最初に生成したバッチのACRが§5.2の上限(約0.67)を下回り、動的サンプリングが機能するようになったと考えられます。これは、「中難易度の問題を選ぶことがアドバンテージ崩壊を緩和しうる」というACR論文の示唆(§2.3)とも整合する結果です。
ただし、この0は、崩壊したグループを捨てた後の値です(§4.3)。最初に生成したバッチのACRがいくつだったのか、つまり難易度による選別だけでACRがどこまで下がったのかは、この記録からは分かりません。
6. 考察:難易度選別と動的サンプリングは補完関係にある
難易度による選別と動的サンプリングは、どちらもアドバンテージ崩壊の対策ですが、実施するタイミングが異なります。
- 難易度による選別:学習前に、崩壊しやすい問題(L1とL6)を学習データから除いてACRを下げる(§2.3、§3)
- 動的サンプリング:学習中に、崩壊したグループを除外して、崩壊していないグループでバッチを埋める(§2.4)
§5の結果は、この2つが補完関係にあることを示しています。難易度で選別しなかったL1–L6の条件では、動的サンプリングが成功する上限(約0.67)をACRが超えていたので、動的サンプリングは毎回失敗し、崩壊したグループを含むバッチで学習していました。一方、L1とL6を除いた2つの条件では、動的サンプリングが毎回成功しました。ms-swiftのように再サンプリングの回数に上限がある実装では、動的サンプリングを有効にしただけでは対策として不十分で、難易度による選別などを用いてACRを上限より下げておく必要があります。
再サンプリングの回数に上限がない実装(DAPO原論文の方法)であれば、ACRが高くても、いずれはバッチが埋まります。ただし、ACRが高いほど生成コストは高くつきます。崩壊していないグループの割合は1−ACRなので、バッチを埋めるのに必要な生成は、平均してバッチ1/(1−ACR)個分になります(本記事での概算)。L1–L6の条件のACR(約0.73)では、バッチを埋めるために約3.7バッチ分の生成が必要です。上限のACR(約0.67)なら約3バッチ分で、ms-swiftの$R$=3の設定でぎりぎり埋められる計算です。生成のコストを抑えるには、ACRを下げておくことが望ましいと言えます。
7. まとめと今後
医療ドメインにおけるGRPOでアドバンテージ崩壊に対処した実験から、次のことが分かりました。
- 難易度に関係なく全問題で学習すると、バッチの約4分の3のグループが崩壊し、学習信号が失われていた。この割合は、学習前の難易度分類でL1とL6に入った問題の割合(75%)に近かった。→ 学習前の難易度分類によって、どのくらい崩壊するかおおよその見当をつけられそう。
- 動的サンプリングを有効にしていても、ACRが高すぎると機能しない。ms-swift(再サンプリング3回の設定)では、ACRが上限(約0.67)を超えていたため毎回動的サンプリングに失敗し、崩壊したグループを含むバッチで学習していた。
- AlphaMed方式の難易度分類でL1とL6を除くと、動的サンプリングが毎回成功するようになった。→ 難易度による選別によって、動的サンプリングが機能するようになったと考えられる。
- 動的サンプリングによって崩壊していないグループでバッチが埋まったかどうか次第で、
frac_reward_zero_stdの値の意味が変わる。→ バッチが埋まったときは必ず0になり、「崩壊が起きなかった」ではなく、「動的サンプリングが成功した」と解釈する。バッチが埋まらなかったときの値は、最初に生成したバッチのACRと解釈する。
※本記事で扱ったのは学習中の崩壊の割合で、学習したモデルの性能(汎化)を評価するものではありません。
今後は、学習中のモデルで難易度を測ることも試してみたいです。
本実験は学習前のモデルに対して難易度を測っていたので、学習が進むにつれてモデルが解ける問題の割合が変わってくると、学習中のモデルにとっての難易度と、問題にラベル付けされた難易度に食い違いが出てくると考えられます。動的サンプリングが成功している間は、このズレはfrac_reward_zero_stdに現れないため、学習中の難易度も測る必要性を感じました。
参考文献
- He et al. (2026). Advantage Collapse in Group Relative Policy Optimization: Diagnosis and Mitigation(ACR論文). arXiv:2605.21125
- Liu et al. (2025). Beyond Distillation: Pushing the Limits of Medical LLM Reasoning with Minimalist Rule-Based RL(AlphaMed). arXiv:2505.17952
- Yu et al. (2025). DAPO: An Open-Source LLM Reinforcement Learning System at Scale. arXiv:2503.14476
- Shao et al. (2024). DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300
- ms-swift(ModelScope). GitHub、GRPOのドキュメント
謝辞
この成果は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)の委託業務(JPNP25006)の結果得られたものです。
-
実際の報酬には、回答が長すぎる場合のペナルティ(soft_overlong、重み0.2)も加わります。ここでは説明を簡単にするため、0/1の報酬として扱います。詳細は§4.2で述べます。 ↩
-
ここでの「確率」は、正確には回答を構成するトークン1個あたりの平均的な生成確率(トークンごとの確率の幾何平均)です。回答全体の確率(各トークンの確率の積)は長い回答ほど小さくなるため、本実験の設定では長さで正規化した値を使います。 ↩
-
Advantageを掛ける項(方策勾配の項)に寄与しない、という意味。損失にKLペナルティ項がある場合、崩壊したグループもKLペナルティ項を通じて重みの更新に寄与します(この項ではAdvantageを掛けないため)。 ↩
-
正確には、ms-swiftは再サンプリングを3回行いますが(デフォルト設定)、評価と再サンプリングを交互に行うループなので、3回目の再サンプリングの結果は評価される前にループが終わり、捨てられます。そのため、評価されるのは、最初に生成したバッチと、最初の2回の再サンプリングで得たバッチの3つです。 ↩
