mlp神经网络_MLP(全连接神经网络)的反向传播

59e36a382ad524f45b86f9268e28c2c1.png

目录

  • 1 MLP 的结构
  • 2 MLP 的反向传播
    • 2.1 输出部分
    • 2.2 隐藏层部分
  • 3 梯度消失与爆炸

1 MLP 的结构

由于找不到全连接神经网络(Fully Connected Feedforward Neural Network,只由全连接层FC layer顺序连接而成的ANN)对应的英文缩写,在本文中,我们用MLP(多层感知机)来指代全连接神经网络。如果有人知道全连接神经网络的真正缩写的话,烦请在评论区告知一声。

MLP可以说是最简单的一种ANN结构了,输入通过若干个隐藏层后,进入输出层得到输出。下图展示了只有一个单隐层的MLP。

bd6438dde4db795ace51e42dc15fb64e.png
图1 单隐层MLP

如果使用交叉熵损失函数(Cross Entropy Error Function),需要在输出层的状态值

后添加 softmax 函数进行归一化,得到一个概率分布作为网络的输出
(比如预测每个分类的概率)。其中
表示真实分布。对应的方程为:

如果使用MSE损失函数(Mean Squared Error Function),则可以不使用 softmax 归一化函数。对应的方程为:

我们需要优化的参数为:第一层的

,第二层(输出层)的

2 MLP 的反向传播

由链式法则可知,损失值对第

层输出的梯度
(称为激活值梯度),可以由前一层迭代求出:

然后通过

计算出状态值梯度,一般记为

最后就可以计算第

层中各个参数的梯度:

下面,我们将以图1中的单隐层MLP为例,来演示梯度的计算。为简便起见,输入的batch num设为1。

2.1 输出部分

本节的目标是求得输出层的参数梯度
(8),以及前一个隐藏层的激活值梯度
(9)。

交叉熵损失函数

微分:

向量化:

其中

是逐元素取倒数。

得到:

其中

为逐元素指数函数,
表示与
同型的全1向量,
表示对
各元素求和得到一个标量。记

微分:

向量化:

得到:

由(4)(5),有:

MSE损失函数

微分后向量化:

有:

由于

,有:

观察(6-a)和(6-b)可知,无论是采用MSE还是交叉熵,输出层的状态值梯度

都是网络输出与目标输出之间的残差(余差)
。在实际计算中,可以跳过
而直接计算

参数梯度

微分:

向量化:

得到:

其中

表示单位阵,其大小与第2层输出维度大小一致。

结合(6)(7)有:

在实际计算中,一般将

进一步化简,消掉Kronecker积:

2.2 隐藏层部分

结合(9)可得:

类似。

3 梯度消失与爆炸

回顾式(7)

与式(10)
,有:

推广到多隐层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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值