プロンプトエンジニアリング
ChatGPTおよび高度なプロンプトエンジニアリング:AIの進化を牽引する

OpenAIは、強化学習アルゴリズムのトレーニングのために設計されたOpenAI GymやGPT-nモデルなどの革命的なツールの開発において重要な役割を果たしてきました。また、テキスト入力から画像を生成するAIモデルであるDALL-Eも注目されています。OpenAIのChatGPTは、人間のような応答をユーザー入力に提供し、ソフトウェア開発やビジネスコミュニケーション、さらには詩の創作など、さまざまな分野で応用されています。
GPT-4:プロンプトエンジニアリング
ChatGPTは、チャットボットのランドスケープを変革し、人間のような応答を提供し、さまざまな分野での応用を拡大してきました。GPT-4は、数学や生物学から法学まで、幅広い分野の知識を蓄積し、ビジネスや個人の手にとって、無尽の知識の源となり得ます。こうした高度でアクセスしやすいAIモデルは、仕事、学習、創造性の未来を再定義する可能性があります。
生成モデルであるGPT-4は、既存の入力に基づいて新しいデータを生成することができます。この特性により、テキスト、画像、音楽、ビデオの生成など、多様なタスクを実行することができます。
OpenAIモデルの文脈では、プロンプトはユーザーがモデルに提供する入力であり、通常はテキストの形式で提供されます。プロンプトは、モデルが生成する出力の主要な制御手段となり、成功した会話を行う上で非常に重要な役割を果たします。
プロンプトの品質の影響
明確に定義されたプロンプトを使用することは、AIシステムとの有意義で意味のある会話を行うための鍵となります。定義されていないプロンプトは、ユーザーにとって役に立たない出力や誤解を招くコンテンツを生成する可能性があります。
プロンプトの品質の影響を示すために、ChatGPTに与える2つの異なるプロンプトを比較してみましょう。最初のプロンプトは、前提知識を仮定しており、ユーザーにとって役に立たない可能性のある応答を生成します。一方、2番目のプロンプトは、より多くのコンテキストと例を提供し、より関連性の高い応答を生成します。
プロンプト1:「Convolutional Neural Networksについて教えてください」
応答1:「Convolutional Neural Networks(CNN)は、完全に接続された層とプーリング層で構成される多層パーセプトロンです。画像認識タスクで一般的に使用されます。プロセスには、入力画像にフィルタを適用し、プーリング層を使用してダウンサンプリングすることが含まれます」
プロンプト2:「Convolutional Neural Networksについて学びたいのですが、人工ニューラルネットワークの前提知識がないので、初心者向けの説明と画像認識での使用例を提供してください」
応答2:「Convolutional Neural Networks(CNN)は、画像認識タスクで主に使用されるタイプのニューラルネットワークです。他のニューラルネットワークとは異なり、畳み込み層とプーリング層を使用して画像を処理します。猫の画像を想像してみましょう。CNNは、フィルタを適用し、プーリング層を使用して画像をダウンサンプリングすることで、画像内のさまざまな特徴(たとえば、ひげ、耳、尾)を識別できます。このプロセスにより、CNNは画像内のオブジェクトを識別するのに非常に効果的です」
2つの応答を比較すると、明確に定義されたプロンプトがより関連性の高い応答を生成することがわかります。プロンプトの設計とエンジニアリングは、AIモデルの出力品質を最適化するための成長分野です。
この記事の次のセクションでは、Large Language Models(LLM)を精錬するための高度な方法論、たとえばプロンプトエンジニアリング技術や戦略について掘り下げていきます。
高度なエンジニアリング技術
LLMには、「hallucination」と呼ばれる問題があります。これは、モデルが現実や入力コンテキストに根ざさない出力を生成することを意味します。
この問題は、最近の裁判で、弁護士がChatGPTを法的調査に使用した際に明らかになりました。AIツールは、hallucinationの問題により、存在しない法的ケースを引用しました。このミスは、混乱を招き、信頼性を損なう重大な影響を及ぼしました。この事件は、AIシステムにおけるhallucination問題を解決する必要性を強調しています。
プロンプトエンジニアリング技術の探求は、これらのLLMの側面を改善することを目的としています。効率と安全性を高めることで、革新的なアプリケーション、たとえば情報抽出への道を開きます。さらに、LLMを外部ツールやデータソースとシームレスに統合することで、潜在的な使用範囲を拡大します。
ゼロショットとファーショットラーニング:例を使用した最適化
Generative Pretrained Transformers(GPT-3)は、ゼロショットおよびファーショットラーニングの概念を導入しました。このアプローチは、包括的なファインチューニングを必要とせずに効果的に機能する能力により、ゲームチェンジャーとなりました。GPT-3フレームワークは、論文「Language Models are Few Shot Learners」で議論されており、モデルはカスタムデータセットやコードを必要とせずに、さまざまなユースケースで優れたパフォーマンスを発揮することを示しています。
ファインチューニングとは異なり、さまざまなユースケースを解決するために継続的な努力を必要とするファインチューニングとは異なり、ファーショットモデルはより広い範囲のアプリケーションに適応しやすいことを示しています。ファインチューニングは、特定のケースではロバストなソリューションを提供する可能性がありますが、スケールで費用が高くなる可能性があります。したがって、プロンプトエンジニアリングと組み合わせたファーショットモデルの使用は、特に外部データソースと統合する場合には、より実用的です。
英語をフランス語に翻訳しようとしている場合、たとえば、GPT-3に「sea otter -> loutre de mer」というような翻訳例を提供します。GPT-3は高度なモデルであるため、英語をフランス語に正確に翻訳することができます。ゼロショットラーニングでは、例を提供せずに、GPT-3が英語をフランス語に翻訳することができます。
「ファーショットラーニング」という用語は、モデルが「学習」するための例が限られているという考えから来ています。ここでの「学習」とは、モデルのパラメーターや重みを更新することを意味しません。むしろ、モデルのパフォーマンスに影響を与えることを意味します。
ゼロショットラーニングは、この概念をさらに進めています。ゼロショットラーニングでは、タスクの完了例がモデルに提供されません。モデルは、初期トレーニングに基づいてパフォーマンスを発揮することが期待されています。これは、オープンドメインの質問回答シナリオ、たとえばChatGPTのようなシナリオに適した方法論です。
多くの場合、ゼロショットラーニングに優れたモデルは、ファーショットまたはシングルショットの例が提供された場合にも優れたパフォーマンスを発揮することができます。ゼロショット、シングルショット、ファーショットのシナリオ間で切り替える能力は、大型モデルの適応性を強調し、さまざまなドメインでの潜在的なアプリケーションを拡大します。
ゼロショットラーニング方法は、トレーニング中に見られなかったオブジェクトを認識する能力を特徴としています。ここでは、ファーショットプロンプトの実用的な例を示します。
「次の英語のフレーズをフランス語に翻訳してください:
'sea otter'は'loutre de mer'に翻訳されます
'sky'は'ciel'に翻訳されます
'cloud'をフランス語に翻訳してください」
モデルに例を提供し、質問を提示することで、望ましい出力を生成することができます。この場合、GPT-3は「cloud」をフランス語の「nuage」に正しく翻訳する可能性があります。
プロンプトエンジニアリングとGPTモデルのニュアンスについてさらに掘り下げるにつれて、モデルパフォーマンスを最適化する上でのプロンプトエンジニアリングの重要性を理解することができます。また、コスト効率の高いスケーラブルなソリューションをさまざまなユースケースで作成する方法についても説明します。
先ほどの議論で、LLM(Large Language Models)におけるゼロショット、ファーショットラーニング、およびインストラクションプロンプティングなどの基本的なプロンプト方法について説明しました。これらのテクニックをマスターすることは、プロンプトエンジニアリングの複雑な課題に取り組む上で不可欠です。
ファーショットラーニングは、ほとんどのLLMの制限されたコンテキストウィンドウのために制限される可能性があります。さらに、適切なセーフガードがないと、LLMは潜在的に有害な出力を生成する可能性があります。また、多くのモデルは推論タスクやマルチステップの指示に従うことに苦労しています。
これらの制限を考慮して、LLMを使用して複雑なタスクに取り組むことができます。明らかな解決策の1つは、より高度なLLMを開発するか、既存のものを改良することですが、それには大きな努力が必要になる可能性があります。したがって、質問は、現在のモデルを問題解決能力を向上させるためにどのように最適化できるかということです。
このテクニックがUnite AIの「AIアートのマスター:Midjourneyとプロンプトエンジニアリングのコンサイスなガイド」における創造的なアプリケーションとどのように接合するかについても興味深い探究があります。このガイドでは、AIとアートの融合が驚くべきアートを生み出す方法について説明しています。
思考連鎖プロンプティング
思考連鎖プロンプティングは、LLMの固有の自己回帰的特性を利用します。これらのモデルは、与えられたシーケンスの次の単語を予測することに優れています。モデルに思考プロセスを明示するようにプロンプトすることで、より包括的で体系的なアイデアの生成を誘発し、正確な情報に近いアウトプットが生成されます。このアラインメントは、モデルが情報を体系的に処理して提供する傾向に由来し、人間の専門家が複雑な概念を説明するように聞き手に歩みを踏み出すようにします。たとえば、「ステップバイステップで説明してください」というような単純なステートメントでこのプロセスをトリガーすることができます。
ゼロショット思考連鎖プロンプティング
従来のCoTプロンプティングでは、事前トレーニングにデモンストレーションが必要ですが、ゼロショットCoTプロンプティングは新しい分野です。このアプローチは、Kojima et al.(2022)によって導入され、元のプロンプトに「段階的に考えましょう」というフレーズを追加することで革新的に機能します。
ここでは、ChatGPTがAIおよびNLP研究論文の重要なポイントを要約するように指示する高度なプロンプトを作成します。
このデモンストレーションでは、モデルが学術的なテキストからの複雑な情報を理解して要約する能力を利用します。ファーショットラーニングアプローチを使用して、ChatGPTをAIおよびNLP研究論文の重要なポイントを要約するように教えます。
1. 論文タイトル:「Attention Is All You Need」
重要なポイント:Transformerモデルを導入し、シーケンス変換タスクの再帰層よりも注意メカニズムの重要性を強調しました。
2. 論文タイトル:「BERT:言語理解のための深層双方向Transformerの事前トレーニング」
重要なポイント:BERTを導入し、深層双方向モデルを事前トレーニングすることの有効性を実証し、さまざまなNLPタスクで最先端の結果を達成しました。
これらの例のコンテキストで、次の論文の重要なポイントを要約してください:
論文タイトル:「大規模言語モデルにおけるプロンプトエンジニアリング:検討」
このプロンプトは、明確な思考連鎖を維持し、さらにファーショットラーニングアプローチを使用してモデルをガイドします。また、AIおよびNLPドメインに焦点を当て、プロンプトエンジニアリングに関連する複雑なタスク、つまり研究論文の要約をChatGPTに実行させます。
ReActプロンプト
ReAct(Reason and Act)は、Googleによって導入された「ReAct:言語モデルにおける推論と行動のシナジー」という論文で、言語モデルがタスクに動的に生成された推論トレースとタスク固有のアクションを生成するように促すことで、言語モデルがタスクとやり取りする方法を革命的に変えました。
人間のシェフがキッチンで作業していることを想像してみましょう。シェフは一連のアクション(野菜を切り、水を沸かす、材料を混ぜる)を実行するだけでなく、内面的推論(「野菜を切り刻んだので、ポットをストーブに置くべきだ」)や会話(「オリーブオイルがなければ、バターを使う」)を行います。この内面的推論は、プロセスを戦略化し、突然の変更(「オリーブオイルがなければ、バターを使う」)に適応し、タスクの順序を思い出すのに役立ちます。ReActは、この人間の能力を模倣し、モデルが新しいタスクを迅速に学習し、不確実な状況下で人間のようにロバストな決定を下せるようにします。
ReActは、CoT(Chain-of-Thought)システムで一般的な問題であるhallucinationを対処することができます。CoTは、外部の世界と対話できないため、事実のhallucinationやエラーの伝播につながる可能性があります。一方、ReActは、外部情報源と対話することでこれを補償し、モデルが推論を検証し、外部の世界からの最新情報に基づいて知識を更新できるようにします。
ReActの基本的な動作は、HotpotQAというタスクを使用した例で説明できます。HotpotQAは、複雑な推論を必要とするタスクです。質問を受け取ると、ReActモデルは質問を扱いやすい部分に分解し、行動計画を生成します。モデルは推論トレース(思考)を生成し、関連するアクションを特定します。たとえば、Wikipediaなどの外部情報源でApple Remoteについて調べ(アクション)、取得した情報に基づいて理解を更新します(観察)。ReActは、推論と行動と観察の複数のステップを通じて、推論をサポートする情報を取得し、次に取得する必要がある情報を洗練することができます。
注
HotpotQAは、Wikipediaから派生した113,000の質問と回答のペアで構成されるデータセットであり、複数のドキュメントを推論する必要がある質問でAIシステムをトレーニングするために設計されています。一方、CommonsenseQA 2.0は、ゲーム化を介して構築され、14,343のyes/no質問で構成されており、AIの常識の理解を挑戦するために意図的に作成されています。
プロセスは次のようになります。
- 思考:「Apple (AAPL ) Remoteとその互換性のあるデバイスを検索する必要があります」
- アクション:外部情報源で「Apple Remoteの互換性のあるデバイス」を検索します。
- 観察:検索結果からApple Remoteの互換性のあるデバイスの一覧を取得します。
- 思考:「検索結果に基づいて、Apple Remote以外の複数のデバイスがプログラムで制御できることがわかります」
結果は、情報とやり取りすることで進化することができる、ダイナミックで推論に基づくプロセスになります。

HotpotQAとAlfWorldを解決するための4つのプロンプト方法(標準、思考連鎖、Act-Only、ReAct)の比較視覚化(https://arxiv.org/pdf/2210.03629.pdf)
ReActエージェントの設計は、複雑な目標を達成する能力により、専門化されたタスクです。たとえば、会話メモリを統合することで、会話エージェントはより豊かなやり取りを提供します。ただし、このタスクの複雑さは、Langchainなどのツールによって簡素化されています。
コンテキスト忠実なプロンプティング
「コンテキスト忠実なプロンプティングfor Large Language Models」という論文は、LLMは知識依存型NLPタスクで大きな成功を収めてきましたが、パラメトリックな知識への過度の依存により、コンテキスト感覚的なタスクで道を踏み外す可能性があることを強調しています。たとえば、言語モデルが古い事実でトレーニングされた場合、コンテキストのヒントを無視して誤った回答を生成する可能性があります。
この問題は、知識の衝突の例で明らかです。ここでは、LLMの事前知識とコンテキスト内の事実が異なるときに発生します。たとえば、2022年ワールドカップ前にデータでトレーニングされたLLMが、フランスがトーナメントに勝ったことを示すコンテキストが与えられた場合、LLMは依然として前の勝者、つまり2018年のワールドカップで勝ったチームが現在のチャンピオンであると主張する可能性があります。これは、LLMの「知識の衝突」の典型的な例です。
本質的に、LLMの知識の衝突は、コンテキストで提供された新しい情報がモデルがトレーニングされた既存の知識と矛盾するときに発生します。モデルがコンテキストよりも事前トレーニングに依存する傾向は、誤った出力を生成する可能性があります。一方、LLMのhallucinationは、モデルがトレーニングデータやコンテキストに根ざさない、現実的にあり得ない回答を生成することを意味します。
別の問題は、コンテキストが質問に正確に回答するのに十分な情報を含んでいない場合、予測と自制の必要性が生じます。たとえば、コンテキストに情報が含まれない場合は、Microsoftの創設者について尋ねられたLLMは、推測するのではなく、答えることを控えるべきです。
これらのシナリオでLLMのコンテキスト忠実性を向上させるために、研究者はさまざまなプロンプト戦略を提案しました。これらの戦略は、LLMの回答をコンテキストに合わせることを目的としています。
1つの戦略は、プロンプトを意見に基づく質問として構成することです。ここで、コンテキストはナレーターの声明として解釈され、質問はそのナレーターの意見に関連します。このアプローチは、LLMの注意を提示されたコンテキストに焦点を当て、事前トレーニングされた知識に頼るのではなく、コンテキストに基づいて回答を生成するようにします。
プロンプトに反事実的デモンストレーションを追加することも、知識の衝突の場合に忠実性を高めるための効果的な方法として特定されています。これらのデモンストレーションは、虚構の事実を含むシナリオを提示し、モデルがコンテキストに注意を払って正確な回答を生成するように促します。
インストラクションファインチューニング
インストラクションファインチューニングは、モデルに特定の指示を提供することを特徴とする監督学習フェーズです。たとえば、「日出と日没の違いを説明してください」という指示が与えられ、適切な回答が「日出は朝に地平線上に現れる太陽の瞬間であり、日没は夕方に太陽が地平線下に沈む瞬間である」というものになります。このアプローチにより、モデルは指示に従って実行することを学び、ゼロショットタスクの実行が容易になります。
このアプローチは、LLMをプロンプティングする方法に大きな変化をもたらします。インストラクションファインチューニングされたLLMは、事前トレーニングされた知識に頼るのではなく、指示に従ってタスクを実行することができます。モデルがまだファインチューニングされていない場合、プロンプトにいくつかの例を含める必要があるかもしれませんが、ファインチューニングされたモデルは、ゼロショットでタスクを実行できます。
「GPT-4を使用したインストラクションチューニング」では、GPT-4を使用してLLMのインストラクションに従うデータを生成するための試みについて説明しています。英語と中国語の両方で52,000のユニークなインストラクションに従うエントリーより構成される豊富なデータセットを使用しました。
このデータセットは、LLaMAモデルのインストラクションチューニングに重要な役割を果たし、新しいタスクでゼロショットのパフォーマンスを向上させます。Stanford Alpacaなどの注目すべきプロジェクトは、Self-Instructチューニングを効果的に使用しています。これは、LLMを人間の意図に合わせるための効率的な方法であり、先進的なインストラクションチューニングされた教師モデルによって生成されたデータを利用しています。
インストラクションチューニング研究の主な目的は、LLMのゼロショットとファーショットの汎化能力を向上させることです。さらにデータとモデルをスケールアップすることで、貴重な洞察が得られる可能性があります。現在のGPT-4データサイズは52Kで、ベースLLaMAモデルのサイズは70億パラメータです。GPT-4のインストラクションに従うデータをさらに収集し、他のデータソースと組み合わせて、より大きなLLaMAモデルをトレーニングすることで、優れたパフォーマンスが期待できます。
STaR:推論を推論でブートストラップ
LLMの潜在能力は、数学や常識の質問回答などの複雑な推論タスクで特に顕現します。ただし、LLMに「推論」を生成させるプロセス、つまり一連の段階的な正当化または「思考の連鎖」を生成させることは、課題を伴います。これには、大きな推論データセットの構築または精度の損失が必要になる可能性があります。
「Self-Taught Reasoner」(STaR)は、これらの課題に対する革新的な解決策を提供します。STaRは、モデルが推論を生成して複数の質問に回答するためのシンプルなループを使用して、モデルが推論する能力を継続的に向上させます。この反復プロセスは、推論を生成して正しい答えを得ることから始まり、正しい答えが得られなかった場合は、正しい答えを得るまで推論を生成し続けます。次に、モデルは正しい答えを得た推論に基づいてファインチューニングされ、プロセスは繰り返されます。
実用的な例として、質問「小さな犬を運ぶのに何が使えるか」と考えてみましょう。答えの選択肢は、プールからバスケットまでさまざまです。STaRモデルは推論を生成し、答えが小さな犬を運ぶことができるものでなければならないことを認識し、バスケットが正解であると結論付けることができます。
STaRのアプローチは、言語モデルの既存の推論能力を利用する点で独自です。推論の自己生成と精製を使用して、モデルが推論する能力をブートストラップします。ただし、STaRのループには限界があります。モデルは、解決できない新しい問題に対して直接のトレーニング信号を受け取らないため、問題を解決できない可能性があります。STaRは、モデルが解決できない問題に対して正しい答えを提供することで推論を生成することでこの問題に対処します。これにより、モデルは逆方向に推論することができます。
したがって、STaRは、モデルが推論を生成し、解決するタスクの難易度を高めることができる、スケーラブルなブートストラップ方法です。STaRの適用は、算術、数学のワード問題、常識の推論タスクで有望な結果を示しています。CommonsenseQAでは、STaRは、ファインチューニングされたモデルと比較して、30倍大きいモデルのパフォーマンスと同等のパフォーマンスを達成しました。
タグ付きコンテキストプロンプト
「タグ付きコンテキストプロンプト」の概念は、AIモデルに追加のコンテキストレイヤーを提供することです。入力内の特定の情報にタグを付けることで、AIはコンテキストを正確に解釈し、関連性の高い回答を生成することができます。
友人とチェスについて話していることを想像してみましょう。友人は声明を出し、情報源をタグ付けします(たとえば、「(Wikipediaより)」)。ここで、AI(友人)は、情報がどこから来たかを正確に理解し、信頼性の高い回答を生成することができます。
タグ付きコンテキストプロンプトの独自の側面は、AIモデルの「コンテキストの知性」を向上させる可能性があることです。たとえば、論文は、さまざまな主題のWikipedia記事の要約や最近出版された本のセクションからの質問を使用して、このことを実証しています。質問はタグ付けされ、AIモデルに情報の出典についての追加のコンテキストが提供されます。
この追加のコンテキストは、回答が正確でコンテキストに従っていることを保証するために不可欠です。
結論:有望なテクニックと将来の方向性の考察
OpenAIのChatGPTは、LLMが複雑なタスクに取り組む際の未知の潜在能力を示しています。ゼロショットラーニング、ReActプロンプティング、思考の連鎖、STaRなどの高度なテクニックにより、幅広いアプリケーションでこの潜在能力を利用することができます。プロンプトエンジニアリングのニュアンスを深く掘り下げるにつれて、これらの方法論がAIの風景をどのように形作っているか、また人間とマシンのやり取りを豊かで安全にしているかを発見することができます。
知識の衝突、パラメトリックな知識への過度の依存、hallucinationの可能性などの課題にもかかわらず、プロンプトエンジニアリングを適切に適用したAIモデルは、変革的なツールとなり得ます。インストラクションファインチューニング、コンテキスト忠実なプロンプティング、外部データソースとの統合は、推論、学習、適応能力をさらに高めます。















