20个问题的简单在线游戏,由极其准确的AI提供支持。
他们如何猜得这么好?
答案 0 :(得分:53)
您可以将其视为二进制搜索算法。 在每次迭代中,我们提出一个问题,该问题应该消除大约一半可能的单词选择。如果总共有N个单词,那么我们可以期望在log2(N)个问题之后得到答案。
有了20个问题,我们应该能够在2 ^ 20 = 100万个单词中找到一个单词。
消除异常值(错误答案)的一种简单方法是使用RANSAC之类的东西。这意味着,您不必考虑所有已回答的问题,而是随机选择一个较小的子集,这足以给您一个答案。现在你用不同的随机问题子集重复几次,直到你看到大部分时间,你得到相同的结果。然后你知道你有正确的答案。
当然,这只是解决这个问题的多种方法之一。
答案 1 :(得分:22)
我建议在这里阅读有关游戏的内容:http://en.wikipedia.org/wiki/Twenty_Questions
特别是计算机部分:
游戏暗示了这些信息 (用香农的熵测量 统计)需要识别 任意对象大约是20位。该 游戏通常用作例子 教人们了解信息 理论。数学上,如果每个 问题的结构是消除 一半的对象,20个问题将 允许提问者区分 在2 20 或1,048,576个受试者之间。 因此,最有效 二十个问题的战略是 提出会分裂的问题 剩下的可能性领域 每次大约一半。这个过程 类似于二分搜索 计算机科学中的算法。
答案 2 :(得分:21)
决策树直接支持这种应用。决策树通常用于人工智能。
决策树是一个二叉树,它在每个分支上询问“最佳”问题,以区分由其左右子代表的集合。最好的问题是由20个问题应用程序的创建者用来构建树的一些学习算法确定的。然后,正如其他海报所指出的那样,20层深的树给你一百万件事。
在每个点定义“最佳”问题的一种简单方法是查找最均匀地将集合划分为一半的属性。这样当你得到该问题的是/否答案时,你就会在每一步中摆脱大约一半的收集。这样您就可以进行二进制搜索。
维基百科提供了一个更完整的例子:
http://en.wikipedia.org/wiki/Decision_tree_learning
一些一般背景:
答案 3 :(得分:8)
20q.net真正有趣的方面是,与我所知的大多数决策树和神经网络算法不同,20q支持稀疏矩阵和增量更新。
编辑:结果这个答案一直在网上。发明家罗宾·伯吉纳(Robin Burgener)在他的2005 patent filing中详细描述了他的算法。
答案 4 :(得分:6)