梯度下降法(Gradient Descent)

  • 不是一个机器学习算法
  • 是一种基于搜索的最优化方法
  • 作用:最小化一个损失函数
  • 梯度上升法:最大化一个效用函数

无论是梯度下降法还是梯度上升法都是对目标函数进行优化操作。

梯度下降法简单解释 梯度下降法图解_损失函数


梯度下降法可以类比下山的过程,山势连绵不绝,不知道怎么下山。于是每次沿着当前位置最陡峭最易下山的方向前进一小步,然后继续沿下一个位置最陡方向前进一小步,一直走到觉得已经到了山脚。这就是一个梯度下降的过程。

梯度下降法简单解释 梯度下降法图解_梯度下降法_02


上图为等高线图,如果上图所示,我们需要在x0处走到达谷底,使用梯度下降法进行每次的下降最后将到达谷底。

首先理解什么是梯度?通俗来说,梯度就是表示某一函数在该点处的方向导数沿着该方向取得较大值,即函数在当前位置的导数。

梯度下降法简单解释 梯度下降法图解_梯度下降法_03


如上图二维平面所示,注意x轴表示的是参数θ,y轴表示的是损失函数J的数值。

对于我们要最小化一个损失函数J的过程来说,相当于在这样一个坐标中寻找合适的点参数,使得我们的损失函数J取得最小值。

对于损失函数J来说,我们每取一个θ值就会有一个损失函数J,如图蓝点所示。由数学知识可得到,如果该点的导数不为0的话,那就说明这个点不在一个极值点的位置。导数形式为 梯度下降法简单解释 梯度下降法图解_梯度下降法_04 ,在直线方程中,导数代表斜率,在曲线方程中,导数代表切线斜率,换种说法,在这张图中,导数代表θ单位变化时,J相应的变化。

对于上图中蓝点来说,它往右移动一点对应着θ增加J减小,反之往左移动一点对应着θ减小J增加,所以导数还可以代表方向,对应J增大的方向。

我们想要去最小化损失函数,所以我们希望蓝点向J减小的方向移动。就能构建 梯度下降法简单解释 梯度下降法图解_机器学习_05

梯度下降法简单解释 梯度下降法图解_机器学习_06


对于蓝点需要最优化损失函数先对它进行求导往右移动了一点到了第二个蓝点的位置,此时导数不为0不为极值点,然后我们尝试将此时的θ再减去相应的-η乘以导数值再进行移动一步,以此类推,我们逐渐地通过这个过程找到θ到底到了哪里能够取到损失函数J的最小值。

梯度下降法简单解释 梯度下降法图解_损失函数_07


这是对于一位函数,所以我们直接用导数即可代表方向,但是在多维函数中,我们要对各个方向的分量分别求导,最终得到的方向就是梯度,所以对于多维函数来说,梯度可以代表方向,对应的就是损失函数J增大的方向。

  • η称为学习率(learning rate)
  • η的取值影响获得最优解的速度(η太小,减慢收敛学习速度;η太大,甚至导致不收敛)
  • η的取值不合适,甚至得不到最优解
  • η是梯度下降法的一个超参数

当然,并不是所有函数都有唯一的极值点,所以我们可能使用梯度下降法找到的是一个极值点但并不是最值点,此时我们找到的仅仅是局部最优解而并非全局最优解

梯度下降法简单解释 梯度下降法图解_机器学习_08


解决方案:

  • 多次运行,随机化初始点
  • 梯度下降法的初始点也是一个超参数