設定の組み合わせ方
強化学習の実行では、回答のサンプリング、スコアリング、比較、更新という1つのループを繰り返します。各設定はこのループのいずれかのポイントで作用するため、実行中のほとんどの問題はこれらの設定のいずれかに起因します。
- 01サンプリングモデルが各プロンプトに対してN個の回答を作成⚙ プロンプトあたりの回答数 · 最大回答長
- 02スコア付与評価者がすべての回答に0〜1のスコアを付与⚙ 評価者 · 判定モデル
- 03比較各スコアとグループの平均との比較⚙ 設定項目なし:グループがベースラインとなります
- 04更新平均以上の回答に向けた小さなステップ⚙ 学習率 · KL β
設定
各回答を0〜1のスコアに変換する要素: 判定モデル、参照回答との類似度、数値チェック、完全一致チェック、またはそれらの組み合わせ。これは実行全体における「より良い」の定義となるため、実際に求めるものに合わせて選択し、いくつかの回答を手動で確認してください。評価器のセクションで各オプションについて説明しています。
グレーダーにジャッジが含まれる場合、どのLLMがスコアリングを行うか。強力なジャッジはより高い信頼性で回答をランク付けします。GRPOはわずかなスコアの差であってもフルサイズの更新に変換するため、ここでは通常よりも重要になります。また、呼び出しごとのコストも高くなります。トレーニング対象とは異なるファミリーのモデルを選択し、最終評価用にはさらに別のジャッジを用意することをお勧めします。
グループサイズ:各ステップでモデルが各プロンプトに対して記述する回答の数。回答数が多いほど、どの種類の回答がより高いスコアを獲得するかが明確になり、少なくとも1つが他の回答と異なる可能性が高くなります。また、生成時間とジャッジの入力トークンも乗算されます。ジャッジは引き続きプロンプトごとに1回の呼び出しを行います。N = 2の場合、わずかな違いでも完全に+1 / −1のシグナルになります。
モデルが1回の試行で記述できる最長の回答(トークン単位)。制限に達した回答は文の途中で途切れ、通常はスコアが低くなります。これにより、ステップが無駄になるか、誤った理由で簡潔になるようモデルに学習させてしまいます。適切な回答の長さより少し長めに設定してください。1トークンは約3/4語であるため、150語の返答は約200トークンになります。思考モデルは回答前に長い推論を記述します。ScalataはRL中にこれらの思考をオフにするため、予算は回答に割り当てられます。
各更新のサイズ。RLのステップは教師あり学習のステップよりもはるかに小さくなります。シグナルのノイズが多く(正解ではなくモデル自身の試行のスコア)、モデルの変化に伴ってデータも変化するため、大きなステップを踏むと、次の回答が回復できない状態に陥る可能性があります。LoRAの場合、1e-5程度のレートから始めるのが一般的です。DeepSeekMathがそうであったように、フルウェイトのRLでは通常1e-6程度を使用します。
モデルが開始点付近にどの程度強く保持されるか。各ステップで、トレーニングされたモデルと開始時の凍結されたコピー間のKL情報量にβを掛けた値が目的関数から減算されます。0はペナルティなしを意味します。これはTRLの現在のデフォルトであり、凍結されたコピーの読み込みもスキップされます。DeepSeekMathでは0.04が使用されました。グレーダーがペナルティを科さない形で回答が逸脱し始めた場合(不自然な言い回し、フォーマットの崩れ、言語の切り替わり、一般的なスキルの喪失など)、0から引き上げてください。
実践例
- 合否判定を行う評価器と、プロンプトに対して10%の確率で正解するモデルを例に挙げます。グループ内の回答に差異がある場合にのみ、学習効果が得られます。
- N = 2の場合、すべて不合格となる確率は0.9² = 0.81、すべて合格となる確率は0.01であるため、シグナルを提供するプロンプトは約18%に留まります。
- N = 4: すべてが失敗する確率は0.9⁴ ≈ 0.66となるため、約34%がシグナルを提供します。
- N = 8: 0.9⁸ ≈ 0.43となるため、約57%がシグナルを提供しますが、生成時間はN = 4の2倍になります。
- モデルが半分の確率で正しい場合、N = 4の時点ですでに約88%のプロンプトでシグナルが提供されます(すべて合格またはすべて失敗となるのは8グループ中1グループのみです)。グループサイズを大きくすることは、良い回答が稀な場合に最も効果的です。
- 初期モデルが「Yes」または「No」をそれぞれ50%の確率で出力する決定を1つ取り上げます。
- トレーニング後、80%の確率で「Yes」と出力するようになります。初期状態からのKL = 0.8 × ln(0.8 ÷ 0.5) + 0.2 × ln(0.2 ÷ 0.5) ≈ 0.19となります。
- 99%の確信度になった場合: 0.99 × ln(0.99 ÷ 0.5) + 0.01 × ln(0.01 ÷ 0.5) ≈ 0.64となります。初期状態では未決定であった部分でモデルの確信度が高まるにつれて、コストは急速に上昇します。
- β = 0.04の場合、これらのコストはトークンあたり約0.008および0.025となり、回答のすべてのトークンにわたって加算されます。1トークンではわずかですが、回答全体のスタイルが変化した場合には顕著になります。
- 参照となる回答の平均は約120語であり、最長のもので約250語です。
- 120語 ≈ 160トークン、250語 ≈ 330トークンです。
- 384〜512トークンの制限であれば、完全な回答に十分な余裕があります。最初のステップでは切り捨てられた割合に注意してください。数パーセント以上の回答が制限に達している場合は、制限を引き上げるか、システムプロンプトでより短い回答を要求してください。
適切な初回実行
- ベースモデルがすでに質問に対して十分に回答できる場合を除き、単純なベースモデルではなく、教師あり学習の実行結果から開始してください。
- 評価器: 判定モデル(または計算用の判定モデル+数値)であり、強力かつコスト効率の高い判定モデルを使用します。
- N = 4、最大回答長は一般的な回答より少し長め、学習率はLoRAで1e-5程度、KL β = 0とします。
- 最初は小規模に: 数十個のプロンプトと1エポックで実行し、グループと報酬チャートを確認してからスケールアップしてください。
よくある間違い
- 報酬が横ばいになる問題を解決するためにNを増やすこと。モデルが良い回答をまったく生成しない場合、同じ品質で試行回数を増やしても意味がありません。より優れたモデルから開始してください。
- 最大回答長を一般的な回答よりも短く設定すること。完全な回答が途中で切られ、モデルは切り捨てられたテキストから学習することになります。
- 教師あり学習の学習率を使用すること。RLのステップが大きすぎると、数ステップでモデルの出力が破綻する可能性があります。
- 大きなKL βから開始すること。その場合、モデルはほとんど変化しません。0から開始し、回答の質が低下した場合にのみ値を上げてください。
- 評価に使用するのと同じ判定モデルで採点すること。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01GRPO TrainerHugging Face TRL docs · huggingface.coグループサイズ、補完の長さ、β、および損失のバリアントのデフォルト値と意味。
- 02DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsShao et al., 2024 · arXiv · arxiv.org元のGRPO設定: 学習率1e-6、KL係数0.04、質問あたり64個の回答。
- 03Training language models to follow instructions with human feedbackOuyang et al., 2022 · arXiv · arxiv.orgKLペナルティが、RLでチューニングされたモデルを教師あり学習の初期状態に近づけ続ける仕組み。
- 04Kullback–Leibler divergenceWikipedia · en.wikipedia.org定義、およびKLが非対称である理由。