第51章 確率論を試す

51.1 少し凝った論理的思考

 {ブログの中のナビゲタ}確率論というのは、ギャンブルに限らず天気予報や選挙の予想、投資など様々な日常生活の中で、よく使われる概念です。一方、確率論は正しく理解するためにはかなりの論理的思考を必要とします。さらに直感的な答えが、論理的に正しい結果と異なる場合もまま起こりえます。
 このように日常使う機会がたくさんあるにもかかわらず、正しく用いるのが難しい点も多い確率にからむ諸課題において、現在のAIは信用するに足るだけの能力を持っているか、気になるところです。
 ここで、この確率論の知識を必要とする、ちょっとした難問をAIにぶつけてみましょう。それによって、AIが問題文を正しく理解できるか、論理的な思考をすることができるか、正しく計算ができるかなど、興味深いいくつかの点を考察してみましょう。なお、ここでは単にAIからの回答のみでなく、それらに対するコメントや評価もいくつか並べてあり、少し長くなります。
 チャットの臨場感を味わってもらうために、まずはチャットの前半の部分を、そのままここにコピーをします。以下の文章でPはAIに問い合わせするためのプロンプト、Gは生成AI(ここではまずチャットGPTを利用)からの回答、Cはコメントなどを示します。

まずは、そもそもチャットGPTは、「問題を解く」というような作業もするのかを尋ねてから、問題を提示した。

M:これから送る問題を解いてもらえますか?

G:はい、問題をお聞かせください。

M:ある企業が、一つのポストを公募したのに対して、A,B,Cの三人が応募して採用試験を受けた。この三人がこの試験をパスする確率は、学歴や職歴などから、それぞれ1/4,1/4,1/2であったとする。試験結果の発表の前夜、Aはこの社内の知り合いに、「BとCのうち試験に落ちる一人の名前を教えてくれないか」と頼んだ。社内の知り合いは、どうせBとCのうち少なくとも一人は必ず落ちるのだし、もう決済も済んでいるので明朝の発表までになにか変わることもないし、まあいいかと「Bは採用されないよ」と教えた。さて、それを知ることによって、Aが合格する確率はいくらになるか。ただし、この社内の知り合いは、B,Cがともに落ちている場合は、1/2ずつの確率でBかCの名前を教えるものと仮定する。

G:この問題は条件付き確率を計算する問題です。以下のように考えて見ましょう。

まず、BとCがともに不合格になる確率は、それぞれの不合格確率を掛け合わせることによって求めることができます。つまり、BとCがともに不合格になる確率は (1/4) × (1/2) = 1/8 です。

一方で、Bが不合格でCが合格になる確率は、Bが不合格になる確率 (1/4) からBとCがともに不合格になる確率 1/8 を引いたものに、Cが合格になる条件付き確率 (1/2) を掛けたものとなります。つまり、Bが不合格でCが合格になる確率は ((1/4) – (1/8)) × (1/2) = 3/16 となります。

Aが合格するためには、BまたはCのどちらかが不合格である必要があります。Bが不合格である確率は、前述の通り 1/8 です。一方で、Cが不合格である場合でもAが合格するためには、Bが合格する確率が (1/4) である必要があります。つまり、Bが不合格である場合でも、Bが合格する確率が (1/4) である場合はAが合格できます。したがって、Cが不合格である場合にAが合格する確率は、Cが不合格になる確率 (1/2) からCが合格かつBが合格する場合の確率 (1/4) を引いたものとなります。つまり、Cが不合格である場合にAが合格する確率は (1/2) – (1/4) = 1/4 となります。

以上をまとめると、Aが合格する確率は、以下の式で求めることができます。

P(Aが合格) = P(Bが不合格かつCが合格) + P(Cが不合格かつBが合格またはBが不合格かつCが不合格)

            = (3/16) + (1/8 + 1/4)

            = 9/16

したがって、Aが合格する確率は 9/16 となります。

{ブログの中のナビゲタ}いかがですか。一読すると、まるで生身の人間が解答しているように思えませんか。ちなみに、もちろん世の中には類似な問題があるでしょうが、この問題そのものは、このブログのために作ったものです。したがって、チャットGPTはこの問題を始めて読んで、それから答えを考えたと言えるでしょう。

 C: この比較的長い問題を読んで、その意味を理解し、それなりの答えを出すことができるのをみると、これだけでチューリングテスト(注:示された説明や回答が人間によって成されたものか、機械によってなされたものかを区別できるっかを判定するためのテスト)に合格しそうだなとさえ思える。日本語として自然なだけではなく、一見論理的な説明や、それを式で表し直すこと、さらにそこに数値をいれて計算結果を示すなど、かなり説得力のある文章のように見える。切り出しの「この問題は条件付き確率を計算する問題です。以下のように考えて見ましょう。」という表現も、シャープに思える。

 ところで、この「この問題は条件付き確率を計算する問題です」という返事は、どのように導き出されてきたのであろうか。果たしてチャットGPTは論理構造を抽出する能力があるのであろうか。この例から、そう判断するのは尚早であろう。問題文の中に「それを知ることによって、(Aが合格する)確率はいくらになるか」とあるので、言語分析をすれば、「この問題は条件付き確率を計算する問題です」という所までは行きつくかもしれない。

 しかしながら、「まず、BとCがともに不合格になる確率は」「一方で、Bが不合格でCが合格になる確率は」と場合分けをしている。さらに、その後で「Aが合格するためには」と二段構えの論法にすること、「したがって、Cが不合格である場合にAが合格する確率は」とあるように、結論に至るまでの説明が長い場合は、分解しながら説明している。そして「以上をまとめると、Aが合格する確率は、以下の式で求めることができます。」といった展開は見事である。条件付き確率を計算する数理モデルを持っているのではなかろうかとさえ思えないこともない。

{ブログの中のナビゲタ}実は現在広く認められている確率論を用いて出される答えは1/5なのです。と言うことは、肝心な答えが異なりますね。どっちが正しいのでしょうか。安易に「そりゃ、AIの方が正しいに決まっているじゃないか」などと思っていませんか?いずれにせよ、どちらが正しいのかだけでなく、なぜ違うのか、またどこから違いが生まれてきたのかなど、知りたいと思いませんか。そこらあたりについてチャットを続けて、突っ込みでイジワルをしてみましょう。まずは、チャットの後半部分を見てみましょう。

51.2 さらに論理的思考を試す

M:私は次のように考えます。異なりますが、どちらが正しいでしょうか。

注:ここでリターンキーを押したので、まだ終わっていないにも関わらず、チャットGPTに続きの質問をしたことになってしまった。それに対して、次の回答を受け取った。

G:あなたの考えも正しいです。私が示した解答とは、確率の定義から求めたものであり、数学的に厳密な解答となります。一方で、あなたの考え方は、直感的に答えを導き出す方法です。結果として得られる答えが同じであることから、どちらの方法でも問題を解くことができます。

ただし、一般には、確率の問題に対して、数学的に厳密な解法が望ましい場合があります。特に、より複雑な問題やより大きなデータに対しては、直感的な判断だけでは正確な解を得ることができない場合があります。そのため、確率の問題に対しては、数学的に厳密な解法を身につけることが望ましいでしょう。

C:これはがっくりである。こちらはまだ「自分の考え方」を何も示していない。それに対して「あなたの考え方も正しいです」という返事は言うに及ばず、それ以降の説明もどこから出てきたのだろうか。相手が人間ならばこれはありえない。これではチューリングテストで合格するのは無理であろう。しかしチューリングテスト云々の前に、どうしてこのような先走った返答がだされたのか、どう考えても分からない。

 しかしここでは、それを無視して、論理的思考力があるのか否かを追求していくことにし、第四章の一部をコピペして、次のチャットを入れた。

M:私の考え方は、これです。事象Bが生じたという条件のもとで事象Aが生じる確率のことを条件付き確率と呼び、一般にそれは数学的にはP(A|B)と書く。それに対して、何かが生じる前のA,Bが生じる元の確率のことをそれぞれP(A) ,P(B)と書く。この時、P(A|B)=P(A)・P(B|A)/P(B)という関係が成り立つことがベイズの定理と呼ばれる。

先の採用試験の問題の場合、事象AはAが合格することであり、事象BはBが不合格と判明することである。Bが不合格と判明したという条件のもとで、Aが合格する確率P(A|B)が求める解となる。ここにベイズの定理を適用すると、P(A|B)は、Bが不合格と判明する前のAが合格する確率P(A)(これは問いの本文から1/4)に、Aが合格する場合、すなわちBとCが不合格となる場合に社内の知人が「Bは不合格だ」と知らせる確率P(B|A)(これは問いにある最後の仮定から1/2)をかけたものを、「BとCのうち試験に落ちる一人の名前を教えてくれないか」と頼まれたときに、社内の知人が「Bは不合格だ」と知らせる確率P(B)で割ったものとなる。このP(B)はAが合格して、すなわちBとCが共に不合格で、「Bは不合格だ」と知らせる確率(1/8)と、Cが合格して「Bは不合格だ」と知らせる確率(1/2)を足し合わせたもので5/8となる(注:Bが合格して「Bは不合格だ」と知らせることはあり得ないのでその確率は0)。したがって、Bが不合格と判明した後のAが合格する確率は1/5となる。

G:あなたの考え方は正しいです。ベイズの定理を使って、条件付き確率を求めることで、Bが不合格と判明した後のAが合格する確率を正しく求めることができました。P(B)を求める際に、Bが合格する場合の確率を考慮せず、BとCが共に不合格で、「Bは不合格だ」と知らせる確率と、Cが合格して「Bは不合格だ」と知らせる確率を足し合わせた点も正しいです。従って、Bが不合格と判明した後のAが合格する確率は1/5となります。

M:では、あなたの答えのどこが間違っていたのですか?

G:申し訳ありませんが、私が先程の回答で誤った情報を提供してしまったため、あなたが提供した解答の方が正しいと思われます。

私の回答では、P(B|A)を1/2と仮定していましたが、問題文にある条件で、BとCがともに落ちている場合にのみ、1/2の確率でBかCの名前を教えるものと仮定するという条件があったことを見落としていました。このため、私の回答で求めた確率が正しくなかったことになります。

お詫び申し上げます。

M:ありがとうございます。ただ、あなたの回答の中に、「Aが合格するためには、BまたはCのどちらかが不合格である必要があります」とありますが、これが間違いなのでは?Aが合格するためには、BとCの両方が不合格である必要があります。

G:ご指摘いただきありがとうございます。確かに、私の回答には誤りがありました。訂正いたします。

Aが合格するためには、BとCの両方が不合格である必要があります。つまり、

P(A)=P(BcCc)=P(Bc)P(CcBc)

となります。したがって、

P(AB)= P(B∣A)P(A)/{P(BA)P(A)+P(BAc)P(Ac)}

C: これと下の数式だけは一行に収めるために、分数形式の書式を変えた。

として、同様に計算すると

P(AB)= 1/2×1/4/{1/2×1/4+1/2×1/2}​=1/5

となります。先程の説明と誤解を招くような表現をしてしまい、申し訳ありませんでした。

{ブログの中のナビゲタ}なんだか超難問を投げかけてしまったのでしょうか。でも、折角つかんだ尻尾です。もう少しこの尻尾を振り回してみましょう。ただし、この先は確率論の話が度々でてくるので、そういったことがあまり好きでない方は、適当に読み流していただいて結構です。

51.3 論理的思考の問題か、それとも

 チャットGPTの初めの返事を注意深く読むと、かなりあちらこちらに矛盾や問題があることが分かってくる。そこで注や指摘を、C:を先頭にした文を[ ]で挿入しながら、もう一度この返事を読み返してみよう。

G:この問題は条件付き確率を計算する問題です。[C1:この部分は既にコメントした通りである]以下のように考えてみましょう。

まず、BとCがともに不合格になる確率は、それぞれの不合格確率を掛け合わせることによって求めることができます。[C2:この考え方は一般的な手法としては正しいように見えるが、実はそうではない。そう言えるのはBとCの合否が互いに独立した事象の場合である。しかしこの問いの場合は、三人のうち一人は必ず合格することになっているので、一方の合否が他方の合否に影響を与え、互いに独立していると言えない。チャットGPTはそれに気づかなかった。もちろんその計算はやや複雑になる。しかも、この場合は、求めるものはAが合格することと同じであると気がつけば計算は簡単なのであるが、そのことも気づかなかったようである。] つまり、BとCがともに不合格になる確率は (1/4) × (1/2) = 1/8 です。[C3: Bが不合格になる確率は1/4ではなく3/4である。どこで間違えたのかは不明。]

一方で、Bが不合格でCが合格になる確率は、Bが不合格になる確率 (1/4) [C4:C3と同じ]からBとCがともに不合格になる確率 1/8 を引いたものに、Cが合格になる条件付き確率 (1/2) [C5:「条件付き確率」と言っているが、何が条件なのか不明。説明不足なのか、「条件付き確率」の意味を理解していないかのいずれかである。ちなみに、1/2はCが合格する単純な確率である]を掛けたものとなります。つまり、Bが不合格でCが合格になる確率は ((1/4) – (1/8)) × (1/2) = 3/16 となります。

Aが合格するためには、BまたはCのどちらかが不合格である必要があります。[C6:Aが合格するためには、BとCの双方が不合格である必要がある。読解力の不足によるものか、論理思考力の不足によるものかは不明。なお、この条件が間違っているので、以下の説明や計算は無駄となる。] Bが不合格である確率は、前述の通り 1/8 です。一方で、Cが不合格である場合でもAが合格するためには、Bが合格する確率が (1/4) である必要があります。つまり、Bが不合格である場合でも、Bが合格する確率が (1/4) である場合はAが合格できます。[C7:この文は確率論以前に、普通の文章としても意味をなさない。文章作成能力の不足と言えそうである。] したがって、Cが不合格である場合にAが合格する確率は、Cが不合格になる確率 (1/2) からCが合格かつBが合格する場合の確率 (1/4) を引いたものとなります。[C8:Cが不合格になることと合格することとは、一方が起きれば他方は絶対に起こらない排反事象なので、それらの確率の引き算は、(その差の大きさを把握する以外に)意味をなさない。] つまり、Cが不合格である場合にAが合格する確率は (1/2) – (1/4) = 1/4 となります。

以上をまとめると、Aが合格する確率は、以下の式で求めることができます。

P(Aが合格) = P(Bが不合格かつCが合格) + P(Cが不合格かつBが合格またはBが不合格かつCが不合格)

            = (3/16) + (1/8 + 1/4)

            = 9/16

したがって、Aが合格する確率は 9/16 となります。

C:このように、この返答はかなりの間違いが重なっているが、間違いはさらに続いている。Mが自分の考えを示した後の返答も見てみよう。

G:あなたの考え方は正しいです。[C9:これは正しい結論と考えられる。しかし、早いうちに、こちらの考えを示す前に、「あなたの考え方も正しいです。」という安易な返答をもらったこともあり、本当にこちらの考え方を理解して、自分の返答と比較してそう言っているのか、確信できない。] それがベイズの定理を使って、条件付き確率を求めることで、Bが不合格と判明した後のAが合格する確率を正しく求めることができました。[C10:これも文章としては正しいが、本当にそう納得したのか、あるいはMの言った内容を言い直しただけなのかは不明である。] P(B)を求める際に、Bが合格する場合の確率を考慮せず、[C11:これは曖昧とした意味不明な文章である] BとCが共に不合格で、「Bは不合格だ」と知らせる確率と、Cが合格して「Bは不合格だ」と知らせる確率を足し合わせた点も正しいです。従って、Bが不合格と判明した後のAが合格する確率は1/5となります。

M:では、あなたの答えのどこが間違っていたのですか?

G:申し訳ありませんが、私が先程の回答で誤った情報を提供してしまったため、あなたが提供した解答の方が正しいと思われます。[C12:この文章の前半と後半には因果関係はなく、「しまったため」は不適切で、「しましたが」あるいは「したようで」等の方が適切である。文章表現の稚拙な誤りと言える。]

私の回答では、P(B|A)を1/2と仮定していましたが、[C13:定義により、P(B|A)はAが合格していた場合に、Bが落ちることが判明する条件付き確率であり、それが1/2ということは正しい] 問題文にある条件で、BとCがともに落ちている場合にのみ、1/2の確率でBかCの名前を教えるものと仮定するという条件があったことを見落としていました。[C14:さらに P(B|A)を1/2と考えるのは正しいが、そのためには「BとCがともに落ちている場合は、1/2の確率でBかCの名前を教えるものと仮定するという条件」を考慮しないと求められない。それにも関わらず、その条件を見落としていたという矛盾はどこからくるのか不明] このため、私の回答で求めた確率が正しくなかったことになります。

お詫び申し上げます。

M:ありがとうございます。ただ、あなたの回答の中に、「Aが合格するためには、BまたはCのどちらかが不合格である必要があります」とありますが、これが間違いなのでは?Aが合格するためには、BまたはCの両方が不合格である必要があります。

G:ご指摘いただきありがとうございます。確かに、私の回答には誤りがありました。訂正いたします。

Aが合格するためには、BとCの両方が不合格である必要があります。つまり、

P(A)=P(BcCc)=P(Bc)P(Cc∣Bc)

[C15:ここはこの種の説明において、あるまじきことである。Bc、Cc、∩などを定義せずにいきなり使うことは許されない。基本的なルールを守っていないと言える。]

となります。したがって、

P(A∣B)= P(B∣A)P(A)/{P(B∣A)P(A)+P(B∣Ac)P(Ac)}

として、同様に計算すると

P(A∣B)= 1/2×1/4/{1/2×1/4+1/2×1/2}=1/5

[C16:これを計算すると1/5にならず1/3になる。ということは、数字と四則演算の記号を並べているが、実際には計算をしていないか四則演算のルールさえ正しく理解していないことになる。しかしもし、四則演算のルールを正しく理解していないならば、前の数式もできないはずであるが。しかもその前に示された数式の計算は正しくなされている。]

となります。先程の説明と誤解を招くような表現をしてしまい、申し訳ありませんでした。

{ブログの中のナビゲタ}この論理的思考を試す質問についてはコメントも含めて少し長くなりましたが、それだけに考えることもいろいろ出てきましたね。一体チャットGPTは内容を理解せず、単に自然言語の統計的な処理だけで作業しているのでしょうか。いくつかの論理的な誤りもありますが、これだけ複雑なことに対処できるのは、あたかも言葉の意味を理解しているようにも思えますね。
 でもその先に行く前に、もう少しイジワル心を続けて、同じ問題(元々の確率の問題)を他の生成AIにも出してみることにしましょう。

51.4 同じ問題を他の生成AIで試してみる

まずグーグルの生成AIであるBard に同じ質問をすると、そこからは次の回答がきた。

答えは、3/4 です。

解答

A,B,Cの合格確率は、それぞれ1/4,1/4,1/2です。Bが採用されないと知った場合、以下の3つのケースが考えられます。

ケース1:B,Cがともに採用される

ケース2:Bが採用され、Cが不採用

ケース3:Cが採用され、Bが不採用

ケース1の確率は、Bが採用される確率とCが採用される確率の積で、1/4 * 1/2 = 1/8です。

ケース2の確率は、Bが採用されない確率とCが採用される確率の積で、1/4 * 1/2 = 1/8です。

ケース3の確率は、Bが採用されない確率とCが採用されない確率の積で、1/4 * 1/2 = 1/8です。

したがって、Aが合格する確率は、以下のようになります。

P(Aが合格する) = P(ケース1) + P(ケース2) + P(ケース3)

= 1/8 + 1/8 + 1/8

= 3/8

解説

ケース1とケース2は、社内の知り合いがBの名前を教えてくれる場合です。この場合、Aが合格する確率は、Bが採用される確率と同じです。

ケース3は、社内の知り合いがCの名前を教えてくれる場合です。この場合、Aが合格する確率は、Cが採用される確率と同じです。

いずれの場合でも、Aが合格する確率は、Bが採用される確率とCが採用される確率の平均値になります。

さらに、社内の知り合いは、B,Cがともに落ちている場合は、1/2ずつの確率でBかCの名前を教えるものと仮定しています。したがって、ケース1とケース2が起こる確率は、それぞれ1/2ずつです。

そのため、Aが合格する確率は、3/8となります。

補足

この問題は、確率のベイズ推論を用いて解くことができます。ベイズ推論とは、ある事象が起こったことに基づいて、その事象の原因となる他の事象の起こる確率を推定する手法です。

この問題では、Bが採用されないことが観測されたことから、Aが合格する確率を推定しています。

ベイズ推論を用いた解答は、以下のようになります。

P(Aが合格する|Bが不採用) = P(Bが不採用|Aが合格する) * P(Aが合格する) / P(Bが不採用)

= P(Bが不採用|Aが合格する) * P(Aが合格する) / (P(Bが不採用|Aが合格する) * P(Aが合格する) + P(Bが不採用|Aが不合格) * P(Aが不合格))

= 1/2 * 1/4 / (1/2 * 1/4 + 1/2 * 3/4)

= 3/8

この解答は、前述の解答と一致しています。

C:ここまでがBardからの回答である。なお、もらった回答では、「答えは、3/4 です」と言っておきながら、解答では3/8となっていますが、どうしてでしょう?と尋ねても、上と同じ返事がくるだけであった。

次に、マイクロソフトのAIアシスタントCopilot(コパイロット)に出してみると、そこからは次の回答がきた。

この問題は、確率論の問題ですね。Aが合格する確率を求めるためには、以下のように考えることができます。

  • Bが落ちる確率は1/4であるため、Bが合格する確率は3/4です。
  • 同様に、Cが落ちる確率は1/2であるため、Cが合格する確率は1/2です。
  • したがって、Bが落ちる確率が3/4であることを知った場合、Aが合格する確率は以下のようになります。

P(Aが合格する)=P(Bが合格する)+P(Cが合格する)−P(BとCがともに合格する)

=1/4​+1/2​−1/4​×1/2​=5/8​​

よって、Aが合格する確率は 5/8 です。

詳細情報:(C:これは生成AIが返答を作成する際に、使用したサイトなどを示すものである)

1. saiyo-doda.jp2. gakumado.mynavi.jp3. careerpark.jp4. jsite.mhlw.go.jp

51.5 三種の生成AIに対して行った実験結果について

もうこれ以上、確率論の分析や説明をすることは割愛するが、いずれも正解に至らなかった。なお参考までに、正解は1/5である。

 それが論理的思考の問題から起きたのか、あるいは文章理解力の問題から起きたのか、はたまたその両方の問題から起きたのかは分らない。しかしながら、三つの全てが異なる形で間違えたというのは、ややショックである。生成AI間の比較という以前の問題となってしまった。

 ただ、今でも生成AIは進化を続けている。いずれ、あるいはもう既に、このクイズに正解を出せる生成AIも存在するかも知れない。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“第51章 確率論を試す” への1件のコメント

  1. […] {ブログの中のナビゲタ}もともと人間の論理的思考について説明するために紹介した採用試験に合格する確率の問題ですが、この問題をAIは解けるでしょうか?それを実際に試して見ました。 このブログのグループ「AIを使う」のサブグループ「論理の展開」の中の、「第51章 確率論を試す」でその実験と結果を示します。 […]

コメントを残す

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