ChatGPTにアブダクション（仮説推論）は可能なのか、推理ゲームで確かめてみた

木からリンゴが落ちるのを見て万有引力を発見したというのはニュートンの有名なエピソードですが、このように観察された現象から大胆な仮説を生み出す発想は「アブダクション」と呼ばれ、AIにはまだおこなうことのできない人間ならではの能力だと思われていました。
この「アブダクション」について、いま話題のChatGPTであれば可能なのか、簡単な推理ゲームを使って実験してみました。

# アブダクション（仮説推論）とは
論理学において、人間が論理的な推論をおこなう過程は「演繹」「帰納」「アブダクション」の3種類に分類されます（参考：<a href="https://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E7%9A%84%E6%8E%A8%E8%AB%96">論理的推論</a>）
- 演繹：前提条件と規則を用いて結論を導く。「雨がふると芝生は湿る（規則）。雨がふっている（前提）。したがって、芝生は湿っている（結論）。」
- 帰納：前提条件と結論がセットとなった諸事例から規則を規定する。「これまで、雨がふると（前提）いつも芝生は湿ってきた（結論）。したがって、雨がふると芝生は湿る（規則）。」
- アブダクション：現在確定される結論と規則を用いて「ある前提条件が結論を説明することができるだろう」ということを裏づけること。「芝生が湿っている（結論）。雨がふると芝生が湿る（規則）。したがって、雨がふったに違いない（前提条件）。」

平たく言うと、演繹はルールベースでの推論、帰納はデータからの規則の発見、アブダクションは仮説立案・推理のように表現できるかと思います。そしてこれらをAIに当てはめた時、古典的なルールベースのAIは演繹的推論を、近年の機械学習ベースのAIは帰納的推論をおこなっているが、アブダクションによる推論は現代のAIでもまだ難しいのではないかといったことが言われていました。（参考：<a href="https://logmi.jp/events/1690">人間とAIの違いは「ひらめき」にある?!　アイデア発想の鍵を握る思考技術「アブダクション」とは</a>）

実際、<a href="https://arxiv.org/abs/1908.05739">Bhagavatula, Chandra, et al. "Abductive commonsense reasoning."  ICLR 2020</a>において、常識的な仮説推論を言語モデルでおこなえるかという研究をおこなっているのですが、GPT2をベースとしたアブダクション特化の言語モデルにおいても、単純な仮説推論のタスクで人間を大きく下回ったと報告されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/9e934cab-852d-afbe-9955-d2ecab930512.png)
例えば、左側が言語モデルで推論に失敗したケースを示しています。「O1：ラリーの庭は枯れ葉で覆われていました」「O2：ラリーはその日は諦めて中に戻りました」の間に起きた出来事についての仮説を生成させるタスクとして、人間は「彼は何時間もかけて庭を綺麗にしようとしました」とそれらしい文章を生成できますが、言語モデル（COMeT-Emb+GPT2）は「ラリーは葉っぱを投げ捨てました」と、ズレた文章を生成してしまっています。

# ChatGPTによるアブダクション
では、ChatGPTにおいてもアブダクションは難しいのでしょうか。まずは先日発表されたGPT-4より前のバージョンであるGPT-3.5で確かめてみます。
![スクリーンショット 2023-03-22 17.33.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/69f3795d-48bd-f838-1767-847e5ff8effe.png)
GPT-3.5でも、かなり妥当な仮説を挙げられているように見えます。また、先程の論文で失敗したケースについても確認してみます。
![スクリーンショット 2023-03-22 17.39.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/1594ec3e-6b7f-729a-17bb-f6752599c526.png)
訳：
【質問】
O1とO2の間に起こった出来事として尤もらしい仮説H1を出力してください。
O1：ラリーの庭は枯れ葉で覆われていました
O2：ラリーはその日は諦めて中に戻りました
【回答】
H1 : ラリーは庭の枯れ葉を掃除しようと試みましたがあまりに大変で時間がかかるだろうと思い、その日は諦めて中に戻ることにしました

完璧な回答ですね。<a href="https://arxiv.org/abs/2302.04023">Bang, Yejin, et al. "A multitask, multilingual, multimodal evaluation of chatgpt on reasoning, hallucination, and interactivity." arXiv preprint arXiv:2302.04023 (2023).</a>によると、先述の論文で提案されたアブダクション推論のデータセット30問のうち、26問はGPT-3時点のChatGPTで正しく正解できたとのことです。

しかしこの結果だけを見て、AIにもアブダクションが可能になったのかというとまだ疑問が残ります。先に参考として挙げた議論でも、「リンゴが落ちた」といった観測から「地面と物体の間で引き合う力が働いている」という発想の飛躍を伴うようなアブダクションがAIに可能かというのが論点であり、ChatGPTがおこなった仮説推論は、「雨が降って芝生が濡れた」「庭の掃除が大変なので諦めた」といった、よくあるシチュエーションを元に推論している言わば帰納的な推論のようにも見受けられます。（というのはただの素人の感想ではありますが、実際に<a href="https://www.cambridge.org/core/journals/journal-of-linguistics/article/abs/on-the-misuse-of-the-notion-of-abduction-in-linguistics/F4DA9296B8F2034E8C7E4AA1B5011596">Deutscher, Guy. "On the misuse of the notion of ‘abduction’in linguistics." Journal of Linguistics 38.3 (2002): 469-485.</a>のように、"アブダクション"という用語の定義について変遷を指摘する議論もあるようです。）

なので、発想の飛躍を伴うアブダクションがChatGPTに可能なのか確認するために、ここでは推理ゲームを用いた実験をおこないました。

# 「ウミガメのスープ」によるアブダクションの確認
今回実験に用いたのは「ウミガメのスープ」と呼ばれるゲームです。

> ある男が、とある海の見えるレストランで「ウミガメのスープ」を注文しました。
しかし、彼はその「ウミガメのスープ」を一口飲んだところで止め、シェフを呼びました。
「すみません。これは本当にウミガメのスープですか？」
「はい･･･　ウミガメのスープに間違いございません。」
男は勘定を済ませ、帰宅した後、自殺をしました。
何故でしょう？

（引用元：<a href="https://dic.nicovideo.jp/a/%E3%82%A6%E3%83%9F%E3%82%AC%E3%83%A1%E3%81%AE%E3%82%B9%E3%83%BC%E3%83%97">ニコニコ大百科 - ウミガメのスープ</a>）

上記のような、一見しただけでは真相の分からない謎に対して、回答者は出題者に対して質問を繰り返していくことで答えを導き出していきます。ただし、質問は「はい」「いいえ」のいずれかで答えられる内容である必要があります。このゲームは「水平思考パズル」とも呼ばれ、論理的・分析的な思考である垂直思考に対し、多様な視点から物事を見ることにより飛躍した発想を生み出す水平思考が求められる点が特徴です。そのため、発想の飛躍をともなうようなアブダクションについて確認するのに適しているかと思われます。

という訳で早速ChatGPT（GPT-4）に上記の問題を出してみたのですが
![スクリーンショット 2023-03-26 10.44.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/2af36ef8-14ad-35af-87ef-942b70a8b459.png)
（「自殺」というワードを含むためか警告あり）

**あっという間に真相に辿り着いてしまいました**。。これはおそらく、ウミガメのスープがあまりに有名な問題であるため学習データにも含まれており、単にChatGPTが答えを知ってしまっているのが原因かと思われます。（ちなみにChatGPTが<a href="https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%AA%E3%83%BC%E3%81%A8%E3%82%A2%E3%83%B3%E8%AA%B2%E9%A1%8C">サリーとアン課題</a>を解いたという話を某所で見かけましたが、こちらも有名な問題であるため、学習データに含まれていた答えをそのまま出してしまったという可能性について考える必要があるかもしれません）

水平思考パズルについては他にも類題がありますが、いずれも答えが学習データに含まれてしまっている可能性は排除できません。そこで苦肉の策ではあるのですが、今回**オリジナルの問題**を作成し、そちらをChatGPTに解いてもらうことにしました。
プロンプトと併せて問題を提示します。

```
あなたは探偵です。以下の謎の真相を導いてください。 

# 謎
2013年に開かれた国際オリンピック委員会において、実に56年ぶりとなる東京でのオリンピック開催が2020年に行われることが決定した。
そのニュースを聞いた時、男は遠くない未来における自身の死を悟った。

謎を解くのに必要な情報を得るために、あなたは「はい」「いいえ」のいずれかでこちらが回答できるような質問を問いかけてください。質問については、以下のフォーマットで出力してください。

# 質問
解くべき真相：[質問を通じて解くべき真相について出力する]
これまでに分かっていること：[これまでの質問に対する回答から分かっていることを要約して出力]
仮説：[男が死を覚悟した理由の仮説について出力する]
質問文：[仮説を確かめるための質問。「はい」「いいえ」のいずれかで回答できるような内容で出力]

私は質問に対して「はい」「いいえ」いずれかの回答を返します。ただし、質問内容が謎の真相に関係しない場合は「関係ないです」といった回答を返します。回答結果から真相を特定できたらその結果を出力し、特定できなかったら真相につながるような質問の問いかけを続けてください。真相については、以下のフォーマットで出力してください。

# 真相
[男が死を覚悟した理由について出力する]

# 注意点
- 仮説や真相については誤っていても良いので、「何らかの」「関連している」などのような抽象的な表現は避けて、具体的に出力してください。
- 真相については、論理の飛躍が無い内容を出力できるように、曖昧な点は質問によって具体化できた段階で答えるようにしてください。

# ヒント
この謎を解くためには、論理的な推論をおこなう「垂直思考」に加えて、発想を飛躍させるような「水平思考」も重要になってきます。時には関係の無さそうな質問をおこなうなどして、仮説立案の幅を広げてみると真相に辿り着きやすいかもしれません。

ルールについて理解できたら「分かりました」と出力し、最初の質問をおこなってください。
```
Prompt Engineeringについてはあまり詳しくないので、もしかしたらもっと良い書き方はあるかもしれません。以下、各記述についての説明です。
```
# 質問
解くべき真相：[質問を通じて解くべき真相について出力する]
これまでに分かっていること：[これまでの質問に対する回答から分かっていることを要約して出力]
仮説：[男が死を覚悟した理由の仮説について出力する]
質問文：[仮説を確かめるための質問。「はい」「いいえ」のいずれかで回答できるような内容で出力]
```
ChatGPTからの質問については、質問文に加えて「解くべき真相」「仮説」の２点も併せて出力してもらうようにしました。「解くべき真相」を毎回わざわざ提示させているのは、会話のやり取りを繰り返すうちに元々の目的を忘れてしまうのか、全然関係のない質問をされるケースが見られたためです。GPT-4でコンテキスト長が大幅に増えたとは言え、細かい指示まで記憶し続けられるかについてはまだ課題があるようです。「仮説」を出力しているのは、各ステップにおいてChatGPTがどのような仮説推論をおこなっているのかを確認するためです。
```
# 注意点
- 仮説や真相については誤っていても良いので、「何らかの」「関連している」などのような抽象的な表現は避けて、具体的に出力してください。
- 真相については、論理の飛躍が無い内容を出力できるように、曖昧な点は質問によって具体化できた段階で答えるようにしてください。
```
一点目については、真相として「男はオリンピックに関連する何らかの理由で〇〇を〜」のように答えになっていない答えを出してしまうことが多く見られたためです。二点目も、「オリンピック開催によって〇〇（オリンピックと全く関係の無い内容）したため〜」など、論理的に繋がりの無い文章を出力してしまうケースがよくあるためです。
ただ、こういった注意書きを事前に与えていても同様の出力は見られたため、「具体的」「論理的」とは何なのかという点についての理解もまだChatGPTには難しいようです。
```
# ヒント
この謎を解くためには、論理的な推論をおこなう「垂直思考」に加えて、発想を飛躍させるような「水平思考」も重要になってきます。時には関係の無さそうな質問をおこなうなどして、仮説立案の幅を広げてみると真相に辿り着きやすいかもしれません。
```
こちらのヒントは、今回確かめたいような「発想の飛躍」を促すために追加してみました。ただ、含めなかった場合とあまり挙動の違いは見られなかったため、そこまで効果はないかもしれません。

以下、ChatGPT(GPT-4)での会話の結果です。ちなみにGPT-3.5では「Yes/Noで回答できる質問をする」といったルールを守れなかったり、途中で諦めて質問を止めてしまうなど、ゲーム自体をまともに続けることができませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/03e5d0a0-41f5-503b-5f90-cedba86dfb39.png)
最初の仮説として、オリンピックに関連する仕事をしておりそれが危険であったという内容を出力してきました。かなり妥当な仮説のように見えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/3dce14eb-9366-3e3d-eb3d-a46ab21f9011.png)
東京が危険な地域かどうかはさておき、場所に関連した仮説を出してきたのは面白いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/6a725e68-8561-0c94-cd3f-4a1572dd4c7e.png)
こちらもかなり妥当な仮説のように見えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/4aeecd8e-f0a3-f563-4a26-cb66e4a83b0b.png)
オリンピック自体ではなく、それに付随する状況の方に注目したようです。目の付け所が良いですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/b1c45f99-fc94-b62d-ee05-e16e44c99aa8.png)
男が病気を持っているという自然な仮説。答えはいいえです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/10e8835e-7e05-8d6b-c0c2-5e0501cefb22.png)
ここでいきなり**犯罪組織の活動**というキーワードが出てきました。そして答えは**はい**です。「死」や「命が危険」といったワードがこれまでに出現していたので、そこからの類推で出てきたものかとは思われますが、元々の問題から考えるとやや飛んだ発想に見えなくもないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/106a8967-4d92-db56-d873-4b7ec7f70352.png)
しかし残念ながらここで結論を急いで不正解の出力をしてしまいました。しかも「オリンピック開催により、自分が関与している犯罪組織の活動が露見」と、論理的な繋がりの無い回答をしてしまっています。先に述べたとおり、ChatGPTは発言の論理的整合性や具体性といった部分についてはまだ完璧ではないようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/d2cad5f7-1791-e821-d948-0ffe202d0f63.png)
反省して質問を再開。仮説としては妥当ですが答えはいいえです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/4f2a4d28-5458-1216-3493-d6be351ed46b.png)
ここでChatGPTは「捜査が強化され、その結果捕まり、報復を受ける」と複数の仮説を含む質問をしてきました。厳しくいくのであればこういった質問はNGであると突っぱねるところではあるのですが、一部は正解しているというのと、この時はGPT-4での対話回数が25回／3時間と制限されていたためあまり会話を長引かせられなかったというのもあり、おまけで回答をしてあげました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/58d999dc-42c2-29ad-cbdb-b80d47464156.png)
**死因については見事に突き止めることができました**。思わずこちらのテンションも上がってしまっています。「はい」だけだとまた先ほど同様に具体性の無い真相を回答してしまいそうであったため、少し質問の方向を誘導し始めています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/607ec38c-8899-a344-ebb5-9d357f09b760.png)
仮説をアップデートしていますが、まだ具体性に欠けています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/c92c9a7a-a04a-aaa1-229f-1dba2596f6dd.png)
内部情報が漏れるという仮説が出たのは面白いですが、「何らかの」といった抽象的な表現が出てきたので注意。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/0488042a-cb09-e274-a204-3d7cc4ed4a84.png)
「**過去に関与した犯罪**」というキーワードが出てきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/7f436830-d66c-0afd-d01c-ad068c8a09ef.png)
だいぶ良い感じなのですが、一番重要なピースをまだ埋められていないため続けてもらいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/b084b1b2-65da-d311-e1ea-f7463b01d6a8.png)
ここからまた時間がかかるかと思いきや、「**インフラ整備**」というキーワードを一発で当ててきました。もうほぼ正解なのであとは一気に行きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/f312a222-d76f-95e1-0ada-1a42b1171e92.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/7698bcb6-b824-ed01-3a2f-1635f9721b17.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/70d34b13-9280-303d-c49a-df130c1d7be8.png)
**正解です**。
対話回数に制限があったためやや誘導気味にはなってしまったのですが、見事に会話から仮説推論をおこなって謎の真相を突き止めることができました。素人が咄嗟に考えた問題ということもあり、「オリンピック」「死」のワードから数ホップで辿り着けるようなレベルの真相ではあったので、本家のウミガメのスープほど発想の飛躍を要するような内容ではありませんでしたが、それでも「犯罪組織」や「インフラ整備」というキーワードをChatGPTが仮説として出してきたのは非常に興味深かったです。
とは言え、発想としてはあくまでこれまでの会話から一歩ずつ可能性を広げていくような方向ではあり、水平思考として言われる「既成の理論や概念に囚われないアイデア」にはまだ程遠いようにも見えます。そのような思考がChatGPTにも可能なのかについては、さらなる検証が必要そうです。（と言ってもこの辺りはすでにOpenAIが色々と実験をしているはずなので、またそのうち驚くような論文が発表されることでしょう...）

# 余談
- ChatGPTとの推理ゲームを通じて、いっけん「既成の理論や概念に囚われない」アイデアも、実はそこに至るまでは無数のロジカルな思考の積み重ねが存在していたりして、実は「垂直思考」と「水平思考」というのは完全に相反するものではないのかもということをぼんやりと思ったりしました。
- と言いつつ、下記のような驚きの結果も。。
![スクリーンショット 2023-03-25 15.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/fee1fb9b-3a21-44b3-5ef2-c01af4d9f532.png)
（中略）
![スクリーンショット 2023-03-25 15.25.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2533248/b6b7cc6a-b76d-17c6-67b4-e9cc5f99e3bc.png)
実は先ほどの推理ゲームとは別に、とある有名な国内ミステリー小説における密室殺人のトリックについて解くことができるかについても実験してみたのですが、なんとこちらも見事正解することができました（ネタバレになってしまうのでほぼ伏せ字ですが）。問題設定をアレンジして若干解きやすくはしていたものの、こちらの問題はそれこそ「発想の飛躍」が必要な謎であったため、正直これを解かれてしまった時は若干の恐怖を覚えました。。既存作品なのでこちらもネタバレサイト等の文章で答えを知ってしまっていた可能性はありますが、ChatGPTの持つポテンシャルについてはまだまだ深く掘り下げていく必要がありそうです。