Prompt Augmentation Scales up GRPO:多様なプロンプト拡張による大規模RLの報酬モデリング安定化

Tech

  • 語り口:技術的な正確性を重視した、極めて客観的かつ学術的なトーン。過度な修飾語を避け、能動態で事実ベースの記述を行う。

  • ターゲット:数理統計、ニューラルネットワークの基礎、そして強化学習(RLHF/PPO/DPO等)に一定の理解がある研究者およびシニアエンジニア。

  • 文字数・構成:指示された構成(1〜10)を厳密に遵守し、徹底的に専門的かつ網羅的に執筆。

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

Prompt Augmentation Scales up GRPO:多様なプロンプト拡張による大規模RLの報酬モデリング安定化

【要点サマリ】

大規模言語モデルの強化学習において、生成ステップの報酬最適化は不安定になりやすい。

  • 課題:GRPO(Group Relative Policy Optimization)等のRLアルゴリズムにおいて、テンプレートの画一性による過学習と評価不安定性が課題。

  • 解決策:推論プロンプトに多様なシステム属性や形式バリエーションを付与する「Prompt Augmentation」を提案。

  • 改善指標:数学的推論タスクにおいて、バニラのGRPOと比較して学習の収束安定性が向上し、性能(GSM8K等の精度)が最大数%向上。


【背景と最新動向】

近年、DeepSeek-R1などで採用された「GRPO(Group Relative Policy Optimization)」[1]は、価値関数モデル(Value Network)を排除し、サンプリンググループ内の相対的な報酬からアドバンテージを算出することで、GPUメモリを大幅に削減する手法として注目を集めています。

しかしながら、GRPOを用いた数学や推論(Reasoning)タスクの強化学習には致命的な課題が存在します。同一の静的プロンプトテンプレートに対して長大な思考トレース(Thought Chain)を繰り返し生成させる際、モデルが「特定の思考テンプレートや報酬関数のバグ(Reward Hacking)」に過学習を起こし、訓練プロセスが急激に崩壊(Divergence)する現象が報告されています。

2024年から2025年にかけての強化学習(RLHF/RLAIF)のトレンドは、「いかに安価に頑健な報酬フィードバックループを構築するか」に移行しています。本論文「Prompt Augmentation Scales up GRPO」は、静的なプロンプトに対して意図的に多様な「System Promptのバリエーション」や「思考フォーマットの制約(思考プロセスの記述言語や論理ステップの書式変更)」をブレンドすることで、ポリシー(Policy)の表現空間を正則化し、GRPOの訓練効率と耐過学習性をスケールアップさせるアプローチを提示しています。


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

提案手法は、バニラのGRPOが持つ「同一プロンプトに対する複数サンプリング」という枠組みを拡張し、各エピソードのサンプリング段階においてプロンプト側を動的に摂動(Augmentation)させます。

graph TD
    A["Original User Prompt"] --> B{"Prompt Augmenter"}
    B -->|Augmentation 1: Academic Style| C["Augmented Prompt 1"]
    B -->|Augmentation 2: Detail-oriented| D["Augmented Prompt 2"]
    B -->|Augmentation N: Concise Style| E["Augmented Prompt N"]

    C --> F["Policy Model: Actor"]
    D --> F
    E --> F

    F -->|Rollout Groups| G["Generated Responses y_1, ..., y_G"]
    G --> H["Reward Function / Rule-based Verifier"]
    H --> I["Group Relative Advantage Estimation"]
    I -->|Gradient Update| F

数理的定式化

GRPOでは、1つの入力プロンプト $q$ に対し、現在のポリシー $\pi_{\theta}$ から $G$ 個の出力 ${y_1, y_2, \dots, y_G}$ をサンプリングします。各出力の報酬 $r_i = D(q, y_i)$ を元に、グループ内での相対的なアドバンテージ $A_i$ を算出します。

$$A_i = \frac{r_i – \text{mean}(r)}{\text{std}(r)}$$

本手法では、入力プロンプト $q$ に対し、プロンプト拡張分布 $\mathcal{T}$ からサンプリングされた変換関数 $t \sim \mathcal{T}$ を適用し、拡張されたプロンプト $q’ = t(q)$ を作成します。目的関数は以下のようになります。

$$\mathcal{L}_{\text{PA-GRPO}}(\theta) = \mathbb{E}_{q \sim \mathcal{D}, t \sim \mathcal{T}} \left[ \frac{1}{G} \sum_{i=1}^{G} \min \left( \frac{\pi_{\theta}(y_i | t(q))}{\pi_{\theta_{\text{old}}}(y_i | t(q))} A_i, \text{clip}\left(\frac{\pi_{\theta}(y_i | t(q))}{\pi_{\theta_{\text{old}}}(y_i | t(q))}, 1-\epsilon, 1+\epsilon\right) A_i \right) – \beta \mathbb{D}_{\text{KL}}(\pi_{\theta} || \pi_{\text{ref}}) \right]$$

このように、状態空間 $t(q)$ を拡張することで、KLダイバージェンスによる正則化項 $\mathbb{D}_{\text{KL}}$ が特定のテンプレートに引きずられるのを防ぎ、多様な思考経路(Reasoning Paths)における方策(Policy)の汎化性能を向上させます。


【実装イメージ】

以下は、PyTorchおよびHugging Faceライブラリをベースとした、プロンプト拡張を伴うGRPOのデータサンプリングおよび報酬評価フェーズの最小限(Minimal)の実装コードです。

import torch
import random
from typing import List, Dict

class PromptAugmenter:
    """プロンプトに多様なスタイルや言語ルールを付与する拡張クラス"""
    def __init__(self):
        self.templates = [
            "Please solve the following problem step-by-step. Let's think step by step.\nProblem: {question}",
            "Analyze the problem carefully, write down your logical reasoning process clearly, and provide the final answer.\nProblem: {question}",
            "System: You are an elite mathematician. Solve this problem with rigorous logic.\nProblem: {question}",
            "Solve the following mathematical question. Output your inner monologue first, then the solution.\nProblem: {question}"
        ]

    def augment(self, question: str) -> str:
        template = random.choice(self.templates)
        return template.format(question=question)

def compute_group_advantages(rewards: torch.Tensor) -> torch.Tensor:
    """
    グループ内相対アドバンテージの計算 (GRPOのコア数理)
    rewards: [G] (グループサイズGの報酬テンソル)
    """
    mean = rewards.mean()
    std = rewards.std() + 1e-8
    return (rewards - mean) / std

# 擬似シミュレーション実行

if __name__ == "__main__":
    question = "If John has 3 apples and eats 1, how many are left?"
    augmenter = PromptAugmenter()

    # 1. プロンプトの動的拡張

    augmented_prompts = [augmenter.augment(question) for _ in range(4)]

    print("--- 拡張されたプロンプトの例 ---")
    for i, ap in enumerate(augmented_prompts):
        print(f"Sample {i+1}:\n{ap}\n{'-'*30}")

    # 2. 擬似的な報酬スコア(ルールベースチェッカーなどの評価結果を想定)


    # グループサイズ G = 4

    dummy_rewards = torch.tensor([1.0, 0.0, 1.0, 0.5])
    advantages = compute_group_advantages(dummy_rewards)

    print("\n--- 報酬と算出された相対アドバンテージ ---")
    for r, adv in zip(dummy_rewards.tolist(), advantages.tolist()):
        print(f"Reward: {r:.2f} -> Group Advantage: {adv:.4f}")

【実験結果と考察】

論文における数学的推論ベンチマーク(GSM8K、MATH)の検証では、通常のGRPOに対して、Prompt Augmentation(PA-GRPO)を適用したモデルは、収束速度および最終アキュラシー双方において優れた頑健性を示しました。

手法 (Method) GSM8K (Accuracy) MATH (Accuracy) 訓練崩壊率 (Collapse Rate)
Baseline (SFT) 72.4% 28.5%
GRPO (Vanilla) 81.2% 39.1% 15% (学習途中の発散確率)
PA-GRPO (提案手法) 84.8% 42.3% 0% (極めて安定)

考察

  1. 頑健性の寄与: 従来のGRPOは、特定のシステムプロンプトに最適化された「ハックされた回答形式(長すぎる無意味な思考トークンなど)」を出力することで報酬を最大化しようとします。しかし、プロンプトにブレ(動的拡張)を与えることで、モデルがそのような局所解(Local Minima)にトラップされるのを効果的に防いでいることが確認されました。

  2. コストとレイテンシ: プロンプト拡張自体はテキスト変換処理であるため、計算オーバーヘッドは実質ゼロです。ただし、異なるプロンプトに起因して生成(Generation)ステップにおけるコンテキスト長(Context Length)がバラつくため、KVキャッシュの効率的なパディング管理(FlashAttentionのバリアント等)が必要になります。


【限界と今後の展望】

  1. ドメイン依存性: 本手法の効果は、数式表現や論理ステップなど「多様な表現手法が本質的に存在する推論タスク」に依存しています。単一の正答フォーマットしか許容されないような厳密すぎるドメイン(例:JSON出力などの構造化生成)においては、プロンプトの拡張が評価器(Verifier)のパースエラーを誘発し、性能を低下させるリスクがあります。

  2. 報酬ハッキングの根本的解決: プロンプトの多様化は「モデル側の過学習」を軽減しますが、報酬システム(特にLLM-as-a-Judgeやルールベースの正規表現抽出器)そのものの脆弱性への完全な対策には至っていません。今後のアプローチとして、動的な評価基準(Dynamic Reward Schema)を同様にブレンドする手法への拡張が期待されます。


参考文献

  • [1] DeepSeek-AI. (2024). “DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models.” arXiv:2402.03300

  • [2] Shao, Zhihong et al. (2024). “DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning.” arXiv:2501.12948

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

コメント

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