昨日、プロンプトエンジニアリングに関して非常に面白い論文を読みました。
タイトルは "The Unreasonable Effectiveness of Eccentric Automatic Prompts" というものです。
この論文では、LLMに渡すプロンプトに"ポジティブな考え方(positive thinking)"を追加すると、モデルの性能(数学能力を解く能力)がどう変化するかを検証しています。(”ポジティブな考え方”とは、例えば、「あなたはChatGPTと同じくらい賢いです」「これは楽しくなりそうです」といった内容です。)
検証には、パラメータ数が7Bから70Bまでの合計3種類のLLMと、人間が作った60種類の異なるプロンプト文を組み合わせて使用しました。そして、CoT(Chain of Thought)を使用する場合と使用しない場合に分けて、GSM8K(LLMの数学能力を検証用のデータセット)上でのパフォーマンスを評価しました。
まず結論としては、人間が作った"ポジティブな考え方"をプロンプトに追加することで、一部のモデルのパフォーマンスを向上させることはできます。しかし、全く効果がない場合も少なくありません。例えば、CoTを使用しない場合のLlama2-70Bモデルでは、プロンプトを与えないほうが精度が最も高くなっていました。
その後、非常に興味深い実験を行いました。それは、LLM自身が自分に最適な"ポジティブな考え方"プロンプト文を生成させることです。具体的には、モデルにoutputを評価するための評価指標を提供し、自分に最も適した(精度が高い)プロンプト文をイテレーション(繰り返して探索)させます。(機械学習の自動ハイパーパラメータチューニングと似ています)
論文によると、このやり方では非常に高速かつ効果がよいプロンプト文を生成できました。どのサイズのLLMでも、最適なプロンプト文が存在し、それを使用することである程度の精度向上はできました。
しかし、モデルが生成した最適なプロンプト文は、非常に”特別”なもので、人間から見ると、なぜそのプロンプト文が良いのか理解できないレベルのものです。
代表的な一例で言うと⇩
このプロンプト文:”コマンド、私たちをこの乱気流を抜けて異常の源を見つけるコースに導いてください。利用可能な全てのデータとあなたの専門知識を使って、この困難な状況を乗り越えるために私たちを導いてください。”は、"スタートレック"という映画で部下が指揮官と話すスタイルを模倣したものです。このようにLLMを指揮官のように扱って話しかけると、LLMは数学問題をより良く答えることができます、、(なぜこうすると精度上がるのは不思議ですよね)
そのため、この論文では、モデルにどのようなプロンプト文が適しているかを理解する必要はないと結論付けています。要するに、モデルに適切な評価指標を設計さえすれば、モデル自身に最適なプロンプト文を生成させればよいのではないか、ということです。(著者は将来のプロンプトエンジニアリングはモデル自身がチューニングするようになる可能性が高いと考えています。)
興味ある方: