見出し画像

プロンプトエンジニアリング応用編

今回のプロンプトエンジニアリング応用編では前回の基礎編に比べて、より高度なテクニックと実践的なアプローチを紹介します。本記事は、dair-aiのガイドリンク を参照させて頂き、日本語訳と独自の実験結果を加えて、理解しやすい形でお届けしたいと思います。GPTモデルの潜在能力を最大限に引き出す方法を見ていきましょう。




Zero-shot Prompting / ゼロショット・プロンプティング

現在のLLMは、大量のデータに基づいて学習され、指示に従うように調整されており、ゼロショットでタスクを実行することができます。

上記のプロンプトでは、GPTに例を提供していません。これがゼロショットです。ゼロショットが機能しない場合は、プロンプトにデモンストレーションや例を提供することが推奨されます。以下では、フューショット・プロンプティング(Few-Shot-Prompting)として知られるアプローチについて説明します。

Few-shot Prompting / フューショット・プロンプティング

大規模言語モデルは、すでに卓越したゼロショット能力を示していますが、ゼロショットでは、より複雑なタスクで機能しない場合があります。これを改善するために、フューショット・プロンプティングが使用されます。以下の例では、GPTに出力の例の前提として提供しています。

以下は、この世に存在しない単語を使って、例文を作成させる実験の例です。

https://arxiv.org/abs/2005.14165 参照

GPTは、たった1つの例(つまり、1ショット)を提供することで、どのようにタスクを実行する方法を学習したかがわかります。より難しいタスクでは、例の数を増やすことでタスクを正確に実行できます(例えば、3ショット、5ショット、10ショットなど)。

Min et al. (2022)の調査結果を参考に、フューショットでデモンストレーション/例を入力する際のいくつかのヒントをご紹介します。

  • 答えの種類(ラベル空間)と、出題される文章(入力テキストの分布)をしっかり考えることが大切です。それぞれの文章に正しい答えがあるかどうかよりも、全体の答えの種類と文章の種類が大事です。

  • フォーマットも、パフォーマンスに重要な役割を果たします。たとえば、ランダムなラベルを使用しても、まったくラベルがないよりはるかに良い結果が得られます。

  • 正しいラベルの分布からランダムに選ぶことが、モデルの性能向上に効果的であることが実験によって示されています。

いくつかの例を試してみましょう。まず、ランダムなラベルの例を試してみます(ネガティブとポジティブのラベルが入力にランダムに割り当てられます)。

ラベルがランダム化されても、正しい答えが得られます。また、フォーマットも維持していることにご注目ください。実際、さらに実験してみると、私たちが実験している新しいGPTモデルは、ランダムなフォーマットに対してもより強固になってきているようです。

以下はフォーマットをバラバラにして実験してみた例です。

上記の形式には一貫性がありませんが、それでもモデルは正しいラベルを予測しました。この結果が、プロンプトのバリエーションを含む、より複雑なタスクでも成り立つかどうかを確認するために、より詳細な分析を行う必要があります。

Limitations of Few-shot Prompting / スモールショットプロンプティングの限界

標準的なフューショットのプロンプトは、多くのタスクでうまく機能しますが、特により複雑な推論タスクを扱う場合には、まだ完璧な手法ではありません。以下の様な例では、GPT3.5でも間違ってしまうことがあります。

実際の答えは、「41」で奇数となります。

この実験の結果は、ゼロショットの限界が浮き彫りになっただけでなく、より高度なプロンプトエンジニアリングが必要であることを示しています。

フューショットのプロンプトが結果を改善するかどうか、いくつかの例を加えて試してみましょう。

上記の様に、例をいくつか示してもうまくいきませんでした。少数の例を示すフューショットプロンプトでは、この種の推論問題に対して信頼性のある回答を得るのに十分でないようです。

上記の例は、タスクに関する基本的な情報を提供しています。より詳しく見ると、紹介したタスクの種類は、もう少し多くの推論ステップが関与しています。言い換えれば、問題をステップごとに分解し、それをGPTに説明してあげるとより良い回答が得られるかもしれません。そのため、chain-of-thought(CoT)プロンプトが、より複雑な算術、常識、象徴的推論タスクに対処するために普及しています。↓↓↓

Chain-of-Thought Prompting / 思考連鎖型プロンプティング

Wei et al. (2022)](https://arxiv.org/abs/2201.11903)で紹介された、Chain-of-Thought (CoT) promptingは、中間推論ステップを通して複雑な推論能力を可能にします。フューショットプロンプトと組み合わせることで、出力前に推論が必要な複雑なタスクでより良い結果を得ることができます。

推論ステップを明確に提供してあげることで、完璧な結果を見ることができます。このタスクは、さらに少ない例を提供することで解決できます。つまり、1つの例だけで十分だと思われます:

Zero-shot CoT / ゼロショット CoT

zero-shot CoT (Kojima et al. 2022)というものがあります。これは、基本的に元のプロンプトに「ステップバイステップで考えよう」を追加するものです。簡単な問題を試してみて、モデルの性能を確認しましょう:

梨の数を計算すると、実際は10個なので、この回答は間違っています。

それでは、例の「ステップバイステップで考えよう」というプロンプトを入力して再度実験してみます。

このシンプルなプロンプトが、このタスクに効果的であることは印象的です。特に、プロンプトに使える例文があまり多くない場合に有効です。

Self-Consistency / 自己整合性

プロンプトエンジニアリングでより高度な技術の1つが自己整合性でしょう。これは、フューショットのCoTを通して複数の多様な推論経路をサンプリングし、その生成物を用いて最も一貫性のある答えを選択するというものである。これにより、算数や常識的な推論を伴うタスクにおいて、CoTプロンプティングの性能を高めることができます。

算術的な推論について、次のような例で試してみましょう:

間違った回答をしてしまいます。自己矛盾が起こってしまっています。この課題を解決するには、例を提供してあげます。フューショットプロンプティングと、CoTプロンプティングを組み合わせて入力してあげます。

Generated Knowledge Prompting / 知識生成系プロンプティング

LLMは改良され続けており、モデルがより正確な予測を行うために知識や情報を取り入れる機能があります。

Liuら2022](https://arxiv.org/pdf/2110.08387.pdf)の論文で試みられているのは、プロンプトの一部として使用する知識をインプットしてあげることです。特に、常識的な推論のようなタスクにどの程度役立つのでしょうか?

簡単なプロンプトを試してみます:

この種のミスは、世界に関するより多くの知識を必要とするタスクを実行するためのLLMの限界を明らかにするものです。知識生成でこれを改善するにはどうすればいいのだろうか。

まず、いくつかの「知識」を生成&提供します:

結果、出力は以下の様に変化しました。

次のステップは、知識を統合して予測することです。質問の内容をQA形式に書き換えて、説明と回答を導き出すようにしました。

1回目の出力:

2回目の出力:

この例では、実に興味深いことが起こりました。最初の答えでは、モデルは非常に自信を持っていましたが、2番目の答えではそうではありませんでした。

Automatic Prompt Engineer (APE) - 自動プロンプトエンジニア(APE)

Zhou et al., (2022)は、自動的な命令生成と命令の選択のためのフレームワークであるautomatic prompt engineer (APE)を提案しています。命令生成問題は、自然言語統合としてフレームワーク化され、候補解の生成と探索のためにLLMを用いたブラックボックス最適化問題として対処されます。

https://arxiv.org/pdf/2211.01910.pdf 参照
https://arxiv.org/pdf/2211.01910.pdf 参照

本記事は、プロンプトエンジニアリングに関連する重要なトピックである、プロンプトを自動的に最適化するアイデアについて触れています。本ガイドではこのトピックに深入りしませんが、このトピックに興味をお持ちの方は、以下の主要な論文をご覧ください:

いかがだったでしょうか?最後に、dair-aiのガイドに感謝の意を表し、日本語訳と独自の実験結果を加えて、理解しやすい形でお届けできたことを願っています。プロンプトエンジニアリングのスキルを磨き続けることで、AIとのコミュニケーションを円滑に進め、さらなる成果を引き出すことができるでしょう。

最後に

いかがだったでしょうか? ぜひご自身のChatGPTで試してみてください!これからも継続的に ChatGPT/AI 関連の情報について発信していきますので、フォロー (@ctgptlb)よろしくお願いします。この革命的なテクノロジーの最前線に立つ機会をお見逃しなく!
ChatGPTが無料で使えるChatGPT研究所公式LINEボットはこちら:

この記事が参加している募集

AIとやってみた

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!