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

news2024/11/24 14:10:41

   本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例



   四、无约束最优化方法基础

   1、无约束的最优化问题描述

   无约束的最优化问题可以描述成,求取使得目标函数值最小的最优解 x ∗ x^{*} x,即:
   min ⁡ f ( x ) \min f(x) minf(x)
   其中:

   注1:最优解 x ∗ x^{*} x,是一个解集,可能包含一个解、多个解,也有可能不存在


   2、函数下降方向d

   内容补充:设 x k x_k xk 是经 k 步迭代后得到的迭代点, d k d_k dk 是在 x k x_k xk 点使 f ( x ) f(x) f(x) 下降的方向, a k a_k ak > 0 是沿 d k d_k dk 的步长,第k+1个选代点则可用下式表示,它满足 f ( x k + 1 ) < f ( x k ) . f\left(x_{k+1}\right)<f\left(x_{k}\right). f(xk+1)<f(xk).

   x k + 1 = x k + α k d k x_{k+1}=x_{k}+\alpha_{k}d_{k} xk+1=xk+αkdk

   那么我们来思考满足什么条件的方向是在 x k x_k xk 点使 f ( x ) f(x) f(x) 下降的方向呢?

   对任意 d ∈ R n d ∈R^n dRn,若存在 α ‾ k \overline{\alpha}_{k} αk,使 f ( x k + α d ) < f ( x k ) , ∀ α ∈ ( 0 , α ˉ k ) f\left(x_{k}+\alpha d\right)<f\left(x_{k}\right),\forall\alpha\in\left(0,\bar{\alpha}_{k}\right) f(xk+αd)<f(xk),α(0,αˉk),则d为 f ( x ) f(x) f(x) 在点 x k x_k xk 处下降的方向,将 f ( x k + α d ) f\left(x_{k}+\alpha d\right) f(xk+αd)在点 x k x_k xk 处泰勒展开得到下式:

   f ( x k + α d ) = f ( x k ) + α ∇ f ( x ) T d + O ( ∥ α d ∥ 2 ) f\left(x_{k}+\alpha d\right)=f\left(x_{k}\right)+\alpha \nabla f\left(x\right)\text{}^{\text{T}}d+O\left(\left\|\alpha d\right\|^{2}\right) f(xk+αd)=f(xk)+αf(x)Td+O(αd2)

   由上式可知,当下降方向d满足 g k T d < 0 g_{k}^{T}d<0 gkTd<0时,d即为使得 f ( x ) f(x) f(x) 在点 x k x_k xk 处下降的方向。


   3、无约束最优化算法的基本结构及构成要素

   第1步:给定初始点 x 0 ∈ R n , k : = 0 ; x_{0}\in{R}^{n},k:=0; x0Rn,k:=0;

   第2步:若在 x k x_k xk点终止准则满足,则输出有关信息,停止迭代;

   第3步:确定 f ( x ) f(x) f(x) x k x_k xk点的下降方向 d k d_k dk;

   第4步:确定步长 a k a_k ak,使 f ( x k + α k d k ) f\left(x_{k}+\alpha_{k}d_{k}\right) f(xk+αkdk)较之 f ( x ) f(x) f(x)有某种意义的下降

   第5步:令 x k + 1 : = x k + α k d k , k : = k + 1 x_{k+1}:=x_{k}+\alpha_{k}d_{k},k:=k+1 xk+1:=xk+αkdk,k:=k+1,转到第2步

   构成一个最优化方法的基本要素有二:其一是下降的方向;其二是步长.也就是说不同的方法可得到不同的下降方向和步长。我们称所有具有以上结构的最优化方法为 线搜索(型)方法

   在最优化方法中,下降的方向与步长的选取顺序不同,导致产生不同类型的方法.线搜索方法是在 x k x_k xk点求得下降方向 d k d_k dk,再沿 d k d_k dk确定步长 a k a_k ak;信赖域方法是先限定步长的范围,再同时确定下降方向 d k d_k dk和步长 a k a_k ak

   算法的另一个重要问题是迭代的终止准则,因为局部极小点 x ∗ x^* x是稳定点,我们可用 ∥ ∇ f ( x k ) ∥ ⩽ ε \|\nabla\text{}f\left(x_k\right)\|\leqslant\varepsilon ∥∇f(xk)ε 作为终止准则.这样对于使用者来说,就存在着一个选择 ε \varepsilon ε的问题. ε \varepsilon ε的大小决定所得迭代点 x k x_k xk近似 x ∗ x^* x的精度.上述准则有一定的局限性.例如,对于在极小点邻域内比较陡峭的函数,即使该邻域中的点已相当接近极小点,但其梯度值可能仍然较大,从而使迭代难以停止。

   其他终止准则有 ∥ x k − x k ˉ + 1 ∥ ⩽ ε \|x_k-x_{\bar{k}+1}\|\leqslant\varepsilon xkxkˉ+1ε 或者 f k − f k + 1 ⩽ ε f_k-f_{k+1}\leqslant\varepsilon fkfk+1ε等,这两个准则满足只能说明算法这时所进行的迭代对迭代点或迭代点处目标函数值的改善已经很小,并不能保证 ∥ x k − x ∗ ∥ \|x_k-x^*\| xkx 或者 f k − f ⋆ f_k-f^{\star} fkf一定足够小。


   五、线搜索准则

   在当前迭代点 x k x_k xk ,假定我们已得到下降方向 d k d_k dk ,求步长 a k a_k ak的问题为一维搜索或线搜索问题,它包括两个内容:满足什么样的准则,步长可以接受?有了合适的准则,满足该准则的步长该如何求?

   对如何确定 a k a_k ak的接受准则这个问题,有两个最简单、直观的方法。即精确线搜索和非精确线搜索

   (1)精确线搜索准则

   精确线搜索是优化算法中一种用于确定每一步迭代中最优步长的方法。该方法的目标是在给定的搜索方向上找到能够最小化目标函数的步长,从而快速收敛到最优解。它通常应用于梯度下降法和共轭梯度法等优化算法中。

   精确线搜索即使 f ( x ) f(x) fx沿着 d k d_k dk寻找一个步长 a a a使得函数在该点处取得极小值,如下式所示:

   min ⁡ α f ( x k + α d k ) \min\limits_\alpha f(x_k+\alpha d_k) αminf(xk+αdk)

   设上式的解为 a k a_k ak,则 x k + 1 x_{k+1} xk+1= x k x_{k} xk+ a k a_{k} ak d k d_{k} dk ∇ f ( x k ) T d k = 0 \nabla f\left(x_{k}\right)^\mathrm{T}d_k=0 f(xk)Tdk=0

   这一点对一些无约束最优化方法的有限终止起着关键作用.然而,做精确线搜索需要求几乎精确的步长因子,当n 非常大或 f ( x ) f(x) f(x)非常复杂时,精确线搜索的计算量是相当大的,.实际上,当迭代点离最优解尚远时,是没有必要做高精度线搜索的.另外,对一般问题而言,实现精确线搜索是很困难的。

   (2)非精确线搜索准则

   正是因为精确线搜索存在的这些问题,我们产生了做非精确线搜索的想法.对于步长的选取准则,我们会自然地产生第二个简单的想法,即取 a k a_{k} ak,使其满足如下表达式

   f ( x k + α k d k ) < f ( x k ) f(x_k+\alpha_k d_k)<f(x_k) f(xk+αkdk)<f(xk)

   在下图所示的例子中满足上式表达式的a取值范围为 ( 0 , β 1 )、 (0,β_1)、 0β1)、 ( β 2 , β 3 ) (β_2,β_3) β2β3,因此,仅通过以上表达式的准则来确定a的取值范围,得到的a可能会接近与区间 ( 0 , β 1 ) (0,β_1) 0β1的左端点0或者区间 ( β 2 , β 3 ) (β_2,β_3) β2β3的右端点 β 3 β_3 β3,因此,我们应该增加一些新的准则来使得获取的a不太接近区间 ( 0 , β 1 ) (0,β_1) 0β1的左端点或者区间 ( β 2 , β 3 ) (β_2,β_3) β2β3的右端点。

   常用的准则有 Armijo 准则、Goldstein 准则、Wolfe 准则、强Wolfe 准则等,些常用的准则.这些准则都是建立在 f ( x k + α k d k ) f(x_k+\alpha_k d_k) f(xk+αkdk)在零点处的斜率 ∇ f ( x k ) T d k \nabla f\left(x_{k}\right)^\mathrm{T}d_k f(xk)Tdk为负值的前提上,否则,说明 d k d_k dk不是下降方向,不应被采用


   ① Armijo 准则

   f ( x k + α d k ) ⩽ f ( x k ) + ρ ∇ f ( x k ) T d k α , ρ ∈ ( 0 , 1 ) . f(x_k+\alpha d_k)\leqslant f(x_k)+\rho \nabla f\left(x_{k}\right)^{\mathrm T}d_k\alpha,\quad\rho\in(0,1). f(xk+αdk)f(xk)+ρf(xk)Tdkα,ρ(0,1).

   一般地,可取 ρ \rho ρ 1 0 − 3 10^{-3} 103或更小的值,上式的右边是一个关于a的线性函数,由于 d k d_k dk是下降方向,满足 ∇ f ( x k ) T d k \nabla f\left(x_{k}\right)^\mathrm{T}d_k f(xk)Tdk<0,该函数是关于a的减函数. 只要 a不取得太小,这个不等式可以保证新迭代点 x k + α d k x_k+\alpha d_k xk+αdk的函数值较之点 a k a_k ak的函数值有一定量的下降.满足该条件的点下图所示区间 ( 0 , β 4 ] (0,β_4] 0β4] [ β 5 , β 6 ] [β_5,β_6] [β5β6]中的点。

   Armijo 准则可以避免α取得太大而接近于仅使用 f ( x k + α k d k ) < f ( x k ) f(x_k+\alpha_k d_k)<f(x_k) f(xk+αkdk)<f(xk)准则时图中的右端点的值.

   有几种方法可以避免α取得太小而接近于仅使用 f ( x k + α k d k ) < f ( x k ) f(x_k+\alpha_k d_k)<f(x_k) f(xk+αkdk)<f(xk)准则时图中左端点的值,它们分别与Armijo 准则结合,构成如下准则


   ② Goldstein准则

   f ( x k + α d k ) ⩽ f ( x k ) + ρ ∇ f ( x k ) T d k α , f ( x k + α d k ) ⩾ f ( x k ) + ( 1 − ρ ) ∇ f ( x k ) T d k α , \begin{array}{l}f(x_k+\alpha d_k)\leqslant f(x_k)+\rho \nabla f\left(x_{k}\right)^\mathrm{T}d_k\alpha,\\ f(x_k+\alpha d_k)\geqslant f(x_k)+(1-\rho)\nabla f\left(x_{k}\right)^\mathrm{T}d_k\alpha,\end{array} f(xk+αdk)f(xk)+ρf(xk)Tdkα,f(xk+αdk)f(xk)+(1ρ)f(xk)Tdkα,

   其中ρ ∈(0,1/2),满足Goldstein准则的点是下图所示 ( β 7 , β 4 ] (β_7,β_4] β7β4] [ β 5 , β 6 ] [β_5,β_6] [β5β6]中的点区间中的点。

   Goldstein 准则是 Armijo 准则的改进版,增加了一个上限条件,限制步长不能太小,Goldstein准则可以避免α取得太大而接近于右端点的值,又可避免取得太小而接近于左端点的值。


   ③ Wolfe准则

   f ( x k + α d k ) ⩽ f ( x k ) + ρ ∇ f ( x k ) T d k α , ∇ f ( x k + α d k ) T d k ⩾ σ ∇ f ( x k ) T d k , \begin{array}{l}f(x_k+\alpha d_k)\leqslant f(x_k)+\rho\nabla f\left(x_{k}\right)^\mathrm{T}d_k\alpha,\\ \nabla f(x_k+\alpha d_k)^{\mathrm T}d_k\geqslant\sigma \nabla f\left(x_{k}\right)^\mathrm{T}d_k,\end{array} f(xk+αdk)f(xk)+ρf(xk)Tdkα,f(xk+αdk)Tdkσf(xk)Tdk,

   其中的σ和ρ满足1>σ >ρ>0,满足Wolfe 准则的点为下图所示区间 ( β 7 , β 4 ] (β_7,β_4] β7β4] [ β 8 , β 9 ] [β_8,β_9] [β8β9] [ β 10 , β 6 ] [β_{10},β_6] [β10β6]中的点.

   Wolfe准则中的第二条是要求 f ( x k + α d k ) f(x_k+\alpha d_k) f(xk+αdk)在点a的斜率不能小于 f ( x k + α d k ) f(x_k+\alpha d_k) f(xk+αdk)在零点斜率 ∇ f ( x k ) T d k \nabla f\left(x_{k}\right)^{\mathrm{T}}d_{k} f(xk)Tdk的σ倍。假设在零点的斜率为下图中绿色曲线所示的-p1,则在点a的斜率应该位于下图中灰色扇形所覆盖的区域内。

   我认为可以这样理解这条准则,若在a的斜率不在下图中扇形区域内,可以认为函数值在a处的下降率较大,稍微增大a的值,函数值会有较大的下降,因此,更趋向于取当前位置右侧的值作为a值,因为其位置处函数值更小。

   在Wolfe准则中的第二条中,即使σ取为0,亦无法保证满足准则的点接近精确线搜索的结果。因为,其仅仅限制了负斜率较高的情况,即函数值在a点处快速下降的区域,而没有对正斜率较大的区域进行限制,即,函数值在a处快速上升的区域,

   若采用下面的强 Wolfe 准则, σ取得越小,满足准则的α越接近精确线搜索的结果


   ④ 强Wolfe准则

   f ( x k + α d k ) ⩽ f ( x k ) + ρ ∇ f ( x k ) T d k α , ∣ ∇ f ( x k + α d k ) T d k ∣ ⩽ − σ ∇ f ( x k ) T d k , \begin{array}{l}f(x_k+\alpha d_k)\leqslant f(x_k)+\rho \nabla f\left(x_{k}\right)^\mathrm{T}d_k\alpha,\\[8pt]| \nabla f(x_k+\alpha d_k)^{\mathrm T}d_k|\leqslant-\sigma \nabla f\left(x_{k}\right)^\mathrm{T}d_k,\end{array} f(xk+αdk)f(xk)+ρf(xk)Tdkα,∣∇f(xk+αdk)Tdkσf(xk)Tdk,

   从上图可以看出强 Wolfe 准则对正斜率和负斜率较大的区域都进行了限制,且 σ取得越小,满足强 Wolfe准则的α越接近精确线搜索的结果

   其中的σ和ρ满足1>σ >ρ>0,实际应用中控制α不要太小的准则可以不用,因为在线搜索时,只要给定 α k α_k αk一个下界即可.


在这里插入图片描述

在这里插入图片描述


   参考资料:

   1、机器人中的数值优化

   2、梯度下降

   3、数值最优化方法(高立 编著)


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

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

相关文章

eureka自我保护模式详解(全网最全)

1. 什么叫自我保护模式&#xff1f; 当微服务客户端启动后&#xff0c;会把自身信息注册到Eureka注册中心&#xff0c;以供其他微服务进行调用。一般情况下&#xff0c;当某个服务不可用时&#xff08;一段时间内没有检测到心跳或者连接超时等&#xff09;&#xff0c;那么Eure…

spring3:更简单的读取和存入对象

目录 1.存储 Bean 对象 1.1 前置⼯作&#xff1a;配置扫描路径&#xff08;重要&#xff09; 1.2 添加注解存储 Bean 对象 1.2.1.Controller[控制器] 1.2.2 Service[服务] 1.2.3 repoistory[仓库] 1.2.4 Configuration[配置] 1.2.5 Component[组件] 1.3为什么要这么多类…

Spring 创建和使用

文章目录 什么是 Bean ?1. 创建 Spring 项目1.创建一个 Maven 项目2. 添加 Spring 依赖1.配置 Maven 国内源2.添加 Maven 依赖 3.添加启动项 2.存储Bean对象1.创建 Bean2.注册 Bean3.获取并使用 Bean 对象1. 得到 Spring 对象常见方式有两种: 2. 获取 Bean 对象Bean 的三种获取…

SpringMVC中使用LocalDateTime、LocalDate等参数作为入参数据转换问题

1、接收GET请求方式及POST请求表单方式时间类型传参&#xff0c;需要自定义参数转换器或者使用ControllerAdvice配合initBind&#xff0c;不设置的话表单方式会报以下错误&#xff1a; 这种情况要和时间作为Json字符串时区别对待&#xff0c;因为前端json转后端pojo底层使用的是…

什么是Auto GPT-4? OpenAI 最新语言模型概览

动动发财的小手&#xff0c;点个赞吧&#xff01; 人工智能正在快速发展&#xff0c;近年来最令人兴奋的发展之一是创建可以生成类似人类文本的语言模型。领先的人工智能研究机构 OpenAI 最近发布了其最新的语言模型 Auto GPT-4。 在什么是 Auto GPT-4&#xff1f; OpenAI 最新…

【Java笔试强训 29】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;求正数数…

AtCoder Beginner Contest 300(D-G)

D - AABCC (atcoder.jp) &#xff08;1&#xff09;题目大意 给你个数N&#xff0c;问你不超过N的三个质数abc组成的数有多少个。 &#xff08;2&#xff09;解题思路 考虑到枚举的数不会特别多&#xff0c;因此预处理出1e6的质因子&#xff0c;暴力枚举即可。 &#xff08;3&a…

在体育新闻文本中提取关键词可以使用什么技术

在体育新闻文本中提取关键词可以使用以下技术&#xff1a; 1. 领域词典&#xff1a; 通过构建体育领域的词汇表&#xff0c;将其中的词语作为关键词&#xff0c;可以较好地提取体育新闻中的关键词。 就当下的研究情况&#xff0c;国内外有哪些体育领域的词汇表http://t.csdn…

Reactive Streams介绍与应用分析

目录 一、Reactive Streams基本知识 &#xff08;一&#xff09;基本介绍 &#xff08;二&#xff09;反应式流的特点 基本特性1:事件驱动&变化传递 基本特性2:数据流 基本特性3:声明式 高级特性1:流量控制&#xff08;回压&#xff09; 高级特性2:异步边界 &…

ALBEF:基于动量蒸馏的视觉语言表示学习

Align before Fuse&#xff1a;Vision and Language Representation Learning with Momentum Distillation ALBEF&#xff1a;基于动量蒸馏的视觉语言表示学习 摘要 大规模的视觉和语言表征学习在各种视觉-语言任务上显示出有希望的改进。大多数现有的方法采用了基于Transform…

【平衡二叉搜索树(AVL)-- 旋转】

目录&#xff1a; 前言1、二叉搜索树的插入2、AVL树的旋转&#xff08;1&#xff09;右单旋&#xff08;LL&#xff09;&#xff08;2&#xff09;左单旋&#xff08;RR&#xff09;&#xff08;3&#xff09;右左双旋&#xff08;LR&#xff09;&#xff08;4&#xff09;左右…

第18章 项目风险管理

文章目录 18.1.2 风险的分类 54318.1.3 风险的性质 544项目风险管理6个过程&#xff08;风险管理、识别风险、实施定性风险分析、实施定量风险分析、规划风险应对、控制风险&#xff09;组织和干系人的风险态度影响因素18.3.3 规划风险管理的输出 550风险识别的原则18.4.2 识别…

vim编辑文件

目录 一、vi和vim &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;相同点 &#xff08;3&#xff09;不同点 二、使用vim打开文件 三、使用vim编辑文件 &#xff08;1&#xff09;vim的四个模式 &#xff08;2&#xff09;命令模式下的编辑命令 删除 复制 …

树莓派4:跑通Tensorflow的Sequential模型用于图片分类

重要提示&#xff1a;由于树莓派相对孱弱的性能&#xff0c;直接在其上训练模型可能花&#xff08;lang4&#xff09;费非常长的时间。本文仅作为示例性的可行性参考&#xff0c;请酌情考虑实验平台。 著名的Tensorflow框架也可以运行在树莓派上。理论还没吃透&#xff0c;但使…

【量化交易笔记】5.SMA,EMA 和WMA区别

股票中的SMA&#xff0c;EMA和WMA是常用的技术分析指标。这些指标基于历史股价计算得出&#xff0c;可以帮助投资者了解股票的趋势&#xff0c;为决策提供依据。虽然它们都是平均值算法&#xff0c;但它们之间还是有一些区别的。 SMA 简单移动平均线&#xff08;Simple Moving…

参与辅助服务的用户侧储能优化配置及经济分析(matlab代码)

目录 1 主要内容 目标函数 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现《参与辅助服务的用户侧储能优化配置及经济分析》&#xff0c;首先&#xff0c; 建立了用户侧储能的全生命周期成本和考虑辅助服务的收益模型&#xff1b;其次&#xff0c;在两部…

一文读懂UML用例图

一、概述 用例是描述系统需求的一种手段&#xff0c;即系统应该做什么。用例图由参与者、用例和主题组成。每个用例的主题都代表了一个用例所适用的系统。用户和任何其他可以与主体交互的系统都被表示为行动者。 用例是一种行为规范。用例的实例指的是紧急行为的发生符合相应…

【前端客栈】基于HTML、CSS、JavaScript的羊了个羊静态仿写页面小游戏

&#x1f3dc;哈喽&#xff0c;大家好&#xff0c;我是小浪。前段时间羊了个羊火遍了大江南北&#xff0c;大家是否都通过第二关了呢&#xff1f;哈哈&#xff0c;没关系&#xff0c;既然通不过&#xff0c;那咋们不如自己来做一个这样的羊了个羊的仿写页面&#xff0c;学会了赶…

文本中的关键词提取方法

目录 1. TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;算法&#xff1a; 2. TextRank算法&#xff1a; 3. LDA&#xff08;Latent Dirichlet Allocation&#xff09;算法&#xff1a; 4. RAKE&#xff08;Rapid Automatic Keyword Extraction&…

基于SLM调制器,MIT研发高效率全息显示方案

此前&#xff0c;青亭网曾报道过NVIDIA、三星、剑桥大学等对空间光调制器&#xff08;SLM&#xff09;全息方案的探索。空间光调制器可调节光波的空间分布&#xff0c;在电驱动信号控制下&#xff0c;可改变光在空间中传播的振幅、强度、相位、偏振态等特性&#xff0c;从而形成…