なぜ思考過程を書かせると正確になるのか

複雑な算数の問題を人間に解かせるとき、頭の中だけで計算させるより、紙に途中の式を書かせた方が正解率が上がる。LLMでも同じことが起きる——これがChain-of-Thought(CoT)プロンプティングの出発点だ。

Googleのチームが2022年に発表した論文「Chain-of-Thought Prompting Elicits Reasoning in Large Language Models」でこの効果が初めて系統的に示され、推論タスクにおいてCoTが精度を劇的に改善することが確認された。

CoTが効く理由

中間ステップが計算リソースを増やす

TransformerベースのLLMは1トークン生成するたびに一定の計算量を使う。答えだけを直接生成しようとすると、その1回のトークン生成に、問題の全推論を詰め込まなければならない。

思考過程を書かせると、その分多くのトークンが生成され、処理ステップ数が増える。これは「モデルに計算リソースをより多く使わせる」ことと同義だ。複雑な問題ほど、中間ステップを増やすことで性能が改善しやすい。

中間ステップが後の生成に影響する

LLMは自己回帰的に生成するため、生成したテキストは次のトークン予測のコンテキストになる。思考過程として「まず条件を整理すると…」「次にAを計算すると…」と書くことで、その内容が次のステップの文脈として使われる。正しい方向性の中間推論が積み重なることで、最終的な答えへの到達精度が上がる。

エラーを可視化できる

CoTには副次的な効果として「どこで間違えたか」を人間が追いやすくなるという利点がある。思考過程なしでは答えが間違っているとしか分からないが、CoTがあれば推論の途中のどのステップで誤りが生じたかを特定できる。デバッグと改善がしやすくなる。

Few-shot CoTとZero-shot CoT

Few-shot CoT

Few-shot CoTは、プロンプトに「思考過程付きの例題」を複数含める手法だ。問題→思考過程→答えのセットをいくつか示すことで、モデルが同じ形式で新しい問題を解くよう誘導する。

例題:
Q: サラは15個のリンゴを持っていた。5個食べて、10個買った。何個残っているか?
A: サラは最初15個持っていた。5個食べたので15-5=10個になった。
   さらに10個買ったので10+10=20個になった。答えは20個。

問題:
Q: ジョンは100ドル持っていた。本を25ドルで買い、友人から50ドル借りた。今いくら持っているか?
A:

この形式でプロンプトを組むと、モデルは例題を参照しながら同じスタイルで推論を展開する。Few-shot CoTは特に数学的推論・論理問題・多段階の手順が必要な問題で大きな効果を発揮する。

Zero-shot CoT

Zero-shot CoTは例題を用意せず、単純に「ステップバイステップで考えてください(Let's think step by step)」という一文をプロンプトに加えるだけの手法だ。

例題なしでこれだけの効果があることは、2022年に東京大学とGoogleのチームが発表した論文「Large Language Models are Zero-Shot Reasoners」で示され、CoT研究に大きなインパクトを与えた。

Zero-shot CoTはFew-shot CoTに比べると精度は落ちるが、例題を用意する手間なしに推論精度を向上させられる手軽さがある。多くの場面でデフォルトとして使える実用的な手法だ。

CoTの効果が出やすい条件

モデルの規模が重要

CoTの効果はモデルの規模によって大きく異なる。小さいモデル(数十億パラメータ以下)では、CoTを使っても精度向上効果がほとんど見られないか、むしろ悪化することがある。思考過程を生成するためのベースとなる推論能力が、小規模モデルでは十分ではないためだ。

効果が顕著に現れるのは100億パラメータ以上のモデルからで、GPT-4やClaude 3などの最先端モデルではCoTによる精度向上がはっきりと観測される。

多段階推論を要するタスク

CoTは単純な事実質問(「日本の首都は?」など)よりも、複数のステップを踏む必要のある問題(算数・論理パズル・コード生成・法的な推論など)で特に効果が大きい。単純なタスクでは、思考過程の生成がオーバーヘッドになるだけで恩恵が少ない。

推論モデル(o3等)との関係

内部CoTの自動化

OpenAIのo1・o3、AnthropicのClaudeの拡張思考機能(Extended Thinking)は、CoTの考え方を「モデル内部で自動的に行う」よう進化させたものだ。ユーザーがプロンプトで思考ステップを促さなくても、モデルが応答を生成する前に内部で大量の思考ステップ(思考トークン)を使って問題を検討する。

この内部の思考プロセスは通常ユーザーには見えないが(一部は開示される)、複雑な推論タスクで従来のCoTプロンプティングを大幅に上回る性能を発揮する。

テストタイムコンピュートの増加

推論モデルの考え方は「トレーニング時の計算量を増やすのではなく、推論(テスト)時の計算量を増やすことで性能を上げる」という方向性だ。これを「テストタイムコンピュート」と呼ぶ。思考トークンをどれだけ使わせるかを調整することで、速度と精度のトレードオフをタスクに応じて変えられる。

難しい問題には多くの思考トークンを使わせ、単純な質問には少なくする——そういった動的な使い分けが推論モデルの設計思想だ。CoTプロンプティングはその手動版だったと見ることもできる。

実務での活用方法

複雑な問題にモデルを使うとき、精度が出ないと感じたら試してほしい順序は次の通りだ。まず「ステップバイステップで考えてください」をプロンプト末尾に追加するZero-shot CoT。それで不十分なら、問題に似た例題と思考過程のセットをFew-shotで追加する。さらに精度が必要なら、o3やClaudeの拡張思考機能などの推論モデルへの切り替えを検討する。

コストと精度のトレードオフを意識しながら、タスクの複雑さに合わせた使い分けが実務では効果的だ。

まとめ

Chain-of-Thoughtプロンプティングは、思考過程を書かせることで中間ステップの計算リソースを増やし、複雑な推論タスクでの精度を改善する手法だ。Few-shot CoTは例題付きで最も精度が出やすく、Zero-shot CoTは「ステップバイステップで」一文で試せる手軽さが魅力だ。推論モデル(o3・Claude Extended Thinking等)はこの考え方を内部で自動化したもので、CoTの自然な発展形といえる。プロンプティングの中でも即効性が高い手法であり、まず試してみる価値がある。