梯度下降
梯度下降的思想
梯度下降是求得函数最小值的算法。在逻辑回归中,梯度下降用来求得损失函数(或代价函数)的最小值
。
梯度下降的思想:初始随机选择参数组合
,计算损失函数(或代价函数),然后寻找下一个能让损失函数(或代价函数)值下降最多的参数组合。
注:梯度下降在线性回归中求得是平方误差代价函数的最小值,逻辑回归中是求得损失函数的最小值。无论是代价函数还是损失函数(其实损失函数本身源于代价函数;而两者都源于本质的目标函数),梯度下降都是求解所要优化的函数。
过程
- 公式:
此处假设参数只有两个
和
。
表示学习步长。
在梯度下降算法中需要同时更新
和
.
- 图形
如下图,梯度下降的过程,两条线分别取自不同的初始点。选择不同的初始点会导致寻找到的最后的局部最小值点不同。
几个问题
-
偏导数问题
对于只有一个变量的方程式来说,偏导数就是导数,在某一个点的导数表示该点切线的斜率。切线与横坐标的0°<夹角<90°,斜率大于0;90°<夹角<180°,斜率小于0.
因此,如图,当初始点在最小值点的右边,θ的更新值不断减小;当初始点在最小值的左边,θ的更新值不断增加。最终是要不断靠近最小值点。 -
学习率的问题
太小,找到局部最小值点需要的步数会很多;
太大,每一次迭代会由于步子太大而越过最低点,会导致无法收敛,甚至发散。 -
初始点为局部最小值点
如果初始点恰好为局部最小值点,此时的导数为0,也就是切线的斜率为0,所以更新θ的值不会有变化。此时的θ也就是我们需要的参数。 -
为什么不需要更新或者改变
的值
在找到局部最小值的迭代过程中,按照我们的理解来说,应该在距离局部最小值点远的地方下降的快些,越靠近局部最小值点的时候应该下降的慢些(越接近目标越要小心翼翼)。
根据下图可以看出,在距离局部最小值点较远的时候,切线的斜率是较大的,对应θ值的改变也就越大,也就是下降的更快一些;而越接近局部最小值点的时候,切线的斜率越小,对应θ值的改变越小,也就是下降的速度变得慢了。因此,不需要改变 的值,偏导数 就已经有了这个功能。初始值点在局部最小值点的左边也是一样。
理解:
1.偏导数:因为从某一个点出发,让其开始变化,变化方向360°有无数个方向,而切线方向最快。
2.每次更新:每次更新一个 时,其他参数都为常数,当前函数为 为自变量, 为因变量,只求得当前 怎么变化、变化多少,使得 朝着最小值的方向变化。求得所有的参数都使得 朝着最小值的方向变化的更新值,并同时更新所有的参数。