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

原创 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可以认为是函...
  • chunyun0716
  • chunyun0716
  • 2016年05月29日 10:19
  • 10223

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

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

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

梯度下降法和最速下降法是有差异的,差异在于范数的选择 梯度下降法是最速下降法采用欧式范数的特殊情况...
  • Timingspace
  • Timingspace
  • 2016年03月23日 15:21
  • 7040

运筹学(1)-最速下降法

运筹学(1) 多维无约束优化算法——梯度法之最速下降法最近学习运筹学开始学习一些优化的算法,之后的一系列博客我会分享一些我学到的运筹学方法。这次我总结了我学习的最速下降法。最速下降法是一个优化算法,...
  • uestcmarvin
  • uestcmarvin
  • 2017年11月30日 07:15
  • 218

几种常用的优化方法梯度下降法、牛顿法、)

几种常用的优化方法 1. 前言 熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题。实现简单,coding...
  • u011584941
  • u011584941
  • 2015年03月23日 10:32
  • 8987

最速下降法

摘要:最速下降法(deepest descent)也称为梯度下降法(Gradient descent),是最为常见的非线性规划算法。 1. 引言     在下降迭代算法篇,我们介绍了如何通过下降法来实...
  • u014170677
  • u014170677
  • 2014年03月28日 21:47
  • 1560

matlab最速下降法与牛顿法结合求解函数最大值,还能动画演示求解点的运动过程

  • 2009年06月09日 00:56
  • 3KB
  • 下载

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

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

无约束最优化问题

估计有些读者看到这个题目的时候会觉得很数学,和自然语言处理没什么关系,不过如果你听说过最大熵模型、条件随机场,并且知道它们在自然语言处理中被广泛应用,甚至你明白其核心的参数训练算法中有一种叫LBFGS...
  • nocml
  • nocml
  • 2012年12月12日 17:08
  • 13488

无约束最优化方法学习笔记

这一段时间学习优化理论中的一些经典方法,写下一些要点和体会,帮助自己和有需要的人理解最优化方法。1.基础知识首先来看无约束最优化问题: minf(x)\begin{equation} \min f...
  • tomheaven
  • tomheaven
  • 2015年08月11日 23:12
  • 4678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[最优化算法]最速下降法求解无约束最优化问题
举报原因:
原因补充:

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