您的位置:首页 > 其它

梯度下降

2017-08-24 17:22 232 查看

梯度下降法

梯度下降法(gradient descent)是求解无约束最优化问题的一种常用方法,是一种迭代算法。

*这里可以对比之前介绍的拉格朗日对偶性是解决有约束条件下的最优化方法。

原理步骤

目标函数

假设 f(x) 是 Rn 上具有一阶连续偏导数的函数,现在要求解它的无约束最优化问题,即 minx∈Rnf(x)。

原理

选取适当的初值 x(0),然后不断地更新迭代x的值知道收敛,从而达到优化函数的目的。这里由于负梯度的方向(负导数的方向)是使函数下降最快的方向,所以为了计算速度,我们在每次迭代的时候的方向就是负梯度所在的方向。

步骤

取一个适当的初值 x(0),将 f(x) 在 x(0) 进行一阶泰勒展开:

f(x)=f(x(0))+gT0(x−x(0))

这里,g0 就是 f(x) 在 x(0) 的梯度

知道梯度之后,对 x(0) 进行迭代得到 x(1):

x(1)=x(0)+λp0

其中,λ 是每一次更新的长度,也叫步长或者学习率(learning rate);p0 是每次更新时负梯度的方向。

进行一步步的迭代直到 x(k) 时收敛,得到最优解。

注意

+ 由于 f(x) 是有一阶连续偏导数的函数,所以在x附近进行一阶泰勒展开是可行的。

+ 当目标函数是凸函数时,梯度下降法的解是全局最优解。但是在一般情况下,不能保证一定有全局最优解。

+ 步长的选择对于求解也是有影响的,步长过大的话容易震荡,步长过小的话,计算(收敛)速度就会很慢。

优缺点以及改进

优缺点

优点

实现简单

缺点

计算速度有时候没有保证,具体原因体现在:

初值的选择很随机

步长的选择需要恰到好处

由于一阶的关系,收敛的速度是线性的,也就是说如果数据量大的话,速度会比较慢(和二阶的牛顿法相比)

有时无法得到全局最优解

这个是具体要看是否是凸函数,如果是的话,因为凸函数只有一个极值,那么总归是能够找到最优解的;如果是非凸函数的话,极值会有很多个,此时,我们的梯度下降就有可能把极小值当做最小值了。

算法改进

批量梯度下降

(和梯度下降相比,每一次进行迭代的时候,需要对每一条训练数据进行计算,这个计算量太大。)

随机梯度下降

牛顿法

(在梯度下降的基础上,使用二阶函数提高了)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: