数值优化——无约束优化

本文介绍了无约束优化问题的基本概念,包括最速下降法、牛顿法(及其BFGS变种)和共轭梯度法,着重讨论了每种方法的原理、步长确定和优缺点。文中还涉及了牛顿法的泰勒展开和Hession矩阵的应用,以及BFGS方法在非凸函数优化中的处理策略。
摘要由CSDN通过智能技术生成

数值优化——无约束优化

参考资料来源:深蓝学院《机器人中的数值优化》一课

:推荐大家都可以看一下这门课,本文在于理论解读,作业的代码部分之后再写博客。

问题描述

无约束优化

无约束优化问题指的是无约束条件下的优化问题、主要方法有最速下降法、牛顿法、拟牛顿法、共轭梯度法等。一般来说无约束优化可以归为如下模板,不同方法在于下降方向的不同,工程上步长一般选择Inexact line search方法。模板如下:

step1:给定一个初始点 x 0 x^{0} x0,令 k = 0 k=0 k=0
step2:根据相应准则确定一个下降方向 d k d^{k} dk
step3:确定步长 α k \alpha_{k} αk,使得 f ( x k + α k d k ) < f ( x k ) f(x^{k}+\alpha_{k}d^{k})<f(x^{k}) f(xk+αkdk)<f(xk)
step4:令 x k + 1 = x k + α k d k x^{k+1}=x^{k}+\alpha_{k}d^{k} xk+1=xk+αkdk
step5:当迭代点 x k + 1 x^{k+1} xk+1满足某种终止准则时,则停止迭代,以 x k + 1 x^{k+1} xk+1为近似最优解;否则 k = k + 1 k=k+1 k=k+1,转 s t e p 2 step2 step2

A.最速下降法

最速下降法2

最速下降法的下降方向采用的是当前点负梯度方向,步长采用的是Inexact line search方法。
最速下降法3

Inexact line search方法也即Backtracking/Armijo line search,求解也很简单,初始 τ \tau τ可以给一个值,判断是否满足 f ( x k + τ d ) < = f ( x k ) + c τ d T ▽ f ( x k ) f(x^{k}+\tau d)<=f(x^{k})+c\tau d^{T} \bigtriangledown f(x^{k}) f(xk+τd)<=f(xk)+cτdTf(xk)条件,不满足则一直二分,直至满足。
最速下降法1

该图为最速下降法的示意图,给定一个初始值,不断按照负梯度方向靠近局部最小值。但是该方法存在以下缺点:函数的曲率很大,或者条件数很大的时候,采用梯度下降法可能需要很多的迭代次数。

B.牛顿法

牛顿法1

牛顿法的原理在于在当前迭代处二次泰勒展开近似,下一次迭代的点为之前迭代处拟合的函数的最低点,也即红色框对应的部分。
牛顿法2

牛顿法的伪代码如上图所示,其中 M M M为Hession矩阵,步长依旧采用Inexact line search方法,但是该方法存在以下缺点:

  • Hession要求正定(实际上很难满足)
  • 需要求Hession的逆,计算复杂度 O ( n 3 ) O(n^{3}) O(n3)

C.拟牛顿法

拟牛顿的核心原理在于在牛顿法的基础上,仅仅使用原函数和其梯度信息估计Hession的逆,从而克服牛顿法的某些缺点,这里主要介绍BFGS类的拟牛顿法

I 光滑凸函数的BFGS方法

BFGS1

上图为光滑凸函数的BFGS方法,流程与牛顿法类似,不同在于使用 B k B^{k} Bk来近似代替hession的逆, B k B^{k} Bk的推导公式也很优美,如下图所示:
BFGS2

II 光滑非凸函数的BFGS方法

BFCS3

上图为光滑非凸函数的BFGS方法,与光滑凸函数的BFGS方法相比,主要在于两点的不同:

  • 步长 t t t采用的是Wolfe准则的inexact line search方法
  • BFGS的更新 B K + 1 B^{K+1} BK+1公式加入了cautious判断准则

BFGS5

BFGS6

Wolfe准则有weak和strong两个版本,其在原来inexact line search方法基础上增加了紫色的不等式,该目的是为了保证非凸函数 Δ g T Δ x > 0 \Delta g^{T}\Delta x>0 ΔgTΔx>0,从而保证拟合的B矩阵是正定的
BFGS4

BFGS的更新 B K + 1 B^{K+1} BK+1公式加入了cautious判断准则即为,当不靠近局部最小值时,不更新B矩阵,靠近局部最小值时更新B矩阵,阈值即为上图分段函数的条件

III L-BFGS方法

LBFGS1

上图为非光滑非凸函数的BFGS方法,与光滑非凸函数的BFGS方法相比,主要在于两点的不同:

  • 步长 t t t采用的是Lewis Overton line search(weak版本)
  • BFGS的更新 B K + 1 B^{K+1} BK+1公式加入了滑动窗口原则
    \LBFGS2.PNG

Lewis Overton line search即初始化步长区间为 [ 0 , inf ⁡ ] [0,\inf] [0,inf],试探性初始化步长为 α = 1 \alpha=1 α=1,若不满足Wolfe准则的第一个条件 S ( α ) S(\alpha) S(α),则将 u u u修改为 α \alpha α;若不满足Wolfe准则的第二个条件 C ( α ) C(\alpha) C(α),则将 l l l修改为 α \alpha α,直至都满足wolfe准则。同时根据 u u u的取值对 α \alpha α进行二分或者扩大的操作

LBFGS3

维护一个历史的滑动窗口,共 m m m Δ x \Delta x Δx Δ y \Delta y Δy,为了方便描述分别用 s k s^{k} sk y k y^{k} yk表示,即存储从 s k − m + 1 s^{k-m+1} skm+1 y k − m + 1 y^{k-m+1} ykm+1 s k s^{k} sk y k y^{k} yk m m m组数据,在计算当前 B k B^{k} Bk时,先初始化 B 0 B^{0} B0为单位阵,然后从滑动窗口初始处 s k − m + 1 、 y k − m + 1 s^{k-m+1}、y^{k-m+1} skm+1ykm+1开始利用这 m m m组数据进行 m m m次迭代,这样操作的话会使时间复杂度变为 O ( m n 2 ) O(mn^{2}) O(mn2),所以可以采用如红框所示的流程从而使时间复杂度变为 O ( m n ) O(mn) O(mn)

C.共轭梯度法

\共轭梯度法1

共轭梯度法求解的即是 A x = b Ax=b Ax=b的问题(A为正定对称矩阵),其中 A A A不可访问(但可以调用 γ ( x ) : A x \gamma(x):Ax γ(x):Ax), b b b可以访问,在上述条件下可以将其转为一个无约束优化问题,令目标函数的梯度 A x − b Ax-b Axb,从而构造的目标函数为 1 2 x T A x − b T x \frac{1}{2}x^{T}Ax-b^{T}x 21xTAxbTx
共轭梯度3
迭代过程如上图所示,关键是构造一组共轭向量
在这里插入图片描述

共轭向量的构造公式如上,利用残差生成一组线性无关的向量,紧接着动态生成共轭梯度
共轭梯度法2
上图为共轭梯度的伪代码,不断利用残差生成共轭梯度,在不断更新 x x x
牛顿共轭梯度法

牛顿共轭梯度法即是使用共轭梯度法生成牛顿法的下降方向,避免了直接求解hession逆的问题。

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值