什么是梯度下降法?

564 人赞同了该回答

梯度下降法简单来说就是一种寻找目标函数最小化的方法。

张戎:深度学习中的优化算法

在深度学习中,经常有人会拿下面这幅图来比较各种优化算法的性质,包括传统的 SGD,Momentum SGD,AdaGrad,RMSProp 和 Adam 等。不过光看图可能无法理解其中的精妙之处,本文将会从数学的基础知识出发,初步介绍深度学习中的一些优化算法,最后进行一些简单的案例分析。

什么是梯度下降法?
什么是梯度下降法?

数学基础知识回顾

一元函数的导数与 Taylor 级数

在微积分中,函数 什么是梯度下降法? 在点 什么是梯度下降法? 上的导数定义为: 什么是梯度下降法? 它在几何上指的就是函数 什么是梯度下降法?什么是梯度下降法?上的切线方向。

通常来说,为了计算某个函数 什么是梯度下降法? 的最大值或者最小值,通常都会计算它的导数 什么是梯度下降法? ,然后求解方程 什么是梯度下降法? 就可以得到函数的临界点,进一步判断这些临界点是否是最大值或者最小值。但是临界点并不一定是全局最大值或者全局最小值,甚至不是局部的最大值或者局部最小值。

例如:函数 什么是梯度下降法? ,它的导数是 什么是梯度下降法? ,因此 什么是梯度下降法? 是它的临界点。但 什么是梯度下降法? 则不是这个函数的局部最大值或者局部最小值点,因为 什么是梯度下降法?什么是梯度下降法?

从 Taylor 级数的角度来看, 什么是梯度下降法?什么是梯度下降法? 附近的 Taylor 级数是

什么是梯度下降法?

对于临界点 什么是梯度下降法? 而言,它满足条件 什么是梯度下降法? 。当 什么是梯度下降法? 时,可以得到 什么是梯度下降法?什么是梯度下降法? 的局部最小值;当 什么是梯度下降法? 时,可以得到 什么是梯度下降法?什么是梯度下降法? 的局部最大值。而对于上面的例子 什么是梯度下降法?而言,临界点 什么是梯度下降法? 的二阶导数则是 什么是梯度下降法? ,因此使用上面的方法则无法判断临界点 什么是梯度下降法? 是否是局部极值。


多元函数的梯度和 Taylor 级数

对于多元函数 什么是梯度下降法? 而言,同样可以计算它们的“导数”,也就是偏导数和梯度,i.e. 它的梯度可以定义为:

什么是梯度下降法?

而多元函数 什么是梯度下降法? 在点 什么是梯度下降法? 上的 Taylor 级数是:

什么是梯度下降法?

其中 什么是梯度下降法? 表示 Hessian 矩阵。如果 什么是梯度下降法? 是临界点,并且 Hessian 矩阵是正定矩阵的时候, 什么是梯度下降法?什么是梯度下降法? 处达到局部极小值。


梯度下降法

从数学上的角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数减少最快的方向。那么,如果想计算一个函数的最小值,就可以使用梯度下降法的思想来做。假设希望求解目标函数 什么是梯度下降法? 的最小值,可以从一个初始点 什么是梯度下降法? 开始,基于学习率 什么是梯度下降法? 构建一个迭代过程:当 什么是梯度下降法? 时,

什么是梯度下降法?

其中 什么是梯度下降法? ,一旦达到收敛条件的话,迭代就结束。从梯度下降法的迭代公式来看,下一个点的选择与当前点的位置和它的梯度相关。反之,如果要计算函数 什么是梯度下降法? 的最大值,沿着梯度的反方向前进即可,也就是说:

什么是梯度下降法?

其中 什么是梯度下降法? 。整体来看,无论是计算函数的最大值或者最小值,都需要构建一个迭代关系 什么是梯度下降法? ,那就是:

什么是梯度下降法?

也就是说对于所有的 什么是梯度下降法? ,都满足迭代关系 什么是梯度下降法? 。所以,在以上的两个方法中,我们可以写出函数 什么是梯度下降法? 的表达式为:

什么是梯度下降法?


深度学习中的优化算法

在本文中,假设 什么是梯度下降法? 是每个样本的损失函数, 什么是梯度下降法? 表示一个关于输入 什么是梯度下降法? 和参数 什么是梯度下降法? 的函数,并且 什么是梯度下降法? 表示 什么是梯度下降法? 所对应的目标值。

什么是梯度下降法?什么是梯度下降法?
什么是梯度下降法?什么是梯度下降法?
什么是梯度下降法?什么是梯度下降法?
什么是梯度下降法?什么是梯度下降法?


案例分析

案例1: 什么是梯度下降法?

针对这个函数 什么是梯度下降法? 而言,从数学上我们可以轻易地得到最小值点就是 什么是梯度下降法? 。不过在这里我们可以验证随机梯度下降法的效果。首先计算函数 什么是梯度下降法? 的梯度为:

什么是梯度下降法?

其次,给定一个随机的初始点 什么是梯度下降法? ,通过梯度可以得到迭代公式为:

什么是梯度下降法?

其中 什么是梯度下降法? 表示学习率, 什么是梯度下降法? 表示迭代次数。因此,可以计算出具体的公式为:

什么是梯度下降法?

于是可以得到:

什么是梯度下降法?

意思就是说,使用随机梯度下降法我们可以得到函数 什么是梯度下降法? 的最小值是 什么是梯度下降法?


案例2: 什么是梯度下降法?

不过,随机梯度下降法也有着自身的局限性。针对很多高维非凸函数而言,鞍点的数量其实远远大于局部极小值(极大值)的数量。因此,如何快速的逃离鞍点就是深度学习中大家所研究的问题之一。而比较简单的鞍点就是马鞍面函数 什么是梯度下降法? 中的 什么是梯度下降法? 点。而函数 什么是梯度下降法?什么是梯度下降法? 上并没有最小值,因为 什么是梯度下降法? 。 同时,函数 什么是梯度下降法? 的偏导数是:

什么是梯度下降法?

什么是梯度下降法? 在点 什么是梯度下降法? 上则满足以下几个性质:

什么是梯度下降法?

什么是梯度下降法?

也就是说, 什么是梯度下降法? 这一点的 Hessian 矩阵并不是正定矩阵。


随机梯度下降法:如果初始点是 什么是梯度下降法? ,那么随机梯度下降法(SGD)就可以写成:对于所有的 什么是梯度下降法? ,有

什么是梯度下降法?

其中 什么是梯度下降法? 是学习率。


使用动量的随机梯度下降法:如果初始点是 什么是梯度下降法? ,初始速度是 什么是梯度下降法? ,学习率是 什么是梯度下降法? ,动量参数是 什么是梯度下降法? ,那么使用动量的随机梯度下降法就可以写成: 什么是梯度下降法?

什么是梯度下降法?


AdaGrad 算法:如果初始点是 什么是梯度下降法? ,学习率是 什么是梯度下降法?什么是梯度下降法? 是小常数,那么 AdaGrad 算法就可以写成: 什么是梯度下降法?

什么是梯度下降法?

其中 什么是梯度下降法? 是学习率, 什么是梯度下降法? 是一个小常数。


Case 1: 什么是梯度下降法?

什么是梯度下降法? 时,如果使用随机梯度下降法,就可以得到 什么是梯度下降法?

什么是梯度下降法?

因此, 什么是梯度下降法? 。 通过随机梯度下降法(SGD)在初始值为 什么是梯度下降法? 的前提下并不能计算出函数 什么是梯度下降法? 的最小值,而是会停止在 什么是梯度下降法? 鞍点这个地方,最终无法逃离鞍点。

同理,如果使用基于动量的 SGD 算法,就要看初始速度的设置了,如果初始的速度为 什么是梯度下降法? ,那么最终都会收敛到 什么是梯度下降法? 这个点上。不过,如果 什么是梯度下降法? ,那么就可以在一定次数的迭代之后逃离 什么是梯度下降法?

根据同样的分析思路,在本文中所写的 AdaGrad,RMSProp,Adam 算法中,如果初始点是 什么是梯度下降法? 并且算法参数都是默认的话,使用这些方法同样无法逃离鞍点 什么是梯度下降法? ,也就是说最终都会收敛到 什么是梯度下降法? 上。


Case 2: 什么是梯度下降法?

在这种情况下,可以考虑在 什么是梯度下降法? 的基础上给纵坐标加上一个微小的扰动。不妨假设初始点为 什么是梯度下降法? 。下面计算各个算法在这个初始值下的收敛效果。在实际的应用中,需要迭代的次数越少越好。于是,通过计算 什么是梯度下降法? 的值,就可以进一步判断哪个算法(SGD,Momentum SGD,AdaGrad,RMSProp,Adam)更加容易逃离鞍点。


随机梯度下降法:通常情况下, 什么是梯度下降法? 可以设置为 什么是梯度下降法? 。从随机梯度下降法的公式来看,就可以得到如下迭代公式:

什么是梯度下降法?

其实, 什么是梯度下降法? ,i.e. 使用梯度下降法同样可以找到函数 什么是梯度下降法? 的最小值。但是,如果 什么是梯度下降法? ,则 什么是梯度下降法? 需要满足条件:

什么是梯度下降法?

换言之,需要迭代 什么是梯度下降法? 次左右才能够使得 什么是梯度下降法?


AdaGrad 算法:通常来说,在 AdaGrad 算法中,算法的参数默认值是 什么是梯度下降法?什么是梯度下降法? 。由于初始值 什么是梯度下降法? ,所以计算可以得到:

什么是梯度下降法?

最后通过写程序就可以证明,在 AdaGrad 的默认参数下,只需要 什么是梯度下降法? 次左右的迭代就可以实现 什么是梯度下降法?


RMSProp 算法:

在这种情况下,为了简单起见,可以令衰减速率 什么是梯度下降法? ,那么同样可以写出迭代公式为: 什么是梯度下降法?,有

什么是梯度下降法?

在 RMSProp 里面,一般来说小常数 什么是梯度下降法?什么是梯度下降法? 。通过直接计算可以知道,在这种情况和参数设置下,在迭代了 什么是梯度下降法? 轮左右的时候,就会出现 什么是梯度下降法? 的情况。

整体来说,在初始值为 什么是梯度下降法? 的情况下,无论是 SGD,Momentum SGD,AdaGrad 算法,还是 RMSProp 算法,都会逃离鞍点 什么是梯度下降法? 。只不过 AdaGrad 和 RMSProp 算法的逃离速度比 SGD 快了许多。

赞同 56422 条评论
分享
收藏喜欢收起
![在这里插入图片描述](https://img-blog.****img.cn/20200221112404144.jpg)