TECH: Technical

LLMの思考力を解き放つ:Chain of Thought (CoT) と ReActプロンプティング技術の徹底解説

大規模言語モデル(LLM)の推論能力を飛躍的に高める「Chain of Thought (CoT)」と「ReAct」プロンプティングについて徹底解説します。

LLMの思考力を解き放つ:Chain of Thought (CoT) と ReActプロンプティング技術の徹底解説

大規模言語モデル(LLM)は非常に強力ですが、複雑な推論を引き出すことは依然として課題です。Chain of Thought (CoT)ReActは、LLMの推論能力と問題解決能力を大幅に向上させるために設計された2つの高度なプロンプティング技術です。

本記事では、これらの技術の包括的な解説、実践的な応用例、そしてベストプラクティスについて詳しく説明します。


第1部:思考の連鎖で精度を高める - Chain of Thought (CoT)

1. Chain of Thought (CoT) とは?

**Chain of Thought(CoT)**は、LLMに最終的な回答を提示する前に、中間の推論ステップを生成させることで、その推論能力を向上させる技術です。これにより、モデルはより複雑な問題に対して、より正確な結論に到達することができます。

CoTの効果を示すために、以下の数学の問題を見てみましょう。

標準的なプロンプトの失敗例

プロンプト
私が3歳のとき、私のパートナーは私の3倍の年齢でした。今、私は20歳です。私のパートナーは何歳ですか?
LLMの出力
63歳

標準的なプロンプトでは、モデルは誤った答えを出してしまいました。次に、「段階的に考えてみましょう」という一文を追加してCoTを適用します。すると、モデルは詳細な推論プロセスを経て、正しい答えを導き出します。

CoTプロンプトの成功例

プロンプト
私が3歳のとき、私のパートナーは私の3倍の年齢でした。今、私は20歳です。私のパートナーは何歳ですか?段階的に考えてみましょう。
LLMの出力
1. 私が3歳のとき、パートナーの年齢は私の3倍だったので、3 * 3 = 9歳でした。
2. 現在、私は20歳です。私が3歳だった時から、20 - 3 = 17年が経過しました。
3. パートナーの年齢も同様に17年増えているはずです。
4. したがって、パートナーの現在の年齢は 9 + 17 = 26歳です。

よって、私のパートナーは26歳です。

CoTの利点と欠点

  • 利点
    • 低コストで実装可能: プロンプトを少し変更するだけで済みます。
    • 既存モデルで効果的: ファインチューニングなしで、既製のLLMでうまく機能します。
    • 解釈可能性: モデルがどのような推論ステップをたどったかを確認できるため、もし誤作動があれば、その原因を特定することができます。
    • 堅牢性の向上: 異なるLLMのバージョン間でも、パフォーマンスの低下が少ない傾向にあります。
  • 欠点
    • トークン数の増加: 推論プロセスを含むため、出力が長くなり、予測にかかるコストと時間が 増加します。

2. CoTプロンプティングの実践方法

CoTプロンプティングには、主に2つの実装方法があります。

ゼロショットCoT (Zero-Shot CoT)

この方法は、プロンプトに「段階的に考えてみましょう。(Let’s think step by step.)」のような単純なフレーズを追加するだけです。先ほどの数学の問題の成功例がこれに該当し、追加の例を提示することなくモデルに自己推論を促します。

フューショットCoT (Few-Shot CoT)

こちらはより強力なアプローチで、プロンプト内に1つ以上の例(ショット)を提供し、望ましい推論プロセスを示します。以下の例では、最初の質問と回答で推論パターンを提示することで、モデルが新しい類似の問題を同じパターンに従って解決するように誘導しています。

// --- ここからFew-Shotの例 ---
Q: 私の兄が2歳のとき、私は彼の2倍の年齢でした。今、私は40歳です。兄は何歳ですか?段階的に考えてみましょう。
A: 兄が2歳のとき、私は2 * 2 = 4歳でした。年齢差は2歳で、私の方が年上です。今、私は40歳なので、兄は40 - 2 = 38歳です。答えは38です。
// --- ここまで例 ---

// --- ここから新しい質問 ---
Q: 私が3歳のとき、私のパートナーは私の3倍の年齢でした。今、私は20歳です。私のパートナーは何歳ですか?段階的に考えてみましょう。
A:
LLMの出力
私が3歳のとき、パートナーは3 * 3 = 9歳でした。年齢差は6歳で、パートナーの方が年上です。今、私は20歳なので、パートナーは20 + 6 = 26歳です。答えは26です。

3. CoTをさらに進化させる技術

CoTの概念をさらに発展させた、2つの先進的な技術を紹介します。

自己整合性 (Self-Consistency)

自己整合性は、複数の多様な推論経路を生成し、多数決によって最も一貫性のある回答を選択することで、CoTの精度を向上させる技術です。具体的には、モデルの温度設定(temperature)を高くして多様な出力を促し、その中から最も頻繁に現れる回答を採用します。例えば、あるメールを「重要」か「重要でない」かに分類するタスクでこの技術を使うと、異なる推論プロセスが生成され、最終的に最も確からしい分類を多数決で決定することができます。

思考の木 (Tree of Thoughts - ToT)

思考の木(ToT)は、CoTを一般化したもので、LLMが単一の直線的な思考の連鎖(CoT)ではなく、木構造で複数の異なる推論経路を同時に探求できるようにします。CoTが一本道を進むのに対し、ToTは複数の分岐路を同時に探索するイメージです。このアプローチにより、ToTは探求が必要な複雑なタスクに特に適しています。


第2部:思考と行動を繋ぐ - ReAct (Reason & Act)

4. ReAct (Reason & Act) とは?

**ReAct(Reason and Act)**は、LLMが自然言語による推論と、検索APIなどの外部ツールを使用する「行動」を組み合わせることで、複雑なタスクを解決できるようにするパラダイムです。これは、自律的にタスクを遂行するエージェントモデリングへの第一歩と言えます。

ReActは、以下の「思考-行動ループ」を繰り返すことで機能します。

  1. 思考 (Thought): LLMはまず問題について推論し、行動計画を立てます。
  2. 行動 (Action): 次に、計画に沿った行動(例:ツールの使用)を実行します。
  3. 観察 (Observation): 行動から得られた結果を観察します。
  4. 更新 (Update): 観察結果を用いて推論を更新し、新たな計画を立てます。このループを、解決策が見つかるまで続けます。

5. ReActの実践例:メタリカのメンバーの子供の数を調べる

タスク: バンド「メタリカ」のメンバーが持つ子供の総数を調べる。

このタスクを解決するため、ReActエージェントは以下のように思考し、検索ツールと対話しながら答えを導き出します。

実行ログ
メタリカには4人のメンバーがいます。

行動 (Action): Search
行動の入力 (Action Input): How many kids does James Hetfield have?
観察 (Observation): three children
思考 (Thought): メタリカのメンバーの1/4は子供が3人います。

行動 (Action): Search
行動の入力 (Action Input): How many kids does Lars Ulrich have?
観察 (Observation): 3
思考 (Thought): メタリカのメンバーの2/4は合計6人の子供がいます。

行動 (Action): Search
行動の入力 (Action Input): How many kids does Kirk Hammett have?
観察 (Observation): Hammett has been married to his second wife Lani since 1998. They have two sons, Angel (b. September 29, 2006) and Vincenzo (b. June 28, 2008).
思考 (Thought): メタリカのメンバーの3/4は合計8人の子供がいます。

行動 (Action): Search
行動の入力 (Action Input): How many kids does Robert Trujillo have?
観察 (Observation): 2
思考 (Thought): メタリカのメンバーの4/4は合計10人の子供がいます。

最終的な答え (Final Answer): 10

実装上の注意

実際にReActを実装するには、プロンプトと応答の履歴を管理し、モデルに適切な指示を与える設定を行う必要があります。


結論とベストプラクティス (Conclusion and Best Practices)

6. CoTを使いこなすためのベストプラクティス

CoTプロンプティングを効果的に使用するためには、以下のベストプラクティスを心がけてください。

  • 最終的な答えは推論の後に配置する: 推論プロセスが最終的な答えの生成に影響を与えるため、必ず推論を先に記述させ、その後に結論を続けさせます。
  • 答えを抽出しやすい設計にする: プロンプトを工夫し、最終的な回答を推論テキストから簡単に抜き出せるように設計します。
  • 温度設定(temperature)を0にする: CoTは最も確率の高い単一の正解を見つけるための貪欲法(greedy decoding)に基づいているため、温度設定は0に設定することが推奨されます。

7. まとめ

Chain of Thought (CoT) は、LLMの内部の推論プロセスを改善し、より正確な答えを導き出すための技術です。一方、ReActは、LLMが外部のツールと対話できるようにすることで、その能力を拡張します。

これらの高度なプロンプティング技術は、複雑で多段階のステップを要する問題に取り組むことができる、より洗練され、信頼性の高い強力なAIアプリケーションを開発するために不可欠です。