AI・機械学習
中級

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

LLMに2〜5個の入出力例(ショット)を提示し、期待するタスクのパターンを学習させるプロンプティング手法。例示なしの Zero-shot より高精度で、大量の学習データを必要とするファインチューニングより手軽。分類・変換・抽出タスクで特に効果を発揮する。

0 回閲覧
0 いいね

Few-shot プロンプティングとは

Few-shot プロンプティングは、LLM へのプロンプトに少数(2〜5個)の入出力例を含めることで、モデルにタスクのパターンを文脈内で学習させる手法である。GPT-3 の論文(2020年)で体系化され、ファインチューニングなしでタスク精度を大幅に改善できることが示された。

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

手法例数精度コスト使いどころ
Zero-shot0低〜中最低簡単なタスク、十分に訓練済みの領域
One-shot1中低フォーマットの指定が主目的
Few-shot2〜5高中分類・抽出・変換・特殊フォーマット
Many-shot10〜100最高高長コンテキストモデルで複雑なパターン

Few-shot の設計パターン

効果的な Few-shot プロンプトの構成は以下の通り。

[タスク説明]
テキストの感情を「ポジティブ」「ネガティブ」「中立」に分類してください。

[例1]
入力: このカメラの画質は素晴らしく、夜景も綺麗に撮れます
出力: ポジティブ

[例2]
入力: バッテリーが2時間しか持たないのは致命的です
出力: ネガティブ

[例3]
入力: サイズは152×73mmで重量は180gです
出力: 中立

[本番入力]
入力: 起動は速いですが画面の色味が不自然で気になります
出力:

例の選び方のベストプラクティス

  • 多様性を確保: 各クラス・パターンをカバーする例をバランスよく含める
  • 境界ケースを含める: 判断が難しいエッジケースの例を1つは入れる
  • 一貫したフォーマット: すべての例で入出力の形式を統一する
  • 順序の考慮: 最も代表的な例を最初と最後に配置(Primacy/Recency効果)
  • ラベルの分布: 正例と負例の比率を偏らせない(偏ると多数派に引きずられる)

Few-shot が効果的なタスク

  • テキスト分類: 感情分析、スパム判定、カテゴリ分類
  • 情報抽出: 構造化データの抽出(名前・日付・金額・製品名)
  • フォーマット変換: CSV→JSON、自然言語→SQL、ログ→構造化データ
  • スタイル模倣: 特定のトーン・文体での文章生成
  • コード生成: 特定のフレームワーク・ライブラリの使い方

Few-shot の限界と対策

  • コンテキスト長の消費: 例が多いほどトークンを消費。コスト・レイテンシーが増加。対策: 重要な例に絞る
  • 例の品質依存: 不正確な例を含めると出力品質が劣化。対策: 例を人手で検証
  • 複雑な推論には不十分: 数学・論理推論は Few-shot だけでは精度が出ない。対策: Chain-of-Thought と組み合わせ
  • 順序バイアス: 例の順序が出力に影響。対策: 複数の順序でテストし最適な配置を選定

FAQ

Q1: Few-shot の例は何個がベストですか?

A1: 一般に3〜5個が最適。2個だとパターン学習が不十分で、6個以上は精度向上が頭打ちになりトークンコストだけ増える。ただし Many-shot(10〜100個)が効果的なケースもあり、コンテキスト長に余裕があれば試す価値がある。

Q2: Few-shot とファインチューニングはどう使い分けますか?

A2: 同一タスクを月に数千回以上実行するならファインチューニングがコスト効率で優位。それ以下の頻度や、タスク内容が頻繁に変わる場合は Few-shot の方が柔軟で実用的。

Q3: Few-shot の例は毎回同じものを使うべきですか?

A3: 固定例で十分なケースが多いが、入力に応じて類似度の高い例を動的に選択する「Dynamic Few-shot」はさらに精度が向上する。RAG で例を検索し、入力に最も関連する例を選ぶパターンが実用的。