一昨日の記事で、DeepSeekに優れた数学的推論能力があるのは分かったので、今度は「図表を含む問題」も解けるか試してみました。使った問題は統計検定1級の過去問。今回はOpenAI o1との比較も行ってみました。結果はなんと、DeepSeekの圧勝。オドロイタ!
- OpenAI o1:正答率17%:12問中1問正解(〇)、2問部分正解(△)
-
DeepSeek-R1:正答率96%:12問中11問正解(〇)、1問部分正解(△)
※〇は1点、△は0.5点として正答率を計算
OpenAI o1はマルチモーダルな情報処理(問題文のOCR処理)で失敗して、おかしな数字を読み取って間違えたり、題意を正しく解釈できていなくて、問われている解答を出せていなかったりといったケースが目につきました。推論力自体も、R1が出力するChain-of-Thoughtの方が優れているようで、要所要所でダブルチェックしながら手堅く問題を解いていく様子が観察できました。(ある意味、explainableなAIが実現されていると思いました。)
評価実験方法
- 使った問題と解答:統計検定1級 統計応用 過去問、模範解答
- 比較対象の問題:人文科学 問1、社会科学 問1
- 問題の入力方法:大問単位でスクショを画像として添付。テキストで「この問題を解いてください」と指示。大問が複数ページにわたる場合は、複数のスクショ画像をページの順番に添付した。(例:人文科学の問1は2ページにわたるため、2枚のスクショ画像を添付)
- OpenAI o1:ChatGPTで「o1」を選択して利用
- DeepSeek-R1:DeepSeek Chatで「DeepThink(R1)」をONにして利用
採点結果
問題 | OpenAI o1 | DeepSeek-R1 | 備考 |
---|---|---|---|
人文科学 | |||
問1 | |||
[1-1] | △ | 〇 | o1:表の値の読み取りミス |
[1-2] | × | 〇 | o1:題意が読み取れていなかった |
[2-1] | 〇 | 〇 | |
[2-2] | × | 〇 | o1:題意が読み取れていなかった |
[3] | × | △ | o1:題意が読み取れていなかった DeepSeek:余計な解答が入っていた |
社会科学 | |||
問1 | |||
[1] | × | 〇 | o1:解答なし |
[2-1] | × | 〇 | o1:表の値の読み取りミス |
[2-2] | × | 〇 | o1:表の値の読み取りミス |
[2-3] | △ | 〇 | o1:四捨五入すれば正解 |
[3-1] | × | 〇 | o1:解答なし |
[3-2] | × | 〇 | o1:解答なし |
[3-3] | × | 〇 | o1:解答なし |
下記に、一例として、人文科学 問1に関するOpenAI o1と、DeepSeekの出力を載せておきます。(社会科学の問1も同じような傾向でした)
OpenAI o1の解答(人文科学 問1)
[1-1] △
一番最初の「国語と数学の相関係数$r_{14}$」を表1から読み取るところで間違えています。回答では0.49となっていますが、正しくは0.32でした。それによって、固有値$\lambda_1, \lambda_2$の結果がまちがってしまいました。一方、固有ベクトルは正しかったので、△としました。
[1-2] ×
[1-1]で求めた間違った固有値を使っているので、第一主成分の計算結果も間違っていました。これは仕方がない。また、問題文では、第二主成分と主成分負荷量も求めるように指示されているのですが、求めていないので、結果は×でした。
[2-1] 〇
これは正解。第1主成分・第2主成分の」累積寄与率もあっていましたし、その解釈も正しかったです。
[2-2] ×
問題文では、「第 1 主成分得点の上側 20%に相当する生徒の第1主成分得点」と、「第1主成分得点と合計得点との間の相関係数」を求めるよう指示されているのですが、どちらも計算できていません。題意と異なる「傾向」や「解釈」が出力されてしまっています。
[3] ×
問題文では、「(ある条件にあてはまる)生徒は図1の何番の位置にあるかを示し,その理由を述べよ。」と問われているのですが、明確に「何番」と回答せずに「一目で分かる、というわけである」と、お茶を濁していました。ちゃんと答えなさいよ~。
DeepSeekの解答(人文科学 問1)
[1-1] 〇
固有値は文句なしで正解です。固有ベクトルは有理化されていませんでしたが、まあ良しとしました。(OpenAI o1の解答も有理化されていませんでした)
[1-2] 〇
これも正解。主成分負荷量に「±」の符号がついていませんでしたが、絶対値はあっているのでまあ良しとしました。
[2-1] 〇
[2-2] 〇
[3] △
惜しい。解答が「点10」だけなら正解でした。「点9」って図1では真ん中付近の点なんですが、なんで余計なことを書いてしまったのだろう...
DeepSeek-R1が出力したChain-of-Thought
ちなみに、DeepSeek-R1が正式に解答する前に、下記のようなChain-of-Thoughtが出力されました。読んでいくと、DeepSeekが問題を読み解いて、題意を解釈し、要所要所で「これ本当にあってるかな?」と自問自答しながら解いていっています。(例:「ρ≈-8.1812/8.18≈-1.0? しかし、相関係数が-1になるのはおかしい。どこかで間違えたかも」)
また、図の内容を完全に読み取れていなくても、ぶつくさ言いながら、うまい具合に想像で補いながら解いている様子が見て取れました。(例:「これはおそらく点の座標を列挙したもの? (中略)しかし、縦軸の値が書かれていない。おそらく、図1の点の位置を第1主成分と第2主成分の値で示しているが、記載が不十分。推測するに、計算された座標(-3.07, 0.24)は他の点と比べて第1主成分が大きく負の値なので、左端の位置、例えば番号9や10かもしれないが、正確な判断は難しい」)
まるで人間が考えながら解いているようです。いや~、おそるべしDeepSeek-R1。
よし、主成分分析に関する問題だね。まずは問題を分解して一つずつ解いていく必要があるな。まず〔1-1〕から見ていこう。国語(x1)と数学(x4)の2×2相関行列R2の固有値と固有ベクトルを求める問題だ。表1から相関係数を見ると、国語と数学の相関係数は0.32だ。これが相関行列R2の非対角成分になるはず。相関行列は対称行列だから、次のようになる。
R2 = [[1.00, 0.32],
[0.32, 1.00]]
固有値を求めるには、行列の特性方程式を解く必要がある。特性方程式はdet(R2 - λI) = 0。計算してみる。
行列R2 - λIは:
[[1-λ, 0.32],
[0.32, 1-λ]]
行列式は(1-λ)^2 - (0.32)^2 = 0。これを解くと、
(1-λ)^2 = 0.32^2
1-λ = ±0.32
λ = 1 ±0.32 → λ1=1.32、λ2=0.68
これで固有値はλ1=1.32、λ2=0.68になるかな。次に固有ベクトル。固有値1.32の場合、方程式(R2 -1.32I)v = 0を解く。行列は:
[[-0.32, 0.32],
[0.32, -0.32]]
この方程式から、-0.32v1 +0.32v2 =0 → v1 = v2。固有ベクトルは正規化する必要があるので、v1^2 +v2^2=1。v1 = v2なので、2v1^2=1 → v1=1/√2、v2=1/√2。ただし、主成分の方向を考慮する必要があるかもしれないが、ここでは符号はどちらでもよいのかな。同じように固有値0.68の場合、行列は:
[[0.32, 0.32],
[0.32, 0.32]]
方程式は0.32v1 +0.32v2=0 → v1 = -v2。正規化すると、v1=1/√2、v2=-1/√2。これが固有ベクトルになるはず。
〔1-2〕は寄与率と主成分負荷量を求める問題。寄与率は各固有値を固有値の総和で割ったもの。ここでは固有値が1.32と0.68なので、総和は2.0。寄与率は1.32/2=0.66(66%)と0.68/2=0.34(34%)。主成分負荷量ρ1,1は第1主成分と国語の標準化得点u1の相関係数。主成分の係数は固有ベクトルの成分a1、a2。ここで、z1 = a1u1 +a2u4。主成分負荷量は、z1とu1の相関で、これはa1*sqrt(λ1)になるらしい。でも正確には、主成分負荷量は固有ベクトルの成分に√固有値をかけたもの。例えば、固有ベクトルがa1=1/√2、a2=1/√2。√λ1=√1.32≈1.1489。するとρ1,1 = (1/√2)*1.1489 ≈ 0.81。でも確認が必要かも。
次に〔2-1〕。第1主成分の寄与率は3.67/(3.67+1.24+0.05+残り2つの固有値?)。ただし、5科目なので固有値は5個あるはず。表2では第3主成分までしかないけど、問題文には「第3主成分まで」とあるので、残り2つの固有値は0.05以外にあるかもしれないが、総和は5(変数が5つで標準化しているので分散の総和は5)。表2の固有値は3.67+1.24+0.05=4.96。残りは0.04と0.0とか?でも寄与率計算では第1主成分の寄与率は3.67/5=0.734(73.4%)、累積寄与率は(3.67+1.24)/5=4.91/5=0.982(98.2%)かな。第2主成分までの累積寄与率は98.2%。解釈は、第1主成分は全体的な負荷が高い科目、第2主成分は数学と理科が正、他が負とか、固有ベクトルの符号を見て解釈する。
〔2-2〕は第1主成分得点の上側20%の値を求める。5変量正規分布を仮定し、主成分得点は標準正規分布に従うと考えられるが、主成分の分散は固有値なので、第1主成分の分散は3.67。つまり、主成分得点は平均0、分散3.67の正規分布。上側20%点を求めるには、標準正規分布の上側20%点のz値を求めて、それを√3.67倍する。標準正規分布で上側20%は約0.8416(累積確率80%の点)。主成分得点は0 + 0.8416*sqrt(3.67) ≈0.8416×1.915≈1.612。次に、合計得点の分散が18.24のとき、第1主成分との相関係数。合計得点は各標準化変数の合計なので、分散は各変数の分散の和(各1)+2*共分散の和。標準化済みなので分散は5 + 2*(相関係数の和)/2? だが、ここでは分散が18.24と与えられている。主成分得点との相関係数を求めるには、共分散を計算する必要がある。第1主成分は各変数を固有ベクトルで重み付けしたもの。合計得点はu1+u2+u3+u4+u5。共分散Cov(z1, S) = Cov(Σa_i u_i, Σu_j) = Σa_i Cov(u_i, Σu_j) = Σa_i*(ΣCov(u_i, u_j))。標準化変数u_j同士の共分散は相関係数に等しい。各u_iの分散は1、共分散は相関係数。Cov(u_i, u_j)=r_ij。Cov(z1, S)=Σa_i*(Σr_ij)。これが複雑かも。でも主成分得点z1の分散はλ1=3.67、合計得点Sの分散は18.24。相関係数はCov(z1,S)/(sqrt(3.67)*sqrt(18.24))。でもCov(z1,S)=Σa_i*Σr_ij。各a_iは第1主成分の固有ベクトルの成分。表2の第1主成分の固有ベクトルは国語-0.44、英語-0.47、社会-0.51、数学-0.40、理科-0.41。Σa_i*(Σr_ij)を計算する。例えば国語のa_iは-0.44で、Σr_ij(国語と他4科目の相関係数の和)は国語とx1,x2,x3,x4,x5の相関係数は表1から、x1との相関は1.00、x2は0.95、x3は0.89、x4は0.32、x5は0.35。合計は1+0.95+0.89+0.32+0.35=3.51。同様に各科目についてΣr_ijを計算し、a_iを掛けて合計する。ただし、ここではSは標準化得点の合計だから、各u_iの合計の分散はΣVar(u_i) + 2ΣCov(u_i, u_j)。Var(u_i)=1、Cov(u_i, u_j)=相関係数。Sの分散は5 + 2*(全相関係数の和)/2 =5 + Σ相関係数(i<j)。しかし、与えられた分散が18.24なので、それを用いる。ただ、Cov(z1,S)=E[z1*S] - E[z1]E[S]=E[z1*S](平均0だから)。z1=Σa_i u_i、S=Σu_j。E[z1*S]=Σa_i E[u_i Σu_j] = Σa_i ΣE[u_i u_j] = Σa_i Σr_ij。つまり、各iについてa_i*(Σj r_ij)。表1の各科目の他の科目との相関係数の合計を計算する必要がある。例えば、国語(x1)の相関係数の合計は、x1とx1=1.00、x2=0.95、x3=0.89、x4=0.32、x5=0.35 → 合計3.51。英語(x2)はx2とx1=0.95、x2=1.00、x3=0.94、x4=0.41、x5=0.47 → 合計0.95+1+0.94+0.41+0.47=3.77。社会(x3)はx3との相関係数:0.89+0.94+1+0.64+0.66=4.13。数学(x4):0.32+0.41+0.64+1+0.98=3.35。理科(x5):0.35+0.47+0.66+0.98+1=3.46。これらを各a_i(第1主成分の固有ベクトル)と掛けて合計する。つまり、
Cov(z1, S) = (-0.44)*3.51 + (-0.47)*3.77 + (-0.51)*4.13 + (-0.40)*3.35 + (-0.41)*3.46
これを計算する。それぞれの項:
-0.44*3.51 ≈ -1.5444
-0.47*3.77 ≈ -1.7719
-0.51*4.13 ≈ -2.1063
-0.40*3.35 = -1.34
-0.41*3.46 ≈ -1.4186
合計:約-1.5444-1.7719-2.1063-1.34-1.4186 ≈ -8.1812
相関係数ρ = Cov(z1,S)/(sqrt(3.67)*sqrt(18.24))
sqrt(3.67)≈1.916, sqrt(18.24)≈4.27
分母=1.916*4.27≈8.18
ρ≈-8.1812/8.18≈-1.0? しかし、相関係数が-1になるのはおかしい。どこかで間違えたかも。例えば、固有ベクトルが正規化されているか確認。表2の固有ベクトルは長さ1か? 各列の二乗和が1かどうか確認。例えば、第1主成分のベクトル成分の二乗和:(-0.44)^2 + (-0.47)^2 + (-0.51)^2 + (-0.40)^2 + (-0.41)^2 = 0.1936 + 0.2209 + 0.2601 + 0.16 + 0.1681 = 1.0027 → ほぼ1なのでOK。計算は合っているが、結果が-1に近いのは、主成分と合計得点が強い負の相関? でも合計得点は各科目の合計で、第1主成分の固有ベクトルがすべて負の符号なので、主成分が高いほど各科目の得点が低いことを意味する。つまり、主成分得点が高いと合計得点が低いので負の相関。しかし、相関係数が-1に近いのは極端かも。計算を再度確認。Cov(z1,S)の計算:
国語:3.51 → 0.95+0.89+0.32+0.35= 0.95+0.89=1.84, +0.32+0.35=0.67 → 合計1.84+0.67=2.51 +1(自己相関)=3.51 → 正しい。
同様に他の科目の相関係数合計も正しい。Cov(z1,S)の計算も各項を再計算:
-0.44*3.51 = -1.5444
-0.47*3.77 = -0.47*3= -1.41, -0.47*0.77≈-0.3619 → 合計-1.7719 → 正しい。
-0.51*4.13 = -2.1063
-0.40*3.35 = -1.34
-0.41*3.46 ≈-1.4186
合計:-1.5444 -1.7719= -3.3163 → -2.1063 → -5.4226 → -1.34 → -6.7626 → -1.4186 → -8.1812
分母:sqrt(3.67)=1.916, sqrt(18.24)=4.27 → 1.916*4.27≈8.18
相関係数≈-8.1812 /8.18≈-1.00015 → ほぼ-1。これはあり得る? 主成分と合計得点が完全に負の相関というのはおかしいかも。どこかで間違いがあるか、問題設定の解釈か。合計得点の分散が18.24というのが標準化された得点の合計の場合、各u_iは標準化済みなので分散1、合計の分散は5 + 2*Σ_{i<j} r_ij。問題文によると、分散が18.24なので、Σ_{i<j} r_ij = (18.24 -5)/2 = 6.62。元の相関係数の合計は表1の相関係数を全部足す。例えば、表1の相関係数行列の上三角部分を足すと:
0.95+0.89+0.32+0.35 +0.94+0.41+0.47 +0.64+0.66 +0.98 → 0.95+0.89=1.84 +0.32=2.16 +0.35=2.51 → 英語の行:0.94+0.41=1.35 +0.47=1.82 → 社会の行:0.64+0.66=1.3 → 数学の行:0.98 → 合計2.51+1.82+1.3+0.98=6.61。これがΣ_{i<j} r_ij=6.61。与えられた分散18.24は5 +2*6.61=5+13.22=18.22 → 問題文の18.24と少し違うが、丸め誤差か。したがって、Cov(z1,S)=Σa_i*(Σj r_ij) の計算は正しい。つまり、相関係数がほぼ-1になるのは正しい。なぜなら、第1主成分が各科目に負の重みを持っているため、主成分が高いほど各科目の得点が低く、合計得点も低くなる。そのため、完全な負の相関に近い結果になる。
最後の(3)は、ある生徒の標準化得点が国語1.22、英語1.33、社会1.58、数学1.44、理科1.28。この生徒の第1主成分と第2主成分得点を計算して図の位置を特定する。表2の固有ベクトルを使って計算。第1主成分得点z1 = (-0.44)*1.22 + (-0.47)*1.33 + (-0.51)*1.58 + (-0.40)*1.44 + (-0.41)*1.28。各項:
-0.44*1.22 ≈ -0.5368
-0.47*1.33 ≈ -0.6251
-0.51*1.58 ≈ -0.8058
-0.40*1.44 = -0.576
-0.41*1.28 ≈ -0.5248
合計≈ -0.5368 -0.6251 = -1.1619 -0.8058 = -1.9677 -0.576 = -2.5437 -0.5248 ≈ -3.0685
第2主成分得点z2 = (-0.46)*1.22 + (-0.37)*1.33 + (-0.15)*1.58 +0.58*1.44 +0.54*1.28
計算:
-0.46*1.22 ≈ -0.5612
-0.37*1.33 ≈ -0.4921
-0.15*1.58 ≈ -0.237
0.58*1.44 = 0.8352
0.54*1.28 ≈ 0.6912
合計≈ -0.5612 -0.4921 = -1.0533 -0.237 = -1.2903 +0.8352 = -0.4551 +0.6912 ≈0.2361
よって、第1主成分得点約-3.07、第2主成分得点約0.24。図1のプロットで横軸が第1主成分、縦軸が第2主成分。図1の数値がどうなっているか不明だが、例えば横軸に-3.07、縦軸0.24の位置は、左端付近で少し上にあるはず。ただし、図1の数値が具体的にどう書かれているか分からないため、推測が必要。問題文の図1の数値は以下のように書かれている:
第1主成分
4.0
3.0
4.0
3.0
9.0
7.0
6.0
5.0
4.0
4.0
これはおそらく点の座標を列挙したもの? 例えば、点が10個あり、それぞれの座標が(4.0, ?)、(3.0, ?)など。しかし、縦軸の値が書かれていない。おそらく、図1の点の位置を第1主成分と第2主成分の値で示しているが、記載が不十分。推測するに、計算された座標(-3.07, 0.24)は他の点と比べて第1主成分が大きく負の値なので、左端の位置、例えば番号9や10かもしれないが、正確な判断は難しい。しかし、計算結果から、第1主成分が負で大きいため、左側の位置にあると解釈できる。