同じような質問をしているのに、AI の答えの形が毎回そろわない。
そんなときに効くのが、指示文にお手本をいくつか添えるやり方です。
これを フューショット(few-shot) と呼びます。
例を何個見せるかで、ゼロショット・ワンショット・フューショットと名前が変わる、というだけの話。
本記事では3つの違いと、言葉の出どころ、そして例を足しても効かない場面までを整理します。
ショットとは「プロンプトに入れる例の数」
ショット(shot)は、AI に見せるお手本の個数を指す言葉です。
「学習」という訳語が当てられることもありますが、この操作でモデルの重みは1ミリも変わりません。
変わるのは、その1回の指示文の中身だけ。
モデルそのものを作り替えるファインチューニングとは、別の話として切り分けておくと混乱しません。
ゼロショット:例を見せずに指示だけ渡す
お手本を1つも添えず、やってほしいことだけを書くのがゼロショットです。
次の文をポジティブかネガティブかで分類してください。
文: 配送は遅かったが、商品自体は満足している。
短く書けるのが利点で、日常のチャットはほとんどこの形。
一方で、返ってくる形式は AI 任せになります。
「ポジティブ」の一語で返るのか、理由つきの長文になるのかは、投げてみるまで分かりません。
最近のモデルは指示だけでもかなり形をそろえてきますが、そろう保証は無いところが厄介。
出力をそのまま次の処理へ渡すプログラムを書くなら、この揺れがそのまま不具合の種になります。
ワンショット:お手本を1つだけ添える
同じ指示に、正解の例を1組だけ足したものがワンショットです。
次の文をポジティブかネガティブかで分類してください。
文: 画面がすぐ割れた。
分類: ネガティブ
文: 配送は遅かったが、商品自体は満足している。
分類:
例が1つあるだけで、出力が「分類: ◯◯」の形にそろいます。
書式を固定したいだけなら、1個でもかなり効くわけです。
ただし、褒めと不満が混ざった文をどちらへ寄せるか、という判断の基準までは伝わりません。
フューショット:例を数個ならべる
迷いやすいケースを含めて、例を複数ならべたものがフューショットです。
次の文をポジティブかネガティブかで分類してください。
文: 画面がすぐ割れた。
分類: ネガティブ
文: 値段のわりに作りがしっかりしている。
分類: ポジティブ
文: 説明書は不親切だったが、使い心地は良い。
分類: ポジティブ
文: 配送は遅かったが、商品自体は満足している。
分類:
3つ目に「不満と満足が混ざった文はポジティブ側」という例をわざと混ぜてあります。
例を増やすと、書式だけでなく判断の境界線まで渡せるのが強みです。
Anthropic の公式ドキュメントは、目安として 3〜5個 を挙げています。
例に求められる条件は、実際の用途に近いこと、偏らないよう散らすこと、タグで囲って指示と区別すること。
詳しい書き方は Prompting best practices(Claude Platform Docs) にまとまっています。
言葉の出どころは GPT-3 の論文
ゼロ/ワン/フューショットという言い方が一気に広まったのは、2020年に公開された GPT-3 の論文からです。
タイトルがそのまま Language Models are Few-Shot Learners。
この論文は、1750億パラメータのモデルが勾配の更新もファインチューニングも行わず、テキストのやり取りだけでタスクをこなすことを示しました。
従来のファインチューニングが数千から数万件の例を必要としていたのに対し、こちらはプロンプトに数個入れるだけ。
モデルを触れない立場の人でも精度を動かせる手段として、ここから一気に定着したのだと思います。
効きやすいタスクと、効きにくいタスク
分類・抽出・整形のように、正解の形がはっきりしている作業ほど、例がよく効くのです。
問い合わせをカテゴリへ振り分ける、書類から日付と金額だけ抜き出す、といった用途が典型例。
逆に、長文の要約や自由な発想を求める作業では、例が枠になって出力の幅を狭めてしまうことがあります。
その場合は例を減らし、守ってほしい条件を言葉で書き下したほうが素直に伝わるはず。
扱いを変えたい例外が決まっているなら、その例外こそ例に入れる価値があります。
例を増やすほど良い、とはならない
例はプロンプトの一部なので、増やせばそのぶんコンテキストウィンドウを消費する点は見逃せません。
入力が長くなれば応答は遅くなり、API 経由なら入力トークンぶんの負荷も積み上がる。
似た例ばかり並べたときは、AI がそのパターン自体を課題だと受け取ってしまうこともあります。
例を足しても改善しないなら、数ではなく指示文そのものを疑ったほうが早いはず。
最後に
ゼロショットは例なし、ワンショットは1個、フューショットは数個。
どれもモデルを学習させているのではなく、その場の指示文で条件づけているだけ、というのが要点です。
まずは3個から試して、変わらなければ例ではなく指示の書き方を見直す。
プロンプトに例を置くときは、外部から紛れ込んだ文字列を例として扱わせない注意も要ります。
以上です。











コメントを残す