DeepSeek-R1を超える安定性:Prompt AugmentationによるGRPOのスケールアップ

Tech

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

DeepSeek-R1を超える安定性:Prompt AugmentationによるGRPOのスケールアップ

【要点サマリ】 多様な推論テンプレートを強化学習に導入し、DeepSeek-R1で採用されたGRPOの訓練安定性と数学的推論能力を飛躍的に向上させる手法。

  • 報酬ハッキング(特定の形式に固執して正解を導こうとする現象)を多様なプロンプトで抑制。

  • GSM8KおよびMATHデータセットにおいて、従来のGRPOを上回る収束速度とPass@1精度を達成。

  • 少数の高品質なシードデータから、LLM自身が生成した多様なテンプレートを用いて強化学習をスケーリング。

【背景と最新動向】 2025年に入り、DeepSeek-R1の登場によって「強化学習(RL)のみで推論能力を向上させる」手法が注目を集めています。特に、クリティック(評価者)モデルを排除し、グループ内の相対的な報酬を用いるGRPO (Group Relative Policy Optimization) は計算コストを大幅に削減しました。 しかし、先行研究(DeepSeek-R1-Zero等)では、特定の応答パターンへの過学習や、テンプレートの微細な変化に対する脆弱性が課題となっていました。本論文(2025年2月発表)は、訓練時にプロンプト(指示文)を動的に改変・多様化させる「Prompt Augmentation」を導入することで、この課題を解決しました。

【アーキテクチャ・仕組み】 本手法の中核は、同一の数学問題に対して複数の「考え方(System Prompt)」や「フォーマット」をランダムに適用し、グループ内で報酬を競わせる点にあります。

graph TD
    A["Original Question"] --> B{"Prompt Augmenter"}
    B -->|Template 1| C1["Group Sample 1"]
    B -->|Template 2| C2["Group Sample 2"]
    B -->|Template N| Cn["Group Sample N"]
    C1 & C2 & Cn --> D["GRPO Reward Calculation"]
    D --> E["Policy Update"]
    E -->|Feedback| B

GRPOの目的関数は以下の式で定義されます。従来のRL(PPO等)と異なり、ベースライン(価値関数)を推定する代わりに、グループ内の平均スコアからの乖離(アドバンテージ)を使用します。

$$J_{GRPO}(\theta) = \mathbb{E} \left[ \frac{1}{G} \sum_{i=1}^{G} \left( \min \left( r_i(\theta) \hat{A}_i, \text{clip}(r_i(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_i \right) \right) \right]$$

ここで、$\hat{A}_i = \frac{R_i – \text{mean}(R)}{\text{std}(R)}$ はグループ $G$ 内の相対的アドバンテージです。Prompt Augmentationはこの $R_i$ の分散を「テンプレートの差異」という形で健全に拡大し、ロバストな学習を促します。

【実装イメージ】 以下は、多様なテンプレートを用いてGRPOの学習バッチを構成する際の擬似コードです。

import torch
import random

def augment_prompt(question):
    templates = [
        f"Solve this step by step: {question}",
        f"Be concise and logical: {question}",
        f"Imagine you are a math teacher: {question}",
        f"Format your output with <thought> tags: {question}"
    ]
    return random.choice(templates)

def train_step_grpo(model, questions, group_size=8):
    batch_prompts = []
    for q in questions:

        # 1つの問題に対して複数のテンプレートを適用し、グループを作成

        group_prompts = [augment_prompt(q) for _ in range(group_size)]
        batch_prompts.extend(group_prompts)

    # モデルによるサンプリングと報酬計算

    outputs = model.generate(batch_prompts)
    rewards = compute_rewards(outputs) # 正誤判定と形式判定

    # グループ内での正規化(アドバンテージ計算)


    # rewardsの形状を(len(questions), group_size)に変形して処理

    advantages = (rewards - rewards.mean(dim=1)) / (rewards.std(dim=1) + 1e-8)

    # ポリシー更新(損失計算)

    loss = compute_grpo_loss(model, batch_prompts, outputs, advantages)
    loss.backward()

【実験結果と考察】 本手法をLlama-3-8BおよびQwen-2.5-7Bに適用した結果、一貫した性能向上が確認されました。

モデル 手法 GSM8K (Pass@1) MATH (Pass@1) 訓練の安定性
Qwen-2.5-7B Baseline (GRPO) 78.2% 42.1%
Qwen-2.5-7B Augmented GRPO 84.5% 49.8%
Llama-3-8B Baseline (GRPO) 72.1% 35.5%
Llama-3-8B Augmented GRPO 79.3% 41.2%

考察: 単一のテンプレートで学習した場合、モデルは特定のキーワード(例:「First,」「Then,」)を出すだけで報酬が得られると誤認する「ショートカット学習」に陥りやすい傾向がありました。多様なテンプレートを混ぜることで、特定の語彙に依存せず、真の推論ロジックに高い報酬が与えられるようになり、汎化性能が向上しています。

【限界と今後の展望】

  • 計算コスト: 各ステップで多様なプロンプトを処理するため、キャッシュの効率が低下し、初期のサンプリング速度が数%低下する可能性があります。

  • 今後の展望: 現在は数学に特化していますが、コーディングや法務推論など、厳密な論理が求められる他ドメインへの応用が期待されます。また、最適なテンプレート自体をLLMに自己生成させる「Self-Evolving Templates」への進化が次の焦点となるでしょう。

参考文献:

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました