モデルのしくみ 中級
文脈内学習
In-Context Learning
プロンプトに例や説明を入れるだけで、モデルの重みを更新せずに新しい課題のやり方を覚えさせる能力です。フューショットプロンプトの土台になる性質でもあります。書き方しだいで結果が大きく変わります。
別の呼び方ICL、インコンテキスト学習、文脈内学習
例分類のルールを3つの例で示しただけで、モデルが同じ形式で残りの文章を分類できた。
詳しく
文脈内学習(インコンテキスト学習)とは、プロンプトの中に例や説明を書いておくだけで、モデルが新しい課題のやり方を読み取って実行する能力です。モデルの中身(パラメータ)は一切書き換えていません。「学習」と呼ばれますが、実際には入力の文脈を手がかりに振る舞いを変えているだけで、会話が終われば何も残りません。
どんな現象か
たとえば、次のように書いて渡します。
レビュー:届くのが早くて助かった → 肯定
レビュー:説明と色が違った → 否定
レビュー:サイズがぴったりだった →
モデルは「肯定」と答えられます。分類のルールを一度も学習させていないのに、並べられた例のパターンを読み取り、続きを推測しているわけです。GPT-3 の論文(2020年)で、大規模なモデルがこのような能力を示すことが広く知られるようになりました。
なぜ重要か
従来、新しい課題に対応するには、専用のデータを用意して学習し直す必要がありました。文脈内学習があれば、文章を書くだけで試せるため、試行錯誤が速くなります。フューショットプロンプト(例を数個示す)やゼロショット(例なしで指示のみ)は、いずれもこの性質を利用しています。
実用上のコツ
- 例は、実際に処理させたい入力に近いものを選ぶ
- 形式を統一し、出力の書式まで例で示す
- 例の順序や偏りが結果に影響するため、いくつかの並びで試す
- 難しい課題は、途中の考え方も例に含める(思考の連鎖)
使うときの注意・よくある誤解
- 例は文脈長を消費します。例が多すぎると、費用が増え、入力の上限にも近づきます。
- 例の中の誤りや偏りも、そのまま真似されます。ラベルが少し間違っていても、性能がそれほど落ちない場合があるなど、挙動は一筋縄ではいきません。
- 「新しい知識が身につく」わけではありません。モデルが元々持っている能力を引き出す側面が強いと考えられています。
- 大量の例が必要なときや、安定した精度が求められるときは、ファインチューニングのほうが適しています。
具体的な使い方の例
社内の問い合わせメールを「請求」「技術」「その他」に分けたいとき、各分類につき2〜3件の実例を入れてから、分類したいメールを続けて書きます。これだけで、専用のモデルを作らなくても、実用的な精度が得られることがあります。精度が足りなければ、間違えやすい例を追加して、境界線を示すのが近道です。
関連する考え方
近年は文脈長が大きく伸び、何十から何百もの例を入れる使い方も試されています。なぜこの能力が働くのかは、研究が続いている分野で、まだ決着していない点が多くあります。
あわせて知りたい言葉
- フューショットプロンプトAIへの指示に、望む入出力の見本を数個添えて、やり方を伝える方法です。長い説明を書かなくても、書式や口調、判断基準が伝わりやすくなる、手軽で効果的な工夫です。例の選び方が重要です。
- ゼロショット見本を一切示さず、指示だけでAIにタスクをやらせる使い方です。大規模なモデルは事前学習で幅広い知識を持つため、短い指示だけでも多くの作業をこなせます。まず試す際の基本の使い方です。
- プロンプトエンジニアリングAIから望む結果を得るために、指示の書き方や与える情報、出力形式などを工夫して設計することです。コツを押さえるだけで、同じAIでも回答の質が大きく変わる、AI活用の基本の技術です。
- ファインチューニング学習済みのモデルに、特定の用途向けのデータを追加で学習させて調整することです。出力の形式や口調、特定分野の判断のしかたをモデルに覚えさせるのに使い、プロンプトだけでは安定しない場面で検討します。
- 文脈長モデルが1回の処理で扱えるトークン数の上限です。入力(指示・会話履歴・資料)と出力の合計がこの範囲に収まる必要があり、長いほど多くの資料を一度にまとめて渡せます。