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

机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索,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.hqwc.cn/news/53845.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongodb-win32-x86_64-2008plus-3.4.24-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin>C:\MongoDB\Server\3.4\bin>mongod --help Options:General options:-h [ --help ] …

SQLI_LABS攻击

目录 报错的处理方式 Less1 首先来爆字段 联合注入 判断注入点 爆数据库名 爆破表名 information_schema information_schmea.tables group_concat() 爆破列名 information_schema.columns 爆值 SQLMAP Less-2 -4 Less -5 布尔 数据库 表名 字段名 爆破值 …

python爬虫 获取简单的get请求

打印结果&#xff1a; 原博主写的很厉害额&#xff0c;写的比较全面&#xff0c;大家可以去学习看看 参考原文&#xff1a; Python调用get或post请求外部接口_python调用post接口_纯洁的小魔鬼的博客-CSDN博客

19、springboot引用配置属性或引用生成文件的属性或引用随机值

引用配置属性或引用生成文件的属性或引用随机值 ★ 使用占位符引用其他配置属性&#xff1a; 配置文件中可用${}占位符引用已有的属性&#xff0c;被引用的属性可以是&#xff1a; - 已定义的属性。 - 来自其他配置源&#xff08;比如命令行的选项参数、环境变量、系统属性等…

devops-发布vue前端项目

回到目录 将使用jenkinsk8s发布前端项目 1 环境准备 node环境 在部署jenkins的服务器上搭建node环境 node版本 # 1.拉取 https://nodejs.org/download/release/v20.4.0/node-v20.4.0-linux-x64.tar.gz# 2.解压到/usr/local目录下 sudo tar xf v20.4.0.tar.gz -C /usr/loc…

No111.精选前端面试题,享受每天的挑战和学习

文章目录 map和foreach的区别在组件中如何获取vuex的action对象中的属性怎么去获取封装在vuex的某个接口数据有没有抓包过&#xff1f;你如何跟踪某一个特定的请求&#xff1f;比如一个特定的URL&#xff0c;你如何把有关这部分的url数据提取出来&#xff1f;1. 使用网络抓包工…

C++ - 模板分离编译

模板分离编译 我们先来看一个问题&#xff0c;我们用 stack 容器的声明定义分离的例子来引出这个问题&#xff1a; // stack.h // stack.h #pragma once #include<deque>namespace My_stack {template<class T, class Container std::deque<T>>class stack…

2023年08月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年08月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

【容器】docker基础使用

文章目录 一、docker常见命令二、注意事项Reference 一、docker常见命令 docker是一个容器化平台。 Docker介绍&#xff1a;&#xff08;官网&#xff1a;https://www.docker.com/get-started&#xff09; Docker 是一个开源的应用容器引擎&#xff0c;你可以把它当作一个轻量…

Java判断文件的系统格式编码格式

使用Java判断一个文件的系统格式&#xff08;亲测可用&#xff09;&#xff0c;比如我们常见的Windows格式的文件&#xff0c;Unixg格式的文件&#xff0c;Mac格式的文件&#xff1b;常常有这样的场景&#xff1a;我们在Windows系统编写的脚步上传到Linux系统执行&#xff0c;执…

caj文件怎么转换成pdf?了解一下这种方法

caj文件怎么转换成pdf&#xff1f;如果你曾经遇到过需要将CAJ文件转换成PDF格式的情况&#xff0c;那么你一定知道这是一件麻烦的事情。幸运的是&#xff0c;现在有许多软件和工具可以帮助你完成这项任务。下面就给大家介绍一款使用工具。 【迅捷PDF转换器】是一款功能强大的工…

外包业务成功的秘诀:自我修养的艺术

了解外包业务 外包&#xff0c;亦称外包服务&#xff0c;是一种经济活动形式。它是指企业将非核心业务交由专门的外部供应商完成&#xff0c;从而集中精力发展自身的核心业务。 外包的利弊 外包业务的利处在于&#xff0c;企业可以更好地专注于核心业务&#xff0c;缩减内部成…