3. 机器学习中为什么需要梯度下降_机器学习中的优化—梯度下降与牛顿法

几乎所有机器学习问题都涉及某种形式的优化, 然而大多数相关书籍将优化问题并入数学基础部分一笔带过,给读者(至少我)带来困惑。我写这篇文章,希望给有类似疑惑的人带来些许启发。

优化在这里指的是求某个变量

, 最小化
。例如:对于线性回归,我们定义预测值
, 我们要求优化
使预测值与真实值
的均方误差
最小。大多数优化问题不存在显式解,我们要用迭代的方法去逼近最优
。本文对最常见的两个优化方法:1)梯度下降 2)牛顿法进行简介与比较,最后再给出一个应用例子。

下文约定小写字母

维向量,
, 大写字母
表示矩阵。本文内容主要参照
[1],并进行了补充和对某些结论给出了证明。

1,梯度下降

梯度下降简单来讲,就是让变量

不断往负梯度方向移动,从而不断减少
并逼近
的最小值。我们讨论以下几个问题:
  1. 什么是梯度?
  2. 为什么梯度下降可以有效减少
    ?
  3. 梯度下降在什么情况下表现不好?

1.1 梯度

函数

的梯度 (gradient) 是包含所有偏导数的向量,记为
。梯度的第
个元素是
关于
的偏导数,即
。当 梯度中所有元素为0时,所对应的驻点
可能为局部极小点,局部极大点或者鞍点。

24c98ded910f9ff425c02a8efd33cd33.png
图1.1 一维情况下的局部极小点,局部极大点与鞍点

1.2 梯度下降的原理

假设

往单位向量
方向移动,函数
方向的斜率,即
方向的方向导数,衡量
的变化速度。我们希望找到一个理想移动方向
来最小化
,所以
方向导数为应为负且越小越好。

点处往
方向移动的方向导数为:
的值。

(多元函数微分的链式法则)

(
)

所以我们的目标为:

(内积的几何表示,

与梯度
的夹角)

并省去与
无关的项,我们的目标可以写为:
,当
,即u与梯度方向相反时,即
沿负梯度方向移动时,方向导数最小,
下降速度最快,故梯度下降又称为最速下降法。

梯度下降

的迭代更新公式为:

,
为学习率,通常是一个小的正标量。

772f8e2a58befe2f04dddc7385362cbf.png
图1.2 梯度下降

1.3 梯度下降的进一步分析

梯度下降实际上只利用了一阶导数,也就是梯度带来的信息,因为如此,我们将会看到在某些情况下,梯度下降是一种效率很低的,极端情况下甚至无效的优化方法。

如果我们不仅考虑函数的一阶导数,而同时考虑二阶导数到来的信息,我们就要考虑 Hessian矩阵:

因为Hessian矩阵是实对称矩阵,可以被特征分解,并由此可证明在特定方向上的二阶导数可以写成

。当
的一个特征向量时,这个方向的二阶导数就是对应的特征值。对于其他方向
,方向二阶导数是所有特征值的加权平均,权重在0和1之间。证明见
[2]

假如梯度下降的当前点为

,在当前点进行泰勒展开:

其中

是梯度,
处的Hessian。我们使用梯度下降进行迭代,新的点
, 代入上式得:

由上式可见,当

太大时,梯度下降可能使函数值上升。以下两种情况可能造成
太大:
  1. 学习率
    太大,
    冲过了
    极小值所对应的
  2. 在梯度方向的二阶导数
    太大,即函数在
    处非常陡峭,即使一个小的学习率也使
    冲过
    极小值所对应的

另外,在多维情况下,单个点处每个方向的二阶导数是不同的。当在某个方向的二阶导数很大,另一个方向的二阶导数很小时,例如像下图中的窄而陡峭的峡谷。由于峡谷壁非常陡峭(一阶导数小但二阶导数大,一阶导数随梯度下降增加速度快),梯度下降偏向在峡谷壁向左或向右方向下降,而不是从上往下往峡谷底部下降。同时,因为峡谷壁非常陡峭,每一次迭代都冲过了峡谷底部,因此下一次迭代时在对面的峡谷壁下降。梯度下降把时间浪费于在峡谷壁上来回下降,因此效率很低。

fd4b8de42721ea1b2fa9912578661c2d.png
图1.3 Hessian条件数差时的梯度下降

2.牛顿法

2.1 牛顿法的原理

如果我们同时考虑利用二阶导数带来的信息来指导迭代,最简单的方法是牛顿法。牛顿法基于二阶泰勒展开来近似

附件的
:

式(2.1.1)

其中

是在
处的梯度,
处的Hessian。假如迭代后的点
为极小点, 则需满足以下条件:
  1. , 即梯度向量中所有元素为0。
  2. 为正定矩阵,即确保
    附近的驻点
    为极小点。这是因为
    为正定矩阵,任意方向二阶导数
    (见1.3)。

假如条件2已经满足,对式2.1.1两边取导,得:

得:

即每一步的迭代为:

2.2 牛顿法的进一步分析

是一个正定二次函数
[3]时,牛顿法只需迭代一次就能跳到函数的极小点。证明如下:

假如

是一个正定二次函数,则
,其中
为实对称正定矩阵。设迭代初始点为

可求得在

处的梯度
,在
处的Hessian为

(标量对向量求导的方法可参考[4]

则迭代后点

而对于

, 由
可直接求得驻点
,又因为
为正定矩阵,所以
为极小点。

可知牛顿法只需迭代一次就能跳到函数的极小点。

不是真正二次但能在局部近似为正定二次时,牛顿法需要多次迭代。

迭代地更新近似函数和跳到近似函数的最小点可以比梯度下降更快地到达驻点。但牛顿法只在Hessian为正定矩阵时才适用,否则牛顿法会跳进鞍点或极大点。高维空间中鞍点的激增解释了为何在大多数情况下为何牛顿法无法成功取代梯度下降。[1]

3, 一个例子:线性最小二乘

假设我们希望找到最小化下式的

值:

3.1 梯度下降

首先,我们计算梯度

,然后运行以下算法:

1)将学习率

和容差
设为小的正数。

2)while

do

end while

3.2 牛顿法

因为对于任意单位向量

,所以
是形如2.2的正定二次型。其中
,
,故一次迭代后可得极小点

(欢迎转载,但请注明出处)

参考

  1. ^abDeep Learning - by Ian Goodfellow, Yoshua Bengio and Aaron Courville
  2. ^Jacobian矩阵、Hessian矩阵和多元函数的二阶导数 https://www.jianshu.com/p/f90e8d4195a4
  3. ^正定二次函数 https://baike.baidu.com/item/%E6%AD%A3%E5%AE%9A%E4%BA%8C%E6%AC%A1%E5%87%BD%E6%95%B0/19132454?fr=aladdin
  4. ^矩阵求导术(上) https://zhuanlan.zhihu.com/p/140556531/edit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值