ChatGPTは計算問題を解けるの?正しく解かせるコツやプラグインの利用方法をご紹介!

「ChatGPTは数学的な計算もできるの?」「ChatGPTに正しく計算問題を解かせる方法を知りたい」そう思う方もいるのではないでしょうか。

今回PROMPTYでは、ChatGPTを使って計算問題の精度の検証や、ChatGPTが計算問題を間違える理由を解説いたします。

また、ChatGPTに計算問題を解かせるためのおすすめプロンプトや役立つプラグインをご紹介します。

ChatGPTは計算問題が苦手?

ChatGPTは大規模な人工知能言語モデルで、人間が書いたようなテキストを生成することです。しかし、これが計算タスクに対しては弱くなっています。

これは、ChatGPTのモデルの訓練と設計はテキスト生成に焦点を当てているためです。物語をつむぐ、対話を進行させる、一般的な質問に答えるといったタスクに非常に有用ですが、数学的計算や複雑なアルゴリズムに対する精度は完璧ではありません。

ChatGPTの誤答例:あめの値段は、(280-200)/4=20円です。

ChatGPTが計算ミスをする可能性がある理由は、主に二つあります。一つ目は、モデルが学習するテキストデータに含まれる情報が常に正確であるとは限らないことです。この結果、誤った計算や情報がモデルによって真実として学習される可能性があります。二つ目は、GPTモデルが次に出力する単語を選択する際に、確率的なアプローチを用いるため、これが複雑な数式や大きな数値の計算で間違いを引き起こすことがあります。

生成AIの計算問題の精度を検証する

ChatGPTを始めとした生成AIの計算問題に対する精度を比較します。次の計算問題を、ChatGPTとGoogleのBardに解かせてみます。

問1(基本演算):

以下の数式をそれぞれ計算してください。
Q1. 1+3
Q2. 200*250
Q3. 12345+14443*2-5
Q4. 22222を9で割った余り

問2(小学生レベルの文章題):

サツキがあめを4個買って200円の入れ物に入れてもらったら、280円でした。あめ1個の値段はいくらですか?

問3(大学受験レベルの数学):

次の関数を微分してください。
y=1/(3*x-5)^3

GPT-3.5に計算させた場合

はじめに、無料で使えるデフォルトモデルであるGPT-3.5の計算結果を見ていきます。

問1の回答

もちろん、指示通りに数式を計算しますね。

Q1. 1+3
A1. 1 + 3 = 4

Q2. 200*250
A2. 200 * 250 = 50,000

Q3. 12345+14443*2-5
A3. 12,345 + 14,443 * 2 - 5 = 31,231

Q4. 22222を9で割った余り
A4. 22,222 ÷ 9 の余り = 7

計算結果は以下の通りです:
Q1. 1+3 = 4
Q2. 200250 = 50,000
Q3. 12345+144432-5 = 31,231
Q4. 22222を9で割った余り = 7

Q1とQ2は正解ですが、Q3とQ4は不正解です。

デフォルトモデルであるGPT-3.5では、Q1、Q2のような桁数の少ない演算は解くことができますが、桁数が多くなると、誤った回答が出力されてしまいました。

問2の回答

まず、サツキが買ったあめの総額は280円であり、それらは4つのあめに分けられています。したがって、1つのあめの価格は、総額をあめの数で割ることによって求めることができます。

1つのあめの価格 = 総額 ÷ あめの数
= 280円 ÷ 4個
= 70円

したがって、サツキが買った1つのあめの値段は70円です。

入れ物の値段が考慮されておらず、不正解です。

問3の回答

了解です。与えられた関数 y = 1/(3x - 5)^3 を微分します。

微分の手順:

指数法則を使用して (3x - 5)^3 を展開します。
微分の公式を使って各項を微分します。
y = 1/(3x - 5)^3

(3x - 5)^3 を展開します。
(3x - 5)^3 = (3x - 5) * (3x - 5) * (3x - 5)
= (9x^2 - 30x + 25) * (3x - 5)
= 27x^3 - 90x^2 + 75x - 125

微分します。
dy/dx = d/dx(1/(3x - 5)^3)
= d/dx(1/(27x^3 - 90x^2 + 75x - 125))

ここで、1/(27x^3 - 90x^2 + 75x - 125) を微分するために、以下の微分公式を使います。

d/dx (1/u) = - (du/dx) / u^2

u = 27x^3 - 90x^2 + 75x - 125
du/dx = d/dx (27x^3 - 90x^2 + 75x - 125)
= 81x^2 - 180x + 75

dy/dx = - (81x^2 - 180x + 75) / (27x^3 - 90x^2 + 75x - 125)^2

以上が、与えられた関数 y = 1/(3x - 5)^3 の微分結果です。

GPT-4に計算させた場合

はじめに、ChatGPT Plus(有料版)の最新モデルであるGPT-4の計算結果を見ていきます。

関連記事

「ChatGPTの有料版と無料版の違いは?」「ChatGPTの有料版は自分に必要?」 このような疑問をお持ちの方は多いのではないでしょうか? 今回PROMPTYでは、ChatGPTの有料版【ChatGPT Plus】と無料版の[…]

問1の回答

それぞれの問題について計算します。
Q1. 1+3 = 4
Q2. 200*250 = 50000
Q3. 12345 + 14443*2 - 5 = 41226
Q4. 22222を9で割った余りは、8です。

Q1とQ2、Q3は正解ですが、Q4は不正解です。最新モデルのGPT-4でも、余りを求める計算問題については完璧な精度で解答できないようです。

GPT-4(有料版)の出力:

サツキがあめを4個買ったときの合計費用が280円で、そのうち200円が入れ物の費用であることが分かります。

したがって、あめの合計費用は 280円 - 200円 = 80円 になります。

あめ1個の値段は、あめの合計費用をあめの個数で割ったものです。したがって、

80円 ÷ 4個 = 20円

ですから、あめ1個の値段は20円です。

入れ物の値段も考慮して正しい答えを出力できました。

問3の回答:

与えられた関数は y = 1/(3x - 5)^3 です。これは、分数の形式で書かれた関数であり、その微分を求めるためには連鎖法則を用いる必要があります。

関数 y = u^n の微分は ny * u^(n-1) * (du/dx) です。

ここで u = 3x - 5 と置くと、関数は y = 1/u^3 と書き換えられます。よって、その微分は次の通りになります:

dy/dx = -3 * u^-4 * (du/dx)

ここで du/dx = 3 (uのxに関する微分) なので、代入して整理します:

dy/dx = -3 * (3x - 5)^-4 * 3

これを更に整理すると:

dy/dx = -9/(3x - 5)^4

したがって、関数 y = 1/(3x - 5)^3 の導関数は dy/dx = -9/(3x - 5)^4 です。

分数を微分する連鎖法則について説明し、正しい回答を得ることができました。

Google Bardに計算させた場合

最後に、ChatGPTとは異なる生成AIであるBardの計算結果を見ていきます。

Bard とは、Googleが開発した大規模言語モデルです。ChatGPTと同様に、テキストとコードの膨大なデータセットでトレーニングされており、テキストを生成し、言語を翻訳し、さまざまな種類の質問に答えることができます。

関連記事

[sitecard subtitle=関連記事 url=https://bocek.co.jp/media/exercise/prompt-engineer-exercise/2744/] ブックマーク必須!PROMPTYとは国内最大[…]

問1の回答

はい、わかりました。

Q1. 1+3 = 4
Q2. 200250 = 50000
Q3. 12345+144432-5 = 36792
Q4. 22222を9で割った余りは、8です。

ご不明な点がございましたら、お気軽にお問い合わせください。

Q1とQ2は正解で、Q3とQ4は不正解です。GPT-3.5と同様に、桁数が多くなると正答率が低くなります。

問2の回答

サツキがあめを4個買って200円の入れ物に入れてもらったら、280円でした。あめ1個の値段はいくらですか?

答えは、70円です。

理由は、あめ4個の値段は280円から200円を引くと80円なので、1個あたりの値段は80円÷4で70円になります。

不正解でした。入れ物の値段について、説明されていますが、その後の計算に誤りがあります。

問3

はい、わかりました。

y=1/(3*x-5)^3
の微分は、次のとおりです。

dy/dx=-3/(3*x-5)^4
これは、指数関数の微分公式と、逆数の微分公式を使用して求めることができます。

指数関数の微分公式は、次のとおりです。

d/dx(x^n)=n*x^(n-1)
逆数の微分公式は、次のとおりです。

d/dx(1/x)=-1/x^2
これらの公式を使用して、次のとおりです。

dy/dx=d/dx(1/(3*x-5)^3)
=-3(3*x-5)^2*d/dx((3*x-5)^3)
=-3(3*x-5)^2*(3*3*x-5*2)
=-3/(3*x-5)^4

惜しい回答ですが、不正解です。微分についての公式の説明はされていますが、計算に誤りがあり正しい回答が得られませんでした。

ChatGPTの計算の精度を向上させる方法

プロンプトを工夫する

入力するプロンプトを工夫することで、ChatGPTで計算問題を正しく解かせることができます。

次のような問題を考えます。

次のグループの奇数を合計すると偶数になる。#グループ:1、3、6、8、9、11、12
解答:〇
次のグループの奇数を合計すると偶数になる。#グループ:23、33、44、66、55、78
解答:×
次のグループの奇数を合計すると偶数になる。#グループ:390、890、47、12、2、94
解答:×
次のグループの奇数を合計すると偶数になる。#グループ:16、37、32、13、83、3、8
解答:

このまま、ChatGPTに入力すると、

答えは×です。

実際には、奇数は37,13,83,3で合計すると偶数になるため、不正解です。この演算においては、このようなプロンプトでは、ChatGPTの回答の精度は安定しません。そこで、計算の精度を上げるために、次のようにプロンプトを修正します。

新しいプロンプト:

次のグループの奇数を合計すると偶数になる。#グループ:1、3、6、8、9、11、12
A:奇数を全て加えると1+ 3+ 9+11=24になります。答えは〇です。
次のグループの奇数を合計すると偶数になる。#グループ:23、33、44、66、55、78
A:奇数を全て加えると23+33+55=111になります。答えは〇です。
次のグループの奇数を合計すると偶数になる。#グループ:390、890、47、12、2、94
A:奇数を全て加えると47=47になります。答えは〇です。
次のグループの奇数を合計すると偶数になる。#グループ:16、37、32、13、83、3、8
A:

この入力に対するChatGPTの出力は

奇数を全て加えると37+13+83+3=136になります。答えは〇です。

プロンプトで途中の解き方を示すことによって、それに従って回答してくれます。これによって回答の精度が向上します。このように中間の推論ステップを通じて情報を逐次的に処理するプロンプトをChain of Thought(思考連鎖型プロンプティング)といいます。

関連記事

「思考連鎖型プロンプティングって何?」「思考連鎖型プロンプティングの効果は?」そう思う方もいるのではないでしょうか。 思考連鎖型プロンプティングは生成AIを効果的に活用する方法の一つで、推論を要する複雑なタスクに対応することが可能で[…]

関連記事

「Few-shotプロンプティングって何?」「Few-shotプロンプティングの効果は?」そう思う方もいるのではないでしょうか。 Few-shotプロンプティングは生成AIを効果的に活用する方法の一つで、複雑なタスクに対応することが[…]

Wolframプラグインを活用する

ChatGPTの計算精度を上げるもう一つの方法として、プラグインの活用が挙げられます。

ChatGPTプラグインの中でも、高度な計算やデータ分析が得意なプラグインが「Wolfram」です。Wolframプラグインは、Wolfram AlphaとWolfram Cloudの強力な計算能力とデータベースを利用して、多岐にわたる情報を提供し、複雑な計算を実行することができます。

前章で正答率が低かった余りを求める問題も、正しく解答してくれます。

微分を求める問題については、正しい導出過程に加えて、見やすいフォントで数式を示してくれます。また、グラフも描画することができます。

画像に alt 属性が指定されていません。ファイル名: chatGPT-1.png

このように、ChatGPTのプラグインを活用することで、デフォルトモデルでは解答が難しい計算問題も正確に処理することができます。

Wolframプラグインの活用方法についてはこちらの記事で詳しく解説しています。

関連記事

「ChatGPTのおすすめプラグインが知りたい」「Woftramプラグインの活用方法は?」 このように思う方は多いのではないでしょうか。 今回PROMPTYでは、ChatGPTのプラグイン「Wolfram」を実際に使って活用方[…]

まとめ

今回PROMPTYでは、ChatGPTの計算問題に対する回答精度を検証し、計算精度を上げる方法をご紹介しました。

現在のChatGPTの計算問題に対する回答精度は、完璧なものではありませんが、プロンプトを工夫したり、プラグインを活用することで、回答精度を向上させることができます。

今回の例を参考に、皆さまもChatGPTを活用して計算問題を解いてみてはいかがでしょうか。