本文转载自公众号“读芯术”(ID:AI_Discovery)
自1956年达特茅斯学院那场著名会议以来,人工智能研究走过了这么多年的旅途,经历许多高峰也走过很多低谷。前事不忘后事之师,这期间产生了很多经验教训需要我们反复学习,而最重要的一条教训却是很多研究者很难接受的。
从70年的人工智能研究中,我们得出的较大教训是,最大化利用计算能力的一般方法终究是最有效的方法,且具有很大优势。其根本原因在于摩尔定律,或者更确切地说,摩尔定律使单位计算成本持续呈指数级下降的现象得以推广。
大多数人工智能研究都是在智能体可用计算恒定的情况下进行的,在这种情况下,利用人类知识将是提高性能的唯一方法。这不可避免地需要大量计算,花费的时间也会比常见的研究项目稍长一些。为了在短期内取得长足的进展,研究人员试图利用该领域已有的人类知识,但从长远来看,真正有用的只有计算。
这两者无需对立,但在实践中它们却往往如此。花时间研究这一个,自然会忽略另一个,这有点像投资中的心理承诺。人类知识方法容易复杂化,不利于采用计算的一般方法发挥比较大的作用。很多例子表明人工智能研究人员对这一惨痛教训认识太晚,其中一些最典型例子会对我们有所启发。
在1997年国际象棋人机大战中,击败世界冠军加里·卡斯帕罗夫的算法是以大量深度搜索为基础的。当时,大多数计算机国际象棋研究人员对此沮丧不已,毕竟他们一直都在探索各种方法,这些方法利用的都是人类对国际象棋特殊结构的理解。
当有事实充分证明,使用特殊硬件和软件的这种相对简单的基于搜索的算法要更为有效时,这些以人类知识为基础的国际象棋研究人员就输不起了。他们狡辩“暴力”搜索这次可能赢了,但这不是通用的策略,而且这无论如何不是人们下国际象棋的方法。这些研究人员希望基于人类知识的方法获胜,但结局令他们失望了。
计算机围棋也有类似的研究进展模式,只是晚了20年。最开始人们通过利用人类知识或游戏特性,尽很大的可能避开搜索,可一旦搜索被大规模有效应用,所有努力都成了徒劳。
同样重要的是学习,即通过自我对弈(self-play)来学习价值函数(就像在许多其他游戏甚至国际象棋中一样,虽然这招在1997年第一次击败世界冠军中没有发挥太大用处)。通过自我对弈来学习和通用学习就像搜索,可以实现大量计算。
搜索和学习是在人工智能研究中利用大量计算的两种最重要技术。计算机围棋就像计算机象棋一样,研究人员最初是想使用人类的理解力来达成目的,但很久以后他们不得不接纳了搜索和学习,这才取得了更大的成功。
在语音识别领域,早在上世纪70年代,美国国防部高级研究计划局就发起了语音识别竞赛。参赛作品利用了许多使用人类知识的特殊方法,例如利用词汇知识、音素知识、人类声道知识等等。另一方面,基于隐马尔可夫模型(HMMs)的新方法本质上更具统计性,计算量也更大。
统计方法再次战胜了以人类知识为基础的方法,导致自然语言处理领域发生重大变化。经过几十年的发展,统计和计算逐渐占据了该领域的主导地位,最近语音识别领域中深度学习的兴起就是朝着这一方向迈出的最新一步。深度学习方法更少地依赖于人类知识而更多地使用计算,加上学习大量的训练集,这样创造出的语音识别系统要比原来的好得多。
就像在游戏中一样,研究人员总是试图让系统按照他们自己的思维方式运行。他们试着将知识放入系统中,但当根据摩尔定律,大量计算变得可行,有效利用计算的方法也找到之后,这最终被证明是适得其反的,同时会极大地浪费了研究人员的时间。
计算机视觉领域也有类似的模式。早期的方法认为视觉是搜索边缘、广义柱体或者通过SIFT特征搜索,但今天这些观点都被抛弃了。现代的深度学习神经网络只使用卷积的概念和某些不变性,这些好用得多。
这是一个重要的教训。我们不断犯着同样的错误,始终没能彻底了解人工智能领域。想要避免再次犯错,就必须弄明白是什么导致了错误的发生。从长远来看,以我们的思维方式来构建系统是行不通的,这是必须吸取的惨痛教训。
这一惨痛教训来源于历史观测:人工智能研究人员经常试图将知识构建到智能体中,这在短期内总是有用的,也令研究者个人感到满意。但从长远来看,这种方法是停滞不前的,甚至会阻碍进一步的发展。通过基于搜索和学习的规模计算这一相反的方法,研究人员最终取得了突破性进展。
这样的成功略带苦涩,而且往往难以被完全接受,这种成功不是通过一种受人支持、以人为中心的方法获得的。
我们应该从惨痛教训中学到的是,通用方法有巨大的威力,即使可用计算变得非常巨大,这些方法也会随着计算量的增加而不断扩展,搜索和学习似乎正是两种以这种方式随意扩展的方法。
我们应该学到的第二点是:思想的内容实际上是极其庞杂的。我们不该再用简单方法去探寻思想内容,例如思考空间、物体、多智能体或对称性。这些都是外部世界的一部分,而外部世界是任意的、本质上是复杂的。它们不该被固化,因为它们的复杂性无穷无尽。
相反,需要构建的只有可以发现和捕获这种任意复杂性的元方法。这些方法的关键在于,它们可以获取很好的近似值,但这种捕获应该由我们的方法来完成,而不是我们自己。人工智能体要做的是像人类一样去发现,而不是储存我们的发现。在人类发现的基础上进行构建会令人更难看清发现过程是如何完成的。
70多年的探索让这些事实越来越清晰地浮现在研究人员的眼前,即便再不愿面对,也需要认清这些现实了。避免犯错的方法是面对错误。