インコンテキスト学習とは、大規模モデルがパラメータを更新せず、プロンプトに示された数個の例だけを頼りに、新しいタスクをその場でこなす能力のことである。モデルは再学習されるわけではなく、例を恒久的に覚えるわけでもない。例を現在の会話における一時的な参照として扱い、そこからタスクの形式や文体、判断基準を推測して、新しい入力に適用する。例が明確であれば結果も正確になりやすく、例があいまいだと結果もあいまいになる。
具体的な例で見る
ユーザーのメッセージを問い合わせ、苦情、称賛の3種類に分けたいとする。再学習は不要で、プロンプトに種類ごとにラベル付きのメッセージを1、2件ずつ示し、ラベルのない新しいメッセージを加えるだけでよい。モデルは例の分類方法にならって新しいメッセージにラベルを付ける。例や分類基準を変えれば、同じモデルでもまったく違う結果になることがあり、固定のルールを実行しているのではなく例に従っていることが分かる。
微調整やRAGとの違い
微調整はデータを用いてモデルのパラメータを実際に更新する。変更は残り続け、長期的で安定したタスクに向くが、データと計算資源と時間が必要である。RAGはまず外部の資料庫から関連情報を検索し、その検索結果をもとにモデルが回答するため、答えの根拠は主に検索された資料にある。インコンテキスト学習はパラメータを変えず、外部資料も調べず、根拠はプロンプト内の例だけである。最も軽く速い一方で、プロンプトの言い回しに左右されやすい。
よくある3つの誤解
- 例を示すことは学習ではない。例はその会話の間だけ有効で、会話が変われば効力を失い、モデルがデータを長期的に覚えることはない。
- 例は多ければよいわけではない。数、順序、表現方法はいずれも結果に影響する。矛盾する例、最後に置かれた例、あいまいな表現の例は、モデルを誤った方向へ導きうる。
- コンテキストが長いほど記憶が確かになるわけではない。プロンプトの内容が増えるほど重要な情報は薄まりやすく、モデルは後半の内容により注目するおそれがある。重要な例と要求は、量を積むのではなく簡潔に目立つ形で示す。
向く場合と、頼ってはいけない場合
形式が固定され、基準を例で明確に示せるタスクはインコンテキスト学習に向いている。分類、書き換え、固定テンプレートによる情報抽出などがその例である。正確な専門知識が必要な場合、好みを長期的に覚えておく必要がある場合、例だけでは基準を示せない場合は、数個の例に頼ってはいけない。その場合は微調整、外部資料の検索、ルールの明文化がより適している。判断基準は単純で、例を少し変えただけで結果が大きく変わるなら、まだ例から意味を推測している段階であり、より確かな根拠が必要である。