梯度下降(Gradient Descent)(一)

  梯度下降法(gradient descent)或最速下降法(steepest descent)是求解无约束优化问题的一种最常用的方法,实现简单,属于一阶优化算法,也是迭代算法。


1.梯度

  在微积分中,对多元函数的参数求偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数 f(x,y) f ( x , y ) ,分别对 x,y x , y 求偏导数,求得的梯度向量就是 (fx,fy)T ( ∂ f ∂ x , ∂ f ∂ y ) T ,记为 gradf(x,y) g r a d f ( x , y ) f(x,y) ∇ f ( x , y ) 。在点 (x0,y0) ( x 0 , y 0 ) 处的具体梯度向量就是 (fx0,fy0)T ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T ,或 f(x0,y0) ∇ f ( x 0 , y 0 )
  梯度向量的一般表示可以写成:

f(x1,x2,,xn)=(fx1,fx2,,fxn)T ∇ f ( x 1 , x 2 , … , x n ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , … , ∂ f ∂ x n ) T

  从几何意义上讲,函数上某一点的梯度向量,就是函数变化增加最快的地方。具体来说,对于函数 f(x,y) f ( x , y ) ,在点 (x0,y0) ( x 0 , y 0 ) 沿着梯度向量的方向,即 (fx0,fy0)T ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T ,是 f(x,y) f ( x , y ) 增加最快的地方。或者说沿着梯度向量的方向,更容易找到函数的极大值。反过来说,沿着梯度向量相反的方向,即 (fx0,fy0)T − ( ∂ f ∂ x 0 , ∂ f ∂ y 0 ) T f(x,y) f ( x , y ) 减少最快,更容易找到函数的极小值。

2.梯度下降

  假设 f(x) f ( x ) Rn R n 上具有一阶连续偏导数的函数,要求解的无约束最优化问题是:

minxRnf(x) m i n x ∈ R n f ( x )

x x ∗ 表示目标函数的极小点。下面我们考虑采用梯度下降法来求解这个问题。
  根据上一节关于梯度的阐述,我们已经了解,负梯度方向是使函数值下降最快的方向,基于此,可以得到梯度下降法的原理:选取适当的初值 x0 x 0 ,不断迭代,在迭代的每一步,以负梯度方向更新 x x 的值,进行目标函数的极小化,直到收敛。完整的算法描述如下:

输入:目标函数f(x),计算精度 ε ε
输出: f(x) f ( x ) 的极小值点 x x ∗
(1).取初始值 x(0)Rn x ( 0 ) ∈ R n ,置 k=0 k = 0
(2).计算 f(xk) f ( x k )
(3).计算梯度 gk g k ,若 ||gk||<ε | | g k | | < ε ,停止迭代,令 x=x(k) x ∗ = x ( k ) ;否则,转(4);
(4).置 x(k+1)=x(k)αgk x ( k + 1 ) = x ( k ) − α g k ,计算 f(x(k+1)) f ( x ( k + 1 ) ) ,当 ||f(x(k+1))f(x(k))||<ε | | f ( x ( k + 1 ) ) − f ( x ( k ) ) | | < ε ||x(k+1)x(k)||<ε | | x ( k + 1 ) − x ( k ) | | < ε 时,停止迭代,令 x=x(k) x ∗ = x ( k ) ;否则,转(3);

其中, α α 是迭代步长,或称学习率(learning rate),在每次迭代中, α α 是可变的。值得注意的是, α α 的取值很有讲究,取值太大,容易跨过极小值点,取值太小,收敛太慢。因此,需不断测试,直至找到一个最合适的 α α

  下面我们用一张图来形象化地表述梯度下降法:


这里写图片描述

  这里假设 f f 定义在平面上,并且函数图像是一个碗形。蓝色的曲线是等高线(水平集),即函数f为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 f f <script type="math/tex" id="MathJax-Element-43">f</script>的极小值点。

3.特点和问题

特点

  1. 对输入向量进行归一化处理,可以让梯度下降更好更快地收敛;

问题:

  1. 只有当目标函数是凸函数时,梯度下降法的解是全局最优解,一般情况下,其解不保证是全局最优解;
  2. 靠近极小值时速度减慢;
  3. 如何确定学习率,可以参考这篇文章

参考文献

[1] 《统计学习方法》
[2] https://baike.baidu.com/item/%E6%A2%AF%E5%BA%A6/13014729
[3] https://zhuanlan.zhihu.com/p/31074506
[4] http://blog.csdn.net/xiazdong/article/details/7950084
[5] https://www.cnblogs.com/pinard/p/5970503.html
[6] https://www.cnblogs.com/zhenggege/p/7210755.html
[7] https://www.zhihu.com/question/54097634
[8] https://www.cnblogs.com/keguo/p/6244253.html
[9] https://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95
以上为本文的全部参考文献,对原作者表示感谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值