您的位置:首页 > 理论基础 > 计算机网络

神经网络与深度学习笔记——第5章 深度神经网络为何很难训练

2017-07-30 00:13 711 查看

第5章 深度神经网络为何很难训练

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

这样的网络可以使用中间层构建出多层的抽象,正如我们在布尔线路中做的那样。例如,如果我们在进行视觉模式识别,那么在第一层的神经元可能学会识别边,在第二层的神经元可以在边的基础上学会识别出更加复杂的形状,例如三⻆形或者矩形。第三层将能够识别更加复杂的形状。依此类推,这些多层的抽象看起来能够赋予深度网络一种学习解决复杂模式识别问题的能力。

理论上的研究结果告诉我们深度网络在本质上比浅层网络更加强大。

消失的梯度问题

前面的隐藏层中的神经元学习速度要慢于后面的隐藏层。在多数的神经网络中存在着更加根本的导致这个现象出现的原因。这个现象也被称作是消失的梯度问题(vanishing gradient problem)。

实际上,这个问题是可以避免的,尽管替代方法并不是那么有效,同样会产生问题 —— 在前面的层中的梯度会变得非常大!这也叫做激增的梯度问题(exploding gradient problem),这也没比消失的梯度问题更好处理。更加一般地说,在深度神经网络中的梯度是不稳定的,在前面的层中或会消失,或会激增。这种不稳定性才是深度神经网络中基于梯度学习的根本问题。

一种有关消失的(不稳定的)梯度的看法是确定这是否确实是一个问题。此刻我们暂时转换到另一个话题,假设我们正要数值优化一个一元的函数 f (x)。如果其导数 f ′ (x) 很小,这难道不是一个好消息么?是不是意味着我们已经接近极值点了?同样的方式,在深度神经网络中前面隐藏层的小的梯度是不是表示我们不需要对权重和偏置做太多调整了?

当然,实际情况并不是这样的。想想我们随机初始网络中的权重和偏置。在面对任意的一种任务,单单使用随机初始的值就能够获得一个较好的结果是太天真了。具体讲,看看 MNIST 问题的网络中第一层的权重。随机初始化意味着第一层丢失了输入图像的几乎所有信息。即使后面的层能够获得充分的训练,这些层也会因为没有充分的信息而很难识别出输入的图像。因此,在第一层不进行学习的尝试是不可能的。如果我们接着去训练深度神经网络,我们需要弄清楚如何解决消失的梯度问题。

深度神经网络中的梯度不稳定性

如果权重w小于1,那么网络越深,越容易遇到梯度消失的问题;

如果权重大于1,那么梯度会在我们反向传播的时候发生指数级地增长,也就是说遇到了梯度激增的问题;

根本的问题其实并非是消失的梯度问题或者激增的梯度问题,而是在前面的层上的梯度是来自后面的层上项的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。如果没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。简而言之,真实的问题就是神经网络受限于不稳定梯度的问题。所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。

实际上,在使用 sigmoid 神经元时,梯度通常会消失。原因是即使w很大,σ(wx+b)也会很小。唯一避免发生这个情况的方式是,如果输入激活函数掉入相当狭窄的范围内(这个量化的解释在下面第一个问题中进行)。有时候,有可能会出现。但是一般不大会发生。所以一般情况下,会遇到消失的梯度。

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

在乘积中大量的项会导致不稳定的梯度,和前面的例子一样。实践中,一般会发现在sigmoid 网络中前面的层的梯度指数级地消失。所以在这些层上的学习速度就会变得很慢了。这种减速不是偶然现象:也是我们采用的训练的方法决定的。

其他深度学习的障碍

实际上,不稳定梯度仅仅是深度学习的众多障碍之一,尽管这一点是相当根本的。当前的研究集中在更好地理解在训练深度神经网络时遇到的挑战。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐