20个问题AIalgorithm如何工作?

20个问题的简单的在线游戏,由一个惊人的精确AI。

他们怎么猜得这么好?

你可以把它想成二进制searchalgorithm。 在每一次迭代中,我们都会问一个问题,这个问题应该会消除大约一半的可能的单词select。 如果总共有N个单词,那么我们可以期望在log2(N)问题后得到答案。

有了20个问题,我们应该能够find2 ^ 20 = 1万个单词中的一个单词。

一个简单的方法来消除exception值(错误的答案)可能会使用像RANSAC 。 这意味着,不要考虑已经回答的所有问题,而是随机select一个较小的子集,这足以给你一个答案。 现在你用不同的随机子集重复几次,直到你看到大部分时间,你都得到了相同的结果。 你就知道你有正确的答案。

当然,这只是解决这个问题的很多方法之一。

我build议阅读关于这里的游戏: http : //en.wikipedia.org/wiki/Twenty_Questions

特别是计算机部分:

游戏表明,识别任意对象所需的信息(由香农熵统计量来衡量)大约为20位。 在教人们关于信息理论时,这个游戏经常被用作一个例子。 在math上,如果每个问题的结构是消除一半的对象,那么20个问题将允许提问者区分2 20或者10 4876个科目。 因此,对于20个问题最有效的策略是提出问题,将剩余可能性的领域大致分成两半。 该过程类似于计算机科学中的二进制searchalgorithm。

决策树直接支持这种应用。 决策树通常用于人工智能。

决策树是一个二叉树,在每个分支上询问“最好”的问题,以区分由其左侧和右侧子代表的集合。 最好的问题是由20个问题应用程序的创build者用来构build树的一些学习algorithm确定的。 然后,正如其他海报指出,一个20层深的树给你一百万件事情。

在每个点上定义“最佳”问题的一个简单方法是寻找一个最平均地将收集分成一半的属性。 这样,当你对这个问题得到肯定/否定的答案时,你在每一步中摆脱了大约一半的集合。 这样你可以近似二进制search。

维基百科给出了一个更完整的例子:

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

还有一些一般的背景:

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

它把自己称为“互联网上的neural network”,其中关键在于它。 它可能将问题/答案概率存储在备用matrix中。 使用这些概率,就可以使用决策树algorithm来推断哪个问题最能缩小下一个问题。 一旦将可能的答案缩小到几十个,或者已经达到了20个问题,那么它就开始读取最可能的答案。

20q.net真正耐人寻味的一点是,与大多数我所知的决策树和neural networkalgorithm不同,20q支持稀疏matrix和增量更新。

编辑:原来,答案是一直在networking上。 发明人Robin Burgener在其2005年的专利申请中详细描述了他的algorithm。

它正在使用一个学习algorithm。

k-NN是其中之一的一个很好的例子。

维基百科:k-最近邻algorithm