見出し画像

AIへの質問力が求められる時代に?

ChatGPT時代の入試は今後どのようになっていくのだろう。

先週末に行われた大学入試の試験監督をしながらそんなことを考えていました。

近頃はどんな問題が出ているのか、家に帰ってから英語の過去問をチェックしてみました。

たとえば、次のように文章を読んで内容を英語でまとめたり、自分の考えを英語で述べたりする問題です。

Some people say that censorship of the internet is against the principles of a free and open society, but I think that some form of internet censorship is justified for the following reasons.(中略)
Of course, to have as little censorship as possible of the internet should be the goal. However, if the internet were totally free of regulation, the security and stability of society would be seriously threatened.

筑波大学 2022年度「英語」過去問より

要約したり、文章を生成したりすることはChatGPTが得意とすることです。
たとえば、この文章を読んで「インターネット検閲(internet censorship)についてのあなた自身の考えを50字程度の英語で述べてみましょう」という問題をChatGPTに解かせてみましょう。

Some internet censorship is justified to prevent hate speech and terrorist activities, and to protect democratic elections from misinformation. However, minimizing censorship should be the goal to balance free speech and social stability.(33字)

ChatGPT生成の答え(2023年2月27日時点)

どのような観点から実際の試験が採点されるのかは分かりませんが、文法的にはオッケーですし、構成も悪くなさそうです。ただ、50字程度という指定があるところ33字の文章しか生成していません。

これはおそらく「50字程度」という指定の仕方が曖昧なせいかもしれません。

そこで、ChatGPTへの指示を次のようにより明確にしてみましょう。

インターネット検閲(internet censorship)についてのあなた自身の考えを45字から55字の英語で述べてください。

ChatGPTへの質問(2023年2月27日時点)

すると、次のような52字の文章を作成してくれました。

Internet censorship can be justified to prevent hate speech, threats, and propaganda that could harm individuals and democratic processes. However, it is essential to balance censorship and free speech to ensure access to information and civil liberties. Striking a balance between these values is critical for promoting a healthy and open society.(52字)

ChatGPTの回答(2023年2月27日時点)

このように、ChatGPTはどのように質問するかで答えがかなり変わってきます。

さて。

「優秀な」ChatGPTですが、これまでに多くの人が指摘している通り、いつも正しい答えを返すとは限りません。

たとえば、次の計算問題の答えを聞いてみましょう。

Q: If Jim is half Jan's age when Jan is 6, how old is Jim when Jan is 50?(ジャンが6歳のときジムはジャンの半分の年齢です。ジャンが50歳のときジムは何歳でしょう?)

https://twitter.com/raymalone_/status/1609974617409462278/photo/1

ChatGPTが返す答えは、「ジャンが50歳のときジムは76歳(Jim is 76 years old when Jan is 50.)」でした。正解は47歳なので、間違った答えをChatGPTは返してきました。

もちろんChatGPTの精度はまだまだ問題がありますが、正答率を挙げるための質問の仕方についていろいろな研究が行われています。人間同士のコミュニケーションにおいても「質問力」は重要ですが、AIに対しても質問力が問われる時代になってきているわけです。

それでは、精度を向上するためのAIへの質問方法をみていきましょう。

まずもっともシンプルな方法は、先程の世界史の試験問題や年齢を答える問題のように、質問のみを書いて、答えをAIに作成してもらう方法です。これを、zero-shot promptingと呼びます。

次の計算の問題を例にzero-shot promptingを改めて見てみましょう。

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個買ったとすると、リンゴは何個になりますか?)

答えは、23-20+6 = 9個です。

最新のChatGPTにこの問題を投げると、次のようにその思考過程と共に正しい答えが返ってきます。

The cafeteria started with 23 apples, used 20 to make lunch, so they have 23 - 20 = 3 apples left.
Then, they bought 6 more apples, so the total number of apples they have now is 3 + 6 = 9 apples.
Therefore, the cafeteria has 9 apples now.
(食堂には最初23個のリンゴがあり、20個ランチで使ったため3個リンゴが残りました。その後、リンゴを6個買い足したので、現在のリンゴの総数は3+6=9個となり、食堂には9個のリンゴがあります。)

ChatGPT生成の答え(2023年2月27日時点)

ですが、ChatGPTよりも小さい言語モデルを使うと間違った答えが返ってくることがあります。

たとえば、次は同じ問題に対してChatGPTの一世代前のモデル「text-davinci-003」というモデルを使ってみましょう。

すると、次のように「29個のリンゴ」と答えが返ってきます。正解は9個なので、間違いです。

Q: The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?

A: 29 apples(29個のリンゴ)

text-davinci-003生成の答え(2023年2月27日時点)

そこで、zero-shot promptingを改良する方法として提案されているのが、one-shot promptingやfew shots promptingです。

名前の通り、問題と答えのサンプルをひとつ、あるいは複数個、提示してあげるという方法です。

たとえば、サンプルをひとつ提示してあげるone-shot promptingは次の通りになります。
問題と答えのサンプルを1セット提示したあとに、質問を投げかけています。

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: The answer is 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個買ったとすると、リンゴは何個になりますか?)

text-davinci-003へのone-shot prompting質問

すると次の通り、「9個のリンゴ」と正しい答えが返ってきました。

A: The answer is 9 apples(9個のリンゴ)

text-davinci-003生成の答え(2023年2月27日時点)

このように質問と答えのセットをひとつ提示してあげるだけで、精度が向上します。

ですが、リンゴの数を23個から24個に変更したりすると答えを間違う場合があります。そこで、より安定した答えを返してもらうために、サンプルをもうひとつ追加してみましょう。バナナを使った例(太字)を追加します。

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?
A: The answer is 11.

Q: Mizuki bought 12 bananas and gave 6 to her friends. She then bought 3 more bananas. How many bananas does she have now?(みずきは12本のバナナを買って、6本を友達にあげました。その後、さらに3本のバナナを買いました。今、彼女はバナナを何本持っているのでしょう?)
A: The answer is 9.


Q: The cafeteria had 24 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
A: The answer is 10.

text-davinci-003生成の答え(2023年2月27日時点)

バナナに関するサンプルを追加したところ、リンゴの数を24個に変更したりしても、安定して正解するようになります。

では、最初の質問もfew-shots promptingによって解くことができるか試してみましょう。ジムの年齢について聞いている質問の前に、ふたつのサンプルデータを提示しています。

Q: If Ken is three times Hiro's age when Hiro is 3, how old is Ken when Hiro is 10?
A: Ken is 16.

Q: If Mizuki is twice Maiko's age when Maiko is 13, how old is Mizuki when Maiko is 25.
A: Mizuki is 38.

Q: If Jim is half Jan's age when Jan is 6, how old is Jim when Jan is 50?
A: Jim is 25.

text-davinci-003生成の答え(2023年2月27日時点)

ジムは25歳」。残念ながら、正しい答えは返ってきませんでした。でも、zero-shot learningのときよりもなぜ間違ったかを推測できそうです。おそらく、ジムはジャンの半分の年齢という部分を50歳に適用した結果、25歳という答えにたどり着いていそうです。

ということは、回答までの考え方を示してあげると、ひょっとすると正解に辿り着くことができます。その方法が、Chain-of-Thoughts promptingという方法です。答えまでの思考の道筋を提示してあげることで、論理的な思考順序を持つ文章を生成するようにモデルを誘導します。

人に教えるときもそうですよね。問題に対する答えだけでなく、どのようにして問題にたどり着いたかを伝えることがとても重要です。

例をみてみましょう。

Q: If Ken is three times Hiro's age when Hiro is 3, how old is Ken when Hiro is 10?

A:If Ken is three times Hiro's age when Hiro is 3, so when Hiro is 3, Ken is 3 * 3 = 9 years old. The age difference between Ken and Hiro is 9 -3 = 6 years old. So when Hiro is 10, Ken is 10 + 6 = 16 years old. The answer is 16. (ヒロが3歳の時にケンがヒロの3倍だとすると、ヒロが3歳の時のケンの年齢は3 * 3 = 9歳ということになります。ヒロとケンの年齢差は9-3 = 6歳です。そのため、ヒロが10歳のとき、ケンは10 + 6  = 16歳になります。答えは16歳です。 )

text-davinci-003へのChain-of-Thoughts prompting質問

このように正解のサンプルを提示するときに、答えだけではなくその道筋も提示してあげます。結果はどうなるでしょうか。

Q: If Jim is half Jan's age when Jan is 6, how old is Jim when Jan is 50?

A:If Jim is half Jan's age when Jan is 6, so when Jan is 6, Jim is 6 / 2 = 3 years old. The age difference between Jim and Jan is 6 - 3 = 3 years old. So when Jan is 50, Jim is 50 - 3 = 47 years old. The answer is 47.
(ジャンが6歳の時にジムがジャンの半分の年齢だとすると、ジャンが6歳の時のジムの年齢は6/2 = 3歳ということになります。ジムとジャンの年齢差は50-3=47歳です。答えは47歳です。)

text-davinci-003生成の答え(2023年2月27日時点)

47歳ときちんと正解することができました!

このように答えまでに複数のステップが必要となる問題の場合、その道筋も示してあげると正解率を向上させることができます。

でも。

思考過程を例として示すのってけっこう大変ですよね。そこで、提案されたのがzero-shot-chain-of-thoughtsという方法です。

なんと、思考過程の例を示さずに、「Let's think step-by-step(ステップごとに考えよう)」という言葉をpromptに追加するだけで、Chain-of-thoughtsと同じ効果を得ることができるというわけです。

早速試してみましょう。

Q: If Jim is half Jan's age when Jan is 6, how old is Jim when Jan is 50? Let's think step by step.

A:
Step 1: When Jan is 6, Jim is 3 (half of Jan's age).
Step 2: When Jan is 50, Jim is 25 (half of 50).

不正解の場合(text-davinci-003を使用)

残念ながら、間違えてしまいました。ジムはジャンの半分の年齢という関係性を50歳にも適応してしまっています。

このように間違う場合もありますが、Let's think step by stepとpromptに加えることで、例示を示さなくても正解率が上がることは確かなようです。実際、食堂でのリンゴの数を数える問題に適応してみると、見事に正解します。

Q: The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have? Let's think step by step.

A:
Step 1: Start with the number of apples they had initially: 23 apples.
Step 2: Subtract 20 apples from the 23 apples to get the number of apples used to make lunch: 23 - 20 = 3 apples.
Step 3: Add 6 apples to the number of apples remaining: 3 + 6 = 9 apples. Answer: The cafeteria has 9 apples.

食堂のリンゴを数える問題にzero-shot-chain-of-thoughtsを適用(text-davinc-003を使用)

このように、zero-shot-chain-of-thoughtsを使うことで、問題と答えのサンプルを示さなくても思考のステップを自分で考え出して解こうと試みてくれます。

同じような考え方で提案されている方法に、self-ask promptingという方法もあります。モデル自身に自問自答を促すという方法です。

例をみてみましょう。

Q: If Ken is three times Hiro's age when Hiro is 3, how old is Ken when Hiro is 10? 

Are follow-up questions needed here: Yes(フォローアップの質問は必要ですか:はい)

Follow up: How old was Ken when Hiro was 3?
(フォローアップです。ヒロが3歳のとき、ケンは何歳でしたか?)

Immediate answer: 9
(9歳です)

So the final answer is: Ken is 16.
(最終的な答えは ケンは16歳です。)

text-davinci-003へのself-ask prompting質問

質問の太字の箇所が、モデル自身に自問自答してもらうように誘導する文章です。フォローアップの質問が必要かどうかをモデル自身に聞いています。そして、回答がYesだった場合には、自分自身でフォローアップの質問も考えてもらい、回答も作成してもらいます。

回答への道筋を与えるのではなく、自分自身に質問そのものも考えてもらうというわけです。結果はどうなるでしょうか。



Q: If Jim is half Jan's age when Jan is 6, how old is Jim when Jan is 50?

Are follow-up questions needed here: Yes(フォローアップの質問は必要ですか:はい)

Follow up: How old is Jim when Jan is 6.(フォローアップです。ジャンが6歳のとき、ジムは何歳でしたか?)

Immediate answer: 3 (3歳です)

So the final answer is: Jim is 25.
(最終的な答えは ジムは25歳です。)

text-davinci-003へのself-ask promptingへの回答



残念ながら、ここでも回答を間違えてしまっています。ですが、このようにモデル自身に自問自答してもらうことで、精度が向上することが報告されています。まるで、誰か能力を引き出すようにAIの能力も引き出そうとしている感覚になります。

どのように質問をAIに投げかける、どのように答えを提示するかで、答えの精度が違ってきます。大規模なモデルであればあるほど、質問の仕方で答えの精度が変わる傾向があるようです。大規模なモデルほど、たくさんの知識を持っています。そこから欲しい答えを導きだすためには、質問の仕方や答えの導き方が重要になるようです。

そう考えると、未来の入試は答えそのものを問う問題ではなく、その思考過程を言語化する。つまり考え方そのものをフレームワーク化するよりメタな能力を問うものになっているのかもしれません。

ではまた!ciao :)



この記事が気に入ったらサポートをしてみませんか?