AI・機械学習
中級

Few-shot プロンプティング(フューショットプロンプティング)

Few-shot プロンプティングとは、大規模言語モデルへのプロンプトに少数(2〜5個程度)の入出力例を含めることで、モデルに期待するタスクのパターンを学習させ、新しい入力に対して同様の形式・品質で出力させるプロンプト技法である。In-context Learning(文脈内学習)の代表的手法として広く活用されている。

0 回閲覧
0 いいね

Few-shot プロンプティング

Few-shot プロンプティングは、LLM に対して少数の入出力例(ショット)を提示し、パターンを文脈内で学習させることで出力の品質と一貫性を向上させる手法である。GPT-3 の論文「Language Models are Few-Shot Learners」(Brown et al., 2020)で体系化され、プロンプトエンジニアリングの基盤技術として定着した。

Zero-shot・One-shot・Few-shot の比較

LLM への例示数による分類は以下の通りである:

手法例示数特徴適用場面
Zero-shot0個指示のみで直接タスク実行単純な分類・要約・翻訳
One-shot1個1つの入出力例を提示フォーマット統一が必要なタスク
Few-shot2〜5個複数の入出力例を提示複雑なパターン認識・特殊フォーマット
Many-shot10個以上大量の例を提示(Gemini 1.5等の長コンテキスト活用)高精度が必要な専門タスク

GPT-4o(128K コンテキスト)や Gemini 1.5 Pro(1M コンテキスト)の登場により、Many-shot(10〜100例)の提示が実用的になり、ファインチューニングなしで専門ドメインへの適応が可能になった。

Few-shot の基本構造

Few-shot プロンプトの標準的な構造は以下の通りである:

[タスクの説明(オプション)]

例1:
入力: [入力テキスト1]
出力: [期待出力1]

例2:
入力: [入力テキスト2]
出力: [期待出力2]

例3:
入力: [入力テキスト3]
出力: [期待出力3]

本番:
入力: [実際の入力]
出力:

この構造により、モデルは例示のパターンを「文脈内学習」(In-context Learning)し、新しい入力に対して同様の形式と品質で出力を生成する。

例示選択の最適化

Few-shot の精度は例示の質と選択方法に大きく依存する。効果的な例示選択の原則は以下の通りである:

  • 多様性: 異なるパターン・カテゴリ・難易度の例を含める。同一パターンの繰り返しは学習効果が低い
  • 代表性: タスク全体を代表する典型的な例を選ぶ。エッジケースのみでは汎化性能が下がる
  • 順序: 簡単な例から難しい例へ並べる(カリキュラム学習効果)。ただしランダム順でも十分な場合が多い
  • 類似性: 本番入力に意味的に近い例を選ぶと精度が向上する(kNN-based selection)
  • バランス: 分類タスクでは各クラスの例を均等に含める。偏りはモデルのバイアスを増幅する

2024年に発表された研究では、入力に意味的に近い例を動的に選択する「Retrieval-Augmented Few-shot」手法が、固定例示より平均 8〜12% の精度向上を達成している。

実務での活用パターン

感情分析の Few-shot

以下の製品レビューの感情を「ポジティブ」「ネガティブ」「ニュートラル」で分類してください。

レビュー: このグラボは静音性が素晴らしい。ファンが全く気にならない。
感情: ポジティブ

レビュー: 初期不良で交換になった。サポートの対応も遅い。
感情: ネガティブ

レビュー: RTX 4070 Tiとしては標準的なスペック。可もなく不可もなく。
感情: ニュートラル

レビュー: [分析対象のレビュー]
感情:

構造化データ抽出の Few-shot

製品情報から以下の形式でデータを抽出してください。

入力: ASUS ROG Strix GeForce RTX 4090 OC Edition 24GB GDDR6X
出力: {"brand":"ASUS","series":"ROG Strix","gpu":"RTX 4090","vram":"24GB","vram_type":"GDDR6X","edition":"OC"}

入力: MSI GeForce RTX 4080 SUPER 16G GAMING X SLIM
出力: {"brand":"MSI","series":"GAMING X SLIM","gpu":"RTX 4080 SUPER","vram":"16GB","vram_type":"GDDR6X","edition":"標準"}

入力: [抽出対象の製品情報]
出力:

Few-shot の限界と対策

  • コンテキスト消費: 例示が多いほどコンテキストウィンドウを消費し、本番入力に使える領域が減少する。GPT-3.5(4K コンテキスト)では 2〜3例が限度だが、Claude 3.5(200K)では 50例以上も可能
  • 例示バイアス: 例示の偏りがモデルの出力に直接影響する。全てポジティブな例を示すとポジティブに偏る傾向がある
  • フォーマット固定: 例示のフォーマットに強く拘束されるため、柔軟な出力が必要な場合は Zero-shot + 指示の方が適切
  • 順序感度: 一部のモデルは例示の順序に敏感であり、最後の例に出力が引きずられる「recency bias」が報告されている

API コスト比較

モデル入力単価(1M tokens)3例 Few-shot 追加コスト目安コンテキスト上限
GPT-4o$2.50約$0.005128K
Claude 3.5 Sonnet$3.00約$0.006200K
Gemini 1.5 Pro$1.25約$0.00251M
GPT-4o mini$0.15約$0.0003128K

よくある質問(FAQ)

Q1: Few-shot の例は何個が最適? A: 一般的には 3〜5 個が費用対効果のバランスが良い。精度は例数の対数に比例して向上するため、3個→5個の改善幅は大きいが、5個→10個の改善幅は小さくなる。タスクの複雑さとコンテキスト予算に応じて調整する。

Q2: Few-shot とファインチューニングはどちらが良い? A: 数十〜数百件のデータなら Few-shot が効率的。数千件以上のラベル付きデータがあり、同一タスクを大量に処理する場合はファインチューニングの方がコスト効率が高い。Few-shot は即座に試行でき、ファインチューニングは学習に数時間〜数日かかる。

Q3: Many-shot は Few-shot より常に優れている? A: 例数が多いほど精度は向上する傾向があるが、コンテキスト消費・コスト増加・処理速度低下のトレードオフがある。Google の研究では Gemini 1.5 Pro で 100例の Many-shot が Few-shot を大幅に上回ったが、実務ではコスト制約からFew-shot(3〜5例)+高品質な例示選択が主流である。

まとめ

  • Few-shot は少数の入出力例を提示してモデルにパターンを学習させる技法
  • Zero-shot → One-shot → Few-shot → Many-shot の順に精度が向上するが、コストも増加
  • 例示の質・多様性・順序が精度に大きく影響する
  • Retrieval-Augmented Few-shot で動的に例示を選択する手法が2024年以降の主流
  • GPT-4o mini など低コストモデルと組み合わせることでコスト効率を最適化できる