神经网络基础--1.4 梯度下降法
梯度下降法
- 用来训练或学习训练集上的参数w和b
为了便于理解,以一元函数为例
要找到输入值w,使输出的函数值C(w)最小。
先随便挑一个输入值,然后考虑向左还是向右走,函数值才会变小。
如果可以确定函数在这里的斜率,斜率为正,就向左走,斜率为负,就向右走。
如果每一步的大小和斜率成比例,那么在最小值附近斜率会越来越平缓,每一步会越来越小,这样可以防止调过头。
在每一个点上都这样重复,计算新斜率,再适当的走一小步,就会逼近函数的某个局部最小值。但如上图的函数,无法保证落到的局部最小值就是代价函数可能达到的全局最小值。
想象一个更复杂的,两个输入一个输出的二元函数
输入空间想象成XY平面,代价函数是平面上方的曲面,此时考虑在输入空间内沿哪个方向走可以使输出结果下降的最快
函数的梯度指出了函数的最陡增长方向,那么沿梯度的负方向走,函数值降低的最快。且梯度向量的长度代表了最陡的斜坡有多陡
和上面一元函数类似,在每一个点先计算梯度,再按梯度反方向向下走一小步,然后循环
下面为一元函数下w和b的迭代公式,=表示一次迭代
α为学习率,学习率可以控制每一次迭代,或梯度下降法中的步长
α后的部分为导数(斜率),是对参数w的更新或变化量
假如在当前点的斜率是正的,新的w的值等于w自身减去学习率乘导数,接着向左走一步