Press "Enter" to skip to content

神经网络基础-反向传播

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

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

 

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

 

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

 

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

 

(1)假设此处损失函数 ,其中 表示预测值,y表示真实值。

 

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

 

1. 反向传播的计算过程

 

 

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

 

图中,x是输入数据, 是线性变化乘法, 是非线性激活函数, 是损失函数 是输出O,y是真实值标签。

 

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

 

 

2. 梯度下降

 

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

 

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

 

假设,损失函数

 

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

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。