为什么深层神经网络难以训练

Chapter5 为什么深层神经网络难以训练

Intuitively we’d expect networks with many more hidden layers to be more powerful.
原文链接:http://neuralnetworksanddeeplearning.com/chap5.html

一、消失的梯度

为什么深层神经网络难以训练_第1张图片

这些条表示了每个神经元上的dC/db,也就是代价函数关于神经元的偏差更变的速率(作为学习速率的一种衡量)。

为什么深层神经网络难以训练_第2张图片

前面的隐藏层的学习速度要低于后面的隐藏层(hard to train),这个现象也被称作是消失的梯度问题(vanishing gradient problem)。

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

1.梯度消失问题

极简单的深度神经网络(3个隐藏层):
简单深度神经网络结构
分析可得:

除了最后一项,该表达式是一系列形如 wjσ(zj) 的乘积。为了理解每个项的行为,画出 σ(z) 图像如下:
为什么深层神经网络难以训练_第3张图片

导数最大值: σ(0)=1/4 ,初始化权重: |wj|<1 ;则 |wjσ(zj)|<1/4
为什么深层神经网络难以训练_第4张图片

wjσ(zj) 的存在就是梯度消失问题的本质原因。

2.梯度爆炸问题

权重 wj 在训练中如果增长, |wjσ(zj)|<1/4 可能不再满足。事实上,如果项变得很大(超过1),这时候梯度会在我们 BP 的时候发生指数级地增长。

3.梯度的不稳定性

根本的问题其实并非是消失的梯度问题或者爆炸的梯度问题,而是在前面的层上的梯度是来自后面的层上项的乘积。
所以,如果我们使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。

三、更复杂网络的不稳定梯度

每层包含很多神经元的更加复杂的深度神经网络:

为什么深层神经网络难以训练_第5张图片

实际上,在这样的神经网络中,同样的情况也会发生,一个共 L 层的第 l 层的梯度:

δl=Σ(zl)(wl+1)TΣ(zl+1)(wl+2)TΣ(zL)aC
其中 Σ(zl) 是个对角矩阵,每个元素是对第 l 层的带权输入 σ(z)
本质上的形式还是跟简单深层神经网络很相似的:主要是包含了 (wj)TΣ(zj) ,矩阵 Σ(zj) 在对角线上的值挺小,不会超过 1/4。由于权值矩阵 wj 不是太大,每个额外的项 (wj)Tσ(zl) 会让梯度向量更小,导致梯度消失。

四、深度学习其他的障碍

实际上,不稳定梯度仅仅是深度学习的众多障碍之一。

  • 在 2010 年 Glorot 和 Bengio 发现证据表明 sigmoid 函数的选择会导致训练网络的问题
  • 在 2013 年 Sutskever, Martens, Dahl 和 Hinton 研究了深度学习使用随机权重初始化和基于 momentum 的 SGD 方法。两种情形下,好的选择可以获得较大的差异的训练效果。
  • ……

我们已经集中于深度神经网络中基于梯度的学习方法的不稳定性。结果表明了激活函数的选择,权重的初始化,甚至是学习算法的实现方式也扮演了重要的角色。

你可能感兴趣的:(Machine,Learning)