数值计算之 线搜索法,Wolfe conditions

  • 前言
  • 梯度法的步长
  • 线搜索法
  • 非精确线搜索法
    • Armijo条件
    • Wolfe条件
    • Goldstein条件
  • 回溯法
  • 后记

前言

本篇是基于梯度的优化方法的补充篇

梯度法的步长

梯度下降法、牛顿法、拟牛顿法的主要目的都是求出增量方向。求出增量方向后,如果使用固定步长进行更新,当步长太大导致优化函数与其泰勒展开偏差太大时,可能出现优化函数不降反增的情况,导致迭代不收敛。

因此在获得增量方向后,还需要确定迭代的步长。常用的方法是线搜索法。

线搜索法

线搜索法在求出优化函数f(x)f(\bf x)f(x)在xk\bf x_kxk​的增量方向后,构建以下问题:
min⁡αϕ(α)=f(xk+αpk)\min_{\alpha} \quad \phi(\alpha)=f({\bf x_k}+\alpha {\bf p_k}) αmin​ϕ(α)=f(xk​+αpk​)

构造的函数是一元函数,其极值点处的导数为零:
ϕ′(α)=∇fT(xk+αpk)pk=0\phi'(\alpha)=\nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k}=0 ϕ′(α)=∇fT(xk​+αpk​)pk​=0
这样就能获得步长的精确解,也就是所谓的精确线搜索方法。但是实际操作中,如果梯度没有解析式,那么上面这个方程的解的计算是很困难的。

非精确线搜索法

非精确线搜索法不需要找到精确的步长,而是希望找到一个能够使优化函数fff稳定收敛并且下降速度较快的步长。此时的步长α\alphaα通常存在于一个或数个区间内。

Armijo条件

Armijo条件又被称为充分下降条件,是使得fff稳定收敛的充分条件,也是最简单的条件。

如下图所示,实线是函数ϕ(α)=f(xk+αpk)\phi(\alpha)=f({\bf x_k}+\alpha {\bf p_k})ϕ(α)=f(xk​+αpk​)的图像,虚线l(α)l(\alpha)l(α)表达式为:
ϕ′(α)=∇fT(xk+αpk)pkl(α)=ϕ(0)+c1ϕ′(0)(x−xk),0<c1<1\phi'(\alpha)=\nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k} \\ \quad \\ l(\alpha)=\phi({0})+c_1\phi'(0)({\bf x-x_k}),0<c_1<1 ϕ′(α)=∇fT(xk​+αpk​)pk​l(α)=ϕ(0)+c1​ϕ′(0)(x−xk​),0<c1​<1
由图可以看出,当实线在虚线下方时,ϕ(α)≤ϕ(0)\phi({\alpha})\le\phi({0})ϕ(α)≤ϕ(0),也就是函数必然下降。

这就是Armijo条件,用表达式来表示就是:
ϕ(α)≤I(α)→f(xk+αpk)≤f(xk)+c1α∇fT(xk)pk\phi(\alpha)\le I(\alpha) \\ \quad \\ \to \quad f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} ϕ(α)≤I(α)→f(xk​+αpk​)≤f(xk​)+c1​α∇fT(xk​)pk​

Wolfe条件

Armijo条件有一个问题:虽然能够保证梯度下降,但是当步长α\alphaα极小的时候,必然能够满足Armijo条件,但是下降的速度很慢,而且超小的步长可能导致迭代中的除零错误(Nan)。我们需要保证迭代的每一步都有充分的下降。

如下图所示,如果我们限制ϕ′(α)≥c1ϕ′(0)\phi'(\alpha)\ge c_1\phi'(0)ϕ′(α)≥c1​ϕ′(0),也就是ϕ(α)\phi(\alpha)ϕ(α)的斜率不够陡,达到相对平缓的区域,就形成了Curvature

将Armijo条件与Curvature条件合并,就是Wolfe条件,其表达式如下:
f(xk+αpk)≤f(xk)+c1α∇fT(xk)pk∇fT(xk+αpk)pk≥c2∇fT(xk)pk0<c1<c2<1f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} \\ \quad \\ \nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k} \ge c_2\nabla f^T({\bf x_k}){\bf p_k} \\ \quad \\ 0<c_1<c_2<1\\ f(xk​+αpk​)≤f(xk​)+c1​α∇fT(xk​)pk​∇fT(xk​+αpk​)pk​≥c2​∇fT(xk​)pk​0<c1​<c2​<1
Wolfe条件如下图所示:

Goldstein条件

Wolfe条件需要求优化函数的梯度,比较麻烦。于是出现了只需要求优化函数值的Goldstein条件:
f(xk)+(1−c1)α∇fT(xk)pk≤f(xk+αpk)≤f(xk)+c1α∇fT(xk)pk0<c1<0.5f({\bf x_k})+(1-c_1)\alpha\nabla f^T({\bf x_k}){\bf p_k} \le f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} \\ 0<c_1<0.5 f(xk​)+(1−c1​)α∇fT(xk​)pk​≤f(xk​+αpk​)≤f(xk​)+c1​α∇fT(xk​)pk​0<c1​<0.5
Goldstein条件的左边使得步长不会太小,右边保证梯度下降,但是可能出现找不到最优步长的情况,如下图所示。

回溯法

由于Wolfe条件实现复杂,实际使用中,可以采用回溯法实现Armijo条件或者Goldstein条件,具体流程是:

  1. 选择一个初始步长α0\alpha_0α0​,和一个缩小系数ρ<1\rho<1ρ<1
  2. 把α0\alpha_0α0​代入Armijo条件或者Goldstein条件
  3. 如果满足,则α=α0\alpha=\alpha_0α=α0​,结束线搜索;否则,α0=ρα0\alpha_0=\rho \alpha_0α0​=ρα0​,回到步骤2

当初始α0\alpha_0α0​比较大时,回溯法搜索到的步长就不会太小。

后记

下篇可能会继续学习共轭梯度法。

数值计算之 线搜索法,Armijo,Wolfe,Goldstein条件,回溯法相关推荐

  1. Armijo条件,Wolfe条件,Goldstein条件

    目录 线搜索 非精确线搜索(Armijo条件,Wolfe条件,Goldstein条件) 强Wolfe条件线搜索算法 线搜索 对于迭代式xk+1=xk+αpkx_{k+1} = x_k +\alpha ...

  2. 最优化:一维搜索的Wolfe条件与Goldstein条件

    转载请注明出处:http://www.codelast.com/ line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法.它可以分为精确的一维搜索以 ...

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

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

  4. python量化实战 顾比倒数线_顾比倒数线的画法及使用条件详解

    顾比倒数线的画法及使用条件详解 顾比线是 [ 澳 ] 诺.顾比提出的,以概率为基础阐述了趋势突破确认.介入触发点.止损 触发点.损失不大于资产 2% 的仓位控制.最大追涨位等.指标中含倒数线和均线束. ...

  5. 回溯法采用的搜索策略_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  6. vue 判断是否位 float_VUE中条件注释法css,判断ie浏览器

    float的css等样式,在ie中有些低版本浏览器不会生效,所以可以采用以下办法解决, vue中,条件注释法判断ie9及ie9以下浏览器,使用css 但是打包之后,css在js中 所以,ie9及ie9 ...

  7. 为ie和chrome FF单独设置样式的“条件注释法”、“类内属性前缀法”、“选择器前缀法”、实现方法 案例(推荐)

    这三种分类hack css详细原理,参考:http://blog.csdn.net/goodshot/article/details/44309055 1.为ie和chrome单独设置样式的类实现案例 ...

  8. 【方案分享】2022线上云年会云会议玩法全案策划.pptx(附下载链接)

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年12月份热门报告盘点2021年抖音数据总结报告.pdf2021微信视频号生态洞察报告.pd ...

  9. 耳机四根线的图解_耳机线材编法汇总

    [天极网DIY硬件频道] 耳机线对于经常玩耳机的玩家再清楚不过了.采用铜线材就能增加中低频,增加环境氛围,单晶铜则在增加氛围感的同时提升中高频的亮度.采用银线则可以增加空间感,提升乐器及人声,更能将这 ...

最新文章

  1. Redis的多种启动方式比较!
  2. SpringBoot 启动错误搜集
  3. Silverlight 数据显示和布局控件 示例
  4. 汽车的燃油清洁剂有什么用处?
  5. Flume与Kafka整合案例详解
  6. 十年磨一剑:从2009启动“去IOE”工程到2019年OceanBase拿下TPC-C世界第一
  7. C++类的静态成员变量
  8. 利用DataSet、DataTable、DataView按照自定义条件过滤数据
  9. eatwhatApp开发实战(二)
  10. U盘量产U盘扩容和U盘芯片检测
  11. MulterError: Unexpected field
  12. C# 支付宝小程序 ---小程序支付
  13. 互联网评论(一):由“戴尔用博客与中国用户沟通”想起
  14. mapgis java二次开发_mapgis7.0二次开发小试牛刀
  15. 创龙TI Sitara列AM4376/AM4379 ARM Cortex-A9高性能低功耗处理器
  16. JS 判断 IE 浏览器版本
  17. C\C++开发的经典魔塔小游戏--(4)楼层控制,背景音乐,个人元素
  18. 医院CRM管理中随访的重要性
  19. hc05与单片机连接图_基于proteus的51单片机开发实例37-DAC0832
  20. 荧光法焦磷酸检测试剂盒的制备和准备工作方案

热门文章

  1. 使用.NET Micro ORM “Symbiotic”的简单 CRUD
  2. mysql时间格式秒微秒_mysql 时间类型精确到毫秒、微秒及其处理
  3. [附源码]Nodejs计算机毕业设计敬老院信息管理系统Express(程序+LW)
  4. 【人工智能】Benchmark、SOTA、Baseline
  5. 如何禁止访问一个网站??
  6. 在 阿里云ECS 上安装 CDH6.2 standalong
  7. python考研成绩_出考研初试成绩之后
  8. 实验课第四次随堂测试
  9. 介绍计算机说明文,介绍电脑的说明文作文300字
  10. 锦锐单片机开发工具_锦锐触摸MCU 单片机方案开发