神经网络基础--1.4 梯度下降法

梯度下降法

  • 用来训练或学习训练集上的参数w和b

为了便于理解,以一元函数为例
神经网络基础--1.4 梯度下降法
要找到输入值w,使输出的函数值C(w)最小。

先随便挑一个输入值,然后考虑向左还是向右走,函数值才会变小。
如果可以确定函数在这里的斜率,斜率为正,就向左走,斜率为负,就向右走。

如果每一步的大小和斜率成比例,那么在最小值附近斜率会越来越平缓,每一步会越来越小,这样可以防止调过头。

在每一个点上都这样重复,计算新斜率,再适当的走一小步,就会逼近函数的某个局部最小值。但如上图的函数,无法保证落到的局部最小值就是代价函数可能达到的全局最小值。


想象一个更复杂的,两个输入一个输出的二元函数
神经网络基础--1.4 梯度下降法
输入空间想象成XY平面,代价函数是平面上方的曲面,此时考虑在输入空间内沿哪个方向走可以使输出结果下降的最快

函数的梯度指出了函数的最陡增长方向,那么沿梯度的负方向走,函数值降低的最快。且梯度向量的长度代表了最陡的斜坡有多陡

和上面一元函数类似,在每一个点先计算梯度,再按梯度反方向向下走一小步,然后循环


下面为一元函数下w和b的迭代公式,=表示一次迭代

w:=wαd(J(w,b))dww:=w-α\frac{d(J(w,b))}{dw}
b:=bαd(J(w,b))dbb:=b-α\frac{d(J(w,b))}{db}

α为学习率,学习率可以控制每一次迭代,或梯度下降法中的步长
α后的部分为导数(斜率),是对参数w的更新或变化量

假如在当前点的斜率是正的,新的w的值等于w自身减去学习率乘导数,接着向左走一步
神经网络基础--1.4 梯度下降法