如何在深度学习中运用科学的方法论
原文 http://www.almosthuman.cn/2015/12/24/rwgfg/
尽管深度学习能完成很多事情,但它到底是如何工作的,我们并不清楚。剑桥大学机器学习博士Yarin Gal提出,将研究自然科学的方法论用到深度学习中,或许可以解决这个问题。来看看他的心得吧!
我工作的领域是应用机器学习(尤其是深度学习),是一个独一无二的领域。它融合了工程、数学、神经科学、甚至是社会学。我们研发工具,试图解释这个世界,推测它并改变。自然与社会科学常会利用这些工具去尝试解释观察到的现象,但是许多我们研发的工具(特别是在深度学习)究竟是如何工作的,我们的理解非常有限……这一点困扰了我许久。在最近的NIPS会议上,我与任何愿意倾听的人讨论。我想到了一个非常美好的方法。我们可以抽取自然科学中的方法论,再返回到机器学习领域去再一次理解它。这样的科学观有完全改变它的潜力。
让我们以一个例子开始。在现代深度学习中,大多数结论来自于不同工具的实践实验。它们常会带来新的发现与更好的工具,但需要付出代价——尽管我们研发了这些工具,但我们经常不理解它们。你可以联想一下钻木取火用到的两根棍子。火可以用来烘烤食物,并用来追逐猎物。我们得到火的工具是通过一系列的试错获得的。我们可以不同的木头,不同形状的工具去获得「更热」的火(例如在MNIST手写数字数据库中得到更高的精确度)。但是最终,我们的实验还是因世界的复杂性而受到局限,我们仍然不知道为什么两根木棍摩擦会产生火,为什么火是烫的。我们需要限定方向,并追随某些实验方法论。
当我们用机器学习作为工具时,我们经常会遵循科学的方法论(例如,用深度学习来寻找希格斯波色子)。但是我们并不在领域内使用它。将科学的方法论应用到机器学习中,我们可以开始理解它们为什么起作用——并且以此来超越该领域内太过常见的隐喻式解释。用这种知识,我们可以设计出更好的工具,打破现有的局限。跟随有原则的方法,我们可以改进现有工具,提升结果。总而言之,可以从用火追逐猎物到用火将我们送上太空。
深度学习的科学方法
我们要怎样将科学的方法论运用到深度学习中呢?我们可以先找出那些运转良好、但原因不明的经验工具。后面我们会讲到一些具体的例子。我们提出假说,试图用它来解释这些工具运行良好的原因。接着我们提出可检验的预测,尽力证实或证伪不同的想法。这些都需要实验,并且常带来新工具。在新的结果上再次使用之前提出的假说,继续循环,就能让我们对世界的理解越来越好。
自然科学使用的科学方法论的例子。在深度学习的案例中,我们应该去寻找那些像自然现象一样运转良好但无法解释的工具
然而,我们领域的独特之处在于,一个人在一天之内就能进行整个循环!在大部分科学中,实验阶段通常需要专业技能和设备。例如,物理学分为理论物理学与应用物理学两个分支,每一个都需要数年的训练。然而在我们的研究中,我们的重点是数据,理论和实验都是虚拟的。只需一个人就能想出对观测现象的理论论证,进行预测,设计出实验并进行验证。这是该领域的赐福,也是一个诅咒。一方面,理解理论和实验这两个方面都非常重要。但另一方面,完善实验需要优秀的工程专家,研发好的理论则需要全面了解数学工具。而在这两个领域都成为专家可不太容易。
真实的例子
丢弃法(Dropout)是一种用于训练深度神经网络的正规化方法。我们观察到,丢弃法在避免过拟合与提升模型表现上非常出色。它为何如此有效?我们提出了一个理论解释(基于贝叶斯概率论),我们也用这它来获得深度学习的不确定估测。因此,我们跟随理论做出了基本预测:我们希望某个程序的输出能够与模型的不确定性相一致。接着,我们用几个实验测试了预测。更近期关于卷积神经网络(CNN)的成果允许我们更进一步去测试理论。例如,该理论提出,新的贝叶斯CNN构建的模型能提升最先进的图像分类结构。这正证明了,对工具的理论理解能够带来更新与更好的工具。最近还有很多其他的例子也佐证了这一点。
证伪
在应用机器学习领域,我们有许多试图解释不同现象的假说。然而,科学方法中一个主要的部分(也是上面那个循环图中的关键成分)迄今都被忽视了,那就是证伪。从基本上说,就是从一个不成立的理论中去寻找预测,迫使我们重新思考并改进理论。证伪并不必然等同于寻找负面的结果。负面的结果也能通过试错的方法获得。例如,最近观察到批归一化(batch normalisation)在某些网络结构中的失败。但是,这个观察结果之后,我们没有假说可以修改或拒绝。证伪的过程以找出理论的预测开始,接着,设计一个可能得到相反结果的实验,尝试以此来驳斥这个预测。
互动实验
让我们举个例子吧!这个例子中,丢弃法的经验方法是失败的。递归神经网络(RNN)是可以捕捉次序的模型。这些强大的模型组成了语言处理任务的关键部分,但也能迅速过拟合。但是我们不知道如何在RNN中应用丢弃法。许多经验方法的成功次数十分有限(我数了,至少有5个)。
运用上面所说的理论,正确的方法相对直接一些:在所有的时间步骤里使用相同的掩码。初步的测试也证明了这一点。我决定以最近的一些论文进行试验:《 A Theoretically Grounded Application of Dropout in Recurrent Neural Networks》。论文给出了在RNN中运用丢弃法进行数学应用的理论基础,但实验评估十分有限。
下面,互动开始了。你的任务就是去头脑风暴一下那些你觉得会证实或证伪上面这些说法的实验。
如果你有任何结果,欢迎去右边网址留言讨论:http://mlg.eng.cam.ac.uk/yarin/blog_5058.html