高度な推論パターン——Self-Consistency/Tree of Thoughts/Reflexion
レッスン6:高度な推論パターン——Self-Consistency/Tree of Thoughts/Reflexion
このレッスンで学ぶこと
- Self-Consistency(Wang et al. 2022)の発想と使いどころを理解する
- Tree of Thoughts(Yao et al. 2023)の探索構造を把握する
- Reflexion(Shinn et al. 2023)と Self-Refine(Madaan et al. 2023)の自己改善ループを区別する
- メタプロンプティングとプロンプト連鎖の発想を学ぶ
- reasoning モデル登場による技法の使い分けの変化を整理する
前回のレッスンで、評価とイテレーションの中核を扱いました。今回は、評価で「精度がもう一段上がらない」とわかったときに使う、高度な推論パターンを学びます。研究界で 2022〜2023 年に提案された一連の技法は、今でもプロンプトエンジニアリングの中核ツールです。一方、2024 年以降の reasoning モデルの登場で、これらの使いどころは大きく変わっています。
高度な推論パターンの全体像
高度な推論パターンは、Chain-of-Thought(レッスン 3)の延長として、次のように整理できます。
| 技法 | 中核の発想 | 計算コスト |
|---|---|---|
| Chain-of-Thought | 思考過程を書きながら結論を導く | × 1(標準) |
| Self-Consistency | 複数の思考過程を試して多数決 | × N(並列実行) |
| Tree of Thoughts | 思考を木構造で探索する | × N×M(探索ステップ) |
| Self-Refine | 出力を自己批評で改善する | × 2〜N(反復) |
| Reflexion | 失敗から学習しながら反復する | × N(反復、メモリ付き) |
計算コストが上がるほど、精度は上がる傾向ですが、その代償としてレイテンシとコストが大きくなります。タスクの重要度・精度要求・コスト許容度で使い分けます。
💡 ポイント 高度な推論パターンは「すべてのタスクに使うべき」ものではありません。レッスン 5 で扱った評価セットで、基本のプロンプトでは精度が頭打ちとわかったときに、コストとのトレードオフで導入を検討します。
Self-Consistency(Wang et al. 2022)
Self-Consistency は、Wang らが 2022 年に ICLR で発表した論文「Self-Consistency Improves Chain of Thought Reasoning in Language Models」で提案された技法です。
中核の発想
同じプロンプトを「温度を上げて」複数回実行し、複数の異なる思考過程を得る。それぞれの結論を集めて、多数決で最も多い答えを採用する
動作の例
数学の問題を解く場合:
- 同じプロンプト+「Let's think step by step」を温度 0.7 で 5 回実行
- 5 つの異なる思考過程と、それぞれの最終答えが得られる
- 最終答えの多数決をとる(例:「5」が 3 回、「6」が 1 回、「4」が 1 回 → 答えは「5」)
効くタスク
- 答えが「離散的」(数値、カテゴリ、選択肢)
- 算数・論理推論
- 単純な分類・抽出
効かないタスク
- 自由記述(多数決の取り方が難しい)
- 創作(多様性が重要)
限界
- コストが N 倍になる
- レイテンシも N 倍
- 多数決で間違った答えが選ばれる場合がある(全部が同じ間違いをすることもある)
📝 補足 Self-Consistency は、精度を確実に上げる「上品な技法」として知られます。ただし、5〜10 回実行するためにコストが大きく増えるため、本当に精度が重要なタスクに絞って使う運用が現実的です。
Tree of Thoughts(Yao et al. 2023)
Tree of Thoughts(ToT)は、Yao らが 2023 年に NeurIPS で発表した論文「Tree of Thoughts: Deliberate Problem Solving with Large Language Models」で提案された、より複雑な推論手法です。
中核の発想
思考を「木構造」として扱い、各ステップで複数の選択肢を生成し、評価しながら有望な枝を探索する
動作の例
数独パズルを解く場合:
flowchart TD
R[初期状態] --> A[候補A]
R --> B[候補B]
R --> C[候補C]
A --> A1[A1]
A --> A2[A2]
B --> B1[B1]
B --> B2[B2]
A1 --> S[解]
- ある盤面から、「次の一手」を 3 つ生成
- 各候補を評価(有望度を LLM 自身に判定させる)
- 最も有望な候補から、さらに 3 つの次の一手を生成
- ……を繰り返し、解に到達するか袋小路に至る
効くタスク
- 多段階の探索・計画
- 数独・パズル系
- 戦略立案・意思決定の分岐
- 創作で「複数の方向性を試して最良を選ぶ」
効かないタスク
- 線形に答えが出るタスク
- 答えが明確で探索の必要がないタスク
限界
- 計算コストが指数的に増える可能性
- 各ノードの「評価」を LLM に任せるため、評価自体のバイアスがある
- 実装の複雑さが高い
⚠️ 注意 Tree of Thoughts は研究界では大きな注目を集めましたが、実務でフル実装するケースは限定的です。「複数の選択肢を生成して評価する」発想だけを部分的に取り入れる方が、実用的です。
Self-Refine(Madaan et al. 2023)
Self-Refine は、Madaan らが 2023 年に NeurIPS で発表した「Self-Refine: Iterative Refinement with Self-Feedback」で提案された技法です。
中核の発想
LLM に「自分の出力を自己批評させ、改善版を作らせる」ループを回す
動作の例
文章を書くタスクで:
- LLM が初稿を出力
- 同じ LLM に「初稿の問題点を 3 つ挙げてください」と依頼
- 同じ LLM に「指摘を踏まえて改善版を書いてください」と依頼
- 2〜3 を満足するまで繰り返す(または上限回数まで)
効くタスク
- 文章作成・改善
- コード生成・デバッグ
- 翻訳・校正
効かないタスク
- 客観的な事実問題(自己批評で間違いが直らない)
- 自己批評のループが収束しない場合がある
💡 ポイント Self-Refine の核は「同じ LLM に自己批評させても、出力の質が上がる」という観察です。これは LLM の「批評する能力」が「生成する能力」より高い場合があるという現象に依存しています。reasoning モデル登場後は、この差が小さくなる傾向もあり、効果は限定的になる場合があります。
Reflexion(Shinn et al. 2023)
Reflexion は、Shinn らが 2023 年に NeurIPS で発表した「Reflexion: Language Agents with Verbal Reinforcement Learning」で提案された技法です。
中核の発想
失敗の経験を「言語的な反省(reflection)」として記憶し、次の試行に活かす
Self-Refine が「同じ問題内での反復改善」だったのに対し、Reflexion は「複数の試行をまたいで失敗から学習する」点が違います。
動作の例
エージェントが Web 検索で情報を集める場合:
- 試行 1:検索クエリ A を試したが、欲しい情報に到達できなかった
- LLM に「なぜ失敗したか」を言語化させる(例:「クエリが具体的すぎた」)
- その「反省文」を次の試行のメモリとして保持
- 試行 2:反省を踏まえて、別の戦略を試す
効くタスク
- 試行錯誤を伴うタスク(コーディング、エージェント、ゲーム)
- 失敗パターンが言語化しやすいもの
効かないタスク
- 1 回限りの推論(反省を活かす機会がない)
📝 補足 Reflexion はエージェント設計(次のレッスン)の中核要素です。本コースでは仕組みを概観するに留めますが、本気で AI エージェントを構築する場合、Reflexion 的な「反省と学習」のループが鍵になります。
メタプロンプティングとプロンプト連鎖
ここまで扱った技法に加えて、もう 2 つの発想を紹介します。
メタプロンプティング
「LLM に良いプロンプトを書かせる」発想です。
例:
あなたはプロンプトエンジニアリングの専門家です。「以下のタスクで最高の精度を出すプロンプト」を書いてください。 タスク:(タスクの説明) 制約:JSON 形式で返す、200 文字以内、……
LLM が生成したプロンプトを、評価セットで試して、人手版と比較します。多くの場合、人手のプロンプトの方が良いですが、出発点や別視点として有用です。
プロンプト連鎖(Prompt Chaining)
複雑なタスクを単一プロンプトで解こうとせず、複数のプロンプトに分割して連結する発想です。
例:長い文書の質問応答
- プロンプト 1:文書を要約して 1000 文字に圧縮
- プロンプト 2:要約を元に質問に答える
各ステップが単純になるため、エラーが減ります。一方、ステップが増えるとコストとレイテンシが上がります。
💡 ポイント 「1 つのプロンプトですべて解く」のは魅力的ですが、複雑なタスクでは破綻しやすい。プロンプト連鎖で「責任範囲を分ける」発想は、ソフトウェア設計の関数分割と同じ考え方です。
reasoning モデル登場による技法の使い分けの変化
2024 年以降の reasoning モデル(OpenAI o シリーズ、Claude Extended Thinking、Gemini Thinking)の登場で、本レッスンの技法の使い分けは大きく変わっています。
CoT・Self-Consistency
- 従来モデル:効果大、積極的に使う
- reasoning モデル:内部で勝手にやるため、外側からの強制は効果薄
Tree of Thoughts
- 従来モデル:効果あり、コストとのトレードオフ
- reasoning モデル:内部で類似の探索を行うため、外側からの実装の必要性が下がる
Self-Refine・Reflexion
- 従来モデル:効果あり、反復で品質向上
- reasoning モデル:1 回の呼び出しで深く推論するため、反復の必要性が下がる場合がある。一方、エージェント的な「環境との相互作用」は引き続き反復が必要
2026 年 6 月時点での実務的な使い分け
| シーン | 推奨 |
|---|---|
| 単発の難しい推論問題 | reasoning モデルを 1 回 |
| 安定性が必要・離散的な答え | 従来モデル + Self-Consistency(N 回)で多数決 |
| 長い思考過程を可視化したい | 従来モデル + CoT(出力に思考過程が残る) |
| エージェント・試行錯誤 | 従来モデル + Reflexion 的ループ |
| 文章改善・推敲 | 従来モデル + Self-Refine(または編集人間が介在) |
⚠️ 注意 「reasoning モデルが出たから高度な推論パターンは要らない」は短絡的です。reasoning モデルはコスト・レイテンシが従来モデルの数倍になるため、コスト効率では従来モデル + 推論パターンが優る場面が多くあります。「タスクと予算で使い分ける」が現実的な運用です。
講師の現場メモ:「Self-Consistency」でハルシネーション率が半減した話
私(西脇)が独立後にコンサルティングを担当した、ある中堅 IT 企業の事例です。彼らは社内ナレッジから問い合わせに答える AI 機能を運用していましたが、「3% 程度のハルシネーション率」を「1% 以下に下げたい」という要望を持っていました。
私たちは評価セット 200 件を用意し、現状を測りました。精度 97%、ハルシネーション率 3%、レイテンシ 1.2 秒、コスト 0.5 円/回。
最初に試したのは、プロンプトの明示化と禁止事項の追加でした。「不明な場合は『情報がありません』と答えてください」を強化。これでハルシネーションは 2% に下がりましたが、目標の 1% には届きませんでした。
次に Self-Consistency を試しました。同じプロンプトを温度 0.5 で 5 回実行し、多数決をとる構成です。結果は、
- 精度:97% → 99%
- ハルシネーション率:2% → 0.8%
- レイテンシ:1.2 秒 → 5.5 秒(5 回並列でも、最も遅い 1 回を待つため遅くなる)
- コスト:0.5 円 → 2.5 円/回(5 倍)
目標は達成しましたが、レイテンシとコストが大きく上がりました。経営陣と相談した結果、「すべての問い合わせに Self-Consistency を使うのは過剰だが、『重要案件・苦情系の問い合わせ』には適用する」というハイブリッド設計に落ち着きました。
問い合わせの種類を最初に分類するプロンプトを 1 段追加し、「重要・苦情」と判定されたものだけ Self-Consistency で 5 回実行する設計です。これで、
- 全体のハルシネーション率:3% → 0.6%
- 平均レイテンシ:1.4 秒(重要案件だけが遅い)
- 平均コスト:0.7 円/回
を実現できました。
このときに改めて感じたのが、高度な推論パターンは「すべてに適用」ではなく「タスクの重要度で使い分ける」のが現実的な運用だということです。本レッスンで「技法カタログ」を網羅的に扱うのは、自分のタスクで何を選ぶか判断するための引き出しを増やしてもらうためです。
まとめ
このレッスンでは、以下のことを学びました。
- Self-Consistency(Wang et al. 2022):温度を上げて複数回実行、多数決。離散的な答えに有効。コスト N 倍
- Tree of Thoughts(Yao et al. 2023):思考を木構造で探索。多段階の探索・計画に向く。実装複雑
- Self-Refine(Madaan et al. 2023):自己批評で出力を改善するループ。文章・コード改善
- Reflexion(Shinn et al. 2023):失敗を言語的反省として記憶、次の試行に活かす。エージェント設計の中核
- メタプロンプティング:LLM にプロンプトを書かせる。出発点・別視点として有用
- プロンプト連鎖:複雑タスクを分割して連結。「責任範囲を分ける」発想
- reasoning モデル登場で、外側強制の効果は薄れる。タスクと予算で使い分ける運用が現実的
- 「すべてに適用」ではなく、評価セットで効果とコストを測ってから採用
次のレッスンでは、プロンプトエンジニアリングの応用編として、ツール使用と AI エージェントを扱います。Function Calling、ReAct パターン、Model Context Protocol(MCP)、自律性のレベル設計を学びます。
確認クイズ
このレッスンの理解度をチェックしましょう。