答えて
バイナリ検索アルゴリズムと考えることができます。 各繰り返しで、私たちは質問をします。これにより、可能な単語の選択肢のおよそ半分が削除されるはずです。 N個の単語の合計があれば、log2(N)個の質問の後に答えを得ることができる。
20の質問では、2^20 = 100万語の単語を最適に見つけることができます。
アウトライア(間違った回答)を排除する簡単な方法は、おそらくRANSACのようなものを使用することです。これは、答えられたすべての質問を考慮するのではなく、ランダムに小さなサブセットを選ぶということです。これはあなたに1つの答えを与えるのに十分です。今度は、あなたがその時間のほとんどを見るまで、あなたは同じ結果を得ています。あなたは正しい答えがあることを知っています。
もちろん、これはこの問題を解決する多くの方法の単なる1つの方法です。
最近隣人アルゴリズムはこの場合?間違った答えをあまりにも容赦すると思われ、膨大な数の次元に終わる可能性があり、その多くはデータなしです。 (私は、ハミング距離と質問ごとに1つの次元を使用すると仮定しています)。決定木はより自然にフィットするようです。 – Kylotan
学習理論は正しい答えです。誰もがやろうとしているミスに基づいているため、「正確な」答えが少なくても問題ありません。 –
これはどのようにして最高の質問をするのに役立ちますか? –
私はここでゲームについて読んでお勧めします。特にhttp://en.wikipedia.org/wiki/Twenty_Questions
コンピュータ]セクション:
ゲームは(シャノンのエントロピー 統計によって測定されるような)情報 ことを示唆しています 任意のオブジェクトを識別するために必要な値は約20ビットです。 教えている人の情報 の理論については、 ゲームが例としてよく使われます。数学的には、各 の質問が のオブジェクトの半分を排除するように構成されている場合、20の質問 は、 を2 または1,048,576件の間で区別することができます。 従って、20の質問のための最も有効な 戦略は、 残りの可能性フィールド のフィールドを約半分に分割する質問をすることです。プロセス は、コンピュータサイエンスのバイナリ検索 アルゴリズムに類似しています。
それはそれのいくつかを説明します。しかし、間違った答えや一般的なあいまいさを考慮すると、それほど簡単ではないようです。 –
リンクを見ると、毎回半分ずつフィールドを分けることができるはい/いいえの質問ではないことがわかります。あなたの答えは20の質問に対して正しいですが、私はShaunの答えがより正確で、単純な最近傍学習アルゴリズムと十分なユーザー入力があると非常に正確な結果が得られると考えています。 –
ああ、確かに、彼らは似ていますが、間違いなく最も近い隣人は意味があります。 – cgp
決定木は、この種のアプリケーションを直接サポートします。意思決定木は人工知能でよく使用されます。
決定木は、左右の子で表されるコレクションを区別するために、各ブランチで「最高の」質問をするバイナリツリーです。最良の質問は、20の質問アプリケーションの作成者がツリーを構築するために使用する学習アルゴリズムによって決まります。それから、他のポスターが指摘するように、深さ20レベルの樹木はあなたに何百万ものものを与えます。
各ポイントで「最高の」質問を定義する簡単な方法は、コレクションを最も均等に半分に分割するプロパティを探すことです。そうすることで、その質問にイエス/ノーの回答が得られたら、各ステップで約半分のコレクションを取り除くことができます。この方法でバイナリ検索を近似することができます。
http://en.wikipedia.org/wiki/Decision_tree_learning
そして、いくつかの一般的な背景:
+1、私はそれがAtwoodの記事のコメントの1つであったことに気づくでしょう。 – cgp
真ですが、BASICプログラムAnimalには、どの質問を使用するか、ツリー内でどのくらい高いかを決定するトレーニングアルゴリズムはありません。訓練された意思決定ツリーを使用したパフォーマンスは、はるかに良いはずです。 (私はAtwoodの質問が元のAnimalアルゴリズムで生成されたものであり、ニューラルネットワークで生成されたものではないと思っているとコメントしています。 –
それは、 "インターネット上のニューラルネット" としての地位を請求すると、そこに嘘
ウィキペディアは、より完全な例を示しますキー。質問/回答確率を予備の行列に格納する可能性が高い。これらの確率を使用して、決定木アルゴリズムを使用して、次の質問を絞り込むためにどの質問を求めるかを推論することができます。可能な回答の数を数十に減らすか、すでに20の質問に達している場合は、最も可能性の高い回答を読み始めます。
20q.netの本当に興味深い面は、私が知っているほとんどの意思決定ツリーおよびニューラルネットワークのアルゴリズムとは異なり、20qが疎な行列と増分更新をサポートしていることです。
編集:答えはネット上でこの時間全体になっています。発明者のRobin Burgenerは、彼のアルゴリズムを彼の2005 patent filingで詳しく説明しました。
- 1. Readerモナドの「質問」機能はどのように機能しますか?
- 2. Scalaで'20秒 'はどのように機能しますか?
- 3. このアルゴリズムはどのように機能しますか?
- 4. JavaScriptの質問:このコードはどのように機能しますか?
- 5. ドキュメント差分アルゴリズムはどのように機能しますか?
- 6. Construct Rectangleアルゴリズムはどのように機能しますか?
- 7. MD5Sumアルゴリズムはどのように機能しますか?
- 8. Qt質問:信号とスロットはどのように機能しますか?
- 9. 機械学習:どのアルゴリズムが答える質問に合う
- 10. 機能するかどうかは、手元の質問です
- 11. この除算近似アルゴリズムはどのように機能しますか?
- 12. Javaの階層アルゴリズムはどのように機能しますか?
- 13. このGaussian Blur javascriptアルゴリズムはどのように機能しますか?
- 14. ピーク検出アルゴリズムは正確にどのように機能しますか?
- 15. 自動推奨アルゴリズムは通常どのように機能しますか?
- 16. ウェブサイトの「不正行為を報告する」機能のアルゴリズムはどのように機能しますか?
- 17. ゲームAIの遺伝的アルゴリズムにおけるフィットネス機能アルファ
- 18. 形質特化はどのように実際に機能しますか?
- 19. logstash kv {}機能はどのように機能しますか?
- 20. WatchKit:ディクテーション機能はどのように機能しますか?
- 21. 機能はどのように機能しますか?
- 22. 角2材質 - オーバーレイとポータルはどのように機能しますか?
- 23. Javaコードの基本的な質問。これらのexmaplesはどのように機能しますか?
- 24. MySQLどのようにこの質問をしますか
- 25. HtmlAgilityPackアルゴリズムの質問
- 26. $ watchのコール機能は一度にどのように機能しますか?
- 27. dropbox.comの複数のファイルアップロード機能はどのように機能しますか?
- 28. JQueryのdatepickerのポップアップ機能はどのように機能しますか?
- 29. array_udiff()、array_uintersect()などはどのように機能しますか?
- 30. ボードゲームのヒューリスティック機能AI
私がこれまで見た中で最高の20の質問AIのようです。それ以外の場合、私は他の人の1人にリンクします。 –
非常に良い。私が知る限り、Akinatorは20q.netよりもはるかに直感的に推測するようだが、私はそのことを特に「スマート」なものにすることに興味があります。 –
私はこの事がオンラインで存在するのか分からなかった。それは私の驚きに三回目の試みで '松のコーン'を推測しました!印象的な –