ChatGPTに大学入試問題を解いてもらった(数学編)

昨年、ChatGPTを英語学習に利用する事例についての記事を書きました。

ChatGPTを英語学習に利用する

今回、これと同様に数学についても教師の代わりが務まる可能性を探ってみました。ChatGPTに大学入試の数学の問題を解いてもらい、その出力内容について考察します。

 

 はじめに

生成AIについて(おさらい)

生成AI(Generative AI)は、データや入力に基づいて新しいコンテンツや情報を生成する能力を持つAIの一種です。生成AIのモデルは事前に大量のデータを学習しており、学習データのパターンや特徴を理解して新しいデータを生成する能力を獲得します。生成AIは、画像、テキスト、音声、動画などの生成を可能とし、特に有名なモデルとしてOpenAI社が開発したGPT(Generative Pre-trained Transformer)が知られています。GPTは、大規模なテキストデータセットを学習して、文章の生成や文章の翻訳など、自然言語処理のタスクを実行することができます。

参考:Introducing ChatGPT(OpenAI公式サイト)


まず結論から言うと、ChatGPTは数学用語の解説や、問題を解く際のヒントの提示はある程度できますが、今のところは実際の入試問題を解く作業はかなり苦手のようです。簡単な問題であれば対処できるようですが…。また、ChatGPTが提案してくる解答の方針も時々間違っていることがあります。現状ではChatGPTの出力結果を全面的に信頼することはできず、数学の苦手な人(ChatGPTの回答の正誤判断が難しい人)が利用する際は特に注意が必要であると言えます。

なぜChatGPTを選ぶのか?

現状、無料・有料の別によらず一般市民が利用可能な生成AIの中で、最も汎用性の優れたものがChatGPTだからです。この事実は、既に様々なベンチマークによって確認されています。

以下、管理人が色々と試した結果を順に示していきます。

 

 想定される利用シーン

まず、ChatGPTを数学の勉強に利用する方法について、ChatGPT自身に尋ねてみました。

▶入力

ChatGPTを数学の勉強に利用しようと考えています。どのような利用方法が想定できますか?

◀出力(GPT-4)

ChatGPTを数学の勉強に利用する場合、以下のような方法が考えられます。

1. 概念の説明:

    • 複雑な数学概念や定理を簡潔に説明してもらう。
    • 具体的な数学用語や公式の意味を解説してもらう。

2. 問題解決のアシスト:

    • 特定の数学問題を解く手順を説明してもらう。
    • 解法についてのヒントや段階的なガイダンスを提供してもらう。

3. 例題と練習問題:

    • 特定のトピックに関連する例題や練習問題を作成してもらう。
    • 提供された問題の解答や解説を要求する。

4. 数学的な疑問の解消:

    • 数学的な疑問や好奇心を満たすために質問する。
    • 数学的な議論や理論の解釈についての意見を求める。

5. 試験対策:

    • 特定の試験やテストの範囲に関連する問題を解く練習。
    • 試験に関連する重要な概念や公式のまとめを依頼する。

6. プログラミングとの統合:

    • 数学的問題を解決するためのプログラムコードを書くことについてのアドバイスをもらう。
    • 特定の数学的アルゴリズムや数値計算方法についての説明を求める。

7. 学習計画の立案:

    • 学習目標に合わせた学習計画や勉強スケジュールを立てる。
    • 定期的な進捗チェックと学習内容の確認。

これらの活用方法を通じて、ChatGPTは数学の学習における強力なサポートツールとなることが期待できます。それぞれの学習スタイルやニーズに合わせて柔軟に利用すると良いでしょう。

問題の解説やヒントの提供、また、作問なども行ってくれるようです。複雑すぎない問題であれば、分からないところを質問する相手になってくれそうです。ただし、複雑な数学記号を含む数式の記述や、図形問題など幾何学の分野のサポート能力は限られる場合があるということです。これはチャットでやり取りしている以上、仕方のない制約と言えますね。

6番目の「プログラミングとの統合」という部分は面白い視点です。ChatGPTはプログラミング支援を得意とするため、プログラミングを利用した数理的知識の学習にChatGPTが効果的に役立つ可能性があります。


なお、無料版のGPT3の場合でも述べられている内容はほぼ同じです。

» GPT3の回答

▶入力

ChatGPTを数学の勉強に利用しようと考えています。どのような利用方法が想定できますか?

◀出力(GPT-3.5)

数学の勉強において、ChatGPTを以下のような方法で活用することができます。

    1. 問題解説と質問への回答: 数学の問題や概念について疑問点や解法の解説を求めることができます。ChatGPTは幅広い数学のトピックに関する知識を持っているため、様々な質問に対して詳細な回答を提供できます。

    2. 解き方のヒント: 数学の問題に取り組んでいる際に、途中で行き詰まった場合にヒントを求めることができます。ChatGPTは、解法のアプローチや重要なステップについてのヒントを提供することができます。

    3. 問題生成: ChatGPTに数学の問題を生成させることも可能です。特定のトピックや難易度の問題をリクエストすることで、新しい問題を作成する手助けとなります。これにより、練習問題の追加や応用問題の生成が可能になります。

    4. 理論の説明: 数学の概念や理論についての説明を求めることもできます。ChatGPTは、代数、幾何学、微積分、統計など、さまざまな数学の分野に関する詳細な解説を提供できます。

    5. 学習のサポート: 数学の学習計画や方法に関するアドバイスを求めることもできます。ChatGPTは、数学の学習における効果的な戦略や資源についての情報を提供できます。

ただし、ChatGPTは自然言語処理モデルであるため、数学のシンボルやグラフィカルな表現には直接対応できません。数式や図形を含む問題の場合は、テキストで説明される部分に関してのサポートを受けることができますが、図や具体的な計算手順に関しては限定的です。そのような場合には、専門の数学の教科書や参考資料を併用することをおすすめします。

» 閉じる


とはいえ、数学的に正確な回答を期待するのであれば、やはり現状では数学教師に直接聞くのがオススメです。

 

 ChatGPTは入試問題が解けるのか(数学編)

ChatGPTはプログラミング支援の性能が高く、アルゴリズムとデータ構造の把握に長けているというのがウリのLLM(大規模言語モデル)です。このことから、ChatGPTは数学の問題を解くことも得意なのではないか、と考えるのは自然な発想です。

そこで、ChatGPTに難関大の入試問題を幾つか解いてもらいましょう。まずは1996年の東大理科後期の問題(抜粋)です。皆さんもAIに負けないようにご自身で解いてみて下さい。

▶入力

nを正の整数とし, 個のボールを3つの箱に分けて入れる問題を考える。ただし,1個のボールも入らない箱があってもよいものとする。以下に述べる4つの場合について,それぞれ相異なる入れ方の総数を求めたい。

(1) 1からnまで異なる番号についたn個のボールを,A, B, Cと区別された3つの箱に入れる場合,その入れ方は全部で何通りあるか。

(2) 互いに区別のつかないn個のボールを,A, B, Cと区別された3つの箱に入れる場合,その入れ方は全部で何通りあるか。

(3) 1からnまで異なる番号のついたn個のボールを,区別のつかない3つの箱に入れる場合,その入れ方は全部で何通りあるか。

(4) nが6の倍数 6m であるとき,互いに区別のつかないn個のボールを,区別のつかない3つの箱に入れる場合,その入れ方は全部で何通りあるか。

◀出力(GPT-3.5)

(1) 1からnまで異なる番号についたn個のボールを,A, B, Cと区別された3つの箱に入れる場合の入れ方の総数は、3つの箱それぞれにn個のボールを割り当てる方法の総数と等しくなります。各ボールについて、3つの箱のいずれかに入れることができるので、総数は 3^n 通りです。

(2) 互いに区別のつかないn個のボールを,A, B, Cと区別された3つの箱に入れる場合の入れ方の総数は、ボールの区別がないので、問題は「非負整数の組合せ」の問題に帰着されます。ボールの数をnとし、3つの箱を仕切る仕切り棒の数を2本と考えると、合計で n+2 個のオブジェクトを並べる並べ方の総数を考えれば良いです。この並べ方の総数は、「n+2 の項から 2 の項を選ぶ組合せ」で求めることができます。組合せの数を表す記号で表すと、(n+2)C2 通りです。

(3) 1からnまで異なる番号のついた 個のボールを,区別のつかない3つの箱に入れる場合の入れ方の総数は、各箱に入っているボールの数を表す非負整数の組合せの問題となります。ボールの数をnとし、3つの箱を仕切る仕切り棒の数を2本と考えると、合計で n+2 個のオブジェクトを並べる並べ方の総数を考えれば良いです。この並べ方の総数は、「n+2 の項から 2 の項を選ぶ組合せ」で求めることができます。組合せの数を表す記号で表すと、(n+2)C2 通りです。

(4) nが6の倍数 6m であるとき、互いに区別のつかないn個のボールを,区別のつかない3つの箱に入れる場合の入れ方の総数は、(n+2)C2 となります。

GPT-3.5(無料版のChatGPTで利用可能なモデル)は(1)と(2)だけ正解しています。全く同様の入力で、GPT-4(有料版ChatGPTで利用可能な高性能なモデル)にも聞いてみました。

◀出力(GPT-4)

(1) 1からnまで異なる番号についたn個のボールを,A, B, Cと区別された3つの箱に入れる場合

この場合、各ボールは3つの箱のどれかに入れることができます。ボールが異なるため、それぞれのボールについて3つの選択肢があります。したがって、全てのボールについて考えると、異なる入れ方の総数は3^n通りになります。

(2) 互いに区別のつかないn個のボールを,A, B, Cと区別された3つの箱に入れる場合

これは、n個のボールを3つの箱に分ける組み合わせの問題になります。それぞれの箱にボールが何個あるかを考えると、これはn + 3 – 1から3 – 1を選ぶ組み合わせと同じになります(これは、区別できないボールを区別できる箱に入れる場合の一般的な公式で、組み合わせの一種である)。したがって、答えはC(n+2, 2) = (n+2)*(n+1)/2通りです。

(3) 1からnまで異なる番号のついたn個のボールを,区別のつかない3つの箱に入れる場合

この場合、箱が区別できないため、どの箱に何個のボールが入っているかだけが問題となります。ボールがそれぞれ異なるため、それぞれの配置は区別されますが、同じ数のボールが入っている箱は区別できません。この問題の解は、Stirling numbers of the second kind(第二種スターリング数)を使用して求められます。それは、n個の異なるオブジェクトをk個の空でない集合に分割する方法の数を与えます。したがって、答えは S(n, 3) です。

(4) nが6の倍数 6m であるとき,互いに区別のつかないn個のボールを,区別のつかない3つの箱に入れる場合

ボールと箱がともに区別できない場合、結果の数はそれぞれの箱に入るボールの数だけが問題となります。nが6の倍数という条件から、最も均等に分けると、それぞれの箱にはn/3個のボールが入ることになります。

ただし、全てのボールが均等に分けられるわけではないため、その他の可能性も考慮に入れる必要があります。この問題はパーティションの数を求める問題と見なすことができます。この場合、n個のボールを3つのパートに分けるパーティションの数を求めることになります。

パーティションの数を求めるのは一般的には複雑ですが、幸いなことに、数学者たちはこの問題を解くための効率的なアルゴリズムを開発しています。これらのアルゴリズムを使用して、求めるパーティションの数を計算することができます。

なお、具体的な数値を計算するには具体的なnの値が必要です。6m(mは整数)の形のnが与えられた場合、その具体的な値によって結果が異なる可能性があります。このような問題に対する具体的なアプローチや数値の計算については、数論や組み合わせ論に精通した専門家に相談することをお勧めします。

GPT-4も正解したのは(1)と(2)だけで、(4)に至っては解答を諦めてしまいました。皆さんは正しい解答が得られたでしょうか?

(3)は $\dfrac{3^{n-1}+1}{2}$、(4)は $3m^2+3m+1$ が答えです。

 


続いて、整数問題にも挑戦してもらいましょう。こちらは2022年の一橋大学の問題です。

2^a*3^b+2^c*3^d=2022の整数解(2022年一橋大学前期数学第1問)

▶入力

等式 2^a * 3^b + 2^c * 3^d = 2022 を満たすような0以上の整数 a, b, c, d の組を求めよ。

◀出力(GPT-3.5)

この等式を満たす整数の組を求めるために、以下の手順を使用します。

    1. 変数 a を 0 から順に増やしながら、b, c, d の組み合わせを試します。
    2. a の値に応じて、b, c, d を 0 から順に増やしながら試します。
    3. 各組み合わせにおいて、等式が成り立つかどうかを確認します。

以下にプログラムの例を示します(Pythonを使用):

for a in range(0, 11): # a の範囲を適宜変更してください
    for b in range(0, 11): # b の範囲を適宜変更してください
        for c in range(0, 11): # c の範囲を適宜変更してください
            for d in range(0, 11): # d の範囲を適宜変更してください
                if (2 ** a) * (3 ** b) + (2 ** c) * (3 ** d) == 2022:
                    print(f"a={a}, b={b}, c={c}, d={d}")

上記のプログラムを実行すると、等式を満たす組み合わせが見つかった場合、それが出力されます。

ただし、この等式の解は非常に多く存在する可能性があります。上記のプログラムでは、a, b, c, d の範囲を0から10までとしていますが、必要に応じて範囲を調整してください。

確かに、上記のプログラムを実行すると、

a=1, b=5, c=9, d=1
a=9, b=1, c=1, d=5

という正しい答えが得られるのですが、試験会場でプログラムを実行できる訳がないのでボツです。

GPT-4にも同様の質問をしてみました。

◀出力(GPT-4)

この問題は、与えられた等式を満たすような整数の組を見つけるための試行錯誤が必要です。まず、2のべき乗と3のべき乗の数値を考慮してみましょう。

2のべき乗:2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048,…

3のべき乗:3, 9, 27, 81, 243, 729, 2187,…

与えられた等式は、2つの項の和が2022であることを示しています。それぞれの項は2のべき乗と3のべき乗の積で構成されています。2022は比較的大きな数値なので、比較的大きなべき乗を持つ数値を選ぶと良いでしょう。

試行錯誤により、以下の組み合わせを見つけました:

a = 10, b = 3, c = 0, d = 6
すなわち、2^10 * 3^3 + 2^0 * 3^6 = 2022 となります。

これが求める解答となります。

▶入力

2^10 * 3^3 + 2^0 * 3^6 を計算すると 28377 になりますよ。

◀出力(GPT-4)

すみません、私の誤りです。計算ミスがありました。再度試行錯誤を行います。

まず、2022は2と3のべき乗に分解できるか考えます。2のべき乗(2, 4, 8, 16, 32, 64, 128, 256, 512, 1024)と3のべき乗(3, 9, 27, 81, 243, 729)を見ると、2022を直接作ることはできません。しかし、2つの項の和として2022を作ることは可能かもしれません。

2と3のべき乗の値を試行錯誤で組み合わせると、以下の解答が得られます。

a = 7, b = 0, c = 9, d = 2

つまり、2^7 * 3^0 + 2^9 * 3^2 = 128 + 576 * 9 = 128 + 5184 = 5312 になります。これも間違っています。

再度試行錯誤を行うと、

a = 9, b = 2, c = 7, d = 0

つまり、2^9 * 3^2 + 2^7 * 3^0 = 512 * 9 + 128 = 4608 + 128 = 4736 になります。これも間違っています。

これは意外と難しい問題ですね。手計算で試行錯誤を続けると時間がかかりますし、間違いの可能性もあります。なお、この種の問題を解く一般的な手法や公式はなく、基本的には全探索や試行錯誤が必要となります。

正確な解答を見つけるためには、プログラミングを使用して全ての可能性を網羅的に探索することが有効です。Pythonなどのプログラミング言語を使って、全てのa, b, c, dの組み合わせを試すことができます。

そのままのプロンプトではPythonのプログラムを使い出しかねないので、プロンプトの文章を少し変更してみました。

▶入力

あなたは難関大志望の受験生です。以下は日本の大学入試の数学の問題です。この問題に対して、試験会場で筆記試験(電卓やプログラムの使用は不可)として回答する想定で答案を作成してください。:

等式 2^a * 3^b + 2^c * 3^d = 2022 を満たすような0以上の整数 a, b, c, d の組を求めよ。

◀出力(GPT-4)

この問題は、等式 2 a ⋅3 b +2 c ⋅3 d =2022 を満たす a,b,c,d の組を見つけることです。ここで a,b,c,d は0以上の整数です。2022を素因数分解すると、2と1011の積になります。しかし、1011は3の累乗で割り切れないため、この事実を利用して問題を解きます。

まず、2022を素因数分解します。2022 = 2 \cdot 3^0 \cdot 673 となり、673は素数です。このことから、2 a ⋅3 b または 2 c ⋅3 d のいずれかが2で、もう一方が1011でなければならないことがわかります。しかし、1011は3の累乗ではなく、2の累乗でもありません。また、1011を2と3の累乗で表すことはできません。

ここで、2 a ⋅3 b +2 c ⋅3 d =2⋅1011 と考えると、一方が2で、もう一方が1011である必要があります。つまり、以下の2つのケースが考えられます。

ケース1: 2 a ⋅3 b =2 かつ 2 c ⋅3 d =1011

ケース2: 2 a ⋅3 b =1011 かつ 2 c ⋅3 d =2

しかし、前述の通り1011は2の累乗または3の累乗で表すことができないため、この等式を満たすようなa,b,c,dの組は存在しません。

したがって、この問題の条件を満たす0以上の整数a,b,c,dの組は存在しないと結論づけることができます。

残念ながら場合分けが誤っており、詳しい答えにたどり着けそうにありません。結局、整数問題はうまく解くことができませんでした。


上記の他にも色々と数学の問題を与えてみましたが、難関大の入試数学で正しい答えにたどり着けているものはほとんどありませんでした。

以上の結果を踏まえると、高性能な生成AIとされるChatGPT-4といえども、数理的推論の能力は現状まだまだ乏しく、大学入試程度の数学の問題に正答するのは難しいということが分かりました。今後、GPT-5 などのより高性能なモデルが登場すると予想されています。大学入試レベルの数学を正答するLLM(大規模言語モデル)が出現するのも時間の問題と言えるでしょう。

 

 その他の事例

ところで、数学の問題をChatGPTに解かせる試みは既にいくつか実施されており、知見が共有されています。

最近話題になったのが、共通テストの問題を様々な生成AIに回答させてみた実験的試みです。

この記事の中では、①GPT-4、②Google Bard、③Claude2の3種類のAIを利用して性能比較を行っています。結果はGPT-4の圧勝で、数学を除くほとんどの科目で受験者の平均点を上回る成績を上げています。

科目 受験者平均
(予想)
GPT-4 Bard Claude 2
国語 59% 62% 55% 53%
英語リーディング 51% 87% 76% 79%
数学1A 52% 35% 6% 14%
数学2B 58% 46% 20% 25%
世界史 61% 88% 57% 63%
日本史 56% 68% 50% 62%
理科基礎 66% 88% 52% 61%
5教科7科目 60% 66% 43% 51%

(データの出典:株式会社LifePrompt 様

ChatGPTは他のモデルに比べると良い性能を発揮しているとはいえ、やはり数学の成績は他教科に比べて芳しくないようです。ここでも数学が苦手であるという結果が見て取れます。

一方で他教科について見ると、ChatGPTは純粋に人類の知識や知能を凌駕しうる性能を持っていることを裏付ける結果とも言え、AI脅威論の立場からすると恐るべき結果と言えます。一方でこの結果を好意的に解釈すると、ChatGPTのような生成AIが学校の教員を代替もしくはサポートする能力を有しているとも言えます。つまり生成AIを有効活用すれば、教員の業務負担を軽減するなどして近年の教員数の減少傾向を一定程度カバーできるポテンシャルがあると解釈することもできます。しかもこうした生成AIは年々その性能が向上していくと考えられます。

上記の結果からは、適切なデータセットによって訓練された生成AIは教育現場で大きな力を発揮する可能性があると言えるでしょう。AI によって仕事が奪われると悲観的に考えるのではなく、AIをより良い教育に活かす立場で見れば、これほど心強いことはありません。こうした教育方面での利活用にも今後注目が集まるのではないかと思います。


先ほどは組み合わせ論や整数の問題を例に挙げましたが、数学の一大分野である「幾何学」に特化したAIモデルの開発も行われています。Google傘下のDeepMindが今年の1月に発表した「AlphaGeometry」というモデルは、国際数学オリンピック(IMO)の幾何学の問題を解くことのできるAIモデルとして注目を集めました。

原著論文:Solving olympiad geometry without human demonstrations
開発者の記事:AlphaGeometry: An Olympiad-level AI system for geometry

これによれば、AlphaGeometryは幾何学分野に関してIMOの金メダリストの水準に肉薄するレベルの高度な数理的推論能力を備えているとされています。記事中では、AIが幾何学分野における未解決問題を解くためのアプローチを提供する有力なツールになり得ることを意味しており、人間の知識のフロンティアを拡張する可能性を秘めている、と述べられています。

確かに、ここ1~2年の僅かな期間でAI開発が飛躍的に進展している状況をリアルタイムで見ていると、数学に特化した生成AIが将来的に数学分野の発展に寄与することは想像に難くありません。

 

 あとがき

現状では、数学の問題に対してChatGPTが正しく解答するのは困難である、というのが今回の結論です。これはGPTなどの文章生成AIが入出力テキストをトークン(単語の列)として扱っているためで、「この後に続きそうな単語を選ぶ」という仕組みでテキストを生成しているため厳密な整合性や一貫した論理を維持し、記憶するのがそもそも難しい仕様になっている、という点が挙げられます。「この後に続きそうな単語」は確率的に選ばれる(特定の分布にしたがって「温度」と呼ばれる出力のバラつきを制御するパラメータの下で決定される)ため、ニュアンスの違いがある程度許容されるふんわりした文章の生成には向いていますが、数学的な記述については現状のモデルでは堪えられない、と解釈できます。

▶入力

ChatGPTのような文章生成 AI が数学の問題を苦手としているのはどのような理由によりますか?

◀出力(GPT-4)

文章生成AI、例えばChatGPTのようなモデルが数学の問題を解くのが苦手である理由はいくつかあります。

    1. 理解の複雑さ:数学の問題は、問題の正確な理解が必要です。問題文を解析し、数学的な概念や操作を適切に識別する必要があります。文章生成AIは言葉のパターンを学習しますが、数学的な概念や操作の理解においては、その限界が現れることがあります。

    2. 抽象的な思考:数学は抽象的な思考を必要とします。式やアルゴリズムを理解し、それを具体的な問題解決のステップに適用する必要があります。AIモデルは具体的な例やデータに基づいて学習しますが、このような抽象的な思考を模倣するのは難しい場合があります。

    3. 計算の正確性:数学の問題では、計算の正確性が非常に重要です。小さな計算ミスが結果の大きな誤差につながることがあります。AIは特定の計算を行う際に誤りを犯すことがあり、それが解決策の正確性を損なうことがあります。

    4. 長期的な推論:多くの数学の問題は、複数のステップを経て解を導く必要があります。これには、各ステップを記憶し、それを次のステップに適用する能力が必要です。現在のAIモデルでは、長期的な推論や複雑な論理チェーンを維持するのが難しいことがあります。

    5. トレーニングデータの限界:AIモデルはトレーニングデータに基づいて学習します。数学の問題を含む質の高い、多様なデータが不足している場合、モデルがこれらの問題を解く能力も限られることになります。

これらの理由から、ChatGPTのような文章生成AIは数学の問題を解くのが苦手な場合があります。ただし、特定の数学問題に特化したAIや、数学教育を目的としたAIツールは、これらの課題を克服するための特別なトレーニングやアプローチを採用していることがあります。

…だそうです。

先ほどの整数問題の例で見たように、筆記試験という形態にこだわらなければ、ChatGPTもプログラムを用いて求値問題についてある程度正答できることが分かります。実際、コードレビューやプログラム開発に生成 AI が利用できることは広く認知されており、プログラミングのハードルは今まで以上に下がっています。プログラムによって解答可能な数学の問題に関しては、現状のChatGPTであっても十分に利用価値があると言えるでしょう。

今後、証明問題を正答できるような数学的能力の高いモデルが登場するのを楽しみに待ちましょう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です