神经网络之反向传播

注意:本文为学习笔记,大量直接复制于参考文章中的原文字及图片

反向传播(Backpropagation),该方法计算对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。
任何监督式学习算法的目标是找到一个能把一组输入最好的映射到其正确的输出的函数。

概括

反向传播算法(BP算法)主要由两个阶段:激励传播与权重更新。

  • 第1阶段:激励传播
    每次迭代中的传播环节包含两步:
    1. (前向传播阶段)将训练输入送入网络以获得激励响应;
    2. (反向传播阶段)将激励响应同训练输入对应的目标输出求差,从而获得隐层和输出层的响应误差。
  • 第2阶段:权重更新
    对于每个突触上的权重,按照以下步骤进行更新:
    1. 将输入激励和响应误差相乘,从而获得权重的梯度;
    2. 将这个梯度乘上一个比例并取反后加到权重上。

这个比例(百分比)将会影响到训练过程的速度和效果,因此称为“训练因子”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。
第1和第2阶段可以反复循环迭代,直到网络的对输入的响应达到满意的预定的目标范围为止。

看着有点晕,所以接下来还是看看详细的解释吧。

神经网络之反向传播_第1张图片

如图所示的网络,有三层,输入层 i,隐藏层 h,输出层 ow为权重。
输入为0.05,0.10, 预计输出为0.01,0.99。
然后经过前向传播得到一个结果,与实际有一个误差,常见方法是用平方差来测量,如下

然后如何用这个来更新权重呢?实际上可以把这个公式想象成一个曲面。然后我们要做的就是使得E最小,实际上就是想要得到曲面的最低点。所以采用梯度下降的方法。
神经网络之反向传播_第2张图片

神经网络之反向传播_第3张图片

以w5为例子,求偏导,然后梯度下降,设一个learning rate,控制下降的速度。

对w5进行更新,假如斜率大于0,那么就应该减少,假如斜率小于0,那么就应该增加。


然后同理对其他参数也进行更新,然后不断的迭代更新,直到固定次数或者误差小于某个阈值。

参考链接:
维基百科-反向传播算法
一文弄懂神经网络中的反向传播法——BackPropagation
偏导数及其几何意义

你可能感兴趣的:(神经网络之反向传播)