神经网络基础-反向传播

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

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

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

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

(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 不同学习率下的参数更新

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值