简述梯度下降法

简述梯度下降法

  在机器学习中,梯度下降法是一种常用的优化方法,是解决无约束优化问题最简单、最经典的方法之一。要了解梯度下降法是什么,首先就要了解什么是梯度。

1、梯度

  在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。设有多元函数:
​​​​在这里插入图片描述
  按照上述定义,则该多元函数的梯度表示为:
在这里插入图片描述
该梯度表示的几何意义为:

  1. 在该点(x,y,z)处函数变化增加最快的地方;
  2. 该点沿着梯度向量的方向,更容易找到函数的最大值;
  3. 该点沿着梯度向量相反的方向,梯度减少的最快,也就是更加容易地找到函数的最小值。

2、梯度下降法

  梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。

  如下图,每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向走。每走一定的距离就重新计算该处的梯度,确定下一步要下降的方向。
在这里插入图片描述
  从图中可以看出来,从不同的起点开始梯度下降法,最终得到的结果也不一样。这就暴露出了梯度下降法的缺点:梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

3、梯度下降法相关的概念

步长(learning rate):
  也称作学习率,是梯度下降迭代的过程中,每一步沿着梯度负方向前进的长度。
特征(feature)
  样本中的输入部分。对于单特征的样本(x,y),那么这个样本的特征就是x,样本对应的输出为y。
假设函数(hypothesis function)
  假设函数是为了拟合输入样本。
在这里插入图片描述
  等式左边表示神经网络对样本输出的预测。

损失函数(loss function)
  用来评估模型拟合的好坏,通常使用损失函数来度量拟合的程度。
在这里插入图片描述

4、梯度下降法算法过程

  w,b 向量可以初始化为默认值,或者调优后的值。算法终止距离𝜀ε,步长α=1

  1. 确定当前位置的损失函数的梯度,表达式如下:
    在这里插入图片描述
  2. 用步长乘以损失函数的梯度,得到当前位置下降的距离
    在这里插入图片描述
  3. 确定向量的值,确定梯度下降的距离,如果梯度下降的距离小于𝜀ε,当前的w和b向量,就是最终结果,否则进入下一步
  4. 更新w和b向量,回到第一步
    在这里插入图片描述

4.1、以一元函数举例来解释

  如图
在这里插入图片描述
  我们取J(w,b)函数的w参数在二维平面来举例说明。在曲线上任取一点,在该点处作该点的切线,我们能够得到该处的导数:

  我们知道,沿曲线导数的方向函数增加最快,延伸到多元函数就是上文所提到的梯度。接着我们计算出沿导数的反方向移动一定的距离。
在这里插入图片描述
  经过多次的迭代,一定能在J(w)曲线上找到一个最优解。
  值得注意的是,不论我们初始位置是在最优解(设这个点为A)的左边还是右边,我们都能找到最优解。如果初始位置在A的左边,那么我们计算出来的导数是一个负数,根据上面的式子,w会越来越大。如果初始位置在A的右边,计算出来的导数是一个正数,w会越来越小。

  将该方法延伸到三维,即二元函数。我们也能得到这样的结果。
在这里插入图片描述

5、细节问题

  • 算法的步长选择
      算法的步长需要多次运行后才能得到一个较为优的值。
      步长选择取决于样本数据,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。
      步长太大,会导致迭代过快,甚至有可能错过最优解。
      步长太小,迭代速度太慢,很长时间算法都不能结束。
  • 算法参数的初始值选择
      初始值不同,获得的最小值也有可能不同。

6、可能遇到的问题

  • 局部最小值

在这里插入图片描述
  这张图中的函数有3个局部极值点,分别是A,B和C,但只有A才是全局极小值,梯度下降法可能迭代到B或者C点处就终止。
  所以我们可以更换损失函数,而采用下面这个公式
在这里插入图片描述
  这个函数能带给我们一个的优化问题,从而解决局部最优解带来的问题。

  • 鞍点问题

  假设有函数:
在这里插入图片描述
  该函数所对应的图像如下
在这里插入图片描述
  梯度下降法遇到了鞍点,认为已经找到了极值点,从而终止迭代过程,然而从图像我们可以看出来这根本不是极值点。
  如何解决这个问题,留着以后来解决。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值