[最优化算法]最速下降法求解无约束最优化问题

原创 2015年11月20日 17:28:04

1. 问题描述

最优化问题的一般形式如下所示:
对于f:DRnR1,求解

minxΩf(x)s.t.{s(x)0h(x)=0

其中f(x)称为优化目标函数,s.t.称为约束条件。对于无约束最优化,没有约束条件要求,即在全部定义域内寻找目标函数最优值。此时,无约束最优化问题简化为如下形式:
minxΩf(x)

针对最优化问题,我们往往不能求出全局最小点,只能求出局部最小点。因此,本文只讨论求目标函数的一个极小值。

2. 数学准备

根据高中数学知识,针对可导函数而言,函数在极值处导数为0。即f(xk)=0xkf(x)的一个极值的必要条件(不是充分条件,因为该点还可能是“驻点”)。因此,我们只需要求解f(x)=0的根并进行验证就可以了。然而,很多函数的导数可能非常复杂,不易甚至不能求出f(x)=0的解析解。这里我们设计一种数值计算的算法,通过计算机的迭代计算,求出目标函数的一个极小值,我们称之为“最速下降法”。

2.1 梯度

f:DRnR1,且f(x)处处可导,则f(x)x处的梯度为:

f(x)=[f(x)x1,f(x)x2,,f(x)xn]

梯度类似于一元函数中的导数。负梯度方向是函数下降最快的方向,称为“最速下降方向”。

2.2 Hessian矩阵

f:DRnR1,且f(x)处处可导,则f(x)x处的Hessian矩阵为:

2f(x)=2f(x)x212f(x)x2x12f(x)xnx12f(x)x1x22f(x)x222f(x)xnx22f(x)x1xn2f(x)x2xn2f(x)x2n

Hessian矩阵类似于一元函数中的二阶导数。

3. 最速下降法

最速下降法是求解无约束最优化问题的一种数值计算的算法,其基本思想是多次沿某一点的最速下降方向(也就是负梯度方向)进行一维搜索,从而得到函数的一个极小值,因此得名为最速下降法。
因为最速下降法是一系列一维搜索的组合,因此要理解最速下降法,必须要掌握一维搜索。有关一维搜索的内容,我会在另外一篇博客上详细介绍。这里,我们仅仅给出一维搜索的定义。

3.1一维搜索

f(x)具有连续的偏导数,pkf(x)xk点的一个下降方向,一维搜索指我们需要求解一个步长tk,使得

f(xk+tkpk)=mintf(xk+tpk)xk+1=xk+tkpk

简单的讲,一维搜索就是在搜索方向给定的情况下,求解函数在此方向上的一个极小值。
一维搜索有如下性质:
f(x)具有连续的偏导数,pkf(x)xk点的一个下降方向,按上述一维搜索方法迭代求出点xk+1,则有
f(xk+1)Tpk=0

f(x)xk+1处点的梯度与xk处的搜索方向pk正交。这个定理很好理解,因为如果两者不正交的话,说明沿次搜索方向函数值还在减小,继续增大步长,一定能得到一个比当前值更小的函数值,与当前值为函数在此方向上的一个极小值矛盾。因此,一维搜索要一直搜索到梯度与当前搜索方向正交的那个点,此点即为极小点。
理解了一维搜索极其性质,我们就容易理解最速下降法的原理了。

3.2 最速下降法的算法流程

最速下降法是指这样的一维搜索的组合:已知目标函数f(x)及其梯度g(x),给定某一点xk,按照该点的负梯度方向进行一维搜索,把该方向上搜索到的极小点作为下一个迭代点xk+1,重复上述步骤,直到找到满足终止精度点,该点即为目标函数的一个极小点。
把该算法写成流程图的形式如下所示:

Created with Raphaël 2.1.0Start选定X0,计算f0=f(x0),g0=g(x0), 置k=0做一维搜索确定xk+1,计算f(xk+1),g(xk+1)是否满足终止精度?Endyesno

其中,对于一般的目标函数f(x),通过一维搜索确定xk+1并没有通用的公式可以套用,但是对于特殊的目标函数,例如二次函数f(x)=12xTQx+btx+c,其中Q是正定矩阵,我们可以根据上文所述的一维搜索的性质,推导出一维搜索的递推公式:

xk+1=xkgTkgkgTkQgkgk

推导过程略。
因此,对于二次函数f(x)=12xTQx+btx+c,其中Q是正定矩阵,最速下降法的算法流程简化为如下形式:
1. 选定x0,计算f0=f(x0),g0=g(x0),置k=0;
2. 计算xk+1=xkgTkgkgTkQgkgk
3. 判别,若满足终止精度要求,则停止,否则,置k=k+1,转步2。

3.3 最速下降法的特点

因为最速下降法是按照每一个迭代点的负梯度方向进行搜索,又因为一维搜索的性质,下一迭代点的梯度要与当前搜索方向正交,因此,最速下降法每次的搜索方向都是正交的。从图形上看如下图所示:
最速下降法的几何意义
理论可以证明,最速下降法具有一阶收敛速度,收敛速度慢,且在极小点附近会发生锯齿现象。

4. 用Matlab程序实现最速下降算法

(未完待续)

版权声明:本文为博主原创文章,未经博主允许不得转载。

最优化学习笔记(四)——最速下降法

一、最速下降法的理念     最速下降法是梯度方法的一种实现,它的理念是在每次的迭代过程中,选取一个合适的步长αk\alpha_k,使得目标函数的值能够最大程度的减小。αk\alpha_k可以认为是函...

牛顿下降法和梯度下降法(最速下降法)的速度的比较

“牛顿下降法和梯度下降法在机器学习和自适应滤波中的都很重要,本质上是为了寻找极值点的位置。但是收敛的速度不同。 本文中就两种方法来探究一下,哪种收敛方法速度快“牛顿下降法的递推公式: xn+1=xn...
  • njucp
  • njucp
  • 2016年01月09日 17:54
  • 6138

梯度下降法和最速下降法的细微差别

梯度下降法和最速下降法是有差异的,差异在于范数的选择 梯度下降法是最速下降法采用欧式范数的特殊情况...

最速下降法 的原理以及在回归分析中的应用

上两节讲了信赖域法+狗腿法,其中第二节中的(“强凹凸二次函数”改为“强凸二次函数”),这一节将会讲最速下降法SD,最速下降法在模式识别和机器学习中运用最为广泛,在Deep Learning中也应用...

最速下降法与牛顿法的收敛速率

在MIT的公开课[Introduction to Computer Science and Programming Using Python] 6.00.1x 中,Eric Grimson曾提到过迭代...
  • dymodi
  • dymodi
  • 2015年06月06日 09:41
  • 4640

数值优化学习——wolfe条件里的线搜索算法

翻译自numerical optimization Chapter3 Line Search MethodsWolfe条件(或强Wolfe条件)是广泛使用并且较为有效的终止条件。下面描述一个一维的线搜...

无约束最优化算法-Newton法原理及c++编程实现

无约束最优化方法-牛顿法 牛顿法(Newton'smethod)又称为牛顿-拉弗森方法(Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法,迭代的示意图如下:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[最优化算法]最速下降法求解无约束最优化问题
举报原因:
原因补充:

(最多只允许输入30个字)