梯度下降
梯度下降法是一种通用的优化算法,中心思想是沿着目标函数梯度的方向更新参数值以希望达到目标函数最小(或最大)。梯度下降法是深度学习网络最常用的优化算法。除了深度学习,很多其他场合也会用梯度下降法。
我们需要到达山底,就需要在每一步观测到此时最陡峭的地方,梯度就恰巧告诉了我们这个方向。梯度的方向是函数在给定点上升最快的方向,那么梯度的反方向就是函数在给定点下降最快的方向,这正是我们所需要的。所以我们只要沿着梯度的方向一直走,就能走到局部的最低点!
梯度下降的公式如下:其中α是步长,L(w,b)是损失函数。
BP算法
由于深度学习网络按层深入,层层嵌套的特点,对深度网络目标函数计算梯度的时候,需要用反向传播的方式由深到浅倒着计算以及更新参数。所以反向传播法是梯度下降法在深度网络上的具体实现方式。反向传播算法一般分为两个部分——前向计算,后向传播。前向计算求损失,后向传播求误差。、
我们考虑这样一个神经网络,其中i1、i2为样本,w1、w2、w3、w4、w5、w6、w7、w8、b1、b2为参数,net h1=w1i1+w3i2+b1,net h2=w2i1+w4i2+b2,out h1=sigmoid(net h1)
out h2=sigmoid(net h2),…
正向传播
反向传播
我们先来求最简单的,求误差E对w5的导数。首先明确这是一个“链式求导”过程,要求误差E对w5的导数,需要先求误差E对out o1的导数,再求out o1对net o1的导数,最后再求net o1对w5的导数,经过这个链式法则,我们就可以求出误差E对w5的导数(偏导),如下图所示:
导数(梯度)已经计算出来了,下面就是反向传播与参数更新过程: