Prompt Augmentation Scales up GRPO:多様な推論テンプレートによる数学訓練の安定化

Tech

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

Prompt Augmentation Scales up GRPO:多様な推論テンプレートによる数学訓練の安定化

【要点サマリ】 DeepSeekが提唱したGRPOを、多様なシステムプロンプトによる拡張で強化し数学的推論能力を飛躍させる新手法を解説。

  • 解決した課題:GRPO学習における出力パターンの硬直化(モード崩壊)と、複雑な数学問題での学習の不安定さを解消。

  • 改善指標:GSM8KおよびMATHベンチマークにおいて、標準的なGRPOと比較して収束速度が最大1.5倍向上。

  • 核心技術:単一の推論指示ではなく、複数の異なる思考テンプレートを混ぜることで報酬信号の質(分散)を改善。

【背景と最新動向】

2024年初頭、DeepSeek-V3の登場とともに注目を浴びたGRPO(Group Relative Policy Optimization)は、従来のPPO(Proximal Policy Optimization)から「価値関数(Value Function)モデル」を排除し、グループ内相対評価で強化学習を行う革新的な手法です。しかし、2025年現在の最新トレンドでは、モデルが「特定の正解パターン」に過学習し、推論の多様性が失われる課題が指摘されていました。

本論文「Prompt Augmentation Scales up GRPO」は、学習時に投入するプロンプトを動的に拡張(Augmentation)することで、強化学習の探索効率を劇的に改善するアプローチを提案しています。

【アーキテクチャ・仕組み】

従来、GRPOでは同一のプロンプト $q$ に対して複数の回答 ${o_1, o_2, …, o_G}$ を生成し、その平均スコアからの乖離で報酬を決定していました。本手法では、入力 $q$ に対して異なる「推論スタイル(例:ステップバイステップ、簡潔に、厳密な証明形式など)」を付与し、グループ内の出力を意図的に多様化させます。

graph TD
    A["Original Question"] --> B{"Prompt Augmenter"}
    B -->|Template A| C1["System Prompt 1"]
    B -->|Template B| C2["System Prompt 2"]
    B -->|Template N| C3["System Prompt N"]
    C1 --> D["LLM Policy"]
    C2 --> D
    C3 --> D
    D --> E["Group of Responses"]
    E --> F["Relative Reward Calc"]
    F --> G["Policy Update"]

GRPOの目的関数は以下のように定義されますが、本手法では期待値 $\mathbb{E}$ の計算対象にプロンプト変異 $a \in \mathcal{A}$ が加わります。

$$J_{GRPO}(\theta) = \mathbb{E}_{q \sim P(Q), a \sim \mathcal{A}, {o_i}_{i=1}^G \sim \pi_{\theta_{old}}} \left[ \frac{1}{G} \sum_{i=1}^G \left( \min \left( r_{\theta} \hat{A}_i, \text{clip}(r_{\theta}, 1-\epsilon, 1+\epsilon) \hat{A}_i \right) – \beta D_{KL}(\pi_{\theta} \| \pi_{ref}) \right) \right]$$

ここで、$\hat{A}_i$ はグループ内の相対的なアドバンテージ(優位性)であり、プロンプト拡張によってこの値の「質」が向上します。

【実装イメージ】

以下は、PyTorchとHugging Faceのエコシステムを想定した、プロンプト拡張の最小実装例です。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

def augment_prompt(question, template_id):
    templates = [
        "Please solve this math problem step by step: ",
        "Provide a concise solution for: ",
        "Using formal logic, derive the answer for: ",
        "Explain your reasoning like a teacher: "
    ]
    return f"{templates[template_id % len(templates)]}{question}"

def generate_group_samples(model, tokenizer, question, group_size=8):
    prompts = [augment_prompt(question, i) for i in range(group_size)]
    inputs = tokenizer(prompts, return_tensors="pt", padding=True).to(model.device)

    # グループ内で異なるプロンプトを使用して生成

    outputs = model.generate(
        **inputs, 
        max_new_tokens=512, 
        do_sample=True, 
        temperature=0.9
    )
    return tokenizer.batch_decode(outputs, skip_special_tokens=True)

# 擬似的な学習ループの一部


# responses = generate_group_samples(policy_model, tokenizer, "What is the integral of x^2?")

【実験結果と考察】

論文内の評価データによると、プロンプト拡張(PA)の有無で以下の性能差が確認されています。

手法 GSM8K (Accuracy) MATH (Accuracy) 学習収束速度 (Steps)
Baseline GRPO 78.2% 42.5% 1,000
GRPO + Prompt Aug (PA) 84.5% 51.2% 650
PPO (Standard) 80.1% 45.0% 1,500

考察: プロンプト拡張を導入することで、モデルは「特定の言い回し」に依存しない汎用的な推論能力を獲得します。特に、難易度の高いMATHデータセットにおいて、異なる視点からの解法をグループ内で比較できることが、勾配の安定化(学習のブレを抑えること)に寄与していると考えられます。

【限界と今後の展望】

  • 現在の制約:プロンプトテンプレートの選定がヒューリスティック(経験則)に依存しており、最適なテンプレートセットを自動生成する手法は未確立です。

  • 今後の展望:今後は「メタ学習」を用いて、学習中のモデルの弱点に応じたプロンプト拡張を動的に生成する、Self-Adaptive Prompt Augmentationへの進化が期待されます。

参考文献


注釈:

  • GRPO: クリティカルモデル(価値関数)を置かず、生成された回答群の平均から各回答の良さを判定する強化学習手法。

  • モード崩壊: モデルが多様な回答を生成できなくなり、同じような(しばしば誤った)回答ばかりを出力する現象。

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

コメント

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