不気味に正確なAIを活用した20問のシンプルなオンラインゲーム。
彼らはどうやってそんなによく推測しますか?
これをバイナリ検索アルゴリズムと考えることができます。各反復で、質問をします。これにより、可能性のあるWordの選択肢のほぼ半分が削除されます。合計N個の単語がある場合、log2(N)の質問の後に回答が得られることが期待できます。
20個の質問で、2 ^ 20 = 100万語の中から最適な単語を見つけることができるはずです。
外れ値(間違った答え)を排除する簡単な方法の1つは、おそらく [〜#〜] ransac [〜#〜] のようなものを使用することです。これは、回答されたすべての質問を考慮する代わりに、小さなサブセットをランダムに選択することを意味します。これは、単一の回答を与えるのに十分です。今、あなたは質問の異なるランダムなサブセットでそれを数回繰り返し、ほとんどの時間を見るまで、あなたは同じ結果を得ています。そうすれば、正しい答えが得られます。
もちろん、これはこの問題を解決する多くの方法の1つにすぎません。
ここでゲームについて読むことをお勧めします: http://en.wikipedia.org/wiki/Twenty_Questions
特に「コンピューター」セクション:
ゲームは、任意のオブジェクトを識別するために必要な情報(シャノンのエントロピー統計で測定)が約20ビットであることを示唆しています。このゲームは、情報理論について人々に教える際の例としてよく使用されます。数学的には、各質問がオブジェクトの半分を削除するように構成されている場合、20の質問により質問者は2つを区別できます。20 または1,048,576件の被験者。したがって、20の質問の最も効果的な戦略は、残りの可能性の分野を毎回ほぼ半分に分割する質問をすることです。このプロセスは、コンピューターサイエンスのバイナリ検索アルゴリズムに似ています。
決定木は、この種のアプリケーションを直接サポートします。デシジョンツリーは、人工知能で一般的に使用されます。
デシジョンツリーは、各ブランチで「最良の」質問を行い、その左右の子で表されるコレクションを区別するバイナリツリーです。最適な質問は、20個の質問アプリケーションの作成者がツリーの構築に使用する学習アルゴリズムによって決定されます。そして、他のポスターが指摘しているように、20レベルの深さのツリーは、100万ものものを提供します。
各ポイントで「最良の」質問を定義する簡単な方法は、コレクションを半分に最も均等に分割するプロパティを探すことです。そうすることで、その質問に対してyes/noの回答を得ると、各ステップでコレクションの約半分が削除されます。これにより、バイナリ検索を近似できます。
ウィキペディアには、より完全な例があります。
http://en.wikipedia.org/wiki/Decision_tree_learning
一般的な背景:
「インターネット上のニューラルネット」と自称しており、そこに鍵があります。予備のマトリックスに質問/回答の確率を保存する可能性があります。これらの確率を使用して、決定ツリーアルゴリズムを使用して、次の質問を絞り込むのに最適な質問を推測できます。可能な回答の数を数十に絞り込んだり、すでに20の質問に到達している場合は、最も可能性の高いものから読み始めます。
20q.netの本当に興味深い側面は、私が知っているほとんどの決定木アルゴリズムやニューラルネットワークアルゴリズムとは異なり、20qはスパースマトリックスとインクリメンタル更新をサポートしていることです。
編集:答えがネット上にずっとあることが判明します。発明者のロビン・バーゲナーは、彼のアルゴリズムを 2005年の特許出願 で詳しく説明しました。