思考の連鎖(Chain of Thought)でChatGPTからよりよい応答を引き出そうChatGPT入門(2/2 ページ)

» 2023年03月10日 05時00分 公開
[かわさきしんじDeep Insider編集部]
前のページへ 1|2       

zero-shot-CoTプロンプト

 zero-shot-CoTプロンプトは「Large Language Models are Zero-Shot Reasoners」という論文で提案されたもので、簡単にいってしまえば以前にも紹介した「ステップバイステップで考えてみましょう」(Let's think step by step)という文言を言語モデルからの出力の前に置くというものです。

 以下に例を示します。

zero-shot-CoTプロンプト zero-shot-CoTプロンプト

 few-shot-CoTプロンプトとは異なり、プロンプトには入力と出力の例がありません。そのため、これは「zero-shot」というわけですね。その代わりにモデルからの出力の前に「ステップバイステップで考えてみましょう」を置いています。こうすることで、言語モデルからの出力に問題を解くためのCoTが含まれるようになり、正しい結果が得られています。


かわさき

 自分で試してみると分かりますが、これでも間違った推測を行うことは(それなりに)あります。数回同じことを尋ねれば正解が出てくることもあります。


 ではなぜ「ステップバイステップで考えてみましょう」が有効なのでしょうか。論文によれば、zero-shot-CoTプロンプトは概念的には解法を抽出するのと、答えを求めるのに2回のプロンプトを使っていると考えられるとのこと。

 1つ目のプロンプト(解法の抽出)では以下のように計算のステップを言語モデルが問題文から取り出します。

解法を抽出するプロンプト 解法を抽出するプロンプト

 次のプロンプト(答えを求める)では上で得られた解法をプロンプトに含めて言語モデルに入力します(上の画像ではCoT部分がモデルからの出力で背景色が薄い緑色となっていますが、下の画像ではこれを例として入力しているので、背景色が白になっている点に注目してください)。

答えを求めるプロンプト 答えを求めるプロンプト

 このプロンプトを見ると、few-shot-CoTプロンプトと同様に見えます(ただし、入力と出力の例があるわけではなく、解きたい問題とその解法がプロンプトに含まれるだけです)。

 概念的にはこのような2つのプロンプトをモデルに入力するのですが、実際には「ステップバイステップで考えてみましょう」と書くだけで、これらをまとめて行ってくれるというわけです。

 手を煩わせる必要がないという点では、zero-shot-CoTプロンプトはかなり優秀ですが、言語モデルが正しく推測してくれないこともあります。そうしたときにはfew-shot-CoTで言語モデルの振る舞いを細かく制御するというのがよいでしょう(これについては次節で見てみます)。

ChatGPTはどうか

 本稿の冒頭でも見たように、ChatGPTは少し複雑な(ステップが複数ある)計算問題についてはうまい具合に答えてくれます。

少し複雑な計算問題ならChatGPTは解いてくれる(ことが多い) 少し複雑な計算問題ならChatGPTは解いてくれる(ことが多い)

 今度は、コインの表向き/裏向きをモデルに推測させてみます。

 初期条件はコインが表向きに置いてあるものとして、以下のようにコインをひっくり返すとしましょう。かっこ内はコインの向きがどう変化するのかをメモしたものです。

  • A氏は1回ひっくり返す(表→裏)
  • B氏は2回ひっくり返す(裏→表→裏)
  • C氏はひっくり返さない(裏向きのまま)
  • その後、3人が1回ずつひっくり返す(裏→表→裏→表)

 というわけで、最終的にコインが表向きとなっているかどうかをChatGPTが推測できるかを試してみます(正しい答えが得られることもあるでしょう)。

コインの表裏の推測は得意でないもよう コインの表裏の推測は得意でないもよう

 この結果を見ると、B氏がコインを2回ひっくり返すと、コインは裏向きから表向き、そしてまた裏向きになるはずですが、そこを理解できませんでした。そこを間違えたばかりにコインは最終的に裏向きだと言語モデルは推測をしました。

 こんなときにはzero-shot-CoTプロンプトの出番です。といっても、InstructGPTとはUIが異なっているので、ここでは入力プロンプトの最後に「ステップバイステップで考えてみましょう」と付加することにします。

 その結果が以下です。

ステップバイステップで間違えた ステップバイステップで間違えた

 ここでは先ほどと同じポイント(B氏が2回ひっくり返した)で先ほどと同じ間違いをしたので、結果も間違ったものになってしまいました。

 こうなったらfew-shot-CoTプロンプトを試してみることにしましょう。ただし、ここでは現在の問題を解く手順をそのまま入力プロンプトに組み込むだけとします(他の入力と出力の組はここでは省略します)。

few-shot-CoTプロンプト few-shot-CoTプロンプト

 自分でほぼ解答を入力しているので、ここでは正しい答えが出力されました。


かわさき

 言語モデルに推測させるというよりも、言語モデルと一緒に答えを考えている感が非常に強くなります(笑)。


 このようにChatGPTはInstructGPTよりも正しい答えを出してくれることが多いのですが、うまくいかないときにはzero-shot-CoTプロンプトを使って「ステップバイステップで考えてみましょう」としてみて、それでもダメならfew-shot-CoTプロンプトを試してみるというのは確かによいアプローチのようです。


一色

 「一緒に答えを考えている感」はなるほど。思考の連鎖によるプロンプトは、どうしても人間が子供に勉強というか質問への答え方を教えているのに似ているという感じがありますね。そういう意味ではChatGPTは、何でも答えてくれる大先生というよりも、すごく物知りでクリエイティブな発想ができる子供だと思って接するのがよいのかなと思いました。

 あと、前回も同じ感想だったのですが、ますます人間が考え込むような論理的思考が必要となる質問への回答は、現状のChatGPTにはあまり向いていないなと思いました。答えが間違っている可能性を考慮する必要があるため、結局は答え合わせを質問者がしなければならなくなるので。



 というわけで、ChatGPTのプロンプトについてはこのくらいにして、次回はChatGPT APIを使って何かをしてみようと思います。

「ChatGPT入門」のインデックス

ChatGPT入門

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2026
人に頼れない今こそ、本音で語るセキュリティ「モダナイズ」
4AI by @IT - AIを作り、動かし、守り、生かす
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。