通常のディープラーニングは数千〜数万件のデータを必要としますが、人間は数個の例を見ただけで新しいものを覚えられます。この「数個の例から学ぶ」をAIで実現するのがFew-shot学習です。この記事では、少量データで学習が成り立つ理由を中心に解説します。
📖 ひと言でいうと
Few-shot(Few-shot学習)とは、各クラスにつき数枚から数十枚程度という少量のラベル付きサンプルだけでモデルを学習・適応させる手法です。「shot」はサンプル(例)の数を指し、少数(few)の例で済むことが名前の由来です。
例えるなら、経験豊富な鑑定士に新種の茶碗を覚えてもらう場面です。目利きの基礎(事前学習された知識)がすでにあるため、新種の実物を数個見せるだけで見分けられるようになります。ゼロから素人を育てるなら大量の実物が必要ですが、土台があれば数例で足りるのです。
🖼 1枚でわかるFew-shot
📘 公式テキストの説明
転移学習やファインチューニングの分野では、少量のデータでモデルを効果的に学習させる手法として「Few-shot学習」が注目されている。Few-shot学習は、各クラスに対して数枚から数十枚程度のラベル付きサンプルが存在する状況でモデルを学習させる手法である。One-shot学習が極端なケースであるのに対し、Few-shot学習はもう少し多くのサンプルを用いるが、それでも従来の学習手法に比べて非常に少ないデータで学習を行う。この手法は、データ収集が困難な状況や、新しいクラスが頻繁に追加される状況で特に有用である。Few-shot学習を実現するためには、事前に大規模なデータセットで学習されたモデルを活用することが一般的である。例えば、画像認識の分野では、既存の大規模な画像データセットで学習されたモデルを基に、新しいクラスの少数のサンプルを用いてモデルを適応させることで、少ないデータでも高い認識性能を達成することが可能となる。また、自然言語処理の分野でも、事前に大量のテキストデータで学習された大規模言語モデルを用いて、少数の例示(プロンプト)を与えることで、新しいタスクに適応させることが可能である。このように、事前学習されたモデルを活用することで、少ないデータからでも効果的に学習を行うことができる。
要点は3つです。①定義は「各クラス数枚〜数十枚のサンプルで学習」、②実現の鍵は「大規模データで事前学習されたモデルの活用」、③NLPでは「プロンプトに少数の例示を与える」形でも使われる。この記事では特に②の「なぜ少量で済むのか」を掘り下げます(1例だけの極端なケースについては、One-shotの記事で扱います)。
🔍 しっかり理解する
なぜ少量のデータで学習できるのか
通常のディープラーニングをゼロから行うと、「画像とは何か」「輪郭や模様はどう捉えるか」といった基礎から学ぶ必要があり、大量のデータが不可欠です。Few-shot学習が少量で済むのは、この基礎部分を事前学習済みモデルからもらってくるからです。
大規模データセットで事前学習されたモデルは、汎用的な特徴の捉え方をすでに身につけています。そのため、新しいクラスを覚えるときに必要なのは「既に持っている特徴の捉え方を、新クラスにどう対応づけるか」だけであり、それなら数枚〜数十枚のサンプルで足りる、という理屈です。
だからこそFew-shot学習はシラバス上も「転移学習・ファインチューニング」の節に置かれています。事前学習済みモデルの知識を再利用するという意味で、転移学習の考え方の延長線上にある手法なのです。
どんな場面で役立つのか
公式テキストは2つの状況を挙げています。
- データ収集が困難な状況 — 希少な症例の医療画像、珍しい不良品の画像など、そもそもサンプルが数枚しか存在しないケース。
- 新しいクラスが頻繁に追加される状況 — ECサイトの新商品、工場の新製品など。追加のたびに数千枚集めて再学習するのは非現実的ですが、Few-shotなら数枚で対応できます。
大規模言語モデルにおけるFew-shot——「例示をプロンプトで見せる」
自然言語処理では、Few-shotはもうひとつの顔を持ちます。GPT系の大規模言語モデルでは、モデルのパラメータを更新する再学習をせずに、プロンプト(入力文)の中に少数の例示を書いて見せるだけで新しいタスクに適応させられます。
たとえば「英文→和訳」の例を2〜3組プロンプトに書いてから新しい英文を与えると、モデルは例示のパターンを読み取って和訳を返します。このように推論時の例示で適応させる使い方も「Few-shot」と呼ばれ、試験でも重要な文脈です。
💡 具体例で考える
例1: 工場の新しい不良品検知。 製造ラインに新種の不良が発生したとき、その不良品の画像は数枚しか手に入りません。大規模画像データセットで事前学習したモデルを基に、この数枚で適応させれば、新種の不良を検出できるようになります。「新しいクラスが頻繁に追加される状況」の典型例です。
例2: LLMへの例示プロンプト。 大規模言語モデルに問い合わせメールの分類をさせたいとき、「このメールは『返品』」「このメールは『配送』」のような例を3件ほどプロンプトに含めてから本番のメールを渡すと、追加学習なしで分類できます。これがNLP分野でのFew-shotの実践形です。
⚠️ よくある誤解・紛らわしい用語
- One-shotとの違い — One-shot学習は各クラスのサンプルが1つだけという極端なケース。Few-shotは数枚〜数十枚です。「1枚ならOne-shot、数枚〜数十枚ならFew-shot」で判別します(詳細はOne-shotの記事参照)。
- 「ゼロから少量データだけで学習する」は誤り — 少量で済むのは事前学習済みモデルという土台があるからです。土台なしの少量学習は通常うまくいきません。
- Zero-shotとの混同 — 例示を1つも与えずタスクを指示だけで解かせる場合はZero-shotと呼ばれ、Few-shot(少数の例示あり)と区別されます。
- ファインチューニングとの関係 — LLMのFew-shotプロンプティングはパラメータを更新しません。パラメータを再学習で更新するファインチューニングとは適応の仕方が異なります。
📝 試験でのポイント
- 「各クラスに対して数枚から数十枚程度のラベル付きサンプルで学習する手法」という定義でFew-shotを選ばせる問題が典型です。
- One-shot(1つ)/Few-shot(数枚〜数十枚)のサンプル数の対比は最頻出の判別ポイントです。
- 「実現には事前学習済みモデルの活用が一般的」という記述の正誤判定に備えましょう。
- LLMの文脈で「プロンプトに少数の例示を与えて適応させる」使い方がFew-shotと呼ばれる点も問われやすいところです。
📚 まとめ
- Few-shot学習は、各クラス数枚〜数十枚の少量サンプルでモデルを学習・適応させる手法です。
- 少量で済む鍵は、大規模データで事前学習されたモデルの知識を土台に使うことにあります。
- データ収集が困難な状況や、新クラスが頻繁に追加される状況で特に有用です。
- NLPでは、プロンプトに少数の例示を与えてLLMを新タスクに適応させる形でも使われます。
- サンプルが1つだけの極端なケースはOne-shot学習と呼ばれ、区別されます。
