苦痛的教训

image

作者:Rich Sutton

最近看了多篇文章,都有提到这篇 Sutton 写的文章。就找来看看,而似乎也没见人翻译,就动手翻了下。Sutton 何人,有了解那本鼎鼎大名的教科书 Reinforcement Learning 的,估计都知道,也算是强化学习领域里面教父级别的人。

说实话,作为一个对人类几千年知识充满迷恋的NLP从业者(姑且算),要舍弃掉这一切,承认这些不过是shit,大力才真正出奇迹,真的很难,正如文中提到的“错误背后强大的吸引力”。其实,之前翻的一篇文章里面也有说到类似的利用人类知识的观点,NLU 不是 NLP++

但里面也说了,知识和计算并不是对立的,所以更多的是应该让自己对计算这一块更加关注,其实最近接触预训练模型也有些体会。此外,最后提到的元方法,我是非常同意的。

题外话,读这篇文章的时候,莫名地脑袋里就跳出了一群人各种招式,天花乱坠打来打去。最后跳出来一个百年内力的扫地僧,一套太祖长拳,秒杀所有。

从70多年来的人工智能研究中,我们可以看到一个最大的教训,那便是,能充分利用计算资源的通用方法往往是最有效的。这一现象的终极原因是摩尔定律,或者说是每单位计算成本呈指数下降的局势。

image

而大多人工智能研究都是在假设智能体可用计算资源不变的前提下进行的(于是利用人类知识将是提高性能的唯一方法)然而,在比一个通常研究项目稍长的时间内,更多大量的计算资源却是可能的。

研究人员往往通过利用领域内的人类知识,在短期内获得一定提升,然而长期来看,真正重要的其实是如何利用好计算资源。这两者其实并不对立,但实际上却仿佛是对立的。在一个上面花时间就不能在另一个上花时间。对一种方法或另一种方法的投入都会有一个相应的心理承诺。

而利用人类知识的方法往往使得方法更复杂,使其不太适合成为能利用更多计算资源的一般方法。很多人工智能研究员过晚才学习到这一苦痛的教训,这里有很多相关例子,其中一些值得我们去回顾。

image

首先,在国际象棋AI中,1997年击败世界冠军卡斯帕罗夫的,是基于大规模深度搜索的方法。在当时,大多数国际象棋AI研究人员都沮丧地看着这一点,因为他们所追求的是如何充分利用人类对国际象棋特殊结构的理解。

而当一个简单的,只是结合了特殊软硬件的,基于搜索的方法被证明非常有效时,这些基于人类知识的国际象棋AI研究人员却不服输。还说这次“蛮力”搜索或许取得了成功,但这不是一般策略,不管怎么说这不是人类下棋的方式。这些研究人员希望基于人类输入的方法来获胜,而当获胜方法不是这个时,当然会大失所望。

image

围棋AI中也出现类似模式,只是晚了20年。通过利用人类知识或游戏特点,研究人员们进行了大量的初步尝试,以避免搜索方式,但所有这些努力却被证明是无关紧要的,更要命的是,之后发现搜索一旦结合了大规模计算效果会非常好。

同样重要还有通过自我学习来学习价值函数(尽管学习在1997年首次击败世界冠军的程序中没有发挥太重要用处)。通过自我游戏还有一般的学习技巧来学习,就像搜索一样,是可以实现大规模的计算资源利用的。

于是,搜索学习就成了AI研究中能充分利用大量计算资源的两种最重要技术。在围棋AI中,与国际象棋AI一样,研究人员最初的努力都是先注重于如何利用人类对游戏的理解(所以需要较少搜索),而很久以后才开始通过拥抱搜索和学习获得更大的成功。

image

语音识别方面,DARPA在20世纪70年代有赞助过一场比赛。参赛者包括一系列利用了人类知识的特殊方法,包括词汇,音素,人类声道知识等等。而另一方面,还有一些更具统计性,计算量更大,基于隐马尔可夫模型(HMM)的方法。

和之前一样,统计方法胜过了基于人类知识的方法。这导致自然语言处理领域发生了重大变化,几十年来统计和计算慢慢在该领域占主导地位。最近语音识别中深度学习的兴起也是这一大趋势的最新进展。

深度学习方法甚至更少依赖人类知识,并能利用更多计算资源,加上对大量训练集的学习,就能获得非常棒的语音识别系统。

正如在之前的棋类游戏中一样,研究人员总是试图使系统按照研究人员认为自己的思想方式来运作,他们试图将这些知识放入系统中,但事实证明这往往适得其反,并且极大地浪费了研究人员的时间。特别是在之后,当通过摩尔定律大规模计算变得可用,找到了一种能很好地利用计算资源的方法时。

image

计算机视觉中,也存在类似模式。早期的方法将视觉设想为搜索边缘或广义化的圆柱体,也就是SIFT特征。但今天这一切都被抛弃了。现代深度学习神经网络仅使用卷积和某些不变性的假设,并且性能很好。

这是一个很大的教训。作为一个领域,我们却仍然没有彻底学习到这个教训,因为我们还在持续不断地犯着同样的错误。要看到这一点,并有效地抵制它,就必须深刻理解这些错误背后强大的吸引力

但,我们还是必须要学习到这个苦痛的教训,那就是,在长远来看按照自认为自己的思考方式来搭建系统往往是没用的。这一苦痛的教训是基于以下历史观察:

  1. AI研究人员经常试图将知识建立在他们的智能系统上;

  2. 这在短期内总是有用的,并可以让研究人员获得个人满意;

  3. 但从长远来看,这减缓,甚至是抑制了进一步的发展;

  4. 突破性的进展,往往却来自相反的方法,那就是通过搜索和学习来利用大规模的计算资源的方法。

最终的成功充满了苦涩,并让人难以接受,因为它踩在了,人们更青睐的以人为本的方法上。

从这个痛苦的教训中,应该学到的一件事是通用方法的强大性,在即使可用计算变得非常大时,这些方法仍可以通过增加计算量来进一步提高。目前。这种似乎可以随意扩展的两种方法就是搜索(search)和学习(learning)。

image

从这个痛苦的教训中汲取的第二件事是,思想的实际内容有着难以想象的复杂;我们应停止尝试用简单方法来思考这些思想内容,诸如我们思考空间,对象,多代理或对称性时的一些简单方法。所有这些都只是任意外部世界(本质上很复杂)的一部分。它们不应该被内置,因为它们复杂性是无穷无尽的;相反,我们应该只构建可以找到并捕获这种任意复杂性的元方法

这些方法的关键在于能找到很好的近似解,而对这些解的搜索就在于我们的方法了,而不是我们自己。我们希望AI能够像我们一样发现新东西,而不是去发现我们已经发现的东西。在我们自己的发现中来构建系统,这只会让人更难以了解如何完成这一发现过程。

推荐阅读更多精彩内容