AI News HubLIVE
サイト内リライト3 分で読了

プロンプトエンジニアリング

本記事では、大規模言語モデル(LLM)向けのプロンプトエンジニアリング手法について包括的に解説。基本プロンプト、インストラクションプロンプト、自己一致サンプリング、思考連鎖プロンプト、自動プロンプト設計、拡張言語モデルなどをカバー。

ソースLilian Weng

プロンプトエンジニアリング(Prompt Engineering)は、インコンテキストプロンプティング(In-Context Prompting)とも呼ばれ、モデルの重みを更新せずに大規模言語モデル(LLM)の動作を望ましい結果に導くための手法です。これは経験科学であり、その効果はモデルによって大きく異なるため、多くの実験とヒューリスティクスが必要です。本記事は自己回帰型言語モデルに焦点を当て、クローズテストや画像生成、マルチモーダルモデルは扱いません。中心的な目標はモデルのアライメントと操縦可能性です。

基本プロンプト

ゼロショット学習は最も単純なプロンプト手法で、タスクテキストをモデルに与えて結果を求めます。一方、少数ショット学習は、入力と期待される出力のペアをいくつか提示することで、モデルにタスクを理解させます。少数ショットは通常ゼロショットより高性能ですが、トークン消費が増え、長い入出力ではコンテキスト長の制限に達する可能性があります。

例の選択と順序は少数ショットの性能に大きな影響を与えます。研究によれば、テスト例と意味的に類似した例を選択すること、グラフベースの多様な例選択、対照学習による埋め込みの訓練などが効果的です。また、例の順序も重要で、不適切な順序は多数ラベルバイアスや近接バイアスを引き起こす可能性があります。そのため、多様でテスト例に関連性の高い例をランダムな順序で使用することが推奨されます。

インストラクションプロンプト

インストラクションプロンプトは、例示ではなく直接タスクの指示をモデルに与えます。指示に従うように微調整されたモデル(InstructGPTなど)は、ユーザーの意図をよりよく理解し、指示に従います。指示モデルと対話する際は、タスク要件を詳細かつ具体的に記述し、否定形ではなく「何をすべきか」を指定することが重要です。コンテキストインストラクション学習は、少数ショット学習とインストラクションプロンプトを組み合わせ、異なるタスクの例をプロンプトに含めます。

自己一致サンプリング

自己一致サンプリング(Self-Consistency Sampling)は、温度パラメータを0より大きくして複数の出力をサンプリングし、その中から最良のものを選択します。一般的な選択基準は多数決です。プログラミング問題のように検証が容易なタスクでは、単体テストで正しさを確認できます。

思考連鎖プロンプト

思考連鎖(Chain-of-Thought, CoT)プロンプトは、推論ステップを段階的に記述した短文を生成し、最終的な答えに導きます。この手法は複雑な推論タスクで特に有効であり、特に500億パラメータ以上の大規模モデルで効果を発揮します。CoTには主に2つのタイプがあります。少数ショットCoTは手動で作成された高品質な推論連鎖を含む例を提供し、ゼロショットCoTは「ステップバイステップで考えよう」といった自然言語文で推論連鎖の生成を促します。

拡張としては、自己一致サンプリングによる精度向上、STaR法による推論連鎖の自己訓練、複雑度ベースのプロンプト、自己質問(Self-Ask)や検索拡張CoT(IRCoT、ReAct)、思考木(Tree of Thoughts)などがあります。

自動プロンプト設計

自動プロンプト設計は、プロンプトを訓練可能なパラメータとして扱い、勾配降下法で埋め込み空間を最適化します。代表的な手法にAutoPrompt、Prefix-Tuning、P-tuning、Prompt-Tuningがあります。自動プロンプトエンジニア(APE)は、モデルが生成した候補指示から最適なものを検索します。さらに、拡張・剪定・選択の3段階で思考連鎖プロンプトを自動構築する手法もあります。

拡張言語モデル

拡張言語モデルは外部ツールを統合して能力を高めます。検索拡張(Google検索の利用)は関連情報をプロンプトに取り込み、オープンドメイン質問応答の精度を向上させます。プログラミング言語拡張(PAL、PoT)はモデルにコードを生成させ、インタプリタで計算を実行します。外部API拡張(TALM、Toolformer)により、モデルは電卓、質問応答システム、検索エンジン、翻訳システム、カレンダーなどのツールを呼び出せるようになります。Toolformerは自己教師あり学習で訓練され、わずかな例でツール使用を習得します。

まとめ

プロンプトエンジニアリングはLLMと対話するための重要な技術であり、基本プロンプトから高度な思考連鎖やツール拡張に至るまで、モデルの能力を拡張します。今後の発展として、自動プロンプト設計と外部ツール統合が重要な方向性となり、より幅広い応用が期待されます。