- HOME >
- Jamstack用語集 >
- Few-Shot Learning
Few-Shot Learning
フューショット学習
Few-Shot Learning を分かりやすく
Few-Shot Learning(フューショット学習)は、AI に数個の例を示すことで、新しいタスクのパターンを学習させる手法です。
例え話をしましょう。あなたが新しい言語を学ぶとします。
Zero-Shot(例なし)
- 先生「『ありがとう』を英語で言ってください」
- あなた「...?」(難しい)
Few-Shot(数個の例)
- 先生「例を見てください」
- こんにちは → Hello
- さようなら → Goodbye
- おはよう → Good morning
- 先生「では、『ありがとう』を英語で言ってください」
- あなた「Thank you!」(パターンが分かった)
Fine-Tuning(大量の訓練)
- 数ヶ月間、英語の授業を受ける
- 何百もの単語と文法を学ぶ
- 完璧に話せるようになる
Few-Shot は、少数の例から素早くパターンを理解し、適用する方法です。
Few-Shot Learning の仕組み
大規模言語モデル(LLM)は、プロンプト内の例からパターンを学習し、新しい入力に適用します。
プロンプトの構造
1. タスクの説明(オプション)
2. 例1: 入力 → 出力
3. 例2: 入力 → 出力
4. 例3: 入力 → 出力
5. 実際のタスク: 入力 → ?
AI は例のパターンを認識し、新しい入力に適用実例
プロンプト:
「次の例に従って、文章の感情を分類してください。
例1:
入力: この映画は素晴らしかった
出力: ポジティブ
例2:
入力: 期待外れでした
出力: ネガティブ
例3:
入力: まあまあでした
出力: ニュートラル
では、次の文章を分類してください。
入力: 最高の体験でした
出力:」
AI の応答: 「ポジティブ」Few-Shot Learning の種類
Few-Shot には、いくつかのバリエーションがあります。
One-Shot Learning(1つの例)
例が1つだけの場合
プロンプト:
「例に従って翻訳してください。
例: Hello → こんにちは
翻訳してください: Thank you」
AI: 「ありがとう」Few-Shot Learning(2〜10個の例)
一般的には2〜10個の例を使用
プロンプト:
「例に従って、商品カテゴリを分類してください。
例1: ノートPC → 電子機器
例2: Tシャツ → 衣類
例3: コーヒー豆 → 食品
分類してください: スマートフォン」
AI: 「電子機器」Many-Shot Learning(多数の例)
10個以上の例を使用
コンテキストウィンドウが大きいモデルで有効
例: 50個の分類例を提示
→ より高精度な分類が可能Few-Shot Learning の実例
様々なタスクでの活用例を紹介します。
テキスト分類
プロンプト:
「ニュース記事をカテゴリ分類してください。
例1:
記事: 株価が上昇し、過去最高を記録
カテゴリ: ビジネス
例2:
記事: 新薬の臨床試験が成功
カテゴリ: 医療
例3:
記事: スポーツチームが優勝を決めた
カテゴリ: スポーツ
分類してください:
記事: 新しいスマートフォンが発表された」
AI: 「カテゴリ: テクノロジー」データ抽出
プロンプト:
「例に従って、メールから日時と場所を抽出してください。
例1:
メール: 明日の14時に会議室Aで打ち合わせをしましょう
抽出: 日時=明日14時, 場所=会議室A
例2:
メール: 来週月曜の10時にカフェで会いませんか?
抽出: 日時=来週月曜10時, 場所=カフェ
抽出してください:
メール: 金曜日の午後3時に本社ロビーでお待ちしています」
AI: 「日時=金曜日15時, 場所=本社ロビー」形式変換
プロンプト:
「例に従って、文章をJSON形式に変換してください。
例1:
入力: 田中太郎は30歳で、東京在住です
出力: {"name": "田中太郎", "age": 30, "city": "東京"}
例2:
入力: 佐藤花子は25歳で、大阪在住です
出力: {"name": "佐藤花子", "age": 25, "city": "大阪"}
変換してください:
入力: 山田次郎は35歳で、名古屋在住です」
AI: 「{"name": "山田次郎", "age": 35, "city": "名古屋"}」スタイル変換
プロンプト:
「例に従って、文章をカジュアルな口調に変換してください。
例1:
入力: ご連絡ありがとうございます
出力: 連絡ありがとう!
例2:
入力: 明日お会いできることを楽しみにしております
出力: 明日会えるの楽しみにしてるね
変換してください:
入力: お忙しいところ恐れ入りますが、ご確認をお願いいたします」
AI: 「忙しいとこごめんね、確認してもらえる?」Few-Shot Learning の強み
Few-Shot には、いくつかの重要な強みがあります。
精度の向上
Zero-Shot より高い精度を実現できます。
タスク: 感情分類
Zero-Shot: 約 70% の精度
Few-Shot (5例): 約 85% の精度
Few-Shot (10例): 約 90% の精度
Fine-Tuning: 約 95% の精度
少ない例で大きな改善形式の明示
出力形式を例で明確に示せます。
Zero-Shot:
「日付を抽出してください」
→ 様々な形式で出力される可能性
Few-Shot:
「例: 2024/01/15」
→ 同じ形式で出力されるドメイン適応
特定のドメインや文脈に適応できます。
医療分野の例を示す:
例1: 「頭痛」 → ICD-10: R51
例2: 「発熱」 → ICD-10: R50.9
→ 医療コード化のパターンを学習Few-Shot Learning の課題
Few-Shot にもいくつかの課題があります。
課題 1: コンテキストの消費
例を示すことで、コンテキストウィンドウを消費します。
問題:
10個の例を示すと、数千トークンを消費
→ 実際のタスクに使えるトークンが減少
対策:
- 例の数を最小限に
- 簡潔な例を使用
- 最も代表的な例を選択課題 2: 例の選択
どの例を選ぶかが結果に大きく影響します。
悪い例の選択:
例1: 非常に簡単なケース
例2: 非常に簡単なケース
→ 複雑なケースに対応できない
良い例の選択:
例1: 典型的なケース
例2: やや複雑なケース
例3: エッジケース
→ 幅広いケースに対応課題 3: 例の順序
例の順序が結果に影響する場合があります。
実験:
順序A: 簡単 → 普通 → 難しい
順序B: 難しい → 普通 → 簡単
モデルによっては、異なる結果を出力することがあるFew-Shot Learning のベストプラクティス
Few-Shot を効果的に使うためのベストプラクティスです。
1. 多様な例を選ぶ
悪い例:
すべて似たようなケース
良い例:
- 典型的なケース
- エッジケース
- 曖昧なケース2. 適切な数の例を使う
経験則:
- 簡単なタスク: 2〜3例
- 中程度のタスク: 5〜7例
- 複雑なタスク: 10例以上
ただし、コンテキストウィンドウを考慮3. 明確な形式を示す
悪い例:
例: 入力 output
良い例:
例:
入力: [明確な入力]
出力: [明確な出力]4. 実際のケースに近い例を使う
実際のタスク: カスタマーレビューの分析
良い例:
実際のレビュー文を使用
悪い例:
単純化された例文を使用5. 少ないトークンで表現
冗長な例:
入力: これは非常に素晴らしい製品で、私は大変満足しています
出力: ポジティブな感情で、満足度が非常に高いです
簡潔な例:
入力: 素晴らしい製品で満足
出力: ポジティブFew-Shot vs Zero-Shot vs Fine-Tuning
3つのアプローチの使い分けを整理します。
Zero-Shot を選ぶべき場合
条件:
- 一般的なタスク
- 迅速に実装したい
- 例を用意できない
- コンテキストを節約したい
例:
- 基本的な翻訳
- 一般的な質問応答
- シンプルな分類Few-Shot を選ぶべき場合
条件:
- Zero-Shot では精度が不十分
- 特定の形式が必要
- ドメイン固有のタスク
- 数個〜数十個の例が用意できる
例:
- カスタマーサポートの分類
- 特定形式での抽出
- 企業固有のタスクFine-Tuning を選ぶべき場合
条件:
- 最高精度が必要
- 大量のデータがある
- 長期的に使用する
- コストを正当化できる
例:
- 医療診断
- 法律文書の分析
- 高精度な翻訳Few-Shot Learning の実用例
実際のアプリケーションでの活用例を紹介します。
カスタマーサポート
問い合わせの自動分類:
例1: 商品がまだ届きません → 配送
例2: サイズが合わなかったので返品したい → 返品
例3: 支払い方法を変更したい → アカウント
例4: 商品の使い方が分からない → 技術サポート
→ 新しい問い合わせを自動分類コンテンツ生成
特定のスタイルでのライティング:
例1: 新商品発表 → 「革新的な〇〇が登場!」
例2: セール告知 → 「期間限定!特別価格で提供中」
例3: イベント案内 → 「参加無料!今すぐ申し込もう」
→ 同じトーンで新しいコンテンツを生成データ処理
非構造化データの構造化:
例1: 請求書画像 → JSON
例2: 名刺画像 → JSON
例3: 領収書画像 → JSON
→ 同様の形式で新しいデータを構造化まとめ
Few-Shot Learning は、少数の例を示すことで、AI に新しいタスクを学習させる効果的な手法です。Zero-Shot より高い精度を実現しながら、Fine-Tuning より効率的にタスクを実行できます。
重要なポイント
- 少数の例 - 2〜10個の例でパターンを学習
- 精度向上 - Zero-Shot より大幅に精度が向上
- 形式明示 - 出力形式を例で明確に示せる
- 効率性 - Fine-Tuning より迅速に実装
- 柔軟性 - 様々なタスクに適用可能
Few-Shot が最適な場面
- Zero-Shot では精度が不十分
- 特定の出力形式が必要
- ドメイン固有のタスク
- 迅速な実装が求められる
- 数個〜数十個の例が用意できる
Few-Shot Learning は、実用的な AI アプリケーション開発において、最もバランスの取れたアプローチの一つです。適切な例を選び、効果的に提示することで、高品質な出力を短時間で実現できます。