文章目录

  • 无约束优化:线搜索最速下降
    • 无约束优化问题
    • 线搜索最速下降
    • 精确线搜索
    • 非精确线搜索
      • Armijo准则
      • Goldstein准则
      • Wolfe准则
    • 参考文献

无约束优化:线搜索最速下降

无约束优化问题

线搜索最速下降

对于光滑函数 f ( x ) f(x) f(x),沿着函数负梯度方向下降速度最快。对于线搜索最速下降方法而言,核心问题是如何选择搜索步长 τ \tau τ,一般有以下四种方法:

  • 固定步长: τ = c \tau = c τ=c。如下图所示,若常数取太大,则搜索振荡厉害且对于非凸函数有可能发散;若太小,则收敛速度慢;
  • 渐消步长: τ = c / k \tau=c/k τ=c/k。适用性强,对于非光滑函数、梯度存在噪声( ▽ f ( x ) ′ = ▽ f ( x ) + ε \triangledown f(x)'=\triangledown f(x)+\varepsilon ▽f(x)′=▽f(x)+ε ,随机噪声)适用,稳健性强但收敛速度慢,适用于条件差但对收敛速度要求不高的场景;
  • 精确线搜索: τ = arg ⁡ min ⁡ α f ( x k + α d ) \tau=\arg \min _\alpha f\left(x^k+\alpha d\right) τ=argminα​f(xk+αd),实际应用较少,下面详述;
  • 非精确线搜索: τ ∈ { α ∣ f ( x k ) − f ( x k + α d ) ≥ − c ⋅ α d T ∇ f ( x k ) } \tau \in\left\{\alpha \mid f\left(x^k\right)-f\left(x^k+\alpha d\right) \geq-c \cdot \alpha d^{\mathrm{T}} \nabla f\left(x^k\right)\right\} τ∈{α∣f(xk)−f(xk+αd)≥−c⋅αdT∇f(xk)},重要,下面详述。

精确线搜索

此时我们构造了一个辅助函数 ϕ ( α ) = f ( x k + α d k ) \phi(\alpha)=f\left(x^k+\alpha d^k\right) ϕ(α)=f(xk+αdk), α \alpha α是该辅助函数的自变量,该函数的几何含义非常直观:它是目标函数 f ( x ) f(x) f(x)在射线 { x k + α d k : α > 0 } \left\{x^k+\alpha d^k: \alpha>0\right\} {xk+αdk:α>0}上的限制。线搜索的目标就是选取合适的 α k \alpha_{k} αk​使得 ϕ ( α k ) \phi\left(\alpha_k\right) ϕ(αk​)尽可能小,自然而言引入一个子优化问题:
α k = arg ⁡ min ⁡ α > 0 ϕ ( α ) \alpha_k=\underset{\alpha>0}{\arg \min } \phi(\alpha) αk​=α>0argmin​ϕ(α)
这个子优化算法就是精确线搜索,目的是找到精确的最佳步长 α k \alpha_{k} αk​。但在原本的最速下降优化问题中再引入一个子优化问题,这本身就带来比较大的计算量,因此精确线搜索在实际应用中较少使用。由此,引出非精确线搜索算法,即把条件放宽,不要求得到精确的最佳步长 α k \alpha_k αk​,而是仅仅要求 ϕ ( α ) \phi(\alpha) ϕ(α)满足某些不等式要求

非精确线搜索

Armijo准则

设 d k d^k dk是点 x k x^k xk处的下降方向,若 f ( x k + α d k ) ⩽ f ( x k ) + c 1 α ∇ f ( x k ) T d k f\left(x^k+\alpha d^k\right) \leqslant f\left(x^k\right)+c_1 \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k f(xk+αdk)⩽f(xk)+c1​α∇f(xk)Tdk,则称步长 α \alpha α满足Armijo准则,其中 c 1 ∈ ( 0 , 1 ) c_1 \in(0,1) c1​∈(0,1)是一个常数。一般 d k d^k dk为负梯度方向,则 c 1 α ∇ f ( x k ) T d k < 0 c_1 \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k <0 c1​α∇f(xk)Tdk<0,若满足Armijo准则,则严格满足 f ( x k + α d k ) < f ( x k ) f\left(x^k+\alpha d^k\right) < f\left(x^k\right) f(xk+αdk)<f(xk),因此又称该准则为充分下降条件,可保证每一步迭代充分下降。

该准则有非常直观的几何含义,如上图所示。在实际应用中,参数 c 1 c_1 c1​通常选为一个很小的正数,例如 c 1 = 1 0 − 3 c_1=10^{-3} c1​=10−3,这使得Armijo准则非常容易满足。但仅仅使用该准则无法保证迭代的收敛性,因为取 α = 0 \alpha=0 α=0也是满足准则中的条件,而这意味着迭代序列中的点固定不变,这样重复收敛就没有意义,因此Armijo准则一般搭配其他准则来使用。基于Armijo准则的最速下降算法步骤如下:

上述算法不会无限进行下去,因为沿着梯度负方向,当 α \alpha α充分小时,该准则总是成立的。为了避免步长过小,在实际应用中一般会给 α \alpha α设置一个下界,这就是Goldstein准则。

Goldstein准则

Armijo-Goldstein准则,简称Goldstein准则,简单来说就是同时给 α \alpha α设置上下界,定义如下:

设 d k d^k dk是点 x k x^k xk处的下降方向,若
f ( x k + α d k ) ⩽ f ( x k ) + c α ∇ f ( x k ) T d k , f ( x k + α d k ) ⩾ f ( x k ) + ( 1 − c ) α ∇ f ( x k ) T d k \begin{aligned} & f\left(x^k+\alpha d^k\right) \leqslant f\left(x^k\right)+c \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k, \\ & f\left(x^k+\alpha d^k\right) \geqslant f\left(x^k\right)+(1-c) \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k \end{aligned} ​f(xk+αdk)⩽f(xk)+cα∇f(xk)Tdk,f(xk+αdk)⩾f(xk)+(1−c)α∇f(xk)Tdk​
则称步长 α \alpha α满足Goldstein准则,其中 c ∈ ( 0 , 0.5 ) c \in (0, 0.5) c∈(0,0.5).

该准则的几何意义同样非常直观,如上图所示,在区间 [ α 1 , α 2 ] [\alpha_1,\alpha_2] [α1​,α2​]中的点均满足Goldstein准则。但需要注意的是,该准则可能避开最优的函数值, ϕ ( α ) \phi(\alpha) ϕ(α)的最小值点并不在区间 [ α 1 , α 2 ] [\alpha_1,\alpha_2] [α1​,α2​]内。为此,我们引入Armijo-Wolfe准则。

Wolfe准则

Armijo-Wolfe准则,简称Wolfe准则,定义如下:

设 d k d^k dk是点 x k x^k xk处的下降方向,若
f ( x k + α d k ) ⩽ f ( x k ) + c 1 α ∇ f ( x k ) T d k ∇ f ( x k + α d k ) T d k ⩾ c 2 ∇ f ( x k ) T d k \begin{aligned} & f\left(x^k+\alpha d^k\right) \leqslant f\left(x^k\right)+c_1 \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k \\ & \nabla f\left(x^k+\alpha d^k\right)^{\mathrm{T}} d^k \geqslant c_2 \nabla f\left(x^k\right)^{\mathrm{T}} d^k \end{aligned} ​f(xk+αdk)⩽f(xk)+c1​α∇f(xk)Tdk∇f(xk+αdk)Tdk⩾c2​∇f(xk)Tdk​
则称步长 α \alpha α满足Wolfe准则,其中 c 1 , c 2 ∈ ( 0 , 1 ) c_1,c_2 \in (0,1) c1​,c2​∈(0,1)为给定常数且 c 1 < c 2 c_1 < c_2 c1​<c2​.

由该准则的定义可以看出,仍然使用第一个条件即Armijo准则确定步长上界,在第二个条件中 ∇ f ( x k + α d k ) T d k \nabla f\left(x^k+\alpha d^k\right)^{\mathrm{T}} d^k ∇f(xk+αdk)Tdk是 ϕ ( α ) \phi(\alpha) ϕ(α)的导数,也就是要求 ϕ ( α ) \phi(\alpha) ϕ(α)在点 α \alpha α处切线的斜率不能小于 ϕ ′ ( 0 ) \phi^{\prime}(0) ϕ′(0)的 c 2 c_2 c2​倍。如下图所示,在区间 [ α 1 , α 2 ] [\alpha_1,\alpha_2] [α1​,α2​]中的点均满足Wolfe准则, α k = arg ⁡ min ⁡ α > 0 ϕ ( α ) \alpha_k=\underset{\alpha>0}{\arg \min } \phi(\alpha) αk​=α>0argmin​ϕ(α)子优化问题的最优解处( ϕ ( α ) \phi(\alpha) ϕ(α)的极小值点)有 ϕ ′ ( α ∗ ) = ∇ f ( x k + α ∗ d k ) T d k = 0 \phi^{\prime}\left(\alpha^*\right)=\nabla f\left(x^k+\alpha^* d^k\right)^{\mathrm{T}} d^k=0 ϕ′(α∗)=∇f(xk+α∗dk)Tdk=0,永远满足Wolfe准则的第二个条件。因此,该准则在绝大多数情况下包含线搜索子问题的精确解,在实际应用中,参数 c 1 = 1 0 − 4 c_1=10^{-4} c1​=10−4, c 2 = 0.9 c_2=0.9 c2​=0.9.


参考文献

机器人中的数值优化

最优化:建模、算法与理论/最优化计算方法

无约束优化:线搜索最速下降相关推荐

  1. 无约束优化:修正阻尼牛顿法

    文章目录 无约束优化:修正阻尼牛顿法 梯度法的困难 经典牛顿法 定义 收敛性证明 修正阻尼牛顿法 考虑修正阻尼牛顿法的起因 如何构造修正矩阵M 参考文献 无约束优化:修正阻尼牛顿法 梯度法的困难 无约 ...

  2. 无约束优化:Hessian-Free Optimization 拟牛顿类算法(BFGS,L-BFGS)

    文章目录 无约束优化:Hessian-Free Optimization 拟牛顿类算法(BFGS,L-BFGS) 为什么要用拟牛顿算法 割线方程 严格凸且光滑函数的BFGS算法 非凸但光滑函数的BFG ...

  3. 机器人中的数值优化(三)—— 无约束最优化方法基础、线搜索准则

       本系列文章主要是我在学习<数值优化>过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程<机器人中的数值优化>和高立编著的<数值最优化方法>等,本系列文 ...

  4. matlab解决无约束优化问题

    无约束优化问题 要用到的数学知识: 1.向量范数与矩阵范数 2.多元函数梯度与Hessian阵 3.凸集与凸函数 特别要提示的是:如果该函数为凸函数,那么它有且仅有一个最优点,如果它的值不在无穷处,我 ...

  5. 高立数值最优化方法_最优化理论之无约束优化基本结构及其python应用

    自古以来,凡是追求尽善尽美是人类的天性,因而产生了科学,工程,数学,经济和商业等领域的实际问题时,人们欲从众多可行的方案中选择最优或近似最优的解决方案,那么最优化方法就是专门解决这类问题的一个强有力工 ...

  6. 无约束优化问题(一)

    一名数学专业的人工智能爱好者 导语 随着人工智能.深度学习的火爆,越来越多的人加入到这个行业中来,相信你们也一定听说过,不懂数学的AI工作者找工作时经常碰壁,博主作为一名数学专业学生开这一系列博客希望 ...

  7. matlab线性搜索确定步长,使用非精最速下降法确线搜索armijo算法确定步长的.doc...

    使用非精最速下降法确线搜索armijo算法确定步长的.doc 数学与计算科学学院实验报告实验项目名称使用非精确线搜索ARMIJO算法确定步长的最速下降法所属课程名称最优化方法实验类型算法编程实验日期2 ...

  8. 最优化--中科院实景课堂--第二节 局部极小点+凸函数+无约束优化引言

    1.目标函数很复杂,甚至可能需要采样,而且来之不易.因此需要用少的步数算出最值 2.gloal.local(weak平/strict严格/isolated孤立[他的邻域内只有这样一个极小点,没有震荡] ...

  9. 02(c)多元无约束优化问题-牛顿法

    此部分内容接<02(a)多元无约束优化问题>! 第二类:牛顿法(Newton method) \[f({{\mathbf{x}}_{k}}+\mathbf{\delta })\text{ ...

最新文章

  1. 软件开发过程中遇到的问题
  2. 如何在Google Chrome浏览器中启动JavaScript调试器?
  3. Qt for ios 设置程序显示名称
  4. STM32速度---网页讲解
  5. C/C++浮点数在内存中的存储方式
  6. SSL certificate problem: unable to get local issuer certificate 的解决方法
  7. struts2重定向
  8. 使用Java实现面向对象编程(1)
  9. 26秒!全球销量第一的AI音箱就被腾讯黑掉了,然后变身窃听器
  10. 信号量有没有容量限制?
  11. HBase: 看上去很美
  12. 《水经注全国离线地图5.1》升级至5.2
  13. Canvas 输出位图
  14. 储量级别122b_储量级别代码是什么
  15. 51单片机的汇编语言
  16. 中级软件设计师刷题笔记
  17. 思维模型 第一性原理
  18. 前端全栈工程师进阶学习笔记
  19. 亲脂性细胞膜染料: DiO, Dil, DiR, Did - MedChemExpress
  20. 产生随机数(随机数)

热门文章

  1. 前端网格布局grid
  2. java8-ZoneId
  3. 钱币组合问题(动态规划)
  4. linux 命令行获取时间,【Linux】让命令提示符显示日期和时间
  5. 【ORACLE数据库体系架构】
  6. DHCP介绍及H3C配置DHCP
  7. csgo调出参数_CSGO全参数设置
  8. python中idxmax_python-熊猫idxmax()在按包含NaN的时间段分组的...
  9. PASCAL VOC2012 数据集讲解与制作自己的数据集
  10. 谈谈三次握手四次挥手