2011年05月26日

Akinator アキネータの仕組み

このエントリーをはてなブックマークに追加
follow us in feedly
あれはどうやってるのでしょうか?






[iPhoneアプリ] Akinator(アキネイター)が答えを当てる仕組みを考えてみました

プログラマがランプの魔人の中身を分析してみる

という感じに考えた人はたくさんいますが....
これでも全然Akinatorの本質には迫ってないと思います。









○たった20〜40問の質問しかしない。
登録されてる質問の総数は、当然もっと多いのですが、そもそもAkinatorは質問を十分に選定してるのです。

この点に触れて考えている人が居ないようなのですが、おそらく、これこそがAkinatorの本質です。
Naive Baysがどうとかいうよりも、根本的にもっと手前の考えが必須です。






まず、このような仮定に基づいて考える

・すべての質問文に”正答”がある。
・ユーザの回答は100% 絶対に間違えない


おそらく....


相互情報量の大きい質問をする

C4.5は、決定木生成プログラムである。
C4.5は、相互情報量を最大化する データ分割を行おうとする。
つまり決定木によるデータ分割と同じ考えをすればよい。
あとは、この本を読んでください。






この場合、クラス、は存在しないが...
回答つまりすべてのキャラクタが1クラスであると考える。

Akinator1Akinator11
Yes/No どちらの回答であっても最大の情報量を得られる質問を選定する。
....つまり、分割後の両辺が釣り合う質問をする。



Akinator2Akinator12
ここまでの回答から残った範囲で
回答範囲を徐々に絞っていく

最大の情報量がある質問をするのです。

akinator34

akinator35

akinator32

akinator33




ただし、基本的にすべてのクラスの価値は平等であるはずだが...
もしかすると、
回答が多いクラスほど、重要度を上げているのかもしれない。

....つまり、例えば、最近多い回答は優先的に考慮対象となる。など


Akinator9Akinator4Akinator13

そうやって最適な質問文を選ぶことこそが本質であるので、
こういう質問文が来るのです。


akinator7
Akinator8








実際にはユーザは回答を間違える...というか、同じ質問文でもYes/No 正反対の回答をするユーザがいたりするので、
そのようなレベルになって始めてベイズの定理など確率的な考えを導入するのです。
Akinator10


トラックバックURL

コメント一覧

1. Posted by 沙緒   2012年10月14日 17:09
あれっしょ、消去法っしょ。

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments