今回はプロンプトエンジニアリング手法の一つのFew-shot promptingについて解説していこうと思います!
本記事の実装環境で使用しているLLMはGPT-4oです。
Few-shot prompting
この手法は、LLMに対して例を提示することで、そのタスクに関する理解やパフォーマンスを向上させる手法です。
具体的には、モデルに対していくつかのサンプル入力と期待される出力を与え、その例に基づいて新しい未見のデータに対する適切な出力を生成するように誘導します。
数学を解く際によく例題があるように、LLMの扱いは人間と同様なので、例を提示することで回答精度が上がります。
早速解説していきます!
以下の文章を例を元に、要約してください。
例1:
文章: "クラウドコンピューティングは、企業がコスト削減を行うために重要な技術となっており、IT業界全体でその導入が進んでいる。"
要約: "クラウドコンピューティングは企業のコスト削減において重要な技術である。"
例2:
文章: "再生可能エネルギーは、地球温暖化対策の中心的な役割を果たしており、多くの国が積極的にその導入を進めている。"
要約: "再生可能エネルギーは地球温暖化対策に貢献しており、各国が導入を推進している。"
文章: "AI技術は急速に発展しており、様々な産業での応用が進んでいます。特に、ヘルスケアや自動運転、自然言語処理分野において、その影響力は大きく、今後も多くの進展が期待されています。"
要約:
上記のプロンプトでは、例を元に要約するように命令しました。
GPTが作成した要約は以下になりました↓
AI技術は急速に発展し、ヘルスケアや自動運転、自然言語処理での応用が進んでいる。
Few-shot promptingでは、具体的な要約の例が与えられているため、モデルはそれを参考にして、よりフォーマットに沿った、必要な情報を残した一貫性のある出力を生成します。
「ヘルスケア」「自動運転」「自然言語処理」といった具体的な応用分野が保持され、要約としての情報密度が高まっています。
では逆に、Few-shot promptingを行わなかった場合どうなるのか確認します。
Zero-shot prompting
Few-shot promptingを行わなかった場合すなわち、Zero-shot prompting手法になります。
例なしに、いきなり質問を投げるプロンプトです。
モデルはタスクについて事前に具体的な情報や例を与えられないため、一般的な理解に基づいて出力します。
出力は概ね適切ですが、求められる具体的なフォーマットや要約のスタイルを学習していません。
そのため、結果が安定しない可能性があります。
次の文章を要約してください:
"AI技術は急速に発展しており、様々な産業での応用が進んでいます。特に、ヘルスケアや自動運転、自然言語処理分野において、その影響力は大きく、今後も多くの進展が期待されています。"
上記のプロンプトがZero-shot promptingの例になります。
シンプルに回答を求めるのが特徴的、と言いますか皆様が普段使用している手法だと思います。
作成された回答が以下になります↓
AI技術は多くの産業で応用されており、今後も進展が期待される。
Zero-shot promptingでは、特定の例を与えずにタスクをモデルにその場で理解させるため、出力は一貫性が欠けたり、情報が不完全だったりすることがあります。
この例では、出力が要約として成立していますが、重要な「ヘルスケア」「自動運転」「自然言語処理」といった具体的な応用分野が省略されてしまっています。
まとめ
Zero-shot promptingでは、モデルが一般的なパターンに基づいて要約しますが、詳細な情報が省略されることがあるため、要約の質が一定ではありません。
Few-shot promptingを使う場合は、いくつかの例から学習したフォーマットや重要な情報の扱い方をモデルが理解しているため、より一貫した、重要な情報を正確に含んだ要約が生成されやすくなります。
具体的なタスクやフォーマットに基づいた正確な出力が求められる場面で多く使用されています。
Few-shot promptingを使用することで、必要な情報をしっかり含んだ、より質の高い出力が期待できます。