生成AIのプロンプトに「ステップバイステップで考えよう」と追加すると回答精度が高まる【トリガープロンプト】
AIの利用が当たり前になる時代においては、効果的な指示や質問(プロンプト)ができることが、AIを使いこなすための必須条件となります。
特にユーザーが最初に質問文を投げかける必要のある生成AI(チャットAI)の場合、プロンプトのクオリティがそのまま回答や生成物のクオリティに直結します。
人間同士のコミュニケーションでは行間や暗黙の了解、「あれ」とか「これ」などなんとなく伝わる表現で意思疎通ができたかもしれませんが、それらはいまのところAIに通用しません。
なるべく正確な言葉、文法、表現、さらにAIの回答精度を高めるプロンプトで伝えなければ、得たい結果を得られないのがAIとのコミュニケーションです。
つまり、AI時代には質問力が大事であり、プロンプトリテラシーが不可欠になります。
いまなお発展途上のAIを利用するにあたり、現時点ではどの程度のプロンプトリテラシーを身につけておけばいいのでしょうか。
今回紹介する書籍は『AI時代の質問力 プロンプトリテラシー 「問い」と「指示」が生成AIの可能性を最大限に引き出す』(翔泳社)です。
本書ではAIに適切な質問をし、効果的な対話を行なうためのノウハウが紹介されています。どのサービスでも通用する、基本となるプロンプトばかりなので、本書で押さえておけばさまざまな機会に応用ができます。
この記事では本書から、AIの回答精度を高めるのに役立つプロンプトである「トリガープロンプト」の一例を紹介します。
取り上げるのは「Chain-of-Thoughtパターン」です。AIに質問をする際に、質問の文脈や背景を説明して推論のステップ(思考の連鎖、Chain-of-Thought)を辿ると、回答の精度が高まります。これは、質問に対する情報が増えることで、より回答を予測しやすくなるからだと考えられています。
このほかにも、本書では「Chain-of-Verificationパターン」や「ステップバックプロンプトパターン」などのトリガープロンプトを解説しています。
また、プロンプトのフレーズと構造をまとめたプロンプトパターンも紹介されているので、「AIにどう質問すれば質の高い回答を得られるのか分からない」という方は、ぜひ本書を参考にしていただければと思います。
※なお、本書ではOpenAIが提供しているChatGPT 4とChatGPT 3.5を利用しています。
トリガープロンプトの威力
大規模言語モデルに対して、特定のタイプの応答や思考過程を促すためにテンプレート化されたプロンプトをトリガープロンプト(TriggerPrompt)やリーディングプロンプト(LeadingPrompt)と呼ぶ。
たとえば「~のように振る舞ってください」も「ある役割に準じた思考や発言を促す」という意味で、トリガープロンプトの一種と見ることができる。
これまでにさまざまな種類のトリガープロンプトが提案されているが、中でも有名なものは「ゼロショットCoTパターン」だ。
このパターンは、問いたい質問の最後に「一歩一歩問題を解いてみよう。」という文言(トリガープロンプト)を付け加えるだけの単純なものである。「一歩一歩……」の前に「常識に基づいて」や「探偵のように」といった修辞を付けることも可能だ。
この短い魔法の言葉によって、モデルは解を導くまでの論理的なステップを順に生成する。プロンプトは質問に対する答えを要求するだけではなく、その答えを導き出す手順や戦略までをもコンピュータに指示することが可能なのだ。
トリガープロンプトはモデルに内在する知識と推論能力を引き出すための「キュー」または「手がかり」として機能し、その結果、驚くべきことにモデルの推論能力が大きく向上することが確認されている。
Chain-of-Thoughtパターン 順を追って考えよう
数学の問題を解くとき、その解答に至るまでの道筋を思い浮かべることができたら、後はそのステップを一つひとつクリアしていけば、おのずと正解にたどり着くことができる。特に、テストに出る数学の問題は、問題を見たときにその解き方をすばやく見つけることができるかが、点を取るために必要とされるスキルだ。
数学の問題に限らず、自分の主張や思いを客観的な推論で裏打ちすることはとても重要だ。主張は、その理由と、それを裏付けする誰の目にも明らかな客観的な事実や実例が積み重ねられることで、論理的な力を持つ。
この論理的プロセスは、「思考の連鎖(Chain-of-Thought)」、一般に「CoT」パターンとして知られる方法を用いて大規模言語モデルにも応用されている。モデルが解答や結論を出す際に、その背後にある推論のステップを説明すると、最終的な答えの精度が向上する。人間だけでなく大規模言語モデルにおいても、その背後にある理由を説明させることは性能を向上させるのだ。
これは、大規模言語モデルがさまざまな文脈から何が起こるかを予測するように訓練されていることがおそらく関係しているのだろう。その推論プロセスを可視化することで、モデルの予測の正確性をさらに高めることができる。
CoTパターンは、質問と思考過程(CoT)を含む回答の組からなる例を少数ショットで与え、最後に本当に聞きたい質問を提示するというものだ。CoTを例示することで問題をステップバイステップに分解し、論理的な複数のステップを踏まえた解決過程を促す。
プロンプトの例
たとえば、次のような問題を考えてみよう。ジョンが所有する2軒の家に何枚の窓があるかを尋ねる問題だ(ここで挙げる例はすべてS・ユルドゥルム「ChainofThoughtPromptingFacilitateLLMsReasoningAbilities」からの引用)。
たとえば、ChatGPT 4を使った場合、次のように窓を数え上げることができる。
最終的な回答「26窓」は正解だ。ChatGPT 4は2024年5月現在利用可能なモデルの中では最も性能が高いもののひとつで、うまく正解にたどり着くことができた。
ここでは、まず寝室の窓、キッチンの窓、その他の窓を足して、最後に家の数で2倍するという数え方をしたが、もちろん別の順序で窓の合計を計算することもできるし、家の数を掛ける前に種類ごとにグループ化することもできる。
このような問題は、正解にたどり着くまでの過程はひとつではないことが多い。この問題に対して、より性能の低いモデル(ここではChatGPT3.5)を用いると、結果は以下のようになった。
こちらは間違った回答を出力してしまった。どうやら1軒の家にある窓の総数を数える際に間違ったようだが、具体的にどのような間違え方をしたのかはわからない。
今度は、同じモデル(ChatGPT3.5)に対して、CoTパターンを使ってこの問題を解かせてみよう。少数ショットで類似の問題を与え、最後に先ほどの窓の数を尋ねる質問を提示する。
すると今度は次のように見事に正解を導き出すことができた。
また、プロンプトの例でその思考過程を与えている通り、この問題の答えを導き出す具体的な思考過程も説明され、その道筋も正しい答えに向かっていることを確認できる。
ゼロショットCoTパターン
しかし、この正解を導き出すためには上記で用いたような複数の例を提示する必要があった。これは、CoTパターンを活用する上で大きな障壁になり得る。なぜなら、どのような例を与えれば、より正解に近づくことができるのかわからないからだ。トライ&エラーでうまくいく例を探さなければならない。
そこで提案されたのが「ゼロショットCoT(Zero-shotCoT)」パターンという方法だ。これは「一歩一歩問題を解いてみよう。」あるいは「ステップバイステップで考えよう。」というトリガープロンプトを質問文に追加するだけで、思考過程の例を少数ショットで与えなくてもCoTパターンと同じ効果を得ることができる方法だ。早速試してみよう。
太字の箇所がトリガープロンプトである。ChatGPT3.5の回答は以下だ。
ひとこと
「ステップバイステップで考えよう。」という言葉で大規模言語モデルに慎重に物事を進める姿勢を求めると正解率が向上する、というのは非常に興味深い現象だ。
どのような態度を大規模言語モデルに求めるかで、その推論の精度にも影響するのだ。大規模なモデルほど、CoTパターンやゼロショットCoTパターンがその威力を発揮するという報告がなされている。
それはつまり、大規模なモデルほどたくさんの知識を持っており、その中にはきっと多くの人格や個性、さまざまな思考の進め方のようなものが含まれているからかもしれない。
普段は少しノリの良い人格で動いているのかもしれず、少し慎重になってほしいときには「ステップバイステップで考えよう。」と伝える。すると、ステップバイステップに考えを進めていけるようになる。
まるで、誰かの能力を引き出すように、大規模現モデルの能力も引き出すことができるのだ。
この記事が気に入ったらサポートをしてみませんか?