查看原文
其他

《神经网络和深度学习》系列文章三十八:深度神经网络为何很难训练?

Nielsen 哈工大SCIR 2021-02-05

出处: Michael Nielsen的《Neural Network and Deep Learning》,点击末尾“阅读原文”即可查看英文原文。

声明:我们将在每周四连载该书的中文翻译。

本节译者:朱小虎 、张广宇。转载已获得译者授权,禁止二次转载。


  • 使用神经网络识别手写数字

  • 反向传播算法是如何工作的

  • 改进神经网络的学习方法

  • 神经网络可以计算任何函数的可视化证明

  • 为什么深度神经网络的训练是困难的

    • 梯度消失问题

    • 什么导致了梯度消失问题?神经网络中的梯度不稳定性

    • 在更加复杂网络中的不稳定性梯度

    • 其他深度学习的障碍

  • 深度学习

假设你是一名工程师,接到一项从头开始设计计算机的任务。某天,你在工作室工作,设计逻辑电路,构建 AND 门,OR 门等等时,老板带着坏消息进来:客户刚刚添加了一个奇特的设计需求:整个计算机的线路的深度必须只有两层:

你惊呆了,跟老板说道:“这货疯掉了吧!”


老板说:“我也认为他们疯了,但是客户的需求比天大,我们要满足它。”


实际上,在某种程度上看,他们的客户并没有太疯狂。假设你可以使用某种特殊的逻辑门,它让你对任意多的输入做 AND 运算。同样也能使用多输入的 NAND 门——可以对多个输入做 AND 运算并取负的门。有了这类特殊的门,构建出来的两层深度的电路可以计算任何函数。


但是仅仅因为某件事是理论上可能的,并不代表这是一个好的想法。在实践中,在解决线路设计问题(或者大多数的其他算法问题)时,我们通常考虑如何解决子问题,然后逐步地集成这些子问题的解。换句话说,我们通过多层的抽象来获得最终的解答。


例如,假设我们来设计一个逻辑线路来做两个数的乘法。我们希望在已经有了计算两个数加法的子线路基础上创建这个逻辑线路。计算两个数和的子线路也是构建在用于两个比特相加的子子线路上的。粗略地讲我们的线路看起来像这个样子:

最终的线路包含至少三层线路的基本部分。实际上,这个线路很可能会超过三层,因为我们可以将子任务分解成比上述更小的单元。但是基本思想就是这样。


因此深度线路让这样的设计过程变得更加简单。但是这对于设计本身帮助并不大。其实,数学证明对于某些函数设计的非常浅的线路可能需要指数级的线路单元来计算。例如,在1980年代早期的一系列著名的论文1已经给出了计算比特的集合的奇偶性通过浅的线路来计算需要指数级的门。另一当面,如果你使用更深的线路,那么可以使用规模很小的线路来计算奇偶性:仅仅需要计算比特的对的奇偶性,然后使用这些结果来计算比特对的对的奇偶性,以此类推,构建出总共的奇偶性。深度线路这样就能从本质上获得超过浅线路的更强的能力。


到现在为止,本书将神经网络看作是那个疯狂的客户。几乎我们遇到的所有的网络就只包括一层隐藏神经元(另外还有输入输出层):

这些简单的网络已经非常有用了:在前面的章节中,我们使用这样的网络可以进行准确率高达 98% 的手写数字的识别!而且,凭直觉地看,我们期望拥有更多隐藏层的神经网络能够变的更加强大

这样的网络可以使用中间层构建出多层的抽象,正如我们在布尔线路中做的那样。例如,如果我们在进行视觉模式识别,那么在第一层的神经元可能学会识别边,在第二层的神经元可以在边的基础上学会识别出更加复杂的形状,例如三角形或者矩形。第三层将能够识别更加复杂的形状。依此类推。这些多层的抽象看起来能够赋予深度网络一种学习解决复杂模式识别问题的能力。然后,正如线路的示例中看到的那样,存在着理论上的研究结果告诉我们深度网络在本质上比浅层网络更加强大2


那我们如何训练这样的深度神经网络呢?在本章中,我们尝试使用我们犹如苦力般的学习算法——基于反向传播随机梯度下降——来训练深度网络。但是这会产生问题,因为我们的深度神经网络并不能比浅层网络性能好太多。


这个失败的结果好像与上面的讨论相悖。这就能让我们退缩么,不,我们要深入进去试着理解使得深度网络训练困难的原因。仔细研究一下,就会发现,在深度网络中,不同的层学习的速度差异很大。尤其是,在网络中后面的层学习的情况很好的时候,先前的层次常常会在训练时停滞不变,基本上学不到东西。这种停滞并不是因为运气不好。而是,有着更加根本的原因是的学习的速度下降了,这些原因和基于梯度的学习技术相关。


当我们更加深入地理解这个问题时,发现相反的情形同样会出现:先前的层可能学习的比较好,但是后面的层却停滞不变。实际上,我们发现在深度神经网络中使用基于梯度下降的学习方法本身存在着内在不稳定性。这种不稳定性使得先前或者后面的层的学习过程阻滞。


这个的确是坏消息。但是真正理解了这些难点后,我们就能够获得高效训练深度网络的更深洞察力。而且这些发现也是下一章的准备知识,我们到时会介绍如何使用深度学习解决图像识别问题。


1. 其历史有点复杂,所以我不会给出详细的参 考。看看 Johan Håstad 的 2012 论文  On the correlation of parity and small-depth circuits (http://eccc.hpi-web.de/report/2012/137/ ) 来了解一些早期的历史和参考。


2. 对某些问题和网络结构,Razvan Pascanu,Guido Montúfar, and Yoshua Bengio 在2014年的这篇文章 On the number of response regions of deep feed forward networks with piece-wise linear activations (http://arxiv.org/pdf/1312.6098.pdf)  给出了证明。更加详细的讨论在 Yoshua Bengio 2009 年的著作Learning deep architectures for AI (http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf) 的第二部分。




  • “哈工大SCIR”公众号

  • 编辑部:郭江,李家琦,徐俊,李忠阳,俞霖霖

  • 本期编辑:李家琦


长按下图并点击 “识别图中二维码”,即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公共号:”哈工大SCIR” 。点击左下角“阅读原文”,即可查看原文。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存