ChatGPTで最適な回答を得るためる方法は①プロンプトエンジニアリングまたは②Fine-tuningがありますが、既に大量のデータを学習した性能の高いLLMであるChatGPTはプロンプトの工夫によって、あたかも特定の領域について追加学習させたかのように振る舞わせることが可能です。
そうした工夫のうち「few-shot prompting(または「few-shot learning」)は、導きたい回答に対し、いくつかの例を示してモデルの動作をコントロールし、適切な回答を導く技法です。
具体的な方法:
以下の3つの方法を知ることで、few-shot promptingの理解を深めることができると思います。
① Zero-shot prompting: モデルに事前に例を示さずに、直接指示を与えてタスクを解かせます
② Few-shot prompting: 複数の例(通常は2つ以上)をモデルに示すことで、より明確にタスクの内容を理解させる手法です
例えば、ある英単語を日本語に翻訳するタスクを考えた場合:
① Zero-shot prompting:
英語: cat -> 日本語: ?
モデルの回答
英語: cat -> 日本語: 猫 (ねこ)
③ Few-shot prompting:
ここにコードを記述1. 英語: cat -> 日本語: 猫
2. 英語: dog -> 日本語: 犬
英語: elephant -> ?
モデルの回答
英語: elephant -> 日本語: 象
上記の例ではzero-shot promptingでも正しい答えを導くことができましたが、
タスクによっては不正確な回答をする可能性がfew-shot prompting対比高まります。
また、zero-shot promptigの回答は正しいですが、「(ねこ)」と読み仮名が付されました。
もしfew-shot promptingの例で示しているように、読み仮名を付けたくない場合は
zero-shot promptingの回答は望ましくない回答となります。
即ち、より正確な回答を導きたい場合や、出力形式を特定したい場合は
zero-shot promptingに比べ、few-shot promptingを用いる方が望ましい回答を導けるということがいえます。
ただし、一概にfew-shot promptingの方が良いプロンプトということはなく、
文脈や導きたい答えによって使い分けることが重要です。
例えば、簡単なタスクを与えたり、単純な要約を指示するときなどに、わざわざfew-shot promptingを用いるのは
費用対効果が悪いです。
繰り返しになりますが、複雑なタスクで正確な回答を導きたいとき、或いは出力形式を特定したい場合はfew-shot promptingを試してみてください!