20の質問AIアルゴリズムはどのように機能しますか?


103

不気味に正確なAIを利用した20問のシンプルなオンラインゲーム。

彼らはどのようにそれをうまく推測しますか?


これは、これまでに見たAIの中で最高の20問です。それ以外の場合は、他のいずれかにリンクします。
ダディウォーボックス2009年

1
結構。私の知る限り、Akinatorは20q.netよりも直感的に推測しやすいようですが。いわば、それが特に「スマート」になる理由に興味があります。
ダディウォーボックス2009年

1
私はこのことがオンラインで存在することを知りませんでした。3回目の試みで「松ぼっくり」を推測しました。印象的
PeterPerháč2009年

3
+1-間違いなくプログラミング関連、そして良い質問です。
アダムデイビス

@JeffAtwoodどの記事にリンクしようとしていましたか?
antony.trupe 2014

回答:


55

バイナリ検索アルゴリズムと考えることができます。各反復で質問をします。これにより、可能な単語の選択肢の約半分が削除されます。合計N個の単語がある場合、log2(N)の質問の後に回答を得ることが期待できます。

20問の質問では、2 ^ 20 = 100万語の中から単語を最適に見つけることができるはずです。

外れ値(誤った回答)を排除する簡単な方法の1つは、おそらくRANSACのようなものを使用することです。これは、回答済みのすべての質問を考慮する代わりに、ランダムに小さなサブセットを選択することを意味します。これは、単一の回答を提供するのに十分です。今度は、ランダムな質問のサブセットを数回繰り返して、ほとんどの場合同じ結果が得られるまで繰り返します。あなたはあなたが正しい答えを持っていることを知っています。

もちろん、これはこの問題を解決する多くの方法の1つにすぎません。


4
この単純なプログラムは、あなたが話していることをかなりうまく示しています。そこに着くと、codeリンクをクリックしてそれを見ることができます:openbookproject.net/py4fun/animal/animal.html
Noctis Skytower

そのようなAIはサービスとして利用できますか?すべての質問と回答を提供し、それを見つけさせたらどうなりますか?
tggagne 2015年

そして、あなたはこの種のアルゴリズムを何と呼びますか?名前はありますか?
tggagne 2015年

25

決定木はこの種のアプリケーションを直接サポートします。決定木は一般的に人工知能で使用されます。

デシジョンツリーは、各ブランチで「最良の」質問をして、その左と右の子によって表されるコレクションを区別するバイナリツリーです。最良の質問は、20の質問アプリケーションの作成者がツリーを構築するために使用するいくつかの学習アルゴリズムによって決定されます。次に、他のポスターが指摘しているように、20レベルの深さの木は、100万個のものを与えます。

各ポイントで「最良の」質問を定義する簡単な方法は、コレクションを半分に最も均等に分割するプロパティを探すことです。そうすることで、その質問に対する「はい」または「いいえ」の答えを得ると、各ステップでコレクションの約半分が取り除かれます。このようにして、バイナリ検索を概算できます。

ウィキペディアはより完全な例を示しています:

http://en.wikipedia.org/wiki/Decision_tree_learning

そして、いくつかの一般的な背景:

http://en.wikipedia.org/wiki/Decision_tree


2
+1、私はそれがAtwoodの記事のコメントの1つだったことに気付くでしょう。
cgp 2009年

1
確かに、BASICプログラムのAnimalには、使用する質問とそれらを配置するためのツリーの高さを決定するトレーニングアルゴリズムがありません。訓練された決定木でのパフォーマンスははるかに優れているはずです。(私は、アトウッドがニューラルネットワークではなく、元のアニマルアルゴリズムによって生成された質問に非常によく似た質問をしたことについてのコメントに同意します。)
Nathan Shively-Sanders

24

ここでゲームについて読むことをお勧めします:http : //en.wikipedia.org/wiki/Twenty_Questions

特にコンピュータセクション:

ゲームは、任意のオブジェクトを識別するために必要な情報(シャノンのエントロピー統計によって測定される)が約20ビットであることを示唆しています。ゲームは、情報理論について人々に教えるときの例としてよく使用されます。数学的には、各質問がオブジェクトの半分を排除するように構成されている場合、20の質問により、質問者は2 20または1,048,576の主題を区別できます。したがって、20の質問の最も効果的な戦略は、残りの可能性のフィールドを毎回およそ半分に分割する質問をすることです。このプロセスは、コンピューターサイエンスのバイナリサーチアルゴリズムに似ています。


2
それはそれのいくつかを説明します。しかし、間違った答えや一般的な曖昧さを考えると、それはそれほど簡単ではないように見えます。
ダディウォーボックス2009年

1
リンクを見ると、これは本当にフィールドを毎回半分に分割できるはい/いいえの質問ではないことがわかります。あなたの答えは20問で正しいですが、Shaunの答えはより正確で、単純な最近傍学習アルゴリズムと十分なユーザー入力により、非常に正確な結果が得られると思います。
z-

ああ、確かに、それらは似ていますが、間違いなく最も近い隣人がより理にかなっています。
cgp 2009年

12

それは「インターネット上のニューラルネット」として自分自身に請求し、そこに鍵があります。質問/回答の確率を予備のマトリックスに格納する可能性があります。これらの確率を使用して、決定木アルゴリズムを使用して、次の質問を絞り込むのに最適な質問を推測できます。可能な回答の数を数十に絞り込んだり、すでに20の質問に達している場合は、最も可能性の高いものから読み始めます。

20q.netの本当に興味深い側面は、私が知っているほとんどの決定木やニューラルネットワークアルゴリズムとは異なり、20qはスパースマトリックスと増分更新をサポートしていることです。

編集:答えは今までずっとネット上にありました。発明者であるロビンバージェナーは、彼の2005年の特許出願で彼のアルゴリズムを詳しく説明しました。


6

学習アルゴリズムを使用しています。

k-NNはこれらの良い例です。

ウィキペディア:k最近傍アルゴリズム


4
この場合、最近傍アルゴリズムは良い選択ですか?それは間違った答えを許し過ぎるように思われ、膨大な数の次元になり、その多くにはデータがありません。(私はハミング距離と質問ごとに1つの次元の使用を想定しています。)決定木は、より自然に適合しているようです。
カイロタン2009年

1
学習理論は正解です。誰もが犯しがちな間違いに基づいているため、「正確な」回答が少なくても問題ありません。
ジョナサンプラケット2014年

それで、これはどのようにして質問するのに最適な質問を特定するのに役立ちますか?
トーマスアーレ2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.