【初心者向けにChatGPT入門】プロンプト入力の基礎を知ることで、自分で考えながら応用して作れるようになります。今よりもっと楽しくなるかも
今回は、プロンプト入力じゃ
プロンプト入力ってなんだが、難しそう
難しいと意味ないよ~
大丈夫じゃ、基本的な知識を知るだけで良いのじゃ
ほな、プロンプト入力の誤解から解いていこうか
早速、解説していこう
プロンプト入力とは
概要
プロンプト入力とは、ChatGPTやBardのような言語モデル(LMs)に対して、ユーザーがテキストで入力することを指します。
テキスト入力を通して、対話、質疑応答、テキスト要約、テキスト分類分け、コード生成、推論等を行うことができます。
明確な指示や文脈を提供することで、より精度の高い適切な結果を得ることができるでしょう。
よくネットや動画で公開されているプロンプトは、言語モデルの性質を理解しより精度の高い回答が得られるように組み立てた呪文のような入力方法です。
ですが、テンプレート化しておかなくてならず、利用するのが不便な一面もあります。
そこで今回は、プロンプト入力の基本的な考え方を学び、自分なりの一工夫で
使いやすくできるようにしていきます。
プロンプトエンジニアリング
本記事では、プロンプトエンジニアリングの考え方をわかりやすく掻い摘んで紹介していきます。
より詳しく勉強したい方は、プロンプトエンジニアリングで検索して見てください。
プロンプトの基礎知識
プロンプト入力には、言語モデル(LMs)に渡す指示や質問のような情報、または例などの他の詳細を含めることができます。これらの入力を用いて、モデルをより適切に指示し、より良い結果を得ることを目指すことができます!
入力された内容に応じて推論を行い、最も正解に近いとされる答えを解答してくれます。
高度な推論とはいえ、情報が少なすぎると一般的に正しいとされる解答となるため、実際に得たい解答を導くには精度が悪くなります。
事前情報を多く与えることでより推論の精度を高めることができます。
推論精度(解答精度)を高めるためにいくつもの考え方に基づいた入力方法があります。
プロンプトエンジニアリング研究している方々が考えている手法がいくつも発表されています。
ベースとなる考え方を紹介するので、是非覚えておくと良いと思います。
下記が入力にて理解される基本要素
- 命令
- 実行してほしい特定のタスクまたは命令情報
- 文脈
- 外部情報や追加の文脈等の補足情報
- 入力データ
- 質問や応答を見つけたい入力情報
- 出力指示
- 求める出力の形式情報
プロンプト入力でできること
言語モデル(LMs)へのプロンプト入力で下記のことができます。
質問応答
こちらは、おなじみではありますが、質疑応答に対応することができます。
事前情報を与えると与えた情報に沿って回答をしてくれます。
会話
求めた問に答えてくれるので、会話をすることもできます。
Alexaとの違いもあるのでまた違った楽しさがあります。
テキスト要約
〇〇を説明してください。〇〇を要約してくださいと入力することで、
事柄の説明、長文の要約、本の要約等のテキスト要約ができる
情報抽出
与えたデータから情報を抽出することができる
下記引用元:Prompt Engineering Guide
プロンプト:
研究論文の著者貢献声明や謝辞には、筆者が ChatGPT のようなAIテクノロジーを原稿および分析の準備に使用したかどうか、およびどの LLMs を使用したかが明確かつ具体的に記載されている必要があります。これにより、編集者や査読者がバイアス、不正な引用元のクレジット付け、不正確さなどの可能性について、より注意深く原稿を精査することができます。同様に、科学ジャーナルは、投稿された原稿の選定時に LLMs を使用した場合には、透明性を持って開示する必要があります。上記の段落において言及されている大規模言語モデルベースの製品を述べてください。
出力:
上記の段落において言及されている大規模言語モデルベースの製品は ChatGPT です。
テキスト分類
与えた情報を分類分けすることができる。
良いこと悪い事の例サンプルを提示し、どっちに当てはまるか回答をすることができます。
コード生成
プログラミングで使用するコードの生成ができます。
処理を順番に整理し、回答のほしい言語を指定することで、高度なプログラミングコードを書いてくれます。
もちろん事前情報を与えることでSQLも書いてくれます。
計算
数学的な計算も得意なため、順序を整理して聞くことで、答えを導いてくれます
発表されているプロンプト技法集
言語モデル(LMs)へのプロンプト入力を改善することで、精度の良い結果を得ることができます。
さまざまな研究がされており、基礎知識として覚えておくと応用もし易いので、
ここでそれぞれの概念と使い方を紹介します
Zero-Shotプロンプティング
事前情報をあまり入力せずにシンプルな質問をしていく方法
最もシンプルで使いやすい入力方法
Few-Shotプロンプティング
サンプルを入力してモデルをより高い性能に導く文脈学習を可能にするテクニック
Zero-Shotと比べて、例文などを入れることでより複雑な問題について回答精度を上げることができる
下記引用元:Prompt Engineering Guide
プロンプト:
「whatpu」とはタンザニア固有の小さくて毛皮のある動物です。 「whatpu」という言葉を使った文の例は次のとおりです。私たちはアフリカを旅行して、これらのとてもかわいいwhatpusを見ました。「farduddle」というのは、とても速く上下にジャンプすることを意味します。 「farduddle」という言葉を使用した文の例は次のとおりです。
出力:
私たちは試合に勝ったとき、みんなfarduddleをして祝いました。
Chain-of-Thought (CoT) プロンプティング
推論ステップ入れてあげることにより、より複雑な推論能力を可能できる。
few-shot promptingと組み合わせることで、推論が必要なより複雑なタスクでより精度の高い結果を得られるようです
最近提唱されたアイデアの1つは、zero-shot CoT(opens in a new tab) (Kojima et al. 2022)のアイデアのようです。
これは、元の入力に「ステップバイステップで考えてみましょう」という文言を追加だけで順序に沿った推論を促し、より精度の高い回答が得られるようです
下記引用元:Prompt Engineering Guide
プロンプト:
私は市場に行って10個のリンゴを買いました。隣人に2つ、修理工に2つ渡しました。それから5つのリンゴを買って1つ食べました。残りは何個ですか?
出力:
11個のリンゴ
答えは不正解です!それでは、特別なプロンプトで試してみましょう。
プロンプト:
私は市場に行って10個のリンゴを買いました。隣人に2つ、修理工に2つ渡しました。それから5つのリンゴを買って1つ食べました。残りは何個ですか?ステップバイステップで考えてみましょう。
出力:
最初に、10個のリンゴから始めました。隣人と修理工に合わせて、リンゴを2つずつ渡し、残りは6個になりました。次に、5つのリンゴを買い、11個になりました。最後に、1つのリンゴを食べたため、残りは10個になります。
この単純なプロンプトがこのタスクで効果的であることは驚きです。
これは、プロンプトに使用できる例があまりない場合に特に有効なようです。
プロンプトエンジニアリングについての論文
Prompt Engineering Guide 論文 リストPrompt Engineering GuideA Comprehensive Overview of Prompt Engineering
さいごに
プロンプトエンジニアリングは、これからもどんどん研究が進み
いろんなアプローチの入力が生まれることでしょう!
定期的に情報を追ってシンプルで効率的な入力方法を探していきたいと思います。
コメント