Skip to main content

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-critiqueLLM 自身に推敲させる

数式で見る in-context learning

In-context learning では、task の例集合 C={(xi,yi)}i=1k\mathcal{C}=\{(x_i,y_i)\}_{i=1}^{k} を prompt に含め、新しい入力 xx_* に対する出力 yy_* を生成します。

pθ(yx,C)p_\theta(y_*\mid x_*,\mathcal{C})

この式の気持ちは、「model parameter を更新せず、context 内の例を一時的な task specification として使う」というものです。Fine-tuning では θ\theta を更新しますが、ICL では θ\theta は固定され、prompt が task を指定します。

Self-consistency は、複数の chain-of-thought zkz_k と答え aka_k を sample し、多数決を取ります。

zk,akpθ(z,ax),a^=argmaxak=1K1[ak=a]z_k,a_k\sim p_\theta(z,a\mid x),\qquad \hat{a}=\arg\max_a\sum_{k=1}^{K}\mathbf{1}[a_k=a]

この式の気持ちは、「推論経路には揺れがあるため、一つの path に賭けるのではなく、複数 path から一番安定した答えを選ぶ」というものです。Temperature を上げると多様な reasoning path が得られますが、破綻した path も増えるため、task に応じた sampling 設定が重要です。

関連ページ

主なソース