Zero-shot CoT:一言添えるだけでLLMの推論力を覚醒させる
「ステップバイステップで考えてください」の一文を添えるだけでLLMの推論精度を劇的に向上させるZero-shot CoTの原理、効果データ、実践パターンを解説します。
Zero-shot CoT とは
Zero-shot CoT は、Kojima et al.(2022)の論文「Large Language Models are Zero-Shot Reasoners」で提案された手法で、プロンプトの末尾に “Let’s think step by step”(ステップバイステップで考えましょう) という一文を追加するだけで、LLMの推論精度を大幅に向上させます。
通常のChain-of-Thought(CoT)Promptingでは、推論過程を含むFew-shot例示を手動で作成する必要があります。Zero-shot CoTはこの手間を完全に排除し、タスクに依存しない汎用的なトリガーフレーズ1つで同等の効果を引き出す画期的なアプローチです。
なぜ一文で効くのか
大規模言語モデルは、事前学習で膨大な「段階的な推論テキスト」を学習しています。「ステップバイステップで考えましょう」というフレーズは、この「推論モード」を活性化するトリガーとして機能します。モデル内部に既に存在する推論能力を、明示的に引き出しているのです。
具体的なプロンプト例
例1:算術推論(Zero-shot CoTなし vs あり)
CoTなしの場合:
太郎は最初にリンゴを5個持っていました。
スーパーでリンゴを12個買い、友達に3個あげました。
その後、八百屋でさらに2個買いました。
太郎は今、リンゴを何個持っていますか?
モデルが直接「16個」と答えようとして間違えるリスクがあります。
Zero-shot CoTを適用:
太郎は最初にリンゴを5個持っていました。
スーパーでリンゴを12個買い、友達に3個あげました。
その後、八百屋でさらに2個買いました。
太郎は今、リンゴを何個持っていますか?
ステップバイステップで考えてください。
モデルの出力例:
ステップごとに考えます。
1. 最初のリンゴ: 5個
2. スーパーで購入: 5 + 12 = 17個
3. 友達にあげた: 17 - 3 = 14個
4. 八百屋で購入: 14 + 2 = 16個
太郎は今、リンゴを16個持っています。
例2:論理的推論
社員旅行の幹事を決める会議で、以下の発言がありました。
田中:「私は幹事をやりたくない」
佐藤:「鈴木さんがやるべきだと思う」
鈴木:「田中さんか佐藤さんのどちらかがやるべきだ」
山田:「田中さんの発言には賛成だが、鈴木さんの意見には反対だ」
山田の立場を整理してください。
ステップバイステップで考えてください。
例3:コードのデバッグ
以下のTypeScript関数が期待通りに動作しません。
入力 [3, 1, 4, 1, 5] に対して [1, 1, 3, 4, 5] を返すべきですが、
[5, 4, 3, 1, 1] を返します。原因を特定してください。
function sortArray(arr: number[]): number[] {
return arr.sort((a, b) => b - a);
}
ステップバイステップで考えてください。
このように、コードのデバッグにもZero-shot CoTは有効です。モデルがコードを1行ずつ追いながら問題を特定するプロセスを出力します。
効果データ
Kojima et al.(2022)の実験結果は、Zero-shot CoTの威力を明確に示しています。
| ベンチマーク | Zero-shot(通常) | Zero-shot CoT | 改善幅 |
|---|---|---|---|
| MultiArith | 17.7% | 78.7% | +61.0% |
| GSM8K | 10.4% | 40.7% | +30.3% |
上記はInstructGPT(text-davinci-002)での結果です。540BパラメータのPaLMでも同程度の改善が確認されています。
特にMultiArithでの+61ポイントの改善は驚異的です。一文を追加するだけで、ほぼランダムな精度から実用的な精度まで引き上げられることを意味します。
トリガーフレーズのバリエーション
Kojima et al.の実験では、以下のフレーズが検証されています。
- “Let’s think step by step”:最も高い効果(論文で推奨)
- “Let’s think about this logically”:やや効果が低い
- “Let’s solve this problem by splitting it into steps”:同等の効果
- “First, “:シンプルだが一定の効果あり
日本語では以下のバリエーションが実用的です。
- 「ステップバイステップで考えてください」
- 「順序立てて考えましょう」
- 「段階的に推論してください」
いつ使うべきか
- 推論が必要だがFew-shot例示を作る時間がないとき:Zero-shot CoTの最大の利点は「手軽さ」。一文追加するだけで推論精度が向上する
- タスクが多様で汎用的なアプローチが必要なとき:タスクごとに例示を作る必要がなく、同じフレーズがあらゆる推論タスクに適用できる
- プロトタイピング段階:まずZero-shot CoTで試し、精度が不足すればFew-shot CoTに移行する
- 算術・論理推論タスク:特に効果が大きいタスク種別
判断フロー
タスクは推論を必要とするか?
├── No → Zero-shot(通常)で十分
└── Yes → Zero-shot CoTを試す
├── 精度OK → Zero-shot CoTを採用
└── 精度不足 → Few-shot CoTに移行
└── それでも不足 → Self-Consistencyを検討
注意点・限界
Few-shot CoTには及ばないケースが多い
Zero-shot CoTは手軽さが魅力ですが、精度面ではFew-shot CoTに劣るケースが多いです。GSM8Kでの比較では、Zero-shot CoTが40.7%に対し、Few-shot CoTは57.1%(Wei et al., 2022)と大きな差があります。精度が重要な本番環境では、Few-shot CoTへの移行を検討すべきです。
バイアスの増幅リスク
Shaikh et al.(2023)の研究「On Second Thought, Let’s Not Think Step by Step!」では、Zero-shot CoTがステレオタイプに基づくバイアスを増幅するリスクが指摘されています。特に人物評価や社会的判断を伴うタスクでは、推論過程でバイアスが強化される可能性があるため注意が必要です。
推論モデルでは不要
o1、DeepSeek-R1などの推論特化モデルは、内部的にCoTを実行しています。これらのモデルに対してZero-shot CoTを適用しても、追加の効果はほとんど得られません。むしろ、推論トークンが二重に消費されてコストが増加するだけです。
小規模モデルでは逆効果の可能性
CoT全般に言えることですが、おおよそ100Bパラメータ未満のモデルでは、Zero-shot CoTが効果を発揮しません。不正確な推論ステップを生成し、かえって最終回答の精度を下げることがあります。
出力トークンの増加
推論過程を出力するため、通常のZero-shotに比べて出力トークン数が3〜10倍に増加します。レイテンシとコストのトレードオフを考慮してください。