关闭

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

标签: 最优化最速下降法无约束问题
1145人阅读 评论(0) 收藏 举报
分类:

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程序实现最速下降算法

(未完待续)

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7246次
    • 积分:150
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论