コンテキスト内学習【ICL】In-Context Learning/文脈内学習
概要

従来の機械学習では、新しい作業を高い精度で実行させるため、追加の学習データを用意してモデルを再学習させることが一般的であった。これに対しコンテキスト内学習では、利用者がプロンプトに指示や入力例、期待する出力例を記述するだけでモデルが応答を生成する。
モデルはプロンプトに含まれる例を文脈として読み取り、共通した規則や形式を続く入力にも適用して応答を組み立てる。このときモデル内部の重みは更新されず、学習結果が保存されることもない。応答が有効なのはそのプロンプトの範囲内に限られ、対話や処理が終了すれば能力は失われる。
例をまったく与えず指示だけを記述する方法は「ゼロショット学習」(zero-shot)、例を一つ示す方法は「ワンショット学習」(one-shot)、複数の例を示す方法は「フューショット学習」(few-shot)と呼ばる。文章の要約や翻訳、文章分類、情報抽出、プログラムコードの生成など、数個の例を提示するだけで同様の処理を実行できる場面は多く、プロンプトエンジニアリングにおける代表的な手法の一つとして知られる。
この仕組みは開発者がモデルの機能として意図的に組み込んだものではなく、言語モデルの性能向上によってプロンプトの理解力が飛躍的に向上し、自然に身につけた能力であると考えられている。2020年に米オープンAI(OpenAI)社が発表した「GPT-3」に、少数の例を示すだけで様々なタスクへ対応できる能力が発見され、以降のモデルでも基本的な能力として活用されるようになった。
コンテキスト内学習の結果は、与える例の内容や順序、表現方法の影響を受けやすい。例が不適切であれば誤った規則を適用することがあり、プロンプトが長くなるとモデルが一度に処理できる入力の長さの上限(コンテキストウィンドウ)の制約も受ける。このため、必要な情報を適切な順序で構成するプロンプト設計や、検索システムから必要な情報を取得してプロンプトへ組み込むといった工夫が求められる。