梯度下降法(Gradient descent)

1.梯度下降法有什么用

梯度下降法用来求函数的极小值,且是一种迭代算法,由于计算效率高,在机器学习中常常使用。梯度下降法经常求凸函数(convex function)的极小值,因为凸函数只有一个极小值,使用梯度下降法求得的极小值就是最小值。

与其对应的有梯度上升法(Gradient ascent),用来求函数的极大值,两种方法原理一样,只是计算的过程中正负号不同而已。

2.什么是梯度

先看看维基百科:

标量场中某一点的梯度指向在这点标量场增长最快的方向。

感觉略微抽象,可以用山的高度来解释一下。假设有一个人站在山上的某一点,他通过观察发现了一条“最陡”的路,那么这条路的方向就是梯度所指的方向。

需要强调一下,梯度是一个矢量,方向导数是一个标量,梯度所指向的方向是方向导数最大的方向,且梯度的模和方向导数的最大值相等。

求梯度的方法很简单,对每一个自变量求偏导数,然后将其偏导数作为自变量方向的坐标即可。梯度的符号为∇∇,则函数f(x,y)f(x,y)的梯度为: 

∇f(x,y)=(∂f(x,y)∂x,∂f(x,y)∂y)∇f(x,y)=(∂f(x,y)∂x,∂f(x,y)∂y)

 

3.如何使用梯度下降法

以函数f(x)f(x)为例,先选择一个初始点,计算该点的梯度,然后按照梯度的方向更新自变量。若第kk次迭代值为x(k)x(k),则 

x(k+1)=x(k)−α∇f(x(k))x(k+1)=x(k)−α∇f(x(k))


其中αα称作步长或者学习率,表示自变量每次迭代变化的大小。

 

一直按照上式更新自变量,直到当函数值变化非常小(如3%以内)或者达到最大迭代次数时停止,此时认为自变量更新到函数的极小值点。

4.梯度下降法的简单应用

4.1求f(x)=x2f(x)=x2的极小值

f(x)=x2f(x)=x2的梯度为: 

∇f(x)=2x∇f(x)=2x


步长设置为0.1,选取自变量从3开始,则计算过程如下

 

迭代次数(n)自变量(xx)梯度(2x2x)步长(αα)因变量(x2x2)
0360.19
12.44.80.15.76
21.923.840.13.69
31.5363.0720.12.36
100.320.640.10.10
200.030.060.10.0009

可以看到随着迭代次数的增加,该函数越来越接近极小值点(0,0)(0,0),依据该方法一定可以找到精度允许范围内的极小值点。

以下是迭代count次的代码:

if __name__ == "__main__":
    x = 3
    y = x * x
    alpha = 0.1
    count = 3
    while (count > 0):
        x = x - alpha * 2 * x
        y = x * x
        count = count - 1
    print x, y

4.2求f(x,y)=(x−10)2+(y−10)2f(x,y)=(x−10)2+(y−10)2的极小值

f(x,y)=(x−10)2+(y−10)2f(x,y)=(x−10)2+(y−10)2的梯度为: 

∇f(x,y)=(2(x−10),2(y−10))∇f(x,y)=(2(x−10),2(y−10))


步长设置为0.1,选择初始点为(20,20)(20,20),这次以图形表示计算过程,图中的黑色曲线即为梯度下降法下降时的轨迹,效果非常好。 
斜视图: 
 
俯视图: 

 

5.小结

  • 梯度下降法求的是极小值,而不是最小值
  • 梯度下降法常常用来求凸函数的最小值,例如机器学习中各种代价函数的最小值
  • 步长的选取很关键,步长过长达不到极值点甚至会发散,步长太短导致收敛时间过长
  • 斯坦福的机器学习视频中建议按照[0.001,0.003,0.01,0.03,…]的顺序尝试设置步长,同时观察函数值选择收敛最快的步长
  • 步长也可以设置为非固定值,根据迭代的情况变化
  • 下降的初始点一般设置为从原点开始
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值