ゼロショット/フューショット学習とは?AIに例を見せて教える仕組み

ゼロショット学習・フューショット学習とは何か。AIを再学習させず、プロンプトに例を0個や数個見せるだけで新しいタスクをこなさせる「文脈内学習(In-Context Learning)」の仕組みを、OpenAIのGPT-3論文をもとに非専門家向けに解説。ファインチューニングとの使い分けも整理します。

ゼロショット/フューショット学習とは?AIに例を見せて教える仕組み

ChatGPTのようなAIに「この調子で続けて」と数個の例を見せると、こちらが細かく説明しなくても、同じパターンで残りをこなしてくれることがあります。たとえば「りんご→果物、にんじん→野菜」と2つ示してから「ばなな→?」と尋ねると、AIは「果物」と答えを返します。このとき、AIは新しく訓練し直されたわけではありません。プロンプトに見せた例から、その場でやり方を読み取っているのです。

この「例を見せるだけでタスクを覚えさせる」仕組みが ゼロショット学習・フューショット学習、まとめて 文脈内学習(In-Context Learning) と呼ばれるものです。プロンプトエンジニアリングの土台になる考え方であり、ファインチューニングとの違いを理解するうえでも欠かせません。この記事では、その仕組みをOpenAIの研究をもとに非専門家向けに整理します。

3つの段階:例が0個・1個・数個

文脈内学習は、AIに見せる「お手本(例)」の数によって呼び方が変わります。@ITの用語辞典は、この3つを次のように区別しています2

  • ゼロショット:例文を1つも見せず、指示だけでタスクをこなさせる
  • ワンショット:例文を1つだけ見せる
  • フューショット:少数(数個)の例文を見せる

「ショット(shot)」とは、ここでは「お手本の数」を指します。ゼロショットは「いきなり本番」、フューショットは「2〜3問の例題を見せてから本番」というイメージです。

重要なのは、いずれの場合もAI本体のパラメータ(内部の重み)は書き換わらないという点です。@ITはフューショット学習を「言語モデルのパラメータのアップデートなしに、少数の例文を文脈(コンテキスト)に示唆するだけで、様々なタスク対応ができる能力」2と説明しています。AIは渡された文章=文脈の中だけで一時的にやり方を覚え、その会話が終われば忘れます。だからこそ「文脈内学習(In-Context Learning)」と呼ばれます2

なぜ「学習」と呼ぶのか:GPT-3が示したこと

この能力を広く知らしめたのが、OpenAIが2020年に公開した論文「Language Models are Few-Shot Learners(言語モデルはフューショット学習器である)」です1。タイトルそのものが、1750億パラメータという当時としては桁外れに大きかったGPT-31の核心を表しています。

この論文の主張は明快です。言語モデルを十分に大きくすると、タスクごとに専用の追加学習(ファインチューニング)をしなくても、例をいくつか見せるだけでそのタスクをこなせるようになる、というものです1。論文は、この方法が「勾配更新やファインチューニングを一切行わず、テキストでのやり取りだけでタスクとフューショットの例を指定して」適用されると説明しています1。実際にGPT-3は、翻訳や質問応答、推論を要するタスクなど、多くの課題で強い性能を示しました1

つまり、モデルの中身を書き換える「本当の学習」をしていないのに、まるでその場で学んだかのように振る舞う——この現象を指して「フューショット学習」「文脈内学習」と呼んでいるわけです。@ITも、大きな言語モデルほど多様な例を柔軟に適用できることから、この能力が文脈内学習と呼ばれるようになったと整理しています2

ファインチューニングとの使い分け

文脈内学習としばしば比較されるのがファインチューニングです。両者は「AIに特定のタスクを覚えさせる」点で似ていますが、性質が大きく異なります。

ファインチューニングは、追加のデータでモデルそのものを訓練し直し、内部の重みを恒久的に書き換えます。一度仕込めば毎回例を見せる必要はありませんが、データ準備と訓練のコストがかかります。一方の文脈内学習は、モデルには手を加えず、その場のプロンプトに例を添えるだけです。手軽で即座に試せる反面、毎回プロンプトに例を入れる必要があり、見せられる例の量もコンテキストウィンドウの上限に縛られます。

おおまかには、「まず試したい」「タスクが頻繁に変わる」場合は文脈内学習、「同じ専門タスクを大量・安定してこなしたい」場合はファインチューニング、という使い分けが目安になります。@ITも、ゼロショットを「ファインチューニングなく、与えられたプロンプトのみで様々なタスクに対応できる」こととして、ファインチューニングと対比して説明しています3

思考の連鎖との関係と実践のコツ

文脈内学習は、思考の連鎖(Chain-of-Thought)とも深く結びついています。フューショットの例の中に「答えだけでなく途中の考え」を書き込んでおくと、AIもまねて推論の道筋を出力するようになり、複雑な問題の正答率が上がります。さらに、例を一つも見せないゼロショットでも、「ステップバイステップで考えてみましょう」と一文添える「ゼロショットCoT」という手法があることが知られています3

実践面では、いくつかコツがあります。例は多すぎず、AIに踏襲してほしい形式(入力と出力のペア)を明確に示すこと。出力フォーマットを揃えたいときほど、お手本を見せるフューショットが効きます。逆に、簡単な指示で済む作業なら、わざわざ例を用意せずゼロショットで十分なことも多くあります。

なお「ゼロショット学習」という言葉は、もともと画像認識など機械学習全般で「未知のカテゴリーに対応する手法」としても使われます。ここで解説したのは、その中でもLLMにプロンプトで例を見せる文脈内学習に当たる使い方です。

AIへの指示の出し方を体系的に学びたい方はプロンプトエンジニアリング、モデル自体を作り替える方法を知りたい方はファインチューニングとあわせて読むと、AIに「やってほしいこと」を伝える手段の全体像が見えてきます。

Sources

  1. Language Models are Few-Shot Learners - Brown et al.(OpenAI)によるGPT-3論文(2020年5月)
  2. Few-shot Learning(フューショット学習)とは? - @IT「AI・機械学習の用語辞典」による日本語解説
  3. Zero-shot Learning(ゼロショット学習)とは? - @IT「AI・機械学習の用語辞典」による日本語解説

最新のAIニュースを毎日お届けしています。

RSSで購読する 更新をいち早くチェックできます。

他のキーワードで探す →