最速下降法/梯度下降法

梯度下降法在机器学习中是经常用到的一种方法,很多人也把梯度下降法看作是最速下降法,但是这两种方法好像还有一些细微差别,wikipedia中Gradient descent的描述中有这么一句:Gradient descent is also known as steepest descent. However, gradient descent should not be confused with the method of steepest descent for approximating integrals.由于我也没有弄明白梯度下降和最速下降的区别,所以本文中将会用最速下降来统一说明。
在讲解梯度下降算法之前,先讲一下梯度下降的解决的问题是什么。梯度下降解决的是无约束最优化问题,与之相对应的是约束最优化问题。无约束最优化问题的一般形式为:

minf(x)
其中 f:RnR1 。这一问题是指在 Rn 中寻找一点 x ,使得对于 xRn ,都与
f(x)f(x)
x 就是全局最优解。
梯度下降法是多元函数求极值最早的方法。梯度下降法简单直观,但是收敛速度慢。之所以收敛速度慢是由于梯度下降会出现锯齿现象,将会慢慢讲解。

基本思想

最速下降法通过迭代的方式求函数 f(x) 的最优解。给定一个初始点,通过迭代找到下一个点,我们希望找到的下一个点能比上一个点有更优的函数值。那么最速下降法最重要的一点就是应该如何迭代,这用到了上一篇博客中的一个小知识:给定点 xk ,点 xk 处的负梯度方向为最速下降方向,至少在点 xk 的临近范围内是这样的。所以我们可以在点 xk 处选择搜索方向

pk=f(xk)
在选定了搜索方向之后我们就可以沿着搜索方向进行搜索,然后选择点 xk+1 ,其中
xk+1=xktkf(xk)
,其中 tk 为沿负梯度方向的搜索距离,我们称为步长因子。我们把上式成为最速下降迭代公式,可以简记为
xk+1=1s(xk,f(xk))
,由该公式产生的算法称为最速下降法。
在知道迭代公式之后,我们希望得到步长因子 tk 能够满足
f(xktkf(xk))=minf(xktf(xk))
,即我们希望 xk+1 为搜索方向上函数值“最小”的点。
对于任意给定的函数 f(x) ,最速下降法不一定能找到函数的全局最优点(全局极小点),可能会找找到函数的局部极小点。

算法描述

为了书写简单,记 gk=g(xk)=f(xk)
最速下降法
已知:目标函数 f(x) 以及梯度 g(x) ,H终止准则所需要的终止限 ϵ1ϵ2ϵ3

1:选择初始点 x0 ;计算 f0=f(x0) g0=g(x0) ;置 k=0
2:作直线搜索 xk+1=1s(xk,gk) ;计算 fk+1=f(xk+1) gk+1=g(xk+1)
3:判断H终止准则是否满足:若满足,则输出 xk+1 fk+1 否则,置 k=k+1 ,转2。

关于直线搜索和H终止准则我将会在在下一篇博客中做补充说明。直线搜索是为了求解一元函数极小化问题而的迭代方法(在算法描述中使用直线搜索来找最优的 tk ,从而通过公式 xk+1=xktkf(xk) 找到下一个迭代点 xk+1 ,需要知道的是在这里求解 tk 时,并一定使用迭代法,在一元函数可微或者可导的情况下,也可以直接通过导数方法进行求解),在这里是为了求得每一步的步长因子 tk ;H终止准则是一种终止条件,常见的终止条件如函数值的变化范围小于阈值 ϵ 时终止。

应用于正定二次函数

在介绍了最速下降法的基本逻辑之后,我们可以知道最速下降法关键步骤是求解每一步的步长因子 tk ,而对于正定二次函数

f(x)=12xTQx+bTx+c
是可以推出显示迭代公式的。推导过程如下。
设第 k 个迭代点为xk,求 xk+1 的表达式。正定二次函数 f(x) 的一阶偏导数为 g(x)=Qx+b ,因此 gk=g(xk)=Qxk+b 。从 xk 出发做直线搜索便可以得到 xk+1 ,即 xk+1=xktkgk tk 为最优步长因子。
由于最速下降法的连续的两次的搜索方向是垂直的(将在锯齿现象中进行详细讲解),即
gTk+1gk=0
。便可以得到
[Q(xktkgk)]Tgk=0
,可以推出
[gktkQgk]Tgk=0
,可解得
tk=gTkgkgTkQgk
,可以得到
xk+1=xkgTkgkgTkQgkgk
。上式便是最速下降法应用于正定二次函数时的显示迭代公式。

锯齿现象

在最速下降法中,迭代点向极小点靠近的过程中,走的是曲折的路线:后一次的搜索方向 pk+1 与前一次的搜索方向 pk 总是互相垂直的,称之为锯齿现象。如下图所示(在下图中一个圈表示等值线)。

锯齿现象

在远离极小点的地方,最速下降法每次有较多的下降;但是在接近极小点的地方,由于锯齿现象的存在,使得每次迭代行进的距离缩短,收敛速度降低。
造成锯齿现象的关键原因是 pk+1pk=0 (或是 gk+1gk=0 ),下面来解释一下具体原因。造成这种结果的具体原因是在点 xk 沿 pk 方向搜索的过程中,我们找到了该方向上的极小点,即 xk+1 ,也就是是说在 xk+1 pk 方向为该点的切线方向(如果不是切线方向,那么该点就不是极小点,还能找到更小的值),而在 xk+1 处的搜索方向为负梯度方向,故 pk+1pk=0

  • 15
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值