プロンプトに例を2〜3個書き添えるだけで、AIの出力が見違えるほど良くなる——使ったことのある人なら経験があるはずです。モデルを訓練し直したわけでもないのに、なぜでしょうか。その鍵が「コンテキスト内学習」です。このページでは、この不思議な能力の正体と性質を一段深く掘り下げます。

📖 ひと言でいうと

コンテキスト内学習(In-Context Learning、ICL)とは、モデル本体を再学習させなくても、プロンプト(入力文)の中に指示や例を書くだけで、モデルがそのタスクに適応した振る舞いを見せる能力のことです。コンテキストとは「文脈」、つまりモデルに与えた入力文全体を指します。

身近な例えでいうと、「その場で手本を見ただけで仕事の要領をつかむ職人」です。改めて研修(再学習)を受けなくても、目の前の手本から「なるほど、この流儀でやればいいのか」と読み取って、同じ流儀で続きをこなす。この「その場の適応」がコンテキスト内学習です。

🖼 1枚でわかるコンテキスト内学習

コンテキスト内学習 = 再学習なしの「その場適応」
  • パラメーターは1ミリも変わらない — 「学習」という名前だがモデル本体は無変更
  • 文脈からパターンを読み取って適応 — 事前学習で得た能力を例示が引き出す
  • 効果はその場限り — 会話(文脈)が終われば何も残らない
  • Zero-Shot/Few-Shotはこの能力の使い方 — 例の数による呼び分け
  • 大規模モデルで顕著になった能力 — LLM活用の土台となる性質
つくもち屋「生成AI入門」SUMMARY

🔍 しっかり理解する

「学習」なのに何も学習していない?

コンテキスト内学習の最大のポイントは、名前に「学習」と付いているのに、モデルのパラメーター(学習で獲得した内部の数値)は一切更新されないことです。

通常の学習(事前学習やファインチューニング)は、データを使ってパラメーターを書き換える工程でした。一方、私たちがプロンプトに例を書いてモデルの振る舞いが変わったとき、モデルの中身は使う前と後でまったく同じです。変わったのは入力(文脈)だけ。それなのに、まるでそのタスクを学習したかのように振る舞う——この「学習したように見える」現象を指して、コンテキスト内学習と呼んでいます。

では中で何が起きているのでしょうか。LLMは「直前までの文脈に最も自然につながる続き」を予測するモデルです。プロンプトに「A→B」という形式の例がいくつも並んでいれば、その続きとして最も自然なのは「同じ規則に従う出力」です。つまりモデルは、文脈の中のパターンを手がかりに、事前学習で身につけた無数の能力の中から、いま求められている振る舞いを選び出しているのです。新しい能力をその場で獲得しているのではなく、すでに持っている能力を文脈が呼び出している、というのが実態に近い理解です。

ファインチューニングとの対比で理解する

この性質は、ファインチューニング(項目k1-3-4)と対比するとくっきりします。

🅰 ファインチューニング
  • パラメーターを書き換える「本当の学習」
  • 効果は永続(モデルに定着)
  • データ整備と計算資源が必要
  • 例え: 脳に刻み込む研修
🅱 コンテキスト内学習
  • パラメーターは変更しない
  • 効果はその文脈限り(何も残らない)
  • プロンプトを書くだけで即使える
  • 例え: その場のメモを見ながら対応
観点 ファインチューニング コンテキスト内学習
パラメーター更新 あり なし
効果の持続 モデルに定着 その場(文脈)限り
必要な準備 データ整備・学習実行 プロンプトの工夫のみ
適応できる量 大量の知識・傾向 文脈に書ける範囲まで

「脳を作り替えるか、メモを見ながら対応するか」。この対比は試験でも実務でも最重要の整理です。

この能力の「性質」を知る: 一時性と文脈の制約

コンテキスト内学習には、使ううえで知っておくべき2つの性質があります。

1つ目は一時性です。適応はあくまで「その文脈の中」だけで起こります。会話を新しく始めれば、前の会話で見せた例やルールは引き継がれません。「昨日教えたのに忘れている」と感じるのは、モデルが忘れたのではなく、そもそも覚える(パラメーターに刻む)仕組みではないからです。毎回のプロンプトに必要な情報を含める必要があります。

2つ目は文脈の量の制約です。モデルが一度に読める入力量(コンテキストウィンドウと呼ばれます)には上限があり、例や資料を無制限に詰め込むことはできません。また、入力が長くなるほど、モデルが文脈の隅々まで注意を行き届かせるのが難しくなる場合もあります。「文脈に入る範囲の適応」という限界を理解したうえで、大量の知識を安定して身につけさせたいならファインチューニング、という使い分けにつながります。

裏を返せば、この性質はうまく活用もできます。検索した資料をプロンプトに添えて回答させるRAG(第2章で学びます)は、「文脈に入れた情報にモデルがその場で適応する」というコンテキスト内学習の性質を利用した仕組みです。モデルを作り替えずに振る舞いや参照情報を差し替えられる手軽さこそ、この能力が実務で重宝される理由です。

なお、この能力はモデルの大規模化に伴って顕著に現れるようになった性質として知られています。小さな言語モデルでは例を見せてもほとんど適応できなかったのが、大規模なLLMでは例示だけで多様なタスクをこなせるようになり、「訓練し直さずにプロンプトで使い方を変える」という現在のLLM活用スタイルの土台になりました。Zero-Shot(項目k1-5-2)やFew-Shot(項目k1-5-3)は、まさにこの能力の具体的な使い方です。

💡 具体例で考える

経理部のAさんは、大量の領収書メモを「日付/金額/科目」の表形式に整理したいと考えました。最初に「表にして」とだけ頼むと、列の並びも科目の表記もバラバラでした。そこでプロンプトの先頭に、自社ルールどおりに整理した見本を3行だけ書き添えたところ、残りのメモがすべて同じルール・同じ表記で整理されました。モデルは自社の経理ルールを「学習」したわけではありません。見本のパターンを文脈から読み取り、同じパターンで続きを生成しただけです。翌日、新しい会話で同じ依頼をしたら、また見本が必要でした——これが一時性です。

この体験は、ファインチューニングとの使い分けの感覚も教えてくれます。Aさんの整理ルールが月に数回使う程度なら、見本をプロンプトに貼るだけで十分です。もし全社員が毎日使う定型業務なら、ルールをモデルに定着させる調整(ファインチューニング)や、テンプレートの整備を検討する価値が出てきます。

⚠️ よくある誤解・つまずきポイント

💡 ポイント
  • 誤解:「会話するたびにAIは学習して賢くなっている」 → 正しくは、利用中にモデル本体は更新されません。文脈への適応はその場限りの現象です
  • 誤解:「コンテキスト内学習はファインチューニングの簡易版で、仕組みは同じ」 → 正しくは、仕組みが根本的に違います。前者はパラメーター無変更の文脈適応、後者はパラメーターを書き換える学習です
  • 誤解:「例を見せれば、モデルが持っていない能力も身につけさせられる」 → 正しくは、引き出せるのは事前学習で獲得済みの能力の範囲です。土台にない専門能力は例示だけでは補いきれません
  • 誤解:「文脈にはいくらでも情報を入れられる」 → 正しくは、一度に読める量(コンテキストウィンドウ)に上限があります

📝 生成AIテストではこう出る

💡 ポイント
  • 定義を問う形式。「モデルのパラメーターを更新せず、プロンプト内の指示や例示のみでタスクに適応する能力」を選ばせる問題が想定されます
  • ファインチューニングとの対比。「パラメーター更新の有無」「効果の持続性」を入れ替えた誤答選択肢が定番です
  • 「会話のたびにモデルが再学習される」という記述は誤り、と判定させる形式が考えられます
  • Zero-Shot/Few-Shotとの関係を問う形式。「どちらもコンテキスト内学習の活用形態である」という位置づけの理解が問われ得ます

📚 まとめ

💡 ポイント
  • コンテキスト内学習は、パラメーターを一切変えずに、プロンプト内の指示・例示だけでタスクに適応して見せるLLMの能力です
  • 実態は「新しい学習」ではなく、文脈のパターンを手がかりに事前学習済みの能力を引き出す現象です
  • 効果はその文脈限りで消え、一度に扱える文脈量にも上限があります
  • 「脳を作り替えるファインチューニング/メモを見て対応するコンテキスト内学習」という対比で覚え、Zero-Shot・Few-Shotの土台として理解しましょう