您的位置:首页 > 其它

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

2015-11-20 17:28 260 查看

1. 问题描述

最优化问题的一般形式如下所示:

对于f:D⊆Rn→R1,求解

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

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

minx∈Ωf(x)

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

2. 数学准备

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

2.1 梯度

设f:D⊆Rn→R1,且f(x)处处可导,则f(x)在x处的梯度为:

∇f(x)=[∂f(x)∂x1,∂f(x)∂x2,⋯,∂f(x)∂xn]

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

2.2 Hessian矩阵

设f:D⊆Rn→R1,且f(x)处处可导,则f(x)在x处的Hessian矩阵为:

∇2f(x)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f(x)∂x21∂2f(x)∂x2∂x1⋮∂2f(x)∂xn∂x1∂2f(x)∂x1∂x2∂2f(x)∂x22⋮∂2f(x)∂xn∂x2⋯⋯⋯∂2f(x)∂x1∂xn∂2f(x)∂x2∂xn⋮∂2f(x)∂x2n⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

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

3. 最速下降法

最速下降法是求解无约束最优化问题的一种数值计算的算法,其基本思想是多次沿某一点的最速下降方向(也就是负梯度方向)进行一维搜索,从而得到函数的一个极小值,因此得名为最速下降法。

因为最速下降法是一系列一维搜索的组合,因此要理解最速下降法,必须要掌握一维搜索。有关一维搜索的内容,我会在另外一篇博客上详细介绍。这里,我们仅仅给出一维搜索的定义。

3.1一维搜索

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

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

简单的讲,一维搜索就是在搜索方向给定的情况下,求解函数在此方向上的一个极小值。

一维搜索有如下性质:

若f(x)具有连续的偏导数,pk是f(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=xk−gTkgkgTkQgkgk

推导过程略。

因此,对于二次函数f(x)=12xTQx+btx+c,其中Q是正定矩阵,最速下降法的算法流程简化为如下形式:

1. 选定x0,计算f0=f(x0),g0=g(x0),置k=0;

2. 计算xk+1=xk−gTkgkgTkQgkgk;

3. 判别,若满足终止精度要求,则停止,否则,置k=k+1,转步2。

3.3 最速下降法的特点

因为最速下降法是按照每一个迭代点的负梯度方向进行搜索,又因为一维搜索的性质,下一迭代点的梯度要与当前搜索方向正交,因此,最速下降法每次的搜索方向都是正交的。从图形上看如下图所示:



理论可以证明,最速下降法具有一阶收敛速度,收敛速度慢,且在极小点附近会发生锯齿现象。

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

(未完待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息