まいさんの日記

まいさんが、趣味的な記事を書くところです。はてなダイアリーの「まいさんの日記」のから引っ越しました。

過去のイベント配置図や中国麻将の話題は、「 まいさんのホームページ DTI版」へ  
Twitter(@maisan_t)もやってます  

Akinatorの仕組みのこと

 既にだれでも知っているネットで流行った、キャラ当てのAkinatorですが、先日の週末の新年会でこれをネタに大盛り上がりするなど、何回やっても面白いので、今日も遊んでしまいました。
 今日はちょうど手元に「東方求聞史記」があったので、著者である稗田阿求さんを当てさせてみました。阿求さんは東方キャラの中では、それほど東方らしい特徴のないキャラなので、どんなふうに当てに来るか楽しみにして遊びました。
 なお、質問は日本語に訳しております。括弧内は稗田さんに対する正解になります。(質問終了後にDetailを選択する事で、質問の履歴、プレイヤーの回答、そのキャラの「正解」が表示されます)

    • そのキャラは国際的に有名ですか?(NO)
    • そのキャラは女性ですか?(YES)
    • そのキャラはあなたの家に住んでいますか(NO)
    • そのキャラはあなたを知っている?(NO)
    • そのキャラはブラジル人ですか?(NO)
    • そのキャラは歌手ですか?(NO)
    • そのキャラは実在しますか?(NO)
    • そのキャラは学校に通っていますか?(NO)
    • そのキャラは帽子や冠を被っていますか?(NO)
    • そのキャラは飛べますか?(NO)
    • そのキャラは闘いますか?(NO)
    • そのキャラは子供ですか?(YES)
    • そのキャラは漫画のキャラですか?(NO)
    • そのキャラは日本アニメのキャラですか?(NO)
    • そのキャラはゲームのキャラですか(YES)*1
    • そのキャラは髪が長いですか?(NO)
    • そのキャラはアメリカ人ですか?(NO)
    • そのキャラは人間ですか?(YES)
    • そのキャラは兄弟・姉妹がいますか?(NO)
    • そのキャラはお金が本当に好き?(NO)

 さて、これで実際に「稗田阿求」が出たから驚きです。(彼女を知っている人なら、この質問だけで彼女に特定されるのを不思議に感じるのではないでしょうか)
 彼女の特徴らしい特徴には一切触れず、最後まで「そういうキャラも多いし、そうでないキャラも多い」「そういうキャラもたまにいるけど、阿求さんはそうでない多数派」といった質問だったと思います。
 もし、自分が稗田阿求についての特徴を言うとしたら、「東方のキャラ」、「一度見たものを忘れない特殊な能力の持ち主」、「長生きできない」、「頭には花の飾り」、といった彼女の設定、能力、外見について話すと思います。しかし、質問では外見を聞かれた質問にはせいぜい「帽子を被っているか」「子供か」「長髪か」くらいしかありません。能力に関してYESと答えた質問はありませんでした。
 Akinatorに当てられて驚く理由としては、このように人間が何かを当てるときと、このプログラムが当てるときの、プロセスの違いからくるものが大きいと思いますね。

 まあ、驚いてばかりいるのも何ですので、この仕組みについて少し解説。ある程度調べただけの内容ですので、どこか根本的に間違っているかも知れません。そこは大目に見てください。
 まず、前提としてこのシステムは、

    • キャラクター(人物など)を当てる
    • キャラクターはプレイヤーの方で新たに追加できる
    • 質問も自由に追加できる

 というものです。ただ当てるだけのシステムは過去にも同様なものがありましたが、このシステムの特徴はキャラクターに特化した上に、「追加できる」事による自己成長だと思います。
 システムに登録されていないキャラは当然回答してくれませんから、ある程度の質問を受けた後にプレイヤーの方で登録ができることになっています。また、キャラに対する情報などが不足して1人に絞り込めなかったりした場合は、いくつかの候補から思ったキャラを選ぶようにもなっています。
 「稗田阿求」も昔にだれかが登録したはずです。その後、なかなかシステムの方で当てられなかったり、候補一覧から選んで教えてもらうような時代を過ごしながら、多くの質問に対する正解(YESとNO)が蓄積され、規定の質問回数で当ててもらえるキャラに変化したのでしょう。
 また、順当に当てられるようになってからも、貪欲?に情報を蓄積しているようです。今回の質問でも、20問目の質問「そのキャラはお金が本当に好き?」についてはシステム側で設定されている「正解」はありませんでした。これは、19問目までに「稗田阿求」であることを絞り込めており、最後の1問では、これまで稗田阿求に対して質問された事のない(または少ない)質問を出す事で、この質問に対する阿求にとっての正解を追加する、そういう目的でシステム側が出してきた質問だったのではと推測できます。
 このようにして、稗田阿求に対してシステムの持つ質問に対するYES/NOの情報をどんどんと集め、より効率のよい絞り込みができるようにしていると推測されます。今回に限らず、プレイしていると終盤の18〜20問目近くで、何か的外れな質問をしてきたりするのは、このようにしてキャラクターについての学習していると思われます。
 質問文も、内部で評価されているようで、よい質問は頻繁に出るように、そうでない質問は出ないようになっているようです。たぶんここでの「よい質問」は、特徴的なキャラの特徴をズバリ当てるような質問でなく、キャラを大きく二分するような質問だと推測されます。これまでの質問に合致しているキャラを効率的に絞り込む(YESとNOどちらでも人数を減らせる)質問を選んで、絞り込みをしていると思われます。つまり特定のキャラを狙ったような質問は、ほとんどのキャラクターがNOと答えるような質問になり、絞り込みの用途には不適という事になりそうです。
 逆に言えば、もしそういう質問が出る場合は、その質問でキャラを絞り込める段階まで進んでいるか、これまでの傾向で「多くの人が選ぶ人気キャラの特徴であり、YESを選ぶ割合が高い」といった統計がなされている場合と思われます*2。どちらにしても、当てる直前まで来ているのでしょう。遊んでいる側から観ると、いきなりそのキャラクターを狙ったような質問が来て、心を読まれたような印象を受けるのでしょうね。

 ここまで読んでいただければ、予想されていると思われますが、質問文は他の質問文、またはキャラクターと関連づけられていないと思われます。考えてみれば、プログラムであるシステムが、質問文の文法や内容を解釈しているとは考えにくく、単に膨大な質問とその答えから絞り込んでいると考えるのが妥当でしょう。
 阿求の質問で「実在でない」と回答した後に「飛べますか」「闘いますか」など、アニメやゲームのキャラクターにありがちな質問が続いたのも、上記の「効率的な絞り込み」の結果でしょうね。これらの選択肢はほぼ毎回のように見ますので、内部的にも「よい質問」とされていると推測されます。
 また、「日本人ですか?」という質問をYESと回答した後に「アメリカ人ですか?」といった質問を聞かれる事も多々あります。人間のやる質問なら、日本人ならアメリカ人でないことは明らかですが、「システムが質問文を理解できない」「各質問の内容にかかわらず、YES/NOのデータを蓄積するシステム」であれば、納得できる事です。*3
 そのほか、各種統計情報や、特別なアルゴリズムを駆使して当てに来るような仕組みが入っているのではないかと思われます。結局は、誰かが入れた文章をそのまま出しているだけですが、このような人間的な質問をしてくるところが、Akinatorの「機械を感じさせない」面白さの演出になっていると感じます。

 しかしながら、このような仕組みを理解しても、なーんだと思うどころか、逆に驚きと感心を増すばかりだったりします。
 もっとも、いちばん驚いたのは、最後にキャラクター名とともに出る画像が「Google イメージ検索」で拾ってきているという事を知ったときだったりします(笑)。

*1:自分はここで「たぶん違う」といった選択をしたが、このキャラに期待される答えはYESらしい

*2:たとえば、これまでの質問で合致するキャラが10名いたとしても、プレイヤーの多くはそのうちAというキャラについて当てさせていると統計されていたら、この段階でAを絞り込める質問をして、残りを学習用の質問にしたりすることもあるでしょう

*3:とはいえ、日本人とわかっているならアメリカ人でないため、キャラの絞込みには不適な質問(この時点まで絞り込んでいたキャラならほぼNOになる)と思われますので、これも統計的な学習中のひとつなのかなあ?