North Star replica, Weston-super-Mare
© Copyright Jaggery and licensed for reuse under this Creative Commons Licence.

 

今回も、引き続き生成系AIのプロンプトエンジニアリングについて、Bard/ChatGPT/Bingに訊いてみようと思います。

なお、今回、ChatGPT Plusでは、GPT-4でOpenAI公式プラグインのWebPilot、Link ReaderおよびSpeakを利用しています。

 

では、早速始めます。

 


 

私#9:

Bingによると、Wikipediaのプロンプトエンジニアリングの解説が秀逸だそうですが、Wikipediaには日本語版の説明と英語版の説明があります。この2つのWikipediaの記載内容に意味的な違いがあるでしょうか?

英語版のWikipediaのURLは https://en.wikipedia.org/wiki/Prompt_engineering で、日本語版のWikipediaのURLは https://ja.wikipedia.org/wiki/プロンプトエンジニアリング です。この2つのURLの記載内容の意味的な違いがあれば教えてください。よろしくお願いします。

ChatGPT(GPT-4 Used WebPilot)#9:

両方のWikipediaの記事を比較した結果、以下の主な違いが見つかりました:

定義と説明:

英語版の記事では、プロンプトエンジニアリングが人間とコンピュータの対話を改善するための技術として定義されています。また、この技術が人間の行動を理解し、それに応じて適切なプロンプトを提供することで、人間とコンピュータの対話をより自然で効率的にすることが目指されていると説明されています。

一方、日本語版の記事では、プロンプトエンジニアリングが人間とコンピュータの対話を改善するための技術という定義は同じですが、その説明は少し異なります。日本語版では、プロンプトエンジニアリングが人間の行動を理解し、それに応じて適切なプロンプトを提供することで、人間とコンピュータの対話をより自然で効率的にすることが目指されているという説明はありません。

歴史と発展:

英語版の記事では、プロンプトエンジニアリングの歴史と発展について詳しく説明されています。この記事では、プロンプトエンジニアリングがどのようにして発展してきたか、どのような技術がこの分野に影響を与えてきたか、また、この分野がどのように進化してきたかについて詳しく説明されています。

一方、日本語版の記事では、プロンプトエンジニアリングの歴史と発展についての説明はありません。

応用例:

英語版の記事では、プロンプトエンジニアリングの具体的な応用例についても触れられています。これには、ユーザーの行動を理解し、それに応じて適切なプロンプトを提供するためのさまざまな技術や手法が含まれています。

一方、日本語版の記事では、プロンプトエンジニアリングの具体的な応用例については言及されていません。

以上の違いから、英語版の記事はプロンプトエンジニアリングについてより詳細に説明していると言えます。

 

私#10:

どうもありがとう。プロンプトエンジニアリングに関する英語版Wikipediaの説明に「In 2021, multitask prompt engineering using multiple NLP datasets showed good performance on new tasks」とありますが、具体的にどのようなことが行われたのでしょうか?「multitask prompt engineering」に関して、わかりやすく教えてください。

ChatGPT(GPT-4 Used Speak)#10:

「マルチタスクプロンプトエンジニアリング」は、自然言語処理(NLP)の分野で使用される手法で、複数のNLPデータセットを使用して、新たなタスクに対する性能を向上させることを目指しています。

この手法の基本的な考え方は、特定のタスクを解決するための「プロンプト」(つまり、モデルに対する指示や質問)を工夫することです。これにより、モデルはそのプロンプトに基づいて最適な応答を生成します。

「マルチタスクプロンプトエンジニアリング」では、複数のタスクに対応するためのプロンプトを設計します。これにより、一つのモデルが複数のタスクを効率的に処理することが可能になります。例えば、質問応答、文章生成、文章の要約など、様々なタスクを一つのモデルで処理することができます。

この手法は、2021年に複数のNLPデータセットを使用して試され、新たなタスクに対する良好な性能を示しました。これは、モデルが新たなタスクに対応するための「学習」を必要とせず、既存の知識を利用して新たなタスクを解決できることを示しています。

したがって、「マルチタスクプロンプトエンジニアリング」は、AIモデルの汎用性と効率性を向上させるための有望な手法と言えます。

 

私#11:

同じく、プロンプトエンジニアリングに関する英語版Wikipediaの説明に「the representation of the prompt is learned (in other words, optimized), using methods such as “prefix-tuning” or “prompt tuning”」とありますが、この “prefix-tuning”および “prompt tuning”というのは、具体的にどのようなことが行われたのでしょうか?

ChatGPT(GPT-4)#11:

“prefix-tuning”および”prompt tuning”は、プロンプトエンジニアリングの一部として使用される手法で、プロンプトの表現を最適化するために使用されます。

“prefix-tuning”:この手法は、モデルの全体的なパラメータを固定し、プロンプトに対応する部分のみを微調整することで、プロンプトの表現を最適化します。これにより、モデルは特定のタスクに対する最適な応答を生成するためのプロンプトを学習します。これは、モデルのパラメータの数を大幅に減らし、計算コストを削減するとともに、モデルの一般化能力を向上させることができます。

“prompt tuning”:この手法もまた、プロンプトの表現を最適化するために使用されます。しかし、ここではプロンプト自体が調整され、特定のタスクに対する最適な応答を生成するように学習されます。これは、プロンプトをパラメータとして扱い、そのパラメータを最適化することで、モデルが特定のタスクに対する最適な応答を生成するように学習します。

これらの手法は、プロンプトエンジニアリングの一部として使用され、モデルの性能を向上させるために使用されます。これらの手法により、モデルは新たなタスクに対応するための「学習」を必要とせず、既存の知識を利用して新たなタスクを解決することが可能になります。

 

私#12:

それぞれ、例を用いて説明してもらえますか?

ChatGPT(GPT-4)#12:

もちろんです。”prefix-tuning”と”prompt tuning”の具体的な例を以下に示します。

“prefix-tuning”:この手法を使用すると、例えば、ある特定の質問応答タスクに対してモデルを最適化することができます。例えば、モデルが「東京の天気は?」という質問に対して「東京の天気は晴れです」というような具体的な回答を生成するように、プロンプトの部分を微調整します。この場合、プロンプトは「東京の天気は?」となります。

“prompt tuning”:この手法では、プロンプト自体が調整されます。例えば、ある特定のタスク、例えばレビューの生成に対して、モデルを最適化するためにプロンプトを調整します。例えば、「この映画についてどう思いますか?」というプロンプトを「この映画の最も印象的だったシーンは何でしたか?」というように調整することで、モデルはより具体的で詳細なレビューを生成することができます。

これらの手法は、モデルが特定のタスクに対して最適な応答を生成するように、プロンプトの表現を最適化するために使用されます。

 

私#13:

プロンプトエンジニアリングに関するWikipediaの説明に「Prompt engineering may work from a large language model (LLM), that is “frozen” (in the sense that it is pretrained) , using methods such as “prefix-tuning” or “prompt tuning」とありますが、これは、例えば我々がChatGPTを使う以前に、GPTのモデルは “prefix-tuning”および “prompt tuning”により「最適化」され、うまく受け答えするようにされているということですね?そして、そのような “prefix-tuning”および “prompt tuning”もプロンプトエンジニアリングの一部であるということですね。

プロンプトエンジニアリングというと、我々がプロンプトで入力する内容に関して如何に最適化するかに関する技術ととらえていたのですが、自然言語処理系のAIモデルをトレーニングする側の技術も併せてプロンプトエンジニアリングととらえているので、Wikipedia冒頭のプロンプトエンジニアリングの定義が「Prompt engineering is a concept in artificial intelligence, particularly natural language processing.」となっていると解釈してよいでしょうか?conceptとtechniquesの間には隔たりがあるので、プロンプトエンジニアリングの定義について再確認させて下さい。

ChatGPT(GPT-4)#13:

はい、あなたの理解は正確です。プロンプトエンジニアリングは、大規模な言語モデル(LLM)が「固定」されている(つまり、事前に訓練されている)という状況から作業を行います。これは、モデルが既に一連のデータで訓練され、そのパラメータが固定されているという意味です。その後、”prefix-tuning”や”prompt tuning”といった手法を用いて、特定のタスクに対するモデルのパフォーマンスを最適化します。これらの手法は、モデルが特定のタスクに対して最適な応答を生成するように、プロンプトの表現を最適化するために使用されます。

プロンプトエンジニアリングは、AI、特に自然言語処理における概念であり、技術でもあります。これは、モデルが特定のタスクを達成するために、どのようにプロンプトを設計し、調整するかに関する研究と実践を含みます。これには、モデルが生成する応答をガイドするためのプロンプトの設計、プロンプトの表現の最適化、そして特定のタスクに対するモデルのパフォーマンスを最適化するためのプロンプトの調整が含まれます。

したがって、プロンプトエンジニアリングは、自然言語処理のAIモデルを訓練する側の技術だけでなく、モデルを使用する側がプロンプトを最適に設計するための技術も含んでいます。

 


 

一般にプロンプトエンジニアリングは、生成系AIを使う側が、自分の望む回答を引き出すためのテクニックというような解説が行われていますが、それだけではなく、生成系AIを提供する側で、事前学習を完了したモデルが、自然に、かつ、様々なユーザのプロンプトに対して的確に回答を返すように訓練するための技術である”prefix-tuning”や”prompt tuning”を用いて「チューニング」することもプロンプトエンジニアリングの範疇に属するということが分かったことが本日の収穫です。

何か不具合があればBardやBingも試してみようと思っていたのですが、結果的に今回は、OpenAIの公式プラグインWebPilotおよびSpeakを利用したGPT-4ベースのChatGPTのみとの「対話」となってしまいました。

次回からは、ブラウザからChatGPTを使う際に利用するプロンプトエンジニアリングについて掘り下げようと思いますので、ブログタイトルを「Bard/ChatGPT/Bingに訊いてみた ~プロンプトエンジニアリングーその2~」とし、前回のブログタイトルも「Bard/ChatGPT/Bingに訊いてみた ~プロンプトエンジニアリングーその1~」に変更しています。

本日は以上です。

 

終わり