机器学习笔记之优化算法(五)线搜索方法(步长角度;非精确搜索;Armijo Condition)

news2024/10/5 13:05:38

机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索,Armijo Condition]

引言

上一节介绍了线搜索方法使用非精确搜索近似求解最优步长的过程中,讨论了 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk) { f ( x k ) } k = 0 ∞ ⇒ f ∗ \{f(x_k)\}_{k=0}^{\infty} \Rightarrow f^* {f(xk)}k=0f之间的条件关系。本节以该条件关系为引,介绍 Armijo Condition \text{Armijo Condition} Armijo Condition

回顾:

关于 f ( x k + 1 ) = ϕ ( α ) f(x_{k+1}) = \phi(\alpha) f(xk+1)=ϕ(α)的一些特性

在线搜索方法——步长角度(精确搜索)中介绍过,由于目标函数 f ( ⋅ ) f(\cdot) f()未知,导致我们没有办法得到 ϕ ( α ) = f ( x k + 1 ) \phi(\alpha) = f(x_{k+1}) ϕ(α)=f(xk+1)精确函数,但并不妨碍我们了解一些关于 ϕ ( α ) \phi(\alpha) ϕ(α)的特性:

  • 由于步长变量 α \alpha α具有物理意义,因而 α \alpha α存在下界 0 0 0,从而 ϕ ( 0 ) = f ( x k + 0 ⋅ P k ) = f ( x k ) \phi(0) = f(x_k + 0 \cdot \mathcal P_k) = f(x_k) ϕ(0)=f(xk+0Pk)=f(xk)
  • ϕ ( α ) \phi(\alpha) ϕ(α) α = 0 \alpha=0 α=0处的斜率 ∂ ϕ ( α ) ∂ α ∣ α = 0 \begin{aligned}\frac{\partial \phi(\alpha)}{\partial \alpha}|_{\alpha=0}\end{aligned} αϕ(α)α=0可表示成如下形式:
    ∂ ϕ ( α ) ∂ α ∣ α = 0 = ϕ ′ ( 0 ) = [ ∇ f ( x k + 0 ⋅ P k ) ] T ⋅ P k = [ ∇ f ( x k ) ] T ⋅ P k \begin{aligned} \frac{\partial \phi(\alpha)}{\partial \alpha}|_{\alpha=0} & = \phi'(0) \\ & = \left[\nabla f(x_k + 0 \cdot \mathcal P_k)\right]^T \cdot \mathcal P_k \\ & = \left[\nabla f(x_k)\right]^T \cdot \mathcal P_k \end{aligned} αϕ(α)α=0=ϕ(0)=[f(xk+0Pk)]TPk=[f(xk)]TPk
    其中 P k \mathcal P_k Pk是一个单位向量,描述的是下降方向;而 ∇ f ( x k ) \nabla f(x_k) f(xk)表示梯度方向。因而它们的内积有:
    [ ∇ f ( x k ) ] T ⋅ P k < 0 [\nabla f(x_k)]^T \cdot \mathcal P_k < 0 [f(xk)]TPk<0

也就是说:无论 ϕ ( α ) \phi(\alpha) ϕ(α)是什么形式,该函数总会经过 [ 0 , f ( x k ) ] [0,f(x_k)] [0,f(xk)]点,且该点处的斜率 < 0 <0 <0恒成立。最终,该点的切线函数 l ( α ) l(\alpha) l(α)表示为:
l ( α ) = f ( x k ) + [ ∇ f ( x k ) ] T P k ⋅ α l(\alpha) = f(x_k) + [\nabla f(x_k)]^T \mathcal P_k \cdot \alpha l(α)=f(xk)+[f(xk)]TPkα

非精确搜索近似求解最优步长的条件

关于最优化目标函数 min ⁡ X ∈ R n f ( X ) \mathop{\min}\limits_{\mathcal X \in \mathbb R^n} f(\mathcal X) XRnminf(X),使用线搜索方法获取一系列数值解 { x k } k = 0 ∞ \{x_k\}_{k=0}^{\infty} {xk}k=0
x k + 1 = x k + α k ⋅ P k x_{k+1} = x_k + \alpha_k \cdot \mathcal P_k xk+1=xk+αkPk
最终目标希望:随着迭代过程的增加, x k x_k xk对应的目标函数结果 f ( x k ) f(x_k) f(xk)收敛到最小值 f ∗ f^* f
{ f ( x k ) } k = 0 ∞ ⇒ f ∗ \{f(x_k)\}_{k=0}^{\infty} \Rightarrow f^* {f(xk)}k=0f
我们不否认:如果实现该目标,必然需要数值解序列对应的目标函数结果 { f ( x k ) } k = 0 ∞ \{f(x_k)\}_{k=0}^{\infty} {f(xk)}k=0满足严格的单调性

  • 在最优解 α k \alpha_k αk没有求出之前,将步长视作一个变量 α \alpha α
  • 观察 f ( x k + α ⋅ P k ) f(x_k + \alpha \cdot \mathcal P_k) f(xk+αPk),由于 x k , P k x_k,\mathcal P_k xk,Pk都是已知/被固定的量,因此该式子中仅包含一个标量变量 α \alpha α,以此将 f ( x k + 1 ) f(x_{k+1}) f(xk+1)视作仅关于 α \alpha α的函数,记作 ϕ ( α ) \phi(\alpha) ϕ(α)
    { f ( x k + 1 ) = f ( x k + α ⋅ P k ) = ϕ ( α ) ϕ ( α ) = f ( x k + 1 ) < f ( x k ) = ϕ ( 0 ) \begin{cases} \begin{aligned} & f(x_{k+1}) = f(x_k + \alpha \cdot \mathcal P_k) = \phi(\alpha) \\ & \phi(\alpha) = f(x_{k+1}) < f(x_k) = \phi(0) \end{aligned} \end{cases} {f(xk+1)=f(xk+αPk)=ϕ(α)ϕ(α)=f(xk+1)<f(xk)=ϕ(0)

但如果 { f ( x k ) } k = 0 ∞ \{f(x_{k})\}_{k=0}^{\infty} {f(xk)}k=0仅仅满足严格的单调性,并无法证明 { f ( x k ) } k = 0 ∞ ⇒ f ∗ \{f(x_k)\}_{k=0}^{\infty} \Rightarrow f^* {f(xk)}k=0f。也就是说,这仅仅是一个必要不充分条件
关于条件不充分的反例,见上一节传送门。

Armijo Condition \text{Armijo Condition} Armijo Condition

可以看出,条件 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk)的约束能力是松散的,因为该条件并没有考虑到目标函数 f ( ⋅ ) f(\cdot) f()的复杂性。假设关于 ϕ ( α ) \phi(\alpha) ϕ(α)函数图像表示如下(蓝色曲线):
图像描述条件的松散性
其中红色直线描述 f ( x k + 1 ) = ϕ ( α ) = f ( x k ) f(x_{k+1}) = \phi(\alpha) = f(x_k) f(xk+1)=ϕ(α)=f(xk)的情况。如果按照条件 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk)的描述,那么红色线下方 ϕ ( α ) \phi(\alpha) ϕ(α)图像对应的 α \alpha α结果均满足约束条件。

Armijo Condition \text{Armijo Condition} Armijo Condition f ( x k ) < f ( x k + 1 ) f(x_k) < f(x_{k+1}) f(xk)<f(xk+1)这个条件之所以松散归结为: ϕ ( α ) \phi(\alpha) ϕ(α)函数中,满足 f ( x k + 1 ) < f ( x k ) f(x_{k+1})<f(x_k) f(xk+1)<f(xk)条件下,可选择的步长 α \alpha α结果过多,从而更不容易选择出最优步长

基于这种动机, Armijo Condition \text{Armijo Condition} Armijo Condition的想法是:通过一种约束方法,基于该方法下有效降低步长 α \alpha α的选择范围。那么如何构造这种方法 ? ? ?

  • 回顾上图:关于初始点 ϕ ( 0 ) = f ( x k ) \phi(0) = f(x_k) ϕ(0)=f(xk)处的切线函数 l ( α ) l(\alpha) l(α)(橙色线)。由于切线的原因,导致局部范围内,在该切线下方范围内找出一个有效的 α \alpha α取值是极难的
    这里主要关注的是‘凸函数’,在局部范围内如果是个凸函数,不可能在切线下方找到有效的 α \alpha α值。
  • 但这也仅限于局部范围内。如果在全局范围内,这种值还是有可能存在的。例如下面的 ϕ ( α ) \phi(\alpha) ϕ(α)图像:
    全局与局部范围内的切线的影响示例
    从上图可以看出,关于过 [ 0 , ϕ ( 0 ) ] [0,\phi(0)] [0,ϕ(0)]的切线函数下方可能存在可选择的步长,并且从图像上观察,该步长范围的映射结果非常优秀。但实际上我们并不清楚 ϕ ( α ) \phi(\alpha) ϕ(α)的真实形状,但可以肯定的是:如果将 [ 0 , ϕ ( 0 ) ] [0,\phi(0)] [0,ϕ(0)]位置的切线作为约束条件,该切线筛选出的 α \alpha α数量相比 f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)明显减少,甚至是苛刻
    上图仅是我们构想出的示例,实际上也可能会出现‘在切线 l ( α ) l(\alpha) l(α)下方,没有任何 ϕ ( α ) \phi(\alpha) ϕ(α)图像的情况。这会使切线 l ( α ) l(\alpha) l(α)自身作为约束条件返回的 α \alpha α范围不稳定甚至是空集。因而我们需要选出一个位于 f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk) l ( α ) l(\alpha) l(α)之间的直线作为判别条件。
    L ( α ) = f ( x k ) + C 1 ⋅ α [ ∇ f ( x k ) ] T P k C 1 ∈ ( 0 , 1 ) \mathcal L(\alpha) = f(x_k) + \mathcal C_1 \cdot \alpha [\nabla f(x_k)]^T \mathcal P_k \quad \mathcal C_1 \in (0,1) L(α)=f(xk)+C1α[f(xk)]TPkC1(0,1)
  • 其中 C 1 ∈ ( 0 , 1 ) \mathcal C_1 \in (0,1) C1(0,1)相当于 f ( x k ) f(x_k) f(xk)为中心,在 l ( α ) l(\alpha) l(α) f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)所围成的范围内选择合适的斜率,从而得到相应的约束条件
    • 由于 f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)自身斜率为 0 0 0,因而 L ( α ) \mathcal L(\alpha) L(α)斜率 C 1 ⋅ [ ∇ f ( x k ) ] T P k C 1 ∈ ( 0 , 1 ) \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T\mathcal P_k \quad\mathcal C_1 \in (0,1) C1[f(xk)]TPkC1(0,1)可看作是从 { 0 , [ ∇ f ( x k ) ] T P k } \{0, [\nabla f(x_k)]^T\mathcal P_k\} {0,[f(xk)]TPk}范围内滑动产生的斜率结果,并作为筛选 α \alpha α的约束条件
    • 关于新的约束条件见绿色线,可以看出,可以通过调节参数 C 1 \mathcal C_1 C1,从而约束 α \alpha α的可选择范围。
      Armijo Condition

从上图可以看出:

  • 关于新的约束函数 L ( α ) \mathcal L(\alpha) L(α),其斜率 C 1 ⋅ [ ∇ f ( x k ) ] T \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T C1[f(xk)]T上界 0 0 0,对应 L ( α ) = f ( x k ) \mathcal L(\alpha) = f(x_k) L(α)=f(xk)
  • 对应地,其斜率 C 1 ⋅ [ ∇ f ( x k ) ] T P k \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T\mathcal P_k C1[f(xk)]TPk下界 [ ∇ f ( x k ) ] T P k \left[\nabla f(x_k)\right]^T\mathcal P_k [f(xk)]TPk,对应 L ( α ) = l ( α ) \mathcal L(\alpha) = l(\alpha) L(α)=l(α)

从而将 ϕ ( α ) ≤ f ( x k ) + C 1 ⋅ [ ∇ f ( x k ) ] T P k ⋅ α \phi(\alpha) \leq f(x_{k}) + \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T \mathcal P_k \cdot \alpha ϕ(α)f(xk)+C1[f(xk)]TPkα称作 Armijo Condition \text{Armijo Condition} Armijo Condition

相关参考:
【优化算法】线搜索方法-步长-Armijo Condition

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

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

相关文章

行业追踪,2023-07-31,板块多数都是指向消费

自动复盘 2023-07-31 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

【数据挖掘竞赛】——科大讯飞:锂离子电池生产参数调控及生产温度预测挑战赛

🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ ​ 【科大讯飞】报名链接:https://challenge.xfyun.cn?invitaC…

JAVASE---类和对象

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向对象的…

Mysql 查询统计最近12个月的数据

包括当月: SELECTt1.yf AS month,count( t2.uuid ) AS total FROM(SELECTDATE_FORMAT(( CURDATE()), %Y-%m ) AS yf UNIONSELECTDATE_FORMAT(( CURDATE() - INTERVAL 1 MONTH ), %Y-%m ) AS yf UNIONSELECTDATE_FORMAT(( CURDATE() - INTERVAL 2 MONTH ), %Y-%m ) AS yf UNION…

Microsoft Visual C++ 14.0 is required.

Microsoft Visual C 14.0 is required. Get it with “Microsoft Visual C Build Tools 当我们安装绝大部分python包的时候可以通过pip install 或者 conda install解决&#xff0c;但是任然有些包是安装不了的&#xff0c;比如我的就会报Microsoft Visual C 14.0 is required…

gcc编译方法、静态链接库、动态链接库用法

可执行程序的编译过程 第一步&#xff1a;预处理&#xff08;将宏展开&#xff09; gcc -E main.c -o main.i 第二步&#xff1a;编译成汇编指令 gcc -S main.i -o main.s 第三步&#xff1a;编译成目标文件&#xff0c;准备链接工作 gcc -c main.s -o main.o 第四步&am…

对话CSDN副总裁-邹欣:先行动的才是赢家,践行长期主义的价值创造者终将收获价值 | COC上海城市开发者社区

文章目录 ⭐️ COC上海城市开发者社区的首次集结契机⭐️ 关于 "技术人如何应对35岁中年危机"&#x1f31f; 30岁了没转管理&#xff0c;应该焦虑么&#xff1f;&#x1f31f; 30岁没转管理&#xff0c;是否还有其他选择&#xff1f; ⭐️ 践行长期主义的价值创造者终…

力扣SQL之路:窗口函数应用

文章目录 1.引言2.力扣SQL题目3. 解题策略4.代码实现5.总结 1.引言 窗口函数是 SQL 中一种强大的分析函数&#xff0c;它可以在结果集中创建一个窗口&#xff0c;并对窗口内的数据进行计算和分析。在力扣&#xff08;LeetCode&#xff09;的 SQL 题目中&#xff0c;窗口函数经…

这三件事没理顺,你过不了软考

下午好&#xff0c;我的网工朋友 上周软考成绩出来了&#xff0c;大家都过了没&#xff1f; 我看好多人都说早上的题目稳过&#xff0c;下午的好多都挂了。 软考每年这个通过率&#xff0c;确实是一言难尽。 到底怎么样才能过&#xff0c;自学、培训&#xff0c;各种诀窍&am…

最新多模态3D目标检测论文汇总(PDF+代码)

目前在自动驾驶领域&#xff0c;多模态3D目标检测是一个非常重要的研究热点。由于引入了其他传感器数据&#xff0c;多模态3D目标检测在性能上明显优于纯视觉的方案&#xff0c;可以同时预测周围物体的类别、位置和大小&#xff0c;因此对于自动驾驶领域的同学来说&#xff0c;…

【gitlib】linux系统rpm安装gitlib最新版本

目录 下载gitlib安装包 安装需要的依赖 设置开机启动 安装邮件服务器并设置开机启动 rpm执行安装gitlib 修改gitlib.rb文件的属性 修改完毕后执行更新配置 查看gitlib运行 查看gitlib初始化root密码 gitlib入口访问地址 下载gitlib安装包 Index of /gitlab-ce/yum/el7/…

龙蜥社区用户案例征集开始啦,欢迎投稿!

征集倡议 龙蜥社区在 2022 年首次发布了《2022 龙蜥操作系统生态用户实践精选》&#xff0c;为龙蜥广大用户提供了成熟实践样板。随着社区的迅速发展&#xff0c;龙蜥生态和用户的规模迅速壮大&#xff0c;为了更好的服务于广大龙蜥用户&#xff0c;现面向各行业征集龙蜥用户案…

Mybatis源码解析(三)------SqlSession

Mybatis源码解析&#xff08;三&#xff09;------SqlSession 序言SqlSession接口SqlSession的实现类DefaultSqlSessionSelect获取Statement查询 序言 Mybatis里面的核心就是SqlSession这个接口&#xff0c;前面我们已经研究了Mybatis的配置过程和Mapper的注册过程&#xff0c…

jsp实现打印功能

1.先实现列表页查询 2.做一个打印按钮 function plprint(){var rows $(#whYcfTzList).datagrid(getData);var ORGCODE$(input[nameORGCODE]).val();var ISCONTAIN$(input[nameISCONTAIN]).val();var RECCODE$(input[nameRECCODE]).val();var CUSTOMERNAME$(input[nameCUSTOM…

安卓抓包神器黄鸟HttpCanary安装配置及使用教程

1、下载安装包 黄鸟抓包下载地址 2、安装下载的apk 3、证书安装问题 vivo手机我安装时打开黄鸟app&#xff0c;会直接弹出&#xff0c;直接安装即可 其他手机&#xff0c;需要去系统设置中安装 3.1 搜索 证书&#xff0c;选择CA证书 3.2 进行本人操作验证 3.3 安装HttpCa…

【LeetCode】下降路径最小和

下降路径最小和 题目描述算法分析编程代码 链接: 下降路径最小和 题目描述 算法分析 编程代码 class Solution { public:int minFallingPathSum(vector<vector<int>>& matrix) {int n matrix.size();vector<vector<int>> dp(n1,vector(n2,INT_M…

【密码学】五、序列密码

序列密码 1、概述1.1序列密码的分类1.1.1同步序列密码1.1.2自同步序列密码 2、序列密码的组成2.1密钥序列生成器KG2.2有限状态自动机 3、LFSR 1、概述 采用一个短的种子密钥来控制某种算法获得长的密钥序列的办法&#xff0c;用以提供加解密&#xff0c;这个种子密钥的长度较短…

java实现文件下载

1.文件上传 文件上传&#xff0c;也称为upload&#xff0c;是指将本地图片、视频、音频等文件上传到服务器上&#xff0c;可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛&#xff0c;我们经常发微博、发微信朋友圈都用到了文件上传功能。 import com.itheima.…

Leetcode-每日一题【剑指 Offer II 006. 排序数组中两个数字之和】

题目 给定一个已按照 升序排列 的整数数组 numbers &#xff0c;请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 &#xff0c;所以答案数组应当满足 0 < answer[0] &l…

简述token和如何使用token

一、什么是token&#xff08;理论&#xff09; 解决http短连接,无状态管理的问题。 Jeb web token(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开发标准&#xff0c;JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息&#xff0c;以便于…