梯度下降算法
之前提到,需要寻找合适的参数 w 和 b w和b w和b,来使得成本函数 J ( w , b ) J(w,b) J(w,b)尽可能的小,这章介绍一种常用的求解算法:梯度下降算法
迭代公式:
w = w − α ∂ J ( w , b ) ∂ w w=w-\alpha \frac {\partial J(w,b) }{\partial w} w=w−α∂w∂J(w,b)
稍微解释一下这个公式
α \alpha α:学习率,是一个大于0的实数,它表示每次迭代时
∂ \partial ∂:求偏导符号
从简单的成本函数 J ( w ) J(w) J(w)(假设此时只有一个参数 w w w)入手会比较方便理解这个迭代公式的意义:
$\frac {d J(w) }{d w} : 表 示 函 数 :表示函数 :表示函数J(w) 在 点 在点 在点(w,J(w))$处的斜率或者说变化率
由于函数 J ( w ) J(w) J(w)是连续的,分情况讨论:
- d J ( w ) d w > 0 \frac {d J(w) }{d w} >0 dwdJ(w)>0 :可以知道,在点 ( w , J ( w ) ) (w,J(w)) (w,J(w))的某个邻域内导数都会大于0,函数 J ( w ) J(w) J(w)是递增的, J ( w ) J(w) J(w)随着 w w w的增大而增大,由于我们希望得到较小的 J ( w ) J(w) J(w),所以应该减小 w w w,公式:
w
=
w
−
α
d
J
(
w
,
b
)
d
w
w=w-\alpha \frac {d J(w,b) }{d w}
w=w−αdwdJ(w,b)
在
d
J
(
w
)
d
w
>
0
\frac {d J(w) }{d w} >0
dwdJ(w)>0时,经过迭代,
w
w
w会变得更小
- d J ( w ) d w < 0 \frac {d J(w) }{d w} <0 dwdJ(w)<0 :可以知道,在点 ( w , J ( w ) ) (w,J(w)) (w,J(w))的某个邻域内导数都会小于0,函数 J ( w ) J(w) J(w)是递减的, J ( w ) J(w) J(w)随着 w w w的增大而减小,由于我们希望得到较小的 J ( w ) J(w) J(w),所以应该增大 w w w,公式:
w = w − α d J ( w , b ) d w w=w-\alpha \frac {d J(w,b) }{d w} w=w−αdwdJ(w,b)
在 d J ( w ) d w < 0 \frac {d J(w) }{d w} <0 dwdJ(w)<0时,经过迭代, w w w会变得更大
上述结论可以推广到多元函数,结论依然成立,通过反复的迭代,最终偏导数会趋向于0,成本函数 J ( w , b ) J(w,b) J(w,b)将会收敛于一个局部最小值(当这个函数是凸函数时,只有一个局部最小值,这个值也就是全局最小值)