下ネタは何がおもしろいのか?ボケとツッコミについて

2016年07月01日

アキネーターのアルゴリズムを想像で書いてみる

アキネーターは、いくつかの質問に答えることで、心に描いたある人物を当てる、というゲームである。
実際にやってみると、「なぜこれだけの質問で?」と思ってしまうほどの少ない質問で、僕が心に描いた人物を当ててくれる。
このアキネーターはその仕組みを一切公表していない、とのことだが、それを想像で書いてみる、という試み。

まず、これはエキスパートシステムの一種であることはほぼ間違いないだろう。
エキスパートシステムとは、第2次AIブームぐらいまでは研究、実用されていた技術で、当時はニューラルネットと対立していたものである。というよりも、当時はむしろエキスパートシステムのことこそを「人工知能」と呼び、ニューラルネットと分けていたような感じだった。ニューラルネットを研究している人は、エキスパートシステムと一緒にしてほしくなくて、「人工知能」と呼ばれることも避けているような感じだった。

エキスパートシステムについてそれほど詳しくはないので、かなり大雑把な説明になるが、「もしAならB」という分岐で、対象を絞り込んでいくことで正解にたどり着く、というもの。「エキスパート」という言葉に表れているように、ある分野についてのエキスパート(熟練者)の知恵を「もしAならB」で体系化する、というもの。
たとえばこれにより、医者が普段行う診察をコンピューターで再現できる、という脳天気なものだ。
「もし熱が38度以下なら喉を見て、喉が腫れていたら◯◯で、腫れていなかったら首のリンパを触ってみて、首のリンパが腫れていたら、、、、薬△を一週間分処方する」といった感じ。
つまり、コンピューターの内部に無数の「もしAならB」という条件分岐が書かれたものが構築されるのである。

「こんなものを『知能』と呼ぶのか」と、当時は生意気なことを言ったものだ。
(今も思っているが口には出さない。)

これはアキネーターが質問を繰り返すことによって、ユーザーが心に描いている人物に絞り込んでいくことに似ている。
アキネーターは現在、9ヶ国語に対応しているのだが、おそらくその言語によって、当てる対象人物のデータベースも異なることは想像がつく。

アキネーターのおもしろいところは、結構な確率で間違うこともあるのだが、一度間違えるとそれを学習して、新たな知識として蓄積する、という点である。
実はこの記事を書くに先立って、久しぶりにアキネーターをやってみたのだが、僕がとっさに浮かんだ人物はちょうど昨日の記事に書いたこともあって、中ザワヒデキだった。(笑)
「50歳以上ですか?」、「名前に漢字とカタカナが含まれますか?」という質問があったのでそれらに答えていったら、アキネーターが出した答えは「尾木ママ」だった(笑)。
アキネーターは、出した答えが間違いだった場合、そのまま続けるかを聞いてくる。そのまま続けると、さらに質問を繰り返して、答えようとする。「尾木ママ」の後にいくつか質問を繰り返して出した二回目の答えは「畑正憲」だった(笑)。
アキネーターは、ユーザーが心に描いている人物がわからない場合は「降参」する。
結局アキネーターは、中ザワヒデキを当てられず、降参した。
降参した場合は新たな知識として蓄積するために、その正解の人物名と「何をする人か?」を入力するようになる。
それ以降は、新たに蓄積された回答候補の「中ザワヒデキ」がデータベースに載ることになる。
そして、尾木ママとの間に線引きがされ、ムツゴロウさんとの間にも線が引かれる。

そこでもう一度、中ザワヒデキを思い描いてやってみた。
前回は聞かなかった質問が繰り返され、何度か間違った答えが出されたが、最終的には中ザワヒデキに辿り着いた。
ここでされた質問とその答えの組み合わせは、「知識」として蓄積され、以降、誰かが中ザワヒデキを思い浮かべながらやった場合は、かなりの確率で正解を出すようになる。
つまり、まだよく分かっていない人物については最初から当てにいこうとするのではなく、それまでにしていない質問をしてみることで、知識をふくらまそうとする。
そして、ある程度知識が蓄積されたあとは、より少ない質問数で正解にたどり着く。

エキスパートシステムはこういうやり方で、「もしAならB」という組み合わせを追加・変更していく、というものも含むのかどうかよく分からないが、アキネーターは以上のような学習の仕方で知識を蓄積していく仕組みで動いている、はずだ。 

以上をまとめると、アキネーターのアルゴリズムは以下であると想像できる。
  • 「もしAならB」という条件分岐を動的につなぎ合わせる仕組みを持っている。
  • 過去の質問とその結果の組み合わせをデータベースに蓄積する。
  • 新しい人物が追加された場合は、それをデータベースに追加し、それ以降はその人物についてまだしていない質問をすることで、その人物についての知識を増やそうとする。
  • ある程度知識が蓄積された人物については、より少ない質問数で正解にたどり着くようにする。
エキスパートシステムは、第2次AIブーム以降に「こんなものは知能ではない」と結構叩かれた。僕もそう思っていた。ニューラルネットと比較すると、どうしてもその還元主義的なアプローチを「知能」と呼ぶことに違和感を感じていた。
今でもその気持ちは変わらないが、アキネーターが条件分岐を動的につなぎ合わせることで内部状態を変化させていく、ということ自体はおもしろい、と思う。
「こんなものは知能ではない」という気持ちには変わりはないが。


OLランキングで1位になりたい!賛同していただける方は下記をクリック!
にほんブログ村 OL日記ブログ ドジOLへ
myinnerasia at 08:02│コンピューター科学 
下ネタは何がおもしろいのか?ボケとツッコミについて