苦涩的教训
作者:理查德 萨顿
2019年3月13日
从70年的人工智能研究中可以读出的最大教训是,利用计算的一般方法最终是最有效的,而且是以很大的优势。这方面的最终原因是摩尔定律,或者说是它对每单位计算成本持续指数式下降的概括。大多数人工智能研究都是在智能体可用计算量不变的情况下进行的(在这种情况下,利用人类知识将是提高性能的唯一途径),但是,在比一般研究项目稍长的时间内,大量的计算量不可避免地变得可用。为了寻求在短期内有所作为的改进,研究人员寻求利用人类对该领域的知识,但从长远来看,唯一重要的是对计算的利用。这两者不必然相互抵触,但在实践中它们往往是相互抵触的。花在一个方面的时间就是没有花在另一个方面的时间。对一种方法或另一种方法的投资有心理上的承诺。而人类知识的方法往往会使方法复杂化,使其不太适合利用利用计算的一般方法。 有许多例子表明,人工智能研究人员迟迟没有学到这个苦涩的教训,回顾其中一些最突出的例子很有启发意义。
在计算机国际象棋中,1997年击败世界冠军卡斯帕罗夫的方法是基于大规模的深度搜索。当时,大多数计算机国际象棋研究者对这种方法感到失望,他们追求的是利用人类对国际象棋特殊结构的理解。当一种更简单的、以搜索为基础的、带有特殊硬件和软件的方法被证明大为有效时,这些以人类知识为基础的国际象棋研究人员输不起。他们说,"蛮力 "搜索这次可能赢了,但它不是一种普遍的策略,而且无论如何它不是人们下棋的方式。这些研究人员希望基于人类输入的方法能够获胜,当它们没有获胜时,他们感到很失望。
在计算机围棋中也出现了类似的研究进展模式,只是又推迟了20年。最初的巨大努力是通过利用人类的知识或游戏的特殊性来避免搜索,但所有这些努力都被证明是无关紧要的,甚至更糟,一旦搜索被有效地大规模应用。同样重要的是利用自我对弈的方式来学习价值函数(正如在许多其他游戏中,甚至在国际象棋中一样,尽管在1997年首次击败世界冠军的程序中,学习并没有发挥很大的作用)。通过自我对弈来学习,以及一般的学习,就像搜索一样,它能使大规模的计算发挥出作用。搜索和学习是人工智能研究中利用大量计算的两类最重要的技术。在计算机围棋中,就像在计算机国际象棋中一样,研究人员最初的努力方向是利用人类的理解力(这样就不需要搜索),后来才通过拥抱搜索和学习取得了更大的成功。
在语音识别方面,1970年代有一个由DARPA赞助的早期竞赛。参赛者包括大量利用人类知识的特殊方法--关于单词、音素、人类声道的知识等。另一方是较新的方法,这些方法在本质上更具有统计性,并在隐性马尔可夫模型(HMMs)的基础上进行了更多的计算。同样,统计方法战胜了基于人类知识的方法。这导致了所有自然语言处理的重大变化,在几十年的时间里,统计和计算逐渐主导了这个领域。最近,深度学习在语音识别领域的兴起是朝着这个一致方向迈出的最新一步。深度学习方法对人类知识的依赖更少,并使用更多的计算,加上在巨大的训练集上的学习,产生了显著更好的语音识别系统。就像在游戏中一样,研究人员总是试图使系统以研究人员认为他们自己的思维方式工作--他们试图把这些知识放在他们的系统中--但这最终被证明是适得其反的,而且是对研究人员时间的巨大浪费,此时,通过摩尔定律,大规模的计算变得可用,而且找到了将其很好地利用的方法。
在计算机视觉方面,也有类似的模式。早期的方法将视觉设想为搜索边缘,或广义的圆柱体,或以SIFT特征为基础。但今天这些都被抛弃了。现代深度学习神经网络只使用卷积和某些种类的不变性概念,并且表现得更好。
这是一个很大的教训。作为一个领域,我们仍然没有彻底学会它,因为我们在继续犯同样的错误。要看到这一点,并有效地抵制它,我们必须了解这些错误的吸引力。我们必须吸取痛苦的教训,即在我们的思维方式上的建设从长远来看是行不通的。这个苦涩的教训是基于这样的历史观察:1)AI研究者经常试图将知识构建到他们的智能体中,2)这在短期内总是有帮助的,并且对研究者个人来说是满意的,但是3)从长远来看,它趋于停滞,甚至阻碍进一步进展,4)突破性进展最终却是通过对立的、基于搜索和学习的可伸缩计算方法到来的。最终的成功带着苦涩,其意义往往不被彻底理解,因为这个成功超越了常人偏爱的、以人工为中心的方法。
从这个苦涩的教训中应该学到的一点是通用方法的巨大力量,即:即使可用的计算量变得非常大,也能继续随着计算量的增加而扩展的方法。两个似乎能以这种方式任意扩展的方法是搜索和学习。
从这个痛苦的教训中可以学到的第二个普遍观点是,思维的实际内容是巨大的、不可救药的复杂;我们应该停止试图寻找简单的方法来思考思维的内容,比如思考空间、物体、多智能体或对称性的简单方法。所有这些都是任意的、本质上复杂的、外部世界的一部分。它们不应该被内置,因为其复杂性是无止境的;相反,我们只应该内置能够发现和捕捉这种任意复杂性的元方法。这些方法的关键是它们可以找到好的近似值,但对它们的搜索应该由我们的方法来进行,而不是由我们来进行。我们希望人工智能智能体能够像我们一样发现,而不是包含我们所发现的东西。内置我们的发现只会使我们更难看到发现的过程是如何进行的。