語り口:技術的な正確性を重視した、極めて客観的かつ学術的なトーン。過度な修飾語を避け、能動態で事実ベースの記述を行う。
ターゲット:数理統計、ニューラルネットワークの基礎、そして強化学習(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% (極めて安定) |
考察
頑健性の寄与: 従来のGRPOは、特定のシステムプロンプトに最適化された「ハックされた回答形式(長すぎる無意味な思考トークンなど)」を出力することで報酬を最大化しようとします。しかし、プロンプトにブレ(動的拡張)を与えることで、モデルがそのような局所解(Local Minima)にトラップされるのを効果的に防いでいることが確認されました。
コストとレイテンシ: プロンプト拡張自体はテキスト変換処理であるため、計算オーバーヘッドは実質ゼロです。ただし、異なるプロンプトに起因して生成(Generation)ステップにおけるコンテキスト長(Context Length)がバラつくため、KVキャッシュの効率的なパディング管理(FlashAttentionのバリアント等)が必要になります。
【限界と今後の展望】
ドメイン依存性: 本手法の効果は、数式表現や論理ステップなど「多様な表現手法が本質的に存在する推論タスク」に依存しています。単一の正答フォーマットしか許容されないような厳密すぎるドメイン(例:JSON出力などの構造化生成)においては、プロンプトの拡張が評価器(Verifier)のパースエラーを誘発し、性能を低下させるリスクがあります。
報酬ハッキングの根本的解決: プロンプトの多様化は「モデル側の過学習」を軽減しますが、報酬システム(特に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
