データ活用やDXがどんどん解る用語集   
Chain-of-Thoughtプロンプティング

「Chain-of-Thoughtプロンプティング」

データ活用やDX成功に必要な考え方を、各種するキーワードの解説で理解できる用語解説集です。
今回は、ChatGPTなど大規模言語モデルを用いた対話型AIの活用テクニックである「Chain-of-Thoughtプロンプティング」を紹介します。

Chain-of-Thoughtプロンプティングとは

Chain-of-Thoughtプロンプティングとは、ChatGPTなどの対話型のAIを活用する際に、入力(プロンプト)を与える際に思考の過程をガイドとして与えることにより、より望んだ出力が得られるようにするプロンプト作成のテクニックです。
Chain-of-Thought はCoTと略されることがあります。また、思考過程を入力として与えずChatGPT自身に考えさせることでも出力の改善がなされることがあり、こちらのテクニックのことをChain-of-Thoughtと呼ぶことがあります。

どのようなテクニックか(利用例)

ChatGPTは、実に様々なことができます。例えば(ちょっとした)計算を行うことができることがあります。

あなたはリンゴを5個もっています。リンゴを2つ食べたら、残りはいくつですか?


 

あなたは最初に5個のリンゴを持っていたので、2つ食べた後に残りのリンゴは3個になります。

文章が言っていることを理解した上に計算して答えを返しているような動作をしています。恐るべき動作ですが、ChatGPTは難しい問題になると計算を間違えるケースが出てきます。

名前のもとになったGoogleの論文から

Chain-of-Thoughtプロンプティングは元々Googleの論文で提案されたテクニックです。

⇒ [2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 

その論文から「計算に失敗する例」を引用します。対話AIの性能は日々上がっているので、現時点では正しく回答することが多いかもしれません。

The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
(カフェテリアには23個のリンゴがありました。20個を使ってランチを作り、その後6個購入した場合、リンゴの数はいくつになりますか?)


 

The answer is 27.
(答えは27です)

コンピュータなのに計算を間違えるのは変に思えるかもしれません。でもChatGPTはGPTという大規模言語モデルにより開発されており、GPTは計算するタスクの学習はなされていません。

⇒ 大規模言語モデル(LLM:Large Language Model)|用語集 

学習させていないのに「作ってみたらなぜか計算もできる能力があった」ものであり、なぜ計算できるのか解っていませんし、取り組ませる問題によって計算出来たりできなかったりします。このように計算に限らず、ChatGPTには様々なタスクで出来たりできなかったりすることがあります。

補助をすると解けるようになる

このように解くことができない問題を、少しプロンプト(入力)を工夫して補助することで解けるようになる場合があるというのが、Googleの研究者が発見して論文として報告している内容です。まずは見てもらいましょう。

Q: Roger has 5 tennis balls. He buys 2 more cans of tennis balls. Each can has 3 tennis balls. How many tennis balls does he have now?
ロジャーはテニスボールを5つ持っています。彼はテニスボールの缶を2つ追加で購入しました。各缶にはテニスボールが3つ入っています。現在彼はどれだけのテニスボールを持っていますか?


A: Roger started with 5 balls. 2 cans of 3 tennis balls each is 6 tennis balls. 5 + 6 = 11. The answer is 11.
ロジャーは最初に5個のボールを持っていました。3つのテニスボールが入った缶を2つ買ったため、6個のテニスボールを追加で手に入れました。5 + 6 = 11です。答えは11です


Q: The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
カフェテリアには23個のリンゴがありました。彼らは20個を昼食に使い、6個購入した場合、現在何個のリンゴを持っていますか?


 

A: The cafeteria had 23 apples originally. They used 20 to make lunch. So they had 23 - 20 = 3. They bought 6 more apples, so they have 3 + 6 = 9. The answer is 9.
(最初、カフェテリアには23個のリンゴがありました。そこから20個を昼食に使い、残りは23 - 20 = 3個でした。その後、彼らは6個のリンゴを購入したため、現在彼らが持っているリンゴの数は3 + 6 = 9個になります。答えは9です。)

まず、答えが正しくなっています(答えは9です)。そして入力がずいぶんと増えています。

Chain-of-Thoughtプロンプティングの入力解説

質問をする前に、「質問と答えのやり取り一式」が例として前に追加されています。これは、回答してほしい例を示して教えるテクニックである、「Few-Shotプロンプティング」が活用されています(別に記事を書いていますのでご覧ください)。

⇒ Few-Shotプロンプティング|用語集 

では、Few-Shotプロンプティングで何を例として教え込んでいるのでしょうか?例になっているのは、同じく計算問題で、ChatGPTは自分で解ける問題です。ただし、自分で説かせた場合には「The answer is 11.(答えは11です)」とだけ答えます。その回答に、以下の下線部を人間が追記したものを例として与えています。

A: Roger started with 5 balls. 2 cans of 3 tennis balls each is 6 tennis balls. 5 + 6 = 11. The answer is 11.
ロジャーは最初に5個のボールを持っていました。3つのテニスボールが入った缶を2つ買ったため、6個のテニスボールを追加で手に入れました。5 + 6 = 11です。答えは11です

ChatGPTはこれを例として回答するようになり、他の問題についても同じような形式で回答するようになります。

A: The cafeteria had 23 apples originally. They used 20 to make lunch. So they had 23 - 20 = 3. They bought 6 more apples, so they have 3 + 6 = 9. The answer is 9.
(最初、カフェテリアには23個のリンゴがありました。そこから20個を昼食に使い、残りは23 - 20 = 3個でした。その後、彼らは6個のリンゴを購入したため、現在彼らが持っているリンゴの数は3 + 6 = 9個になります。答えは9です。)

何も補助しないと「答えは27です。」とだけ答えて間違っていましたが、状況を整理してそれに対応する計算式を示して計算結果を示す動作をするようになり、その結果、正しく回答するようになりました。

Chain-of-Thoughtプロンプティングは何をしているのか?

これはつまり、答えの前に「正しい答えを導き出す思考プロセス」を文字として書き起こしたものを添えてあるのです。このようにすると、ChatGPTはこれを例として、同じような形式の回答をしようとします。

その結果、いきなり答えを生成しなくなります。なぜならその前に別の出力(思考過程)をしなさいと例で指示されているからです。そこでまず、指示された形式の思考過程での出力を生成します。この例では、与えられた条件を順番に整理し、それに対応した計算式を提示、それに引き続いて答えを生成するようになります。つまり「ChatGPTの思考過程を制御するテクニックである」と言えます。

回答が間違っていた場合でも、このようにすればどうして間違ったのか把握できることもあります。さらには、計算のように正解があるわけではないタスク、例えば相手を説得する説明文を作るときに、どういう論理の組み立てで作ってほしいか指定するようなことも可能になります。

ワンフレーズを足すだけでChain-of-Thought(Zero-shot CoT)

効果はありそうだけれどちょっと手間のかかるテクニックに思えたかもしれません。しかし、思考過程もChatGPTに考えさせることで、とても簡単に回答精度の向上を図る方法があります。先ほどのGoogleの論文の「間違える例」を使ったテクニックの利用例です。

The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
カフェテリアには23個のリンゴがありました。彼らは20個を昼食に使い、さらに6個のリンゴを購入した場合、現在何個のリンゴを持っていますか?
Let's think step by step.
ステップバイステップで考えよう。


 

Sure, let's break down the problem step by step.
解りました、問題を一つ一つ分解して考えましょう。

  • 1. The cafeteria had 23 apples(カフェテリアには23個のリンゴがありました)
  • 2. They used 20 apples to make lunch, so they have 23 - 20 = 3 apples left.(彼らは20個を昼食につかいました、つまり23 - 20 = 3でリンゴは3個残っています)
  • 3. They bought 6 more apples.(彼らはリンゴを6個買いました)
  • 4. Therefore, the total number of apples they have now is 3 + 6 = 9 apples.(すなわち、彼らが今持っているリンゴは3 + 6 = 9 で9個)

So, the cafeteria has 9 apples now.(つまり、カフェテリアは現在9個のリンゴを持っています。)

こちらでも正しくリンゴは9個だと答えています。しかも、段階的に考えるように具体的に指示をしていないのに、ChatGPTが自分で段階的に考えています。

入力で変更した点は、ただフレーズを一つ足しただけです。

Let's think step by step.
ステップバイステップで考えよう。

このワンフレーズを足すだけで、ChatGPTは自分で問題を段階的に分割して考えて回答するようになりました。このフレーズ以外にも、様々な思考スタイルを指定すると、それに応じて出力が変化することが知られています。

人間が例を与えていないのに、Chain-of-Thoughtで狙っているような効果が出るテクニックであるため、「Zero-shot CoT(Zero-shot Chain-of-Though)」と呼ばれることがあります。あるいは、このテクニックのことがChain-of-Thoughtプロンプティングだと呼ばれていることもあるように思います。

入力の末尾に決まったワンフレーズ足すだけで非常に簡単に利用でき、それでいて十分に出力を改善できる可能性があるので、覚えておいて損はない利用テクニックだと思います。

生成AI/ChatGPTに関係するキーワード(さらに理解するために)

  •  
  •  

用語集 コラム一覧

英数字・記号

あ行

か行

さ行

た行

な行

は行

ま行

や行

ら行

わ行

技術コラム一覧

おすすめコンテンツ

まずは無料で「つなぐ」をご体験ください

評価版ダウンロード

DataSpider Servistaのデータ連携を、まずはお確かめください。30日間無料でお試しいただけます。

無料体験セミナーに参加する

DataSpider Servistaの「つなぐ」を体験できる製品紹介・オンラインセミナーを開催しています。

Change Location

Are you visiting HULFT.com (Japanese language) outside Japan ?
When connecting "HULFT" to Japan from overseas, please select "HULFT8".

日本国外からHULFT.com(日本語)にアクセスされようとしています。
海外から日本の「HULFT」と接続する製品をお探しの場合、「HULFT8」をお選びください。