プロンプト、補完、トークン、およびメタ学習/インコンテキスト学習

文字通り、任意のテキストをプロンプト (プロンプト) として使用できます。テキストを入力すると、テキストが取得されます。GPT-3 によるランダム文字列の処理が非常に興味深いことはわかっていますが、GPT が何をしたいのかを実際に理解させるには、効果的なヒントを作成する方がよいでしょう。

プロンプト

プロンプトは、GPT-3 に何をしてもらいたいかを知らせる方法です。プログラミングに似ていますが、平易な英語です。したがって、何をしたいのかを理解し、それを単語とプレーンテキストを使用して表現する必要があり、コーディングは必要ありません。

プロンプトを作成するときに覚えておくべき主な点は、モデルが可能な限り最適な補完を理解するのに役立つコンテキストを提供する指示や例など、次にどのテキストが表示されるべきかを GPT-3 に知らせることです。また、書き込みの品質も重要です。たとえば、スペル、不明瞭なテキスト、提供される例の数はすべて、完成度の品質に影響します。

もう 1 つの重要な要素は、プロンプトのサイズです。プロンプトには任意のテキストを使用できますが、プロンプトと生成された補完を合わせたトークンは 2,048 未満である必要があります。マークアップについてはこの章の後半で説明しますが、これは約 1,500 ワードです。

したがって、ヒントには任意のテキストを使用でき、コードを記述するときに従わなければならない厳格なルールはありません。ただし、最良の結果を達成するために役立つヒント テキストを作成するためのガイドラインがいくつかあります。

プロンプトの種類


次のようなさまざまなヒント タイプを記述する方法について詳しく説明します。

  • ゼロショット プロンプト (ゼロショット プロンプト)
  • ワンショット プロンプト (ワンショット プロンプト)
  • 少数のショットのプロンプト (複数のプロンプト)

ゼロショット プロンプト (ゼロショット プロンプト)


ゼロショット プロンプトは、最も単純なタイプのプロンプトです。GPT-3 を開始するためのタスクの説明またはテキストが提供されるだけです。繰り返しますが、質問、話の始まり、指示など、実際にはどんなテキストでもかまいませんが、プロンプト テキストが明確であればあるほど、GPT-3 が次に何が来るかを理解しやすくなります。以下は、電子メール メッセージを生成するゼロショット プロンプトの例です。補完はヒントが中断されたところから開始されます。この場合、Subject:: の後です。

スティーブから友人のジェイに、先週の金曜日に私のシフトをカバーしてくれたお礼のメールを書いてください。恩返しできることがあったら知らせてくれるように彼に伝えてください。
主題:

次のスクリーンショットは、Web ベースのテスト ツールである Playground からのものです。元のプロンプト テキストは太字であり、完了は通常のテキストとして表示されることに注意してください。

図 1.1 – ゼロショット プロンプトの例
図 1.1 – ゼロショット プロンプトの例

ご覧のとおり、ゼロ プロンプトは、例のない、ほんの数文またはタスクの短い説明です。場合によっては、GPT-3 が仕事を完了するために必要なのはこれだけです。また、1 つ以上の例を含める必要がある場合もあります。単一の例を提供するプロンプトは、ワンタイム プロンプトと呼ばれます。

ワンショット プロンプト (ワンショット プロンプト)

ワンショット プロンプトは、GPT-3 がタスクを最適に完了する方法を学習するために使用できる例を提供します。以下は、タスクの説明 (1 行目) と 1 つの例 (2 行目) を提供する 1 回限りのプロンプトの例です。

映画『スター・ウォーズ』の俳優リスト 
1. マーク・ハミル:ルーク・スカイウォーカー

説明と例だけから、GPT-3 はタスクが何であるかを理解し、それを達成する必要があります。この例のタスクは、映画「スター ウォーズ」の俳優のリストを生成することです。次のスクリーンショットは、このプロンプトから生成される内容を示しています。

図 1.2 – ワンショット プロンプトの例 

ワンショット プロンプトは、リストや広く理解されているパターンに最適です。ただし、複数の例が必要な場合もあります。この場合、ヒントを複数回使用することになります。

数回のプロンプト (複数のプロンプト)


数ショット プロンプトでは、 複数のサンプル (通常は 10 ~ 100) が提供されます。GPT-3 が継続すべきパターンを示すには、複数の例が役立ちます。ヒントが GPT-3 にさらに多くの学習を与えるため、ショットのヒントが少なく、例が増えると完成の質が向上する可能性があります。

以下は、シミュレートされたダイアログを生成する複数のプロンプトの例です。これらの例では、会話の中で何が言われたかを前後に示す会話が提供されていることに注意してください。

これは、『Exploring GPT-3』という本の著者である Steve と、この本を読んでいる誰かとの間の会話です。
読者:なぜこの本を書こうと思ったのですか?
Steve: なぜなら、私は GPT-3 と新しいテクノロジー全般にとても魅了されているからです。
読者: この本から何を学べますか?
Steve: この本では、OpenAI の GPT-3 について説明しています。GPT-3 とは何か、そして GPT-3 の使用を開始する方法を学びます。
読者: この内容を理解するにはプログラマーである必要がありますか?
Steve: いいえ。これまでコードを 1 行も書いたことがない場合でも、問題なく理解できるでしょう。
読者: 

以下のスクリーンショットでは、GPT-3 が、プロンプトで提供された例で開始したシミュレートされた会話を継続していることがわかります。

図 1.3 – 少数ショット プロンプトの例

さまざまなプロンプトの種類を理解したところで、他のプロンプトの例をいくつか見てみましょう。

プロンプトの例
OpenAI API はさまざまなタスクを処理できます。オリジナルのストーリーの生成から複雑なテキスト分析の実行まで、さまざまな可能性が考えられます。GPT-3 が実行できるタスクの種類を理解するために、OpenAI はヒントの例を多数提供しています。プロンプトの例は、Playground および OpenAI のドキュメントにあります。

プレイグラウンドでは、サンプルはプリセットと呼ばれます。次のスクリーンショットは、利用可能なプリセットの一部を示しています。

図 1.4 – プリセット

プロンプトの例は、OpenAI のドキュメントにも記載されています。OpenAI のドキュメントは優れており、多くの優れたプロンプトの例と、プレイグラウンドで開いてテストするためのリンクが含まれています。以下のスクリーンショットは、OpenAI ドキュメントからのヒントの例を示しています。ヒントの例の下にある「この例をプレイグラウンドで開く」リンクに注目してください。このリンクを使用して、Playground でヒントを開くことができます。

https://platform.openai.com/docs/guides/completion/prompt-design

図 1.5 – OpenAI ドキュメントにはヒントの例が記載されています

ヒントを理解したところで、GPT-3 がヒントを使用して補完を生成する方法について説明します。

完了

同様に、補完とは、プロンプト/入力に基づいて生成され返されるテキストを指します。GPT-3 は、いかなる種類の NLP についてもトレーニングされていません。GPT-3 は一般的な言語処理システムです。ただし、GPT-3 はプロンプトを使用して特定のタスクを完了できます。これをメタ学習と呼びます。

メタ学習
ほとんどの NLP システムでは、基礎となる ML モデルをトレーニングするときに、提供されたデータを使用して、特定の NLP タスクを完了する方法をモデルに指示します。したがって、特定の NLP タスクに対する効果を改善するには、モデルを再トレーニングして新しいバージョンのモデルを取得する必要があります。しかし、GPT-3 は、特定のタスクのために再トレーニングする必要がないため異なります。プロンプトのテキスト内のパターンを認識し、基礎となる汎用モデルを使用してパターンを継続するように設計されています。このアプローチは、再トレーニングせずに最適な補完を生成する方法を GPT-3 に教えるためにヒントが使用されるため、メタ学習と呼ばれます。したがって、実際には、GPT-3 は、さまざまなプロンプト タイプ (ゼロ プロンプト、1 つのプロンプト、および多数のプロンプト) を使用してさまざまなタイプのタスクに合わせてプログラムでき、プロンプトに多数の指示 (最大 2,048 個の識別子) を指定できます。トークン)。

識別子(トークン)

GPT-3にヒントが入力されると、ヒントは識別子(トークン)に分解されます。識別子は単語の数値表現、またはより一般的には単語の一部です。識別子には単語や文章ではなく数字が使用されます。これは、より効率的に処理できるためです。これにより、GPT-3 は比較的大量のテキストを処理できるようになります。とはいえ、ご存知のとおり、ヒントと生成された補完を合わせても、識別子の数は 2,048 (約 1,500 単語) という制限があります。

ヒントと補完で使用される識別子の数を見積もることにより、識別子の数の制限内に収めることができます。平均すると、英語の単語の場合、4 文字ごとに識別子が表されます。したがって、プロンプトの文字数を応答の長さに加算し、その合計を 4 で割るだけです。これにより、必要な識別子の数がわかります。これは、多くのタスクに必要な識別子の数を知りたい場合に役立ちます。

識別子の数を取得する別の方法は、プレイグラウンドで識別子数インジケーターを使用することです。右下隅の大きなテキスト入力のすぐ下にあります。以下のスクリーンショットの拡大された領域は、識別子の数を示しています。数値の上にマウスを移動すると、完了時に合計数も表示されます。この例では、「実行する」または「実行しない」をプロンプトします。試してみることはありません。- マスター Yada からの引用 - 10 個の識別子と 64 個の完了識別子を使用します。

図 1.6 - トークン数

識別子の数を 2,048 個の制限内に抑えるには識別子を理解することが重要ですが、識別子の数が OpenAI の料金に固定される可能性があるため、識別子を理解することも重要です。アカウントの全体的な ID 使用状況レポートは、https://beta.openai.com/account/usage で入手できます。次のスクリーンショットは、使用状況レポートのサンプルを示しています。

図 1.7 - 使用状況の統計

識別子の使用に加えて、GPT-3 の使用に関連するコストに影響を与えるもう 1 つの要素は、ヒントを処理するために選択したエンジンです。エンジンとは、使用される言語モデルを指します。エンジン間の主な違いは、関連するモデルのサイズです。モデルが大きいほど複雑なタスクを実行できますが、モデルが小さいほど効率的です。したがって、タスクの複雑さに応じて、より小型のモデルを使用することでコストを大幅に削減できます。以下のスクリーンショットは、発売時のモデルの価格を示しています。ご覧のとおり、コストは大きく異なります。

他の

プレイグラウンド関連のパラメータの説明

  • 温度: これは、取得する応答の「ランダムさ」に影響します。使用するサンプリング温度 (0 ~ 2)。値が大きいほど (0.8 など)、出力はよりランダムになりますが、値が小さいほど (0.2 など)、出力はより集中的で決定的になります。通常、これまたは top_p を変更することをお勧めしますが、両方を変更することは推奨しません。
  • top_p : カーネル サンプリングと呼ばれる、温度サンプリングの代替方法。モデルは、top_p 確率品質を持つラベルの結果を考慮します。したがって、0.1 は、確率集合の上位 10% を構成するトークンのみが考慮されることを意味します。通常、この値または温度のいずれかを変更することをお勧めしますが、両方を変更することは推奨しません。
  • 最大長: AI の応答の長さ。
  • 確率を表示: さまざまな単語がハイライト表示され、AI が可能性に基づいてそれらをどのように検討して選択したかが表示されます。
  • 頻度/プレゼンスペナルティ: AIが単語を再利用したり、同じトピックについて何度も議論したりする可能性を変更します。

モード 

  • 完了: これはデフォルトのモードで、入力が中断されたところから AI がダイアログを完了させます。
  • insert : このモードでは、[insert] タグを使用して、選択した空の場所を埋めます。
  • edit : このモードは、まったく新しいコンテンツを提供するのではなく、仕様に従って既存のコンテンツを変更します (例: 「これを海賊の声で書き直す」または「「いいね」やその他のつなぎ言葉を削除する)。
  • チャット: チャットモード

ChatGPT と OpenAI Playground の違い

Chat GPT は、チャット インターフェイスを通じてリアルタイムで GPT-3.5 と対話できるツールです。これを使用してヒントを与えることでテキストを生成でき、入力した情報に基づいてテキストが生成されます。

OpenAI Playground は、よりインタラクティブかつ柔軟な方法で GPT-3 やその他の OpenAI モデルを実験できる Web ベースのツールです。モデルのサイズ、出力のタイプなど、モデルの動作をカスタマイズするために使用できるさまざまなオプションと設定が提供されます。

一般に、ヒントを提供してテキストをすばやく生成したい場合は Chat GPT が適していますが、OpenAI Playground はさまざまな設定やオプションを試してモデルの動作をカスタマイズしたい上級ユーザー向けです。
Chat GPT は GPT 3.5 を使用し、Playground は GPT 3 を使用します。ただし、Chat GPT は現在無料研究プレビュー段階にあり、無料で使用できます。帽子の無料研究プレビュー期間が終了すると、モデルに無料でアクセスできなくなります。Chat GPT を引き続き使用したい場合は、有料サブスクリプションにサインアップする必要があります。

Chat GPT を使用すると、入力と出力が保存されることも意味します。したがって、個人情報や機密情報を入力しないでください。

Playground は、OpenAI によって開発された大規模なニューラル ネットワーク ベースの言語生成モデルである GPT-3 と対話するためのユーザー フレンドリーなインターフェイスです。一方、ChatGPT は GPT-3 の小型バージョンであり、会話言語の理解と生成タスク用に設計されています。言い換えれば、Playground は GPT-3 を使用するツールですが、ChatGPT はチャットボットのような対話用に最適化された GPT-3 の特定のバージョンです。

結局のところ、この 2 つの違いは、「Playground」はプレイグラウンドであるのに対し、Chat GPT はスタンドアロン アプリケーションであるということです。パラメーターを操作して、それがトークンの使用法と出力パフォーマンスにどのような影響を与えるかを確認できるスペースです。これにより、API を使用してプロジェクトに GPT 3 を実装した後にどのパラメーターを選択すればよいかを確認できます。

ブロガーは遊び場をどのように利用していますか

以下はプレイグラウンドのアドレスです。一人でプレイすることもできますが、無料でプレイできるのはほんの始まりにすぎません。

https://platform.openai.com/playground

チップワークス

プロンプト エンジニアリングは、人工知能、特に自然言語処理(NLP)の概念ですヒント エンジニアリングでは、タスクの説明が入力に埋め込まれます。たとえば、特定のパラメーターを暗黙的にモデルに与えるのではなく、質問の形式で直接入力します。プロンプト エンジニアリングは通常、1 つ以上のタスクをプロンプトベースのデータセットに変換し、いわゆる「プロンプトベースの学習」を通じて言語モデルをトレーニングすることで機能しますプロンプト エンジニアリングは、プロンプトの表現のみが学習される大規模な「凍結された」事前トレーニング済み言語モデル、いわゆる「プレフィックス チューニング」または「プロンプト チューニング」から機能します。

言語モデルGPT-2およびGPT-3は、ヒント エンジニアリングの重要なステップです。2021 年には、複数の NLP データセットを使用したマルチタスク ヒント エンジニアリングが、新しいタスクで有望なパフォーマンスを示しました。少数ショット学習の例では、思考連鎖を含むキューは、言語モデルでより優れた推論能力を示します。ゼロショット学習では、思考連鎖を促進するプロンプト内の文 (「ステップごとに考えてみましょう」など) を保持すると、複数ステップの推論問題に対する言語モデルのパフォーマンスが向上する可能性があります。これらのツールは、いくつかのオープンソース ノートとコミュニティ主導の画像合成プロジェクトのリリースによって広く利用できるようになりました。

キューの処理に関する説明では、2022 年 2 月に、約 170 のデータセットから 2,000 以上の公開キューが利用可能になったと報告されています。

2022年には、DALL-EStable DiffusionMidjourneyなどの機械学習モデルが公開される予定です。これらのモデルは、テキストの手がかりを入力として受け取り、それらを使用して画像を生成します。これは、ヴィンセント図の手がかりに関連する新しい種類のヒント エンジニアリングに影響を与えました。

思考の連鎖 (思考の連鎖)


思考連鎖プロンプト (CoT) は、複数ステップの質問に対する最終的な答えにつながる一連の中間ステップを生成するよう LLM に促すことで、LLM の推論能力を向上させます。このテクノロジーは 2022 年に Google の研究者によって初めて提案されました。

深層学習手法を使用して大量のテキストでトレーニングされた LLM は、人間が生成したテキストと同様の出力を生成できます。LLM はさまざまな自然言語タスクでは良好に機能しますが、算術や常識推論の問題など、論理的思考と解決に複数の手順を必要とする一部の推論タスクでは依然として困難に直面しています。この課題に対処するために、CoT ヒント-ヒント モデルは、複数ステップの質問に対する最終的な答えを与える前に、中間の推論ステップを生成します。 

たとえば、「Q: カフェテリアには 23 個のリンゴがあります。昼食に 20 個を使用し、さらに 6 個購入すると、リンゴは何個ありますか?」という質問が与えられた場合、CoT プロンプトは LLM に「A: 」を模倣するように促す可能性があります。カフェテリア もともとリンゴは 23 個あった」と答えると、昼食には 20 個が使われました。したがって、23 - 20 = 3 となります。彼らはさらに 6 個のリンゴを買うので、3 + 6 = 9 になります。答えは9です。

思考連鎖プロンプトにより、標準的なプロンプト手法と比較して、算術および一般知識タスクにおける LLM の平均パフォーマンスが向上しました。540B パラメトリック言語モデル PaLM に適用すると、CoT ヒントはモデルが複数のタスクでタスク固有の微調整モデルと同等のパフォーマンスを発揮するのに大きく役立ち、GSM8K 数学で当時最先端の推論ベンチマークを設定することさえできました。モデル。

CoT ヒントはモデル サイズの新たな特性であり、より大きく、より強力な言語モデルでより適切に機能することを意味します。CoT 推論データセットのモデルを微調整して、この機能をさらに強化し、より良い解釈可能性をもたらすことができます。

文脈に沿った学習の一般的な例は、思考の連鎖を促すことです。

思考連鎖により提案された論文は以下の通り

  1.  ウェイ、ジェイソン。王雪志。シュールマンズ、デール。ボスマ、マールテン。イクター、ブライアン。シア、フェイ。チー、エド・H。ル、クオック V. 周、デニー(2022年10月31日)。 「思考連鎖プロンプトが大規模言語モデルで推論を引き出す」。 arXiv : 2201.11903
  2. ^ ウェイ、ジェイソン; 周さん。 「言語モデルは思考連鎖を介して推論を実行します」。 ai.googleblog.com2023 年 3 月 10 日に取得。

悪意のある使用

ヒント インジェクションは、関連するコンピューター セキュリティ脆弱性のファミリーであり、大規模言語モデルなどのトレーニング済みの機械学習モデルが、意図された操作とは対照的に、人間によって与えられた指示に従うようにすることで、悪意のあるユーザーによって提供された指示に従うことを可能にします。命令追従システム。機械学習モデルは、機械学習モデルのオペレーターによって提供される信頼できる命令 (ヒント) のみに従います。

ヒント インジェクションは、敵対的ヒント エンジニアリングを使用したコード インジェクション攻撃とみなすことができます2022 年に、NCC グループは、 AI/ML システムとして特徴付けられる新しいクラスの脆弱性への注入を促進します。

2023 年頃、ChatGPTや同様のチャットボットに対するヒント インジェクションが、システム内に隠された初期ヒントを明らかにしたり、チャットボットをだましてチャットボットコンテンツ ポリシーに違反する会話に参加させたりするなど、軽微な脆弱性として現れるようになります。

メタ学習

        メタ学習: 言語モデルのコンテキストでは、モデルはトレーニング時に幅広いスキルとパターン認識機能を開発し、推論時にこれらの機能を使用して、必要なタスクを迅速に適応または認識します。下図の内側のループと外側のループを合わせてメタ学習と呼びます。

これは、モデルがトレーニング時に幅広いスキルとパターン認識能力を開発し、推論時にそれらの能力を使用して、目的のタスクに迅速に適応または認識することを意味します。

図 1.1: 言語モデルのメタ学習。教師なしの事前トレーニング中に、言語モデルは幅広いスキルとパターン認識能力を開発します。次に、推論時にこれらの機能を使用して、必要なタスクを迅速に適応または特定します。「コンテキスト内学習」という用語を使用して、各シーケンスの前方パスで発生するこのプロセスの内部ループを説明します。この図のシーケンスは、事前トレーニング中にモデルが参照するデータを表すことを目的としたものではなく、場合によっては繰り返されるサブタスクが単一のシーケンス内に埋め込まれていることを示すことを目的としています。

  

      言語モデルの文脈では、これは「ゼロショット転送」と呼ばれることもありますが、この用語は曖昧な場合があります。この方法は、勾配更新が実行されないという意味では「ゼロショット」ですが、通常は推論の提供が含まれます。モデルの一時的なデモンストレーションなので、実際にはゼロの例から学習しているわけではありません。この混乱を避けるために、一般的なアプローチの内部ループ/外部ループ構造を説明するために「メタ学習」という用語を使用し、メタ学習の内部ループを指すために「コンテキスト学習」という用語を使用します。さらに、推論時に提供されるデモンストレーションの数に応じて、説明を「ゼロショット」、「ワンショット」、または「少数ショット」に特化します。これらの用語は、新しいタスクをゼロから学習するモデルに役立つことを目的としています。トレーニング中に見られるパターンを単純に認識するかどうかは依然として不明瞭であり、これは重要な問題ですが、「メタ学習」は両方の可能性をカバーするように設計されており、内部と外部のループ構造を単純に説明します

1 言語モデルの文脈では、これは「ゼロショット転送」と呼ばれることもありますが、この用語は潜在的に曖昧です。この方法は、勾配更新が実行されないという意味では「ゼロショット」ですが、多くの場合、推論の提供が含まれます。モデルのデモンストレーションに時間を費やしているため、真にゼロの例から学習しているわけではありません。この混乱を避けるために、一般的なメソッドの内部ループ/外部ループ構造を表すために「メタ学習」という用語を使用し、メタ学習の内部ループを指すために「コンテキスト学習」という用語を使用します。さらに、推論時に提供されるデモンストレーションの数に応じて、説明を「ゼロショット」、「ワンショット」、または「少数ショット」に特化します。

文脈に沿った学習

「コンテキスト内学習」という用語を使用して、各シーケンスの前方パスで発生するこのプロセスの内部ループを説明します。

インコンテキスト学習はグラフ内の内部ループであり、各シーケンス データ入力の前方パス中にモデルが学習する内容を指します。

図 1.1: 言語モデルのメタ学習。教師なしの事前トレーニング中に、言語モデルは幅広いスキルとパターン認識能力を開発します。次に、推論時にこれらの機能を使用して、必要なタスクを迅速に適応または特定します。「コンテキスト内学習」という用語を使用して、各シーケンスの前方パスで発生するこのプロセスの内部ループを説明します。この図のシーケンスは、事前トレーニング中にモデルが参照するデータを表すことを目的としたものではなく、場合によっては繰り返されるサブタスクが単一のシーケンス内に埋め込まれていることを示すことを目的としています。

おすすめ

転載: blog.csdn.net/keeppractice/article/details/129912317