質問を繰り返して真相を推理するクイズ「水平思考ゲーム」

河津正和氏:それでは私から発表をしたいと思います。だいぶライトな内容で恐縮ですが、お付き合いくださいませ。では「ChatGPTで水平思考ゲームを行えるか試してみた」という題名で始めます。

突然ですがみなさん、水平思考ゲームってご存じでしょうか? 名前を聞いたことはありますかね? 水平思考ゲームとは、出題者が読み上げる謎の物語に対して、回答者が「はい」か「いいえ」、もしくは「関係ありません」のいずれかで答えられる質問を繰り返すことで、状況を整理して真相を推理する形式のクイズです。

これだけだとなかなかイメージがしにくいと思うので、例題を用意してきました。水平思考ゲームの例題の問題文はこちらです。1つは「リュックから弁当箱を引っ張り出した男は『自分はもうすぐ死んでしまうのだ』と悟った。いったい何があったのだろうか」という問題です。どういう状況か、この文章からわかる方はいますかね? わからない方が多数じゃないかと思います。

この謎の物語に対して回答する人はどういうことをすればいいかというと、どんどんゲームマスターの人に質問をしていくんですね。例えば「場所は重要ですか?」という質問をして、ゲームマスターの人が「はい」か「いいえ」か「関係ない」で答えられます。「場所は重要ですか?」という質問に対して「はい」という答えだったら、「あ、(場所が)関係あるのか」とヒントを得られる。

あとは「弁当箱を引っ張り出す行為というのは、お弁当を食べるために行ったか」という質問ですね。これに対して「いいえ」という回答があれば「あ、別にお弁当を食べようとしたわけじゃないんだ」ということがわかります。「はい」か「いいえ」というヒントを集めていくことで、先ほどの謎の文章がどういうシチュエーションだったのかを探っていくゲームです。

この問題の解答をちょっと読み上げますね。「自家用飛行機で気ままに空を飛んでいた男。しかし突如、エンジントラブルで脱出を余儀なくされてしまう。男はすばやくパラシュートの入ったリュックを背負い大空に飛び出す。『そろそろパラシュートを開く頃だ!』と、リュックから出ている紐を引っ張ると巾着袋に入った弁当箱が出てきた。どうやら間違えて持ってきたらしい。男は静かに目を閉じ、祈った」というのが解答文ですね。

つまり、「スカイダイビングをしようとしてパラシュートを背負ったはずがリュックだったというシチュエーションでした」というのが、ここの例題の解答になります。このように自分でゲームマスターに質問をしてヒントを集めていって、どういうシチュエーションだったかを集めていくゲームが水平思考ゲームです。

出題文の特徴は「一見筋が通らない話であること」と「情報が秘匿されていること」

ここの出題文の特徴の1つが「一見筋が通らない話」です。出題文のみだと意味が通らない内容になってしまって、その意図を探ることが回答者の役割になるというのが特徴その1です。

2つ目は「情報が秘匿されている」。回答に必要な情報が出題文にあえて隠されていて、隠されているからこそ一見矛盾した内容になっています。その情報を質問しながら集めることを回答者の役割とするというのが出題文の特徴になってくると思っています。

この水平思考ゲームは、テーブルゲームみたいなものですが、これは基本的には対人で行うゲームで、通常はそれでしか成り立ちません。というのは、その出題文と、このシチュエーションを、そのゲームマスターがきちんと理解していないといけないからです。

あとは回答者がする、例えば「場所は重要ですか?」という質問に対して、その文脈や、その回答がどういう状況かを判断して、「はい」か「いいえ」を判断しないといけません。これは人じゃないとなかなか難しいですね。人じゃないと難しいですが、ChatGPTの力を借りてそこをやってみようというのが今回取り組んだものになります。

GPT-3.5で試したらぜんぜんダメだった

まずはGPT-3.5で試してみました。結論から言うと、3.5はうまくいかなかったです。

「水平思考ゲームの問題を出してください」というところのプロンプトを今(スライドを)お見せしたかたちで打ってみました。出題されていますね。

それに対していろいろと質問をしました。「森には出口はありますか?」という質問に対しては「その点については問題文には触れられていません」という「はい」と「いいえ」じゃない回答が返ってきていない感じですね。

答えがわからないので「降参します。解答を教えてください」と言ったところ、「問題の答えはありません」と返ってきて、これは期待したものではありませんでした。

水平思考ゲームの別の呼び名は「ウミガメのスープ」なんですが、「ウミガメのスープと言われる問題を出してください」という聞き方をしてみたところ、それに出てきた回答は「ウミガメのスープを作ることができるでしょうか?」という、単語を組み込んだ出題という扱いになっていて、ぜんぜんダメでした。

GPT-4で試したらだいぶ改善された

これをGPT-4で試してみました。(GPT-3.5の時と)同じ文章で打ったところ、それに対して問題が出てきました。「ある日、夫と妻が一緒にピクニックを楽しんでいました。突然、夫は妻に向かって石を投げましたが、(妻は)怒ることなく微笑んでいました。なぜでしょうか?」という問題が出てきて、いろいろと質問していくと、きちんと「はい」と「いいえ」で答えてくれていてけっこういい感じですね。

これは特にプロンプトを変えているわけではなく、GPT-4にしただけでだいぶ改善されました。いろいろと「はい」と「いいえ」で答えてくれていますね。

最終的に解答にたどり着くことができました。「夫は鳥に石を投げて、鳥はそれに驚いてその場から飛び立って、妻はそれを見て喜んだ」みたいな内容で、一応筋が通っているというか、そういう物語に対しての問題というところで、まぁまぁゲームとしては成り立っているかなというところまでたどり着きました。

ゲーム体験を上げるために5つの制約条件を追加

ここからもうちょっとゲームの体験を上げていくために、いろいろとチューニングをしていこうと取り組んでみました。先ほどは「問題を出してください」という文章だけだったのですが、それに対していくつか制約条件を追加してみました。

5つ追加しているのですが、その1つとして「問題の解答は一般的な道徳観、倫理観に則ったものになること」という条件を追加しました。先ほどの解答だと、「石を投げて鳥がかわいそう」とちょっと思ってしまったので、解答を見た時にそういう不快感があまり出ないようにしました。

ほかには「問題の解決は起承転結を踏襲した物語であること」、「その解答は特殊なシチュエーションでしか起こり得ない物語であること」という、この3つの条件を追加しています。実際に解答を聞いた時に「あ、こういう物語だったのか」「それであれば成り立つね」という一種の満足感を上げるために、このような制約条件を追加するという工夫をしています。

あとの2つとして「出題を70文字以内で行うこと」と「出題文それ自体では、一見矛盾しているようなシチュエーションとなっていること」という2つの制約条件を追加しています。「一見矛盾しているように」というのを追加することで、それらしい出題にしようということと、70文字以内にして、あえて文字数を下げることでヒントの文字数自体を少なくして難易度を上げてみようと取り組んだ感じです。

実際にこれで出題をしてもらいました。出題と解答だけを確認したかったのですぐに降参しちゃったんですが「スティーブは自分の部屋で友人が彼の名前を呼んでいるのを聞いたが、友人はそこにいなかった。どうしてでしょうか?」という出題に対して、実際の解答はどうだったかというと「スティーブはオンラインゲームをプレイしていて、ゲーム上で彼の問題を呼んでいたから部屋にはいなかった」。

だいぶそれらしい内容というか、この出題文だけでは(解答が)オンラインゲーム(だから)というところまではわからず、ここは質問しないとたどり着けないのでけっこういい問題文になってきているのでは、チューニングが良くなってきているのではというところを得ることができました。

GPT-4を使う上での注意点

ちなみにGPT-4は、3時間で25メッセージしか送れないという縛りがあったりして、25回の質問で解答まで導かなければいけないという、謎の縛りが意図せず発生します。

また、(スライドを示して)一部の回答内容はこういったかたちで注意されてしまいます。「規約に抵触しますよ」という注意がされてしまうので、例えば「誰かが亡くなってしまった」みたいな問題に対しては、なかなか質問をしていくのが難しくなります。

これは出題の制約に「平和な世界観を」みたいなものを追加する必要があるかなというところがあって、自由な出題というのはこういったところからもなかなか厳しいのかもしれないということがわかりました。

ゲームマスターの役割は十分に果たしてくれそう

ではまとめに入ります。水平思考ゲームのゲームマスターとしての役割は十分に果たしてくれそうだなということで、このLTに向けてだいぶ1人遊びをしたんですけど(笑)。個人的にはだいぶ満足をした感じです。ある程度の難易度チューニングについては制約条件を追加することで可能だろうと思っているものの、けっこうむらっけはあるなというのが所感なので、もうちょっと良いチューニング方法はあるだろうなと思っているところです。

あとは1人だと寂しいので、対人で遊びましょうというところでした。ではだいぶライトな内容でしたが、以上で発表を終わります。ありがとうございました。