In-Context Learning and Prompting
In-Context Learning (ICL) は、LLM が prompt 内に与えられた例だけから新しいタスクを解ける 性質です。Fine-tuning なしで、prompt の書き方ひとつで挙動を変えられます。Prompt engineering はこの性質を最大化するための実践技術です。
Few-shot prompting
Few-shot prompting は、prompt 内に (input, output) の例 を数件示すだけで、task を学習させる方法です。
Q: 2 + 3 = ?
A: 5
Q: 7 + 8 = ?
A: 15
Q: 13 + 29 = ?
A:
GPT-3 論文以降、これが LLM の汎用性の象徴的な能力になりました。
Chain-of-Thought (CoT)
Chain-of-Thought (CoT) prompting は、最終答だけでなく途中の推論ステップ も書かせる方法です。
Q: もしリンゴが 3 個あり、ジョンが 2 個もらった後、合計はいくつ?
A: もとは 3 個。ジョンは 2 個もらったので 3 + 2 = 5 個。答えは 5。
特に算術・論理・常識推論で、精度が大きく向上することが知られています。
Zero-shot CoT
CoT の例を入れる代わりに、
"Let's think step by step."
の一文を加えるだけで、reasoning が誘発されることが分かっています (Kojima ら)。
Self-Consistency
Self-Consistency は、CoT を 複数 sample 生成し、最終答の多数決を取る手法です。
単一 sample の greedy decoding よりも安定して高精度です。
Tree-of-Thoughts と ReAct
- Tree-of-Thoughts (ToT): CoT を木構造で探索し、value 評価と backtrack を行う
- ReAct: Reasoning と外部 tool 呼び出しを交互に行う (詳細はこちら)
これらは AI Agents の基本パターンになっています。
Prompt engineering の実践
| Tip | 内容 |
|---|---|
| 明確な役割指定 | "You are an expert reviewer" |
| 出力形式の指定 | "Reply in JSON" |
| 例を 1〜5 件 | 多すぎると逆効果になることも |
| Negative instruction | 「〜してはいけない」より「〜してほしい」 |
| Decomposition | 複雑なタスクを小タスクに分割 |
| Self-critique | LLM 自身に推敲させる |
数式で見る in-context learning
In-context learning では、task の例集合 を prompt に含め、新しい入力 に対する出力 を生成します。
この式の気持ちは、「model parameter を更新せず、context 内の例を一時的な task specification として使う」というものです。Fine-tuning では を更新しますが、ICL では は固定され、prompt が task を指定します。
Self-consistency は、複数の chain-of-thought と答え を sample し、多数決を取ります。
この式の気持ちは、「推論経路には揺れがあるため、一つの path に賭けるのではなく、複数 path から一番安定した答えを選ぶ」というものです。Temperature を上げると多様な reasoning path が得られますが、破綻した path も増えるため、task に応じた sampling 設定が重要です。
関連ページ
主なソース
- GPT-3 (few-shot): https://arxiv.org/abs/2005.14165
- Chain-of-Thought: https://arxiv.org/abs/2201.11903
- Zero-shot CoT (Kojima): https://arxiv.org/abs/2205.11916
- Self-Consistency: https://arxiv.org/abs/2203.11171
- Tree of Thoughts: https://arxiv.org/abs/2305.10601