AI算法有20个问题如何工作?


103

简单易懂的在线游戏,由20个问题组成,并由精确可靠的AI提供支持。

他们怎么这么好猜?


到目前为止,这似乎是我所见过的AI最好的20个问题。否则,我将链接到另一个。
Daddy Warbox,09年

1
很好。据我所知,尽管Akinator似乎比20q.net直观得多。可以这么说,我对使那个特别“智能”的东西感兴趣。
Daddy Warbox,2009年

1
我不知道这东西在网上存在。令我惊讶的是,它在第​​三次尝试中就猜到了“松果”!令人印象深刻
PeterPerháč09年

3
+1-绝对与编程有关,这是一个很好的问题。
亚当·戴维斯

@JeffAtwood您尝试链接到哪篇文章?
2014年

Answers:


55

您可以将其视为二进制搜索算法。在每次迭代中,我们都会提出一个问题,该问题应消除大约一半的可能单词选择。如果总共有N个单词,那么我们可以期望在log2(N)个问题后得到答案。

有了20个问题,我们应该最好能够在2 ^ 20 = 1百万个单词中找到一个单词。

消除异常值(错误答案)的一种简单方法是使用类似RANSAC的方法。这意味着,您将随机选择一个较小的子集,而不是考虑所有已回答的问题,这足以给您一个答案。现在,您用不同的随机子集重复几次,直到您看到大部分时间都得到相同的结果。然后,您就会知道您有正确的答案。

当然,这只是解决此问题的多种方式中的一种。


4
这个简单的程序很好地演示了您在说什么。到达那里后,您可以单击code链接进行查看:openbookproject.net/py4fun/animal/animal.html
Noctis Skytower 2010年

这种AI是否可以作为服务使用?如果我可以提供所有问题和答案并让他们找到它们怎么办?
tggagne 2015年

您怎么称呼这种算法?它有名字吗?
tggagne 2015年

25

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

决策树是一个二叉树,它在每个分支上询问“最佳”问题,以区分由左子元素和右子元素代表的集合。最佳问题由某种学习算法确定,该学习算法由20个问题应用程序的创建者用来构建树。然后,正如其他海报指出的那样,一棵20层深的树为您提供了一百万种东西。

在每个点上定义“最佳”问题的一种简单方法是寻找一个将集合平均分成一半的属性。这样,当您对这个问题的回答是/否时,您将在每个步骤中消除大约一半的馆藏。这样,您可以近似二进制搜索。

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

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

和一些一般背景:

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


2
+1,我会注意到这是Atwood文章中的评论之一。
cgp

1
的确如此,尽管BASIC程序Animal并没有一种训练算法来确定要使用的问题以及在树中放置多高的问题。具有训练有素的决策树的性能应该更好。(我同意评论员的意见,阿特伍德的问题看起来很像是由原始动物算法而非神经网络产生的。)
内森·史维利·桑德斯

24

我建议在这里阅读有关游戏的信息:http : //en.wikipedia.org/wiki/Twenty_Questions

特别是“计算机”部分:

游戏表明识别任意物体所需的信息(由香农的熵统计量测得)约为20位。在教人们有关信息论的知识时,通常以游戏为例。从数学上讲,如果每个问题的结构都消除了一半的对象,则20个问题将允许提问者区分2个20或1,048,576个主题。因此,“二十个问题”最有效的策略是提出这样的问题:每次都会将剩余可能性的领域划分为大约一半。该过程类似于计算机科学中的二进制搜索算法。


2
这解释了其中的一些。但是,当您考虑错误的答案和普遍的模棱两可时,似乎仍然不是那么简单。
Daddy Warbox,09年

1
如果查看链接,您会发现这并不是一个肯定/否问题,可以每次将字段除以一半。虽然您的答案对20个问题是正确的,但我认为Shaun的答案更为准确,简单的最近邻学习算法以及足够的用户输入,可以得出一些非常准确的结果。
z-2009年

嗯,是的,它们是相似的,但是最近的邻居肯定更有意义。
cgp

12

它自称为“互联网上的神经网络”,而这正是其中的关键。它可能将问题/答案的概率存储在备用矩阵中。利用这些概率,它能够使用决策树算法来推断出哪个问题可以最好地缩小下一个问题的范围。一旦将可能的答案的数量缩小到几十个,或者如果已经达到20个问题,那么它将开始读取最有可能的答案。

20q.net真正吸引人的方面是,与我所知的大多数决策树和神经网络算法不同,20q支持稀疏矩阵和增量更新。

编辑:原来答案一直在网上。发明人Robin Burgener在他的2005年专利申请中详细描述了他的算法。


6

它正在使用学习算法。

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

维基百科:k最近邻算法


4
在这种情况下,最近邻居算法是一个不错的选择吗?似乎太过宽容了错误的答案,最终可能会涉及大量的维度,其中许多维度都没有数据。(我假设使用汉明距离,每个问题一维。)决策树似乎更自然。
Kylotan

1
学习理论是正确的答案,因为它基于每个人都倾向于犯的错误,因此它给出的“准确”答案并不重要,这实际上使它更容易猜测。
Jonathan Plackett 2014年

那么,这如何帮助您确定最佳问题?
Thomas Ahle 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.