目录
- 1 MLP 的结构
- 2 MLP 的反向传播
- 2.1 输出部分
- 2.2 隐藏层部分
- 3 梯度消失与爆炸
1 MLP 的结构
由于找不到全连接神经网络(Fully Connected Feedforward Neural Network,只由全连接层FC layer顺序连接而成的ANN)对应的英文缩写,在本文中,我们用MLP(多层感知机)来指代全连接神经网络。如果有人知道全连接神经网络的真正缩写的话,烦请在评论区告知一声。
MLP可以说是最简单的一种ANN结构了,输入通过若干个隐藏层后,进入输出层得到输出。下图展示了只有一个单隐层的MLP。
如果使用交叉熵损失函数(Cross Entropy Error Function),需要在输出层的状态值
如果使用MSE损失函数(Mean Squared Error Function),则可以不使用 softmax 归一化函数。对应的方程为:
我们需要优化的参数为:第一层的
2 MLP 的反向传播
由链式法则可知,损失值对第
然后通过
最后就可以计算第
下面,我们将以图1中的单隐层MLP为例,来演示梯度的计算。为简便起见,输入的batch num设为1。
2.1 输出部分
本节的目标是求得输出层的参数梯度,(8),以及前一个隐藏层的激活值梯度(9)。
交叉熵损失函数
微分:
向量化:
其中
得到:
其中
微分:
向量化:
得到:
由(4)(5),有:
MSE损失函数
微分后向量化:
有:
由于
观察(6-a)和(6-b)可知,无论是采用MSE还是交叉熵,输出层的状态值梯度
参数梯度
微分:
向量化:
得到:
其中
结合(6)(7)有:
在实际计算中,一般将
2.2 隐藏层部分
结合(9)可得:
与
3 梯度消失与爆炸
回顾式(7)
推广到多隐层MLP,有:
记为jacobian矩阵的形式,
记
- 当
时,随着的减少,,发生梯度爆炸(gradient explosion)。
此时中较小的扰动将引起的剧烈变化,亦即loss曲面变得过于崎岖而导致无法收敛到局部最小。 - 当
时,随着的减少,,发生梯度消失(gradient vanish)。
由于激活函数的导数一般有,因此梯度消失更常发生。 - 当
且,的奇异值将决定方程(11)的性质:
- 在
远大于1的方向上,发生梯度爆炸;在远小于1的方向上,发生梯度消失。
- 我们可以通过条件数
来判断(11)是否稳定,当较大时,方程变得ill-conditioned,此时各个方向的强度差异过大,网络将处于梯度爆炸和梯度消失的混合状态。
- 因此,我们一般希望
,此时为近似的正交阵,这也是各种正交初始化的motivation之一。有兴趣的可以看以下文章:
- 【sigmoid Dynamical Isometry initial】2017 Resurrecting the sigmoid in deep learning through dynamical isometry theoryandpractice
- 【Singular Value Bounding】2017 Improving training of deep neural networks via Singular Value Bounding
- 【CNN‘s Dynamical Isometry initial】2018 Dynamical Isometry and a Mean Field Theory of CNNs How to Train 10,000-Layer Vanilla Convolutional Neural Networks
- 在
转载请注明出处:https://zhuanlan.zhihu.com/p/141745257。