モデルのしくみ 中級

文脈内学習

In-Context Learning

プロンプトに例や説明を入れるだけで、モデルの重みを更新せずに新しい課題のやり方を覚えさせる能力です。フューショットプロンプトの土台になる性質でもあります。書き方しだいで結果が大きく変わります。

別の呼び方ICL、インコンテキスト学習、文脈内学習

例分類のルールを3つの例で示しただけで、モデルが同じ形式で残りの文章を分類できた。

詳しく

文脈内学習(インコンテキスト学習)とは、プロンプトの中に例や説明を書いておくだけで、モデルが新しい課題のやり方を読み取って実行する能力です。モデルの中身(パラメータ)は一切書き換えていません。「学習」と呼ばれますが、実際には入力の文脈を手がかりに振る舞いを変えているだけで、会話が終われば何も残りません。

どんな現象か

たとえば、次のように書いて渡します。

レビュー:届くのが早くて助かった → 肯定
レビュー:説明と色が違った → 否定
レビュー:サイズがぴったりだった →

モデルは「肯定」と答えられます。分類のルールを一度も学習させていないのに、並べられた例のパターンを読み取り、続きを推測しているわけです。GPT-3 の論文(2020年)で、大規模なモデルがこのような能力を示すことが広く知られるようになりました。

なぜ重要か

従来、新しい課題に対応するには、専用のデータを用意して学習し直す必要がありました。文脈内学習があれば、文章を書くだけで試せるため、試行錯誤が速くなります。フューショットプロンプト(例を数個示す)やゼロショット(例なしで指示のみ)は、いずれもこの性質を利用しています。

実用上のコツ

  • 例は、実際に処理させたい入力に近いものを選ぶ
  • 形式を統一し、出力の書式まで例で示す
  • 例の順序や偏りが結果に影響するため、いくつかの並びで試す
  • 難しい課題は、途中の考え方も例に含める(思考の連鎖)

使うときの注意・よくある誤解

  • 例は文脈長を消費します。例が多すぎると、費用が増え、入力の上限にも近づきます。
  • 例の中の誤りや偏りも、そのまま真似されます。ラベルが少し間違っていても、性能がそれほど落ちない場合があるなど、挙動は一筋縄ではいきません。
  • 「新しい知識が身につく」わけではありません。モデルが元々持っている能力を引き出す側面が強いと考えられています。
  • 大量の例が必要なときや、安定した精度が求められるときは、ファインチューニングのほうが適しています。

具体的な使い方の例

社内の問い合わせメールを「請求」「技術」「その他」に分けたいとき、各分類につき2〜3件の実例を入れてから、分類したいメールを続けて書きます。これだけで、専用のモデルを作らなくても、実用的な精度が得られることがあります。精度が足りなければ、間違えやすい例を追加して、境界線を示すのが近道です。

関連する考え方

近年は文脈長が大きく伸び、何十から何百もの例を入れる使い方も試されています。なぜこの能力が働くのかは、研究が続いている分野で、まだ決着していない点が多くあります。

あわせて知りたい言葉

「モデルのしくみ」の言葉をすべて見る