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