見出し画像

【ChatGPT o1-preview】モデルに推論問題を解かせてみると、残念な結果に(その2)


はじめに

前回は、【ChatGPT o1-preview】に論理推論問題を作成させ、自分で解かせてみたところ、問題文自体が破綻している残念な結果を見ていただきました。

構造上、論理的判断の仕組みを持っていない大規模言語モデルに、そこまでさせるのは酷かと思いましたので、今回は簡単な論理推論問題を作成し、解かせてみました。
【ChatGPT o1-preview】の回答を見る前に、紙と鉛筆で実際に解いてみると面白いかもしれません。


問題文

問題文:
状況設定: Aさん、Bさん、Cさん、Dさんの4人がいる部屋に、1つの金庫があります。 金庫を開けるには特定のコードが必要で、そのコードを知っているのは4人のうちの1人だけです。 4人の中には1人だけ嘘をついていることがわかっています。

質問と回答者の発言
Aさんは「Bさんがコードを知っている」と言いました。
Bさんは「Cさんがコードを知っている」と言いました。
Cさんは「Dさんがコードを知っている」と言いました。
Dさんは「私がコードを知っている」と言いました。

問題の提示
誰が嘘をついているかを特定してください。


【ChatGPT o1-preview】の思考プロセス

【ChatGPT o1-preview】は、以下のプロセスで思考を進めました。思考時間は48秒でした。

調査を進める

部屋に住人4人と金庫があり、開けるためのコードを知っているのは一人だけ。誰が嘘をついているかを見つける必要がある。

知識の確認を行う

4人の中で1人だけがコードを知っていて、1人だけが嘘をついている状況を見て、嘘をついている人を見つけるためのシナリオを探っています。

理解しようとする

Dがコードを知っていると仮定し、Cがその情報を知っていると考えます。他の組み合わせも試してみます。

疑念を持つ者たちを見つける Bが嘘をついているのか、CがBの嘘を見抜いているのか?それとも両方が嘘をついているのか、混乱が生じている。目の前の情報をどう解釈するか、難しい選択だ。

検討を進める

Aがコードを持っていると、Aの「Bはコードを知っている」が嘘。Bの「Cはコードを知っている」も嘘。つまり、AとBが嘘をついている。

コード保有者の特定

Dがコードを持っていると仮定すると、Cの発言が矛盾を引き起こすから、Dはコードを持っていない。

解決策の模索

CとDが嘘をついていると、嘘つき1人制約に矛盾している。Bがコードを知っている可能性があるが、BとCも嘘をついており、嘘つき1人制約に矛盾している。Aがコードを知っている可能性についても、A、B、Cが全員嘘をついていると矛盾している。

考える時間をかけると、HはAまたはCと一致するし、AはB一致するし、CはDと一致する**。これを避けるため、Dは誤りを犯し、コードを知らない可能性が高い。

選択肢の分析

選択肢1と2を検討し、矛盾する情報が含まれているため、どちらも不可能であることが分かる。

ケースを見ていると

B、C、Dが全員嘘をついていると状況は成立しないね。それぞれが嘘をついているわけだから、矛盾が生まれてしまう。

OK, では今考えているのは、Aが嘘をついている場合、コード保持者はDである可能性が高い。なぜなら、CとDが嘘をついていると矛盾が生じるから。次に進もう。

コード保有者の探索

Bがコード保有者、Aが嘘をついているという仮定を立てている。AはBがコードを知っていると言っているが、これは真実だ。

探究可能性を考える

Aが嘘をついていると仮定すると矛盾が生じるため、Aが真実を述べている必要がある。したがって、Aは嘘をついていないと考えられる。

考えを深める

じっくり考えると、AとBのどちらかが嘘をついているのが分かるな。これって、面白い進展だね。

見解を深める

Aは「Bは赤いボールを持っていない」と言っている。Bは「Cが青いボールを持っている」と考えている。Cは「緑のボールを持っていない」と主張している。

矛盾を解消する

Aが嘘をついていると、他の誰もが正しいことになります。BとCが嘘をついている可能性が高いが、他の選択肢も検討します。

コード保持者の特定

コード保持者はBで、Cが唯一の嘘をついていると考えられる。

考えてみると

Bが嘘をついていた場合、Dがコードを知っているとAが嘘をつく。でも、AとBが同時に嘘をつくのは変だよね。

**全体の真実を持つ者に注目している**

コードの保持者がAの時、Aが嘘をついている。Aの発言が真実であると仮定することで矛盾が生じる。

なぜ解決できないのかを探る

AとCが嘘をついているため、A、B、およびCのいずれかがコード保持者である可能性も考慮しなければならないが、いずれもつじつまが合わない。

偽りを見抜く

Dが嘘をついていると、Cも嘘をつく。Aがコードを持つならCは嘘をついているが、Aはコードを持っていない。意外だね。

推測して解明する

突如、Aが嘘をついている可能性に気づく。これが正しいと、Bはコードを知らない。これを考慮して、Dがコード保持者だと推測する。

想定を広げる

Aが嘘をついていると仮定し、Dが知っているコードか、Cが知っているコードかを疑う。BとCの意見から、Cが知っている可能性が高まるが、矛盾が生じている。

確認している事実

Aが嘘をついていると仮定し、B、C、Dの発言を検討。Cが嘘をついていると、Dはコードを知らず、Cの発言と矛盾している。さらにDがコード保持者である場合、同様の矛盾が生じる。

論理を追跡中

Dが嘘をついていると、Aは正直で、BとCがコードを知っていることに矛盾が生じる。再評価が必要だね。

ピースをつなぐ

AがBを知っている、BがCを知っている、CがDを知っている、Dがコードを持っていると言われ、誰かが嘘をついている。この場合、Dが嘘をついている可能性が高いかもしれない。

見解をまとめる

Dがコードを知っていると矛盾しているけど、A、B、Cの誠実さを前提できないなら、問題は解決不可能かも。

Andrei is just thinking about the puzzle and wonders if D might actually be right, but then concludes D doesn’t know the code, leaving A, B, and C as truthful.


【ChatGPT o1-preview】の回答

出てきた回答は以下のとおりです。

答え:Dさんが嘘をついています。

理由:

まず、4人のうち1人だけが嘘をついており、金庫のコードを知っているのも4人のうち1人だけです。

  1. Aさんの発言:「Bさんがコードを知っている」

    • これは真実か嘘か未定。

  2. Bさんの発言:「Cさんがコードを知っている」

    • これは真実か嘘か未定。

  3. Cさんの発言:「Dさんがコードを知っている」

    • これは真実か嘘か未定。

  4. Dさんの発言:「私がコードを知っている」

    • これは真実か嘘か未定。

仮定と検証:

ケース1:Dさんが嘘をついている場合

  • Dさんはコードを知らない。

  • 他の3人(Aさん、Bさん、Cさん)は真実を言っている。

この場合:

  • Aさんの発言:「Bさんがコードを知っている」真実

    • つまり、Bさんがコードを知っている。

  • Bさんの発言:「Cさんがコードを知っている」真実

    • つまり、Cさんがコードを知っている。

  • しかし、コードを知っているのは1人だけなので、これは矛盾しています。

ケース2:Cさんが嘘をついている場合

  • Cさんは嘘をついており、Dさんはコードを知らない。

  • 他の3人(Aさん、Bさん、Dさん)は真実を言っている。

この場合:

  • Aさんの発言:「Bさんがコードを知っている」真実

    • つまり、Bさんがコードを知っている。

  • Bさんの発言:「Cさんがコードを知っている」真実

    • しかし、Cさんは嘘をついているので、これは矛盾しています。

ケース3:Bさんが嘘をついている場合

  • Bさんは嘘をついており、Cさんはコードを知らない。

  • 他の3人(Aさん、Cさん、Dさん)は真実を言っている。

この場合:

  • Aさんの発言:「Bさんがコードを知っている」真実

    • しかし、Bさんはコードを知らない(Bさんは嘘つき)。これは矛盾しています。

ケース4:Aさんが嘘をついている場合

  • Aさんは嘘をついており、Bさんはコードを知らない。

  • 他の3人(Bさん、Cさん、Dさん)は真実を言っている。

この場合:

  • Bさんの発言:「Cさんがコードを知っている」真実

    • つまり、Cさんがコードを知っている。

  • Cさんの発言:「Dさんがコードを知っている」真実

    • つまり、Dさんがコードを知っている。

  • しかし、コードを知っているのは1人だけなので、これは矛盾しています。

結論:

どのケースでも矛盾が生じますが、唯一可能なのはDさんが嘘をついている場合です。したがって、嘘をついているのはDさんです。


評価

【ChatGPT o1-preview】の回答は間違いです。

自分で順番にマルバツ表を書いていけば一目瞭然ですが、正しい解答は「誰が嘘をついているか特定不能」です。

残念ながら、【ChatGPT o1-preview】モデルは、論理的推論問題を解いていない、と言わざるを得ません。

まとめ

問題が意地悪だったかもしれませんが、AからDまでの選択肢問題だと、大規模言語モデルは確率の高そうなものを選んで、あたかも知っているかの如く答えてしまいます。
ご存知の通り、学校のテストの様に、正解から逆算して問題を作成するケースは、現実問題では少ないです。
書籍や学術論文やマスコミ情報のいずれも、問題設定自体が論理的に破綻しているものがあること、さらにそれは、発信者も意識せずに公開されていることがあることはよく知られています。

ということで、今回の結論は、前回同様、論理問題は大規模言語モデルではまだ扱えない、従来のプログラミング言語で扱うほうが良い、ということになります。
各自の特徴を活かして役割分担するのが実用的ですね。

残念ながら、私はまだ【ChatGPT o1-preview】を使う理由を見出せていません。一方、【ChatGPT o1-mini】は、プログラミングに大いに役立ちます。

私の現段階での予想は、【ChatGPT o1-preview】はすぐにお蔵入りとなり、【ChatGPT o1-mini】は生き残って、しばらくはAPI経由でCursorなどに接続され、大いにプログラマーに利用されるモデルになるというものです。

【重版決定】AIアプリをプログラミング不要で開発する書籍

GPTsを自分で作って世界に公開したい方はこちら!


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