无约束优化——线性搜索法

news2024/11/20 10:46:03

无约束优化——线性搜索法(line search)

    • 前言
    • 概述
    • 构建关于步长的函数
    • Wolfe条件
    • Strong Wolfe条件
    • Zoutendijk条件
  • 后记

前言

该系列为学习笔记系列,所有内容可以在 Numerical Optimization (2nd Edition) 中找到,该书十分有用经典建议阅读英文原版。该系列只做简单描述。

概述

数值方法即 通过 迭代 的方法得到 误差允许 范围内的(全局or)局部最优解。它的一般形式是 x k + 1 = x k + α k p k x_{k+1}=x_k+\alpha_kp_k xk+1=xk+αkpk,线搜索方法(line search)和信赖域方法(trust region)是两种不同的 搜索策略,并应用于不同的 搜索方法 上,如:最速下降法(Steepest Descent method)、牛顿法(Newton’s method)、拟牛顿法(Quasi-Newton’s method).这两种策略最显而易见的区别是寻找下一个迭代点的 顺序 不同:先搜索方法先确定方向 (direction: α k \alpha_k αk),再确定步长 (step length: p k p_k pk)。而信赖域方法正好相反。

构建关于步长的函数

这个小标题十分直白,使用线搜索方法时,首先根据优化的式子选择合适的 搜索方法,这一步便确定了 搜索方向。也就是说,线搜索策略是选定搜索方法(方向)后的步长确定策略。下面简略列出不同搜索方法的搜索方向:

最速下降法牛顿法拟牛顿法
- ∇ f k \nabla f_k fk- ( ∇ 2 f k ) − 1 ∇ f k (\nabla^2f_k)^{-1}\nabla f_k (2fk)1fk- ( B k ) − 1 ∇ f k (B_k)^{-1}\nabla f_k (Bk)1fk

所以当选定某种方法后 , x k + 1 = x k + α k p k x_{k+1}=x_k+\alpha_kp_k xk+1=xk+αkpk 中的 p k p_k pk 是确定的。我们希望找到一个 α k \alpha_k αk 使得, f ( x k + 1 ) f(x_{k+1}) f(xk+1) f ( x k + α k p k ) f(x_k+\alpha_kp_k) f(xk+αkpk) 尽可能地小。

注意:要求 min ⁡ α k f ( x k + α k p k ) \min_{\alpha_k}f(x_k+\alpha_kp_k) minαkf(xk+αkpk) 是不合理的,一方面,它代价高昂,与其花费巨大代价找到全局最小值,不如一个局部最小值来得实惠,实际上,也没必要要求至少局部最小。另外一方面,即使不计代价找到每一步的全局最小值,它也只是目标函数在该迭代方向上的最小值,放眼全局,该点不一定更靠近目标函数的全局最优点。这里简略手绘说明一下:

( x ∗ x^* x为目标函数的最小值点,考虑 x k x_k xk,现在方向确定,要来确定步长,B点是该方向上目标函数的极小值点,但是放眼全局,B点距 x ∗ x^* x 的距离显然要比A大,而且花的代价还比A高)

构建关于步长的函数:
ϕ ( α ) = f ( x k + p k α ) ,    α > 0 \phi(\alpha)=f(x_k+p_k\alpha),~~\alpha >0 ϕ(α)=f(xk+pkα),  α>0
这是一个关于步长的函数,其导数为 ϕ ′ ( α ) = ⟨   ∇ f ( x k + p k α ) , p k ⟩ = ∇ f ( x k + p k α ) T p k \phi'(\alpha)=\langle~\nabla f(x_k+p_k\alpha),p_k\rangle=\nabla f(x_k+p_k\alpha)^Tp_k ϕ(α)= f(xk+pkα),pk=f(xk+pkα)Tpk

Wolfe条件

先给出式子:
Wolfe { Armijo condition:  f ( x k + α p k ) ≤ f ( x k ) + c 1 α ∇ f k T p k c 1 ∈ ( 0 , 1 ) Curvature condition:  ∇ f ( x k + α p k ) T p k ≥ c 2 ∇ f k T p k c 2 ∈ ( c 1 , 1 ) \text{Wolfe}\left\{\begin{matrix} \text{Armijo condition:}~f(x_k+\alpha p_k)\le f(x_k)+c_1\alpha\nabla f_k^Tp_k&c_1\in(0,1)\\\\ \text{Curvature condition: }\nabla f(x_k+\alpha p_k)^Tp_k\ge c_2\nabla f_k^Tp_k&c_2\in(c_1,1) \end{matrix} \right. Wolfe Armijo condition: f(xk+αpk)f(xk)+c1αfkTpkCurvature condition: f(xk+αpk)Tpkc2fkTpkc1(0,1)c2(c1,1)
其中, Armijo条件确保新的迭代点使得目标函数值下降,也就是下图中斜线的下方。考虑Curvature条件,注意到乘积 ∇ f k T p k \nabla f_k^Tp_k fkTpk 是个负值,所以不等式左边要么大于零,要么小于零但比右边更接近于0(越平),这样的条件更有利于我们选取合适的步长。

Strong Wolfe条件

与Wolfe的不同之处在于Curvature条件,形式如下:
Strong Wolfe { Armijo:  f ( x k + α p k ) ≤ f ( x k ) + c 1 α ∇ f k T p k c 1 ∈ ( 0 , 1 ) Curvature:  ∣ ∇ f ( x k + α p k ) T p k ∣ ≤ ∣ c 2 ∇ f k T p k ∣ c 2 ∈ ( c 1 , 1 ) \text{Strong Wolfe}\left\{\begin{matrix} \text{Armijo:}~f(x_k+\alpha p_k)\le f(x_k)+c_1\alpha\nabla f_k^Tp_k&c_1\in(0,1)\\\\ \text{Curvature: }|\nabla f(x_k+\alpha p_k)^Tp_k|\le |c_2\nabla f_k^Tp_k|&c_2\in(c_1,1) \end{matrix} \right. Strong Wolfe Armijo: f(xk+αpk)f(xk)+c1αfkTpkCurvature: ∣∇f(xk+αpk)Tpkc2fkTpkc1(0,1)c2(c1,1)

我们刚刚提到Wolfe中curvature条件的意义为:选取斜率为正或者是虽然为负,但比 c 2 ∇ f k T p k c_2\nabla f_k^Tp_k c2fkTpk 更平坦的点。我们其实很容易发现它的缺陷:就是对于斜率为正的情况,我们没有进行约束,如果我们让正斜率没那么大是不是会更好呢?
也就是说,无论斜率是正还是负,它都 足够平坦

此外还有Goldstein条件,此处不再赘述。截取原书的话:
Wolfe: particularly important in the implementation of Quasi-Newton methods
Goldstein: are often used in Newton-type methods, not well suited in Quasi-Newton

Zoutendijk条件

这个是非常重要的东西,学习时务必重视,它的身影时常出现在各种分析算法收敛速度,充分性之中。虽是笔记,但还是想把这段的原文放一下:

It quantifies the effect of properly chosen step lengths α_k , and shows, for example, that the steepest descent method is globally convergent. For other algorithms, it describes how far pk can deviate from the steepest descent direction and still produce a globally convergent iteration. Various line search termination conditions can be used to establish this result, but for concreteness we will consider only theWolfe conditions (3.6). Though Zoutendijk’s result appears at first
to be technical and obscure, its power will soon become evident.

定义一个算法,需看该算法是否满足 有限步性Zoutendijk条件正是这一问题的充分条件。简单来讲,我们希望迭代步一方面不会走得很慢,基本在原地打转,另一方面,我们希望它不会一直走一直走,走了无穷远的路。这也是研究次梯度算法(subgradient algorithm)时的关键一环。
∑ k ≥ 0 cos ⁡ 2 θ k ∥ ∇ f k ∥ 2 < ∞ \sum_{k\ge 0}\cos^2\theta_k\| \nabla f_k\|^2<\infty k0cos2θk∥∇fk2<
我并不打算把重点放在式子的形式上,我更视 Zoutendijk 条件为一种顺其自然的想法。像是我去某个地方,有时间阶段地行进,那我肯定会想:这一步一步地,究竟能不能到目的地啊?要是到不了,我就不走了。
下一个问题,什么情况下符合这种条件?书中用到了 Lipschitz 条件,即存在一个正的常数 L > 0 L>0 L>0 使得,
∥ ∇ f ( x 1 ) − ∇ f ( x 2 ) ∥ ≤ L ∥ x 1 − x 2 ∥ ,    ∀ x 1 , x 2 \|\nabla f(x_1)-\nabla f(x_2)\|\le L\|x_1-x_2\|,~~\forall x_1,x_2 ∥∇f(x1)f(x2)Lx1x2,  x1,x2
题外话,在次梯度算法中,则利用了投影的非扩张性(Nonexpansiveness of the Projection)

后记

原文内容非常多,且该系列需要一定数学基础,我只记录想法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

组件封装 - Tabs组件

首先我们先来看一下 Element UI 里面的 Tabs 是怎么样的 <template><el-tabs v-model"activeName" class"demo-tabs" tab-click"handleClick"><el-tab-pane label"User" name"first">User</el-tab-pa…

基于matlab的汽车牌照识别程序详细教程

设计一个基于matlab的汽车牌照识别程序&#xff0c;能够实现车牌图像预处理&#xff0c;车牌定位&#xff0c;字符分割&#xff0c;然后通过神经网络对车牌进行字符识别&#xff0c;最终从一幅图像中提取车牌中的字母和数字&#xff0c;给出文本形式的车牌号码。关键词&#xf…

C语言 一个特殊的数组【柔性数组】

文章目录前言柔性数组的特点柔性数组的使用柔性数组的优势写在最后前言 也许你从来就没有听过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但他是真的存在&#xff1b;柔性数组的概念存在于C99标准当中&#xff0c;C99标准表示&#xff1a;结构体的最后…

Linux-进程概念

目录 进程状态&#xff1a; 操作系统简图 调用进程bin.exe的详细过程 cpu运行队列的结构 R进程和阻塞进程 进程状态&#xff1a;挂起&#xff1a; Linux操作&#xff1a; ​编辑 R运行状态 S休眠状态 T暂停状态&#xff1a; kill kill -18 表示继续 kill -9 杀死进程…

肿瘤内微生物群在癌症转移中的新作用

谷禾健康 癌症是一种复杂的疾病&#xff0c;归因于多因素变化&#xff0c;导致治疗策略困难。 90%的癌症患者死于复发或转移。癌症转移是恶性肿瘤进展的关键步骤&#xff0c;由癌细胞内在特性和外在环境因素决定。 一些微生物组通过诱导癌性上皮细胞和慢性炎症促进癌发生、癌症…

光耦合器:类型及其应用

光耦合器&#xff1a;类型及其应用 介绍 光耦合器&#xff08;也称为光隔离器&#xff09;是一种在两个隔离电路之间传输电信号的半导体器件。光耦合器由两部分组成&#xff1a;发射红外光的LED和检测LED光的光敏器件。这两个部件都装在一个带有连接销的黑匣子中。输入电路接收…

数据可视化笔记记录(二)pandas

笔记内容是根据B站上面的一位老师的视频而记录了&#xff0c;因为我也还在学习&#xff0c;所以个人理解可能会出现错误&#xff0c;若有错误请指出。另外这篇文章会很长 B站视频连接、 numpy,matplotlib的学习记录 pandas 学习记录 SerIes结构&#xff0c;一图胜千言 Seri…

实用工具:FastDoc 文档提取工具

实用工具&#xff1a;FastDoc 文档提取工具 简单、实用的 HTTP API 文档生成工具&#xff0c;支持 Spring MVC/Spring Boot 下的控制器信息提取&#xff0c;类似 Swagger 但稍有不同的机制。 在线演示地址在 https://framework.ajaxjs.com/demo/fast-doc/。 关于研发者这工具…

二三层转发原理

二层转发原理 数据帧 二层即数据链路层的转发是以数据帧的格式进行转发&#xff0c;数据帧的格式如下&#xff1a; 目的地址(Destination Address,DA) &#xff1a;可以是单独的地址,或者是广播或组播MAC地址。 源地址(Source Address,SA) &#xff1a;用来识别发送没备,在S…

听说你想用开发者工具调试我的网站?挺可以的啊。25

本篇博客重点为大家介绍&#xff0c;如何禁止用户在浏览器中查看源码&#xff0c;禁用开发者工具调试等前端需求 案例已更新到 爬虫训练场 文章目录禁用右键&#xff0c;禁用 F12禁用 ctrl U 查看源代码&#xff0c;禁用 ctrl shift i 打开开发者工具实现开发者工具无限 deb…

arcgis使用Python脚本进行批量截图

arcgis使用Python脚本进行批量截图 介绍 最近公司数据部那边有个需求&#xff0c;需要结合矢量数据和影像数据&#xff0c;进行批量截图&#xff0c;并且截图中只能有一个图斑&#xff0c;还要添加上相应的水印。 思路 一开始我是准备使用QGIS直接进行批量出图&#xff0c;…

Ant Design在处理业务表单中的一些实践

文章目录前言表单处理实践Modal 清空旧数据使用Form.create和getFieldDecorator对Form进行包装表单控件是switch自定义表单控件Table列表SelectshowSearch 用于在选择框中显示搜索框其他需要注意的组件Tabs其它前言 目前&#xff0c;很多中小企业前端实现采用了react&#xff…

二、总线控制

文章目录一、引子二、总线判优控制1.基本概念2.方式&#xff08;1&#xff09;集中式①链式查询方式②计数器定时查询方式③独立请求方式&#xff08;2&#xff09;分布式三、总线通信控制1.基本概念2.方式&#xff08;1&#xff09;同步通信①介绍②同步式数据输入③同步数据输…

数据结构与算法学习推荐

推荐&#xff1a;官网地址&#xff1a;http://localhost:8000/algorithm/github&#xff1a;https://github.com/paiDaXing-web/You-Dont-Know-Algorithm 点star 大话搜索搜索一般指在有限的状态空间中进行枚举&#xff0c;通过穷尽所有的可能来找到符合条件的解或者解的个数。…

佳能C5235彩色激光复印机复印有底灰

故障描述&#xff1a; 佳能C5235彩色激光复印机&#xff0c;复印的时候有不同颜色的底灰问题&#xff1b; 检测分析&#xff1a; 打印不同纯色的纸张进行测试发现每张纸的上面都有不同颜色的底灰&#xff1b; 拆机进行检测吧&#xff0c;先打开前盖&#xff0c;拧下左右两边的螺…

CMake基础教程

CMake最大优势是跨平台&#xff0c;可以根据不同的平台生成Makefile文件&#xff0c;看下CMake的基础使用。 cmake&#xff08;单目录单文件&#xff09; 第一个最简单的cmake构建。 demo1.cpp代码&#xff1a; #include <iostream>using namespace std;int main(int…

【基于机械臂触觉伺服的物体操控研究】UR5e动力学建模及代码实现

我的毕设题目定为《基于机械臂触觉伺服的物体操控研究》&#xff0c;这个系列主要用于记录做毕设的过程。 前言&#xff1a;UR系列是优傲公司的代表产品&#xff0c;也是目前比较通用的产品级机械臂。所以我打算用该机械臂进行毕设的仿真实现。关于其动力学建模&#xff0c;网…

台阶问题-

台阶问题 题目描述 有NNN级的台阶&#xff0c;你一开始在底部&#xff0c;每次可以向上迈最多KKK级台阶&#xff08;最少111级&#xff09;&#xff0c;问到达第NNN级台阶有多少种不同方式。 输入格式 两个正整数N&#xff0c;K。 输出格式 一个正整数&#xff0c;为不同…

JVM(一)——架构基础

JVM java虚拟机 java gc 主要回收的是 方法区 和 堆中的内容&#xff0c;以下架构图是重点&#xff1a; 方法区和堆是线程共享&#xff0c;java栈、本机方法栈、程序计数器是线程私有。 运行时数据区可以用Runtime.getRuntime()获取 字节码执行引擎&#xff0c;修改程序计数器…

不要怀疑了,个人也是可以做好跨境电商的!

近几年随着跨境电商卖家们赚得盆满钵满&#xff0c;许多人都想从中分一杯羹&#xff0c;进而入住了跨境电商市场&#xff0c;有人与一些公司企业合作&#xff0c;也有人选择了自己做跨境电商平台&#xff0c;个人做的优劣势又有哪些呢&#xff1f; 个人做跨境电商平台最明显突…