深度学习-后向传播算法

深度学习-后向传播算法

  • 前向传播
  • 为什么需要反向传播
  • 后向传播
      • 梯度下降[^1]
      • 链式法则
      • 一次前向传播[^2]
      • 后向传播
      • 反向传播的问题及解决方案

深度学习的第一步,一定要理解后向传播算法。

前向传播

∂ C ∂ w j ≈ C ( w + ϵ e j ) − C ( w ) ϵ \frac{ ∂C }{ ∂wj }≈C(w+ϵej)−C(w)ϵ wjCC(w+ϵej)C(w)ϵ
计算损失函数C关于每个权重wj 的梯度,都需要对于每一个样本计算损失函数C(w+ϵej) ,当网络神经元增加,权重数量增加,比如一百万个,就需要计算一百万次损失函数,计算量是惊人的。

为什么需要反向传播

高效。基本上相当于两次前向传播的计算量(详情见下面算法部分,一次前向+一次后向梯度运算)。

后向传播

反向传播涉及的基础知识点包括:梯度下降和链式法则。

梯度下降1

一种最优化方法,按照梯度的反方向(下降最快的方向)进行迭代更新。 [这里可以进一步了解方向倒数,梯度以及最优化方法SGD, BGD, 牛顿法, 拟牛顿法(BFGS, LBFGS), Momentum, NAG, Adagrad, Rmsprop, Adadelta, Adam, NAdam等。]
深度学习-后向传播算法_第1张图片

链式法则

深度学习-后向传播算法_第2张图片

一次前向传播2

深度学习-后向传播算法_第3张图片

后向传播

深度学习-后向传播算法_第4张图片

反向传播的问题及解决方案

梯度消失和梯度饱和、合适的学习率、批大小、epoch 数量等。
解决方案有:

  1. 激活函数方向。如relu, leaky relu, elu等
  2. fine tuning, 预训练微调
  3. 合适的初始化。如glorot, xavier, he等
  4. 添加正则。如LN,BN,WN,CN等
  5. 梯度剪切clip
  6. 残差结构resnet,短连接
  7. LSTM(有短连接的存在,gate不容易爆炸或消失)
  8. 使用线性后向传播3。如下图,线性反向传播算法在传递损失函数的梯度时,因为是线性函数,所以不需要另外再求梯度。
    深度学习-后向传播算法_第5张图片

  1. Gradient descent ↩︎

  2. Deep learning, Ian Goodfellow ↩︎

  3. Linear Backprop in non-linear networks ↩︎

你可能感兴趣的:(深度学习)