梯度下降(Gradient Descent)

时间:2022-10-27 21:25:41

梯度下降

梯度下降的思想

梯度下降是求得函数最小值的算法。在逻辑回归中,梯度下降用来求得损失函数(或代价函数)的最小值 J ( θ )
梯度下降的思想:初始随机选择参数组合 ( θ 0 , θ 1 , . . . , θ n ) ,计算损失函数(或代价函数),然后寻找下一个能让损失函数(或代价函数)值下降最多的参数组合。

注:梯度下降在线性回归中求得是平方误差代价函数的最小值,逻辑回归中是求得损失函数的最小值。无论是代价函数还是损失函数(其实损失函数本身源于代价函数;而两者都源于本质的目标函数),梯度下降都是求解所要优化的函数。

过程

  • 公式:
    r e p e a t {
    θ j := θ j α θ j J ( θ 0 , θ 1 ) f o r   j = 0 , j = 1
    }

此处假设参数只有两个 θ 0 θ 1
α 表示学习步长。
在梯度下降算法中需要同时更新 θ 0 θ 1 .

t e m p 0 := θ 0 α θ 0 J ( θ 0 , θ 1 )
t e m p 1 := θ 1 α θ 1 J ( θ 0 , θ 1 )
θ 0 := t e m p 0
θ 1 := t e m p 1

- 图形
如下图,梯度下降的过程,两条线分别取自不同的初始点。选择不同的初始点会导致寻找到的最后的局部最小值点不同。
梯度下降(Gradient Descent)

几个问题


  • 偏导数问题
    对于只有一个变量的方程式来说,偏导数就是导数,在某一个点的导数表示该点切线的斜率。切线与横坐标的0°<夹角<90°,斜率大于0;90°<夹角<180°,斜率小于0.
    梯度下降(Gradient Descent)
    因此,如图,当初始点在最小值点的右边,θ的更新值不断减小;当初始点在最小值的左边,θ的更新值不断增加。最终是要不断靠近最小值点。
  • α 学习率的问题
    α 太小,找到局部最小值点需要的步数会很多;
    α 太大,每一次迭代会由于步子太大而越过最低点,会导致无法收敛,甚至发散。
  • 初始点为局部最小值点
    如果初始点恰好为局部最小值点,此时的导数为0,也就是切线的斜率为0,所以更新θ的值不会有变化。此时的θ也就是我们需要的参数。
  • 为什么不需要更新或者改变 α 的值
    在找到局部最小值的迭代过程中,按照我们的理解来说,应该在距离局部最小值点远的地方下降的快些,越靠近局部最小值点的时候应该下降的慢些(越接近目标越要小心翼翼)。
    根据下图可以看出,在距离局部最小值点较远的时候,切线的斜率较大的,对应θ值的改变也就越大,也就是下降的更快一些;而越接局部最小值点的时候,切线的斜率越小,对应θ值的改变越小,也就是下降的速度变得了。因此,不需要改变 α 的值,偏导数 θ J ( θ ) 就已经有了这个功能。初始值点在局部最小值点的左边也是一样。
    梯度下降(Gradient Descent)

理解:
1.偏导数:因为从某一个点出发,让其开始变化,变化方向360°有无数个方向,而切线方向最快。
2.每次更新:每次更新一个 θ i 时,其他参数都为常数,当前函数为 θ i 为自变量, J ( θ i ) 为因变量,只求得当前 θ i 怎么变化、变化多少,使得 J ( θ i ) 朝着最小值的方向变化。求得所有的参数都使得 J ( θ i ) 朝着最小值的方向变化的更新值,并同时更新所有的参数。