梯度下降
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附近进行一阶泰勒展开是可行的。
+ 当目标函数是凸函数时,梯度下降法的解是全局最优解。但是在一般情况下,不能保证一定有全局最优解。
+ 步长的选择对于求解也是有影响的,步长过大的话容易震荡,步长过小的话,计算(收敛)速度就会很慢。
优缺点以及改进
优缺点
优点实现简单
缺点
计算速度有时候没有保证,具体原因体现在:
初值的选择很随机
步长的选择需要恰到好处
由于一阶的关系,收敛的速度是线性的,也就是说如果数据量大的话,速度会比较慢(和二阶的牛顿法相比)
有时无法得到全局最优解
这个是具体要看是否是凸函数,如果是的话,因为凸函数只有一个极值,那么总归是能够找到最优解的;如果是非凸函数的话,极值会有很多个,此时,我们的梯度下降就有可能把极小值当做最小值了。
算法改进
批量梯度下降(和梯度下降相比,每一次进行迭代的时候,需要对每一条训练数据进行计算,这个计算量太大。)
随机梯度下降
牛顿法
(在梯度下降的基础上,使用二阶函数提高了)
相关文章推荐
- 梯度下降3
- 梯度下降法理解
- 回归与梯度下降
- 最优化方法:梯度下降(批梯度下降和随机梯度下降)
- 梯度下降
- 梯度下降法解逻辑斯蒂回归
- 机器学习(1)之梯度下降(gradient descent)
- 一些知识点的初步理解_5(梯度下降,ing...)
- 优化算法之梯度下降法
- Machine Learning - Gradient Descent (梯度下降)
- 随机梯度下降法和批量梯度下降法
- 最小二乘参数估计---梯度下降法求解参数的sas代码实现
- Stanford机器学习课程笔记——单变量线性回归和梯度下降法
- 对梯度下降的简单理解
- 梯度下降法终极版
- 随机梯度下降和批量梯度下降
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 梯度下降法和牛顿法
- 梯度下降法-线性拟合
- 梯度下降法通俗解释