当前位置:   article > 正文

神经网络基础-反向传播_神经网络反向传播

神经网络反向传播

在神经网络中,信息流动有两个方向,一个是向前传播,一个是向后传播。

向前传播是指,输入层数据从前向后,逐步传递到输出层;

向后传播是指,损失函数从后向前,将梯度逐步传递到第一层。

向前传播用于计算预测值,向后传播为了修正预测值,将误差从最后一层传回第一层,利用链式求导的梯度修正参数,使网络输出的预测值更接近真实值,也就是使误差更小。此处有两个重要概念,衡量输出与真实值差异的损失函数,梯度反向传播的链式求导法则。

(1)假设此处损失函数Loss=f(\widehat{y}-y),其中\widehat{y}表示预测值,y表示真实值。

(2)微积分中,y=f(u),u=g(x),则y对x的偏导为\frac{\partial y}{\partial x}=\frac{\partial y}{\partial u}\frac{\partial u}{\partial x}

1. 反向传播的计算过程

图1 计算图的链式求导过程 

图中,x是输入数据,是线性变化乘法,是非线性激活函数,是损失函数f(\widehat{y}-y)\widehat{y}是输出O,y是真实值标签。

求导过程涉及矩阵的求导,计算较为复杂,为了简便了解过程,利用计算符号prod(x,y)表示x与y根据形状做必要变换,然后相乘。

 2. 梯度下降

梯度是一个向量,方向为方向导数取得最大值的方向,也就是变化率最大的方向。 

梯度是使函数值最快变大的方向,而反向传播是使损失函数最快变小的方向,因此,下降法是沿着梯度的负方向,使损失函数减小。

假设,损失函数loss=4\times w^{2}loss{}'=8\times w

w0=2,loss=16,loss'=16

x1=w0-loss'=2-16=-14, loss= 784, loss'=-112

x2=w1-loss'=-144+112=98, loss=98

误差反向传播两次后,w值调整了两次,但loss并没有变小。这是因为沿地图负方向下降的步长过大,跨过了最小值区域。因此需要设置一个恰好的步长,使loss更快接近最小值。

图2 无学习率的参数更新

 3. 学习率

 学习率(learning rate,简称lr)用来控制更新步长的长度。

加入学习率后参数更新:w(i+1) = w(i) - lr * loss'

图3 不同学习率下的参数更新

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/405614
推荐阅读
相关标签
  

闽ICP备14008679号