1. プロンプトエンジニアリングとは
1.1 定義
プロンプトエンジニアリング:LLMに与える入力(プロンプト)を設計・最適化し、望ましい出力を得る技術。
- モデルの重みを変更せずに性能を向上
- タスク固有のファインチューニングなしで適応
- 推論時に適用可能
1.2 重要性
プロンプトが重要な理由:
- In-Context Learning:プロンプト内の例示から学習
- タスク指定:曖昧なタスクを明確化
- 推論誘導:思考過程を導く
- 出力形式制御:構造化された出力を得る
1.3 プロンプトの構成要素
- 指示(Instruction):何をすべきか
- 文脈(Context):背景情報
- 例示(Examples):入出力のペア
- 入力(Input):処理対象
- 出力形式(Format):期待する形式
2. 基本技法
2.1 Zero-shot Prompting
例示なしで指示のみを与える:
以下の文を日本語に翻訳してください:
"Hello, how are you?"
- シンプルで汎用的
- モデルの事前知識に依存
- 複雑なタスクでは精度が低下
2.2 Few-shot Prompting
例示を含めてタスクを示す:
英語を日本語に翻訳します。
English: Hello
Japanese: こんにちは
English: Thank you
Japanese: ありがとう
English: Good morning
Japanese:
- 例示からパターンを学習
- タスク定義が明確に
- 例示の選択・順序が重要
2.3 Few-shotの設計指針
- 例示数:通常3〜5例で効果的
- 多様性:様々なケースをカバー
- 代表性:典型的な例を選択
- 順序:最近接性効果に注意
- 形式の一貫性:入出力形式を統一
2.4 役割設定(Role Prompting)
モデルに特定の役割を与える:
あなたは経験豊富な数学教師です。
中学生にもわかりやすく説明してください。
質問:微分とは何ですか?
- 出力のスタイル・レベルを制御
- 専門知識の活性化
- 一貫した応答スタイル
2.5 構造化プロンプト
明確な構造で指示を与える:
# タスク
与えられた文章を要約する
# 制約
- 3文以内
- 重要なポイントのみ
- 専門用語は避ける
# 入力
[文章]
# 出力形式
要約:
3. Chain-of-Thought(CoT)
3.1 CoTとは
Chain-of-Thought(Wei et al. 2022):中間的な推論ステップを明示的に生成させる手法。
- 複雑な問題を段階的に解決
- 推論過程が可視化
- 算術、論理、常識推論で大幅な性能向上
3.2 Few-shot CoT
推論過程を含む例示を提供:
Q: ロジャーはテニスボールを5つ持っています。
テニスボールの缶を2つ買いました。各缶には3つ入っています。
今、テニスボールはいくつありますか?
A: ロジャーは最初5つ持っていました。
2缶 × 3つ = 6つ買いました。
5 + 6 = 11。答えは11です。
Q: カフェテリアに23個のリンゴがありました。
昼食に20個使い、さらに6個買いました。
今、リンゴはいくつありますか?
A:
3.3 Zero-shot CoT
「Let's think step by step」を追加するだけ:
Q: [問題]
A: Let's think step by step.
- Kojima et al. (2022)
- 例示なしでCoT効果を発揮
- シンプルで汎用的
3.4 CoTの効果
| ベンチマーク |
標準プロンプト |
CoT |
| GSM8K(算術) |
〜18% |
〜58% |
| SVAMP |
〜65% |
〜80% |
| StrategyQA |
〜65% |
〜73% |
※PaLM 540Bでの結果(Wei et al. 2022)
3.5 CoTが効く理由
- 作業記憶の拡張:中間結果を文脈に保持
- 問題分解:複雑な問題を小さなステップに
- エラー検出:推論過程で誤りに気づきやすい
- 大規模モデルで効果的:〜100B以上で顕著
4. 自己一貫性(Self-Consistency)
4.1 自己一貫性とは
Self-Consistency(Wang et al. 2023):複数の推論パスを生成し、多数決で最終回答を決定。
4.2 手順
- 同じ問題に対してCoTを複数回実行(温度を上げてサンプリング)
- 各推論パスから最終回答を抽出
- 最も頻度の高い回答を採用(多数決)
4.3 効果
- 単一のCoTより高精度
- GSM8Kで〜74%(CoT単体は〜58%)
- 推論の信頼性向上
- 計算コストは増加
4.4 設計のポイント
- サンプル数:通常5〜40
- 温度:0.5〜0.7で多様性を確保
- 回答抽出:最終回答のみを比較
5. Tree of Thoughts(ToT)
5.1 ToTとは
Tree of Thoughts(Yao et al. 2023):思考を木構造で探索。バックトラック、評価、選択を可能に。
5.2 CoTとの違い
| 項目 |
CoT |
ToT |
| 構造 |
線形(チェーン) |
木構造 |
| 探索 |
単一パス |
複数パス、バックトラック |
| 評価 |
最終結果のみ |
中間状態も評価 |
| 計算コスト |
低 |
高 |
5.3 ToTの構成要素
- 思考生成:次の思考候補を複数生成
- 状態評価:各思考の有望さを評価
- 探索アルゴリズム:BFS、DFS、ビームサーチ等
5.4 適用例:24ゲーム
4つの数字から24を作る問題:
- 可能な演算を複数生成
- 各中間状態を評価(24に近づいているか)
- 有望な枝を探索、行き詰まったらバックトラック
ToTにより解決率が大幅向上(4% → 74%)。
5.5 ToTの限界
- 計算コストが高い
- 状態評価の設計が必要
- すべての問題に適するわけではない
6. 高度な技法
6.1 ReAct(Reasoning + Acting)
推論と行動を交互に実行:
- Thought:推論ステップ
- Action:外部ツール呼び出し(検索等)
- Observation:ツールからの結果
- 繰り返して最終回答に到達
6.2 Reflexion
失敗から学ぶ反省的推論:
- タスクを実行
- 結果を評価
- 失敗した場合、反省を生成
- 反省を踏まえて再試行
6.3 Least-to-Most Prompting
複雑な問題を部分問題に分解:
- 問題を小さな部分問題に分解
- 簡単な部分から順に解決
- 前の解答を使って次の部分を解決
6.4 Generated Knowledge Prompting
回答前に関連知識を生成:
- 「この問題に関連する事実を列挙して」
- 生成された知識を文脈に追加
- 知識を踏まえて回答
6.5 Automatic Prompt Engineering
プロンプトの自動最適化:
- APE:自動プロンプトエンジニアリング
- OPRO:LLMによるプロンプト最適化
- 人間が設計するより良いプロンプトを発見することも
7. 推論時スケーリング
7.1 推論時計算の重要性
従来のスケーリング:訓練時の計算(パラメータ、データ)を増やす。
新しいアプローチ:推論時の計算を増やす。
7.2 Test-Time Compute
推論時に計算を増やす方法:
- 複数サンプリング:Self-Consistency
- 探索:ToT、MCTS
- 反復改善:Reflexion
- 長い思考:より多くのトークンを生成
7.3 o1/o3モデル
OpenAIのo1/o3シリーズ:
- 推論時に「思考」トークンを大量に生成
- 内部でCoT的な推論を実行
- 推論時間と性能のトレードオフ
- ARC-AGIで87.5%(o3)
7.4 スケーリング則との関係
推論時計算のスケーリング則:
- 推論時計算を増やすと性能が向上
- 訓練時スケーリングと相補的
- 小さなモデル + 多い推論 vs 大きなモデル + 少ない推論
7.5 実践的考慮
| 手法 |
計算倍率 |
適用場面 |
| 標準推論 |
1x |
シンプルなタスク |
| CoT |
〜2-3x |
推論タスク |
| Self-Consistency |
〜10-40x |
高精度が必要 |
| ToT |
〜100x+ |
複雑な探索問題 |
8. 参考文献
主要論文
- Wei et al. (2022). "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" NeurIPS
- Kojima et al. (2022). "Large Language Models are Zero-Shot Reasoners" NeurIPS
- Wang et al. (2023). "Self-Consistency Improves Chain of Thought Reasoning in Language Models" ICLR
- Yao et al. (2023). "Tree of Thoughts: Deliberate Problem Solving with Large Language Models" NeurIPS
- Yao et al. (2023). "ReAct: Synergizing Reasoning and Acting in Language Models" ICLR
- Shinn et al. (2023). "Reflexion: Language Agents with Verbal Reinforcement Learning" NeurIPS
サーベイ・リソース