赞
踩
在神经网络中,信息流动有两个方向,一个是向前传播,一个是向后传播。
向前传播是指,输入层数据从前向后,逐步传递到输出层;
向后传播是指,损失函数从后向前,将梯度逐步传递到第一层。
向前传播用于计算预测值,向后传播为了修正预测值,将误差从最后一层传回第一层,利用链式求导的梯度修正参数,使网络输出的预测值更接近真实值,也就是使误差更小。此处有两个重要概念,衡量输出与真实值差异的损失函数,梯度反向传播的链式求导法则。
(1)假设此处损失函数,其中表示预测值,y表示真实值。
(2)微积分中,y=f(u),u=g(x),则y对x的偏导为
图1 计算图的链式求导过程
图中,x是输入数据,是线性变化乘法,是非线性激活函数,是损失函数,是输出O,y是真实值标签。
求导过程涉及矩阵的求导,计算较为复杂,为了简便了解过程,利用计算符号prod(x,y)表示x与y根据形状做必要变换,然后相乘。
梯度是一个向量,方向为方向导数取得最大值的方向,也就是变化率最大的方向。
梯度是使函数值最快变大的方向,而反向传播是使损失函数最快变小的方向,因此,下降法是沿着梯度的负方向,使损失函数减小。
假设,损失函数,
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 无学习率的参数更新
学习率(learning rate,简称lr)用来控制更新步长的长度。
加入学习率后参数更新:w(i+1) = w(i) - lr * loss'
图3 不同学习率下的参数更新
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。