机器人中的数值优化(五)——信赖域方法

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



   七、信赖域方法

   1、信赖域方法简介

   信赖域方法(Trust Region Methods)是一种用于非线性优化的数值优化方法,旨在寻找目标函数的最小值。信赖域算法是一种迭代算法,即从给定的初始解出发,通过逐步迭代,不断改进,直到获得满意的近似最优解为止。其基本思想是把最优化问题转化为一系列简单的局部寻优问题。

   它的核心思想是在当前点的局部模型和真实模型之间建立一个可信区域(Trust Region),并在可信区域内寻找更优的解。

   该方法在解决非线性优化问题时,常使用局部二次模型来近似目标函数,并在每个迭代步骤中解决这个二次模型的最小化问题。信赖域方法是求解非线性最优化问题的有效方法之一,广泛应用于计算机视觉、机器学习、优化控制等领域。


   2、信赖域方法基本思想

   信赖域方法的基本思想是将问题分解为多个步骤。首先,用一个二次模型来近似目标函数,这个模型只在一个局部域内是准确的。其次,在这个局部域内求解二次模型的最小值。最后,使用这个最小值来更新优化变量,然后检查更新后的函数值是否小于当前的函数值。如果是,则扩大局部域的半径,否则缩小局部域的半径,以此控制每个步骤的更新大小。

   那么为什么要构建局部模型,而不使用真实模型呢?

   假设在点 x k x_k xk处,我们欲求下降方向 d x d_x dx,若直接求解极小值问题 m i n f ( x k + d ) min f(x_k+ d) minf(xk+d)去得到 d k d_k dk,那么这个问题与原问题复杂程度相同,而关于方向d的问题应该是相对简单、易求的。所以,解决这个问题简单可行的方法是:利用Taylor展式,在点 x k x_k xk的邻域中,使用 f ( x k + d ) f(x_k+ d) f(xk+d)的一阶近似函数或二阶近似函数作为局部模型代替 f ( x k + d ) f(x_k+ d) f(xk+d)去求 d k d_k dk(常使用二阶近似函数),我们记这个局部模型函数为 q k ( d ) q_k(d) qk(d).求取局部模型 q k ( d ) q_k(d) qk(d)的极小点,并将其作为迭代方向 d k d_k dk ,即求

   min ⁡ d q k ( d ) \operatorname*{min}_{d}q_{k}(d) dminqk(d)


   q k ( d ) q_k(d) qk(d)近似 f ( x k + d ) f(x_k+ d) f(xk+d)的好坏,是受到 x k x_k xk处邻域大小的影响的.合适的邻域和合适的近似函数的选取,可以保证 q k ( d ) q_k(d) qk(d) f ( x k + d ) f(x_k+ d) f(xk+d)的一个好的近似函数,如取

   q k ( d ) = f k + ∇ f k T d + 1 2 d T ∇ 2 f k d q_k(d)=f_k + \nabla f_k^T d + \frac{1}{2} d^T \nabla^2 f_k d qk(d)=fk+fkTd+21dT2fkd

   当||d||较小时, q k ( d ) q_k(d) qk(d)近似 f ( x k + d ) f(x_k+ d) f(xk+d)的误差亦小. 如果 x k x_k xk处的邻域太大,就无法保证 q k ( d ) q_k(d) qk(d) f ( x k + d ) f(x_k+ d) f(xk+d)的好的近似函数,此时可能会出现 q k ( d ) q_k(d) qk(d)的极小点与目标函数 f ( x k + d ) f(x_k+ d) f(xk+d)的极小点相差甚远的情况. 而邻域的大小决定了步长的长短,太短的步长会增加算法的迭代次数,影响算法的收敛速度,所以领域也不能取得过小。

   因此,每步迭代在 x k x_k xk处选择一个合适的邻域,在这个邻域中求解 min ⁡ d q k ( d ) \operatorname*{min}_{d}q_{k}(d) mindqk(d),这就是信赖域方法的思想.这个邻域,我们称之为信赖域,即在此信赖域中,我们相信 q k ( d ) q_k(d) qk(d) f ( x k + d ) f(x_k+ d) f(xk+d)的好的近似函数.

   假定在第k步迭代已得 x k x_k xk以及信赖域的半径 Δ k \Delta_k Δk,则信赖域的子问题即为求解如下表达式,得到 d k d_k dk

   min ⁡ q k ( d ) , s.t. ∥ d ∥ ⩽ Δ k , Δ k > 0 \begin{array}{l}\min q_k(d),\\ \textrm{s.t.}\|d\|\leqslant\Delta_k,\Delta_k>0\end{array} minqk(d),s.t.dΔk,Δk>0

   在得到新的迭代点 x k + 1 = x k + d k x_{k+1}=x_k+d_k xk+1=xk+dk之后,我们可以判断 Δ k \Delta_k Δk是否是下一步迭代的合适的信赖域半径,若不合适,可以修正 Δ k \Delta_k Δk得下一步迭代的 Δ k + 1 \Delta_{k+1} Δk+1,上式中的范数可依方法而定。


   那么如何衡量 Δ k \Delta_k Δk是否是下一步迭代的合适的信赖域半径呢?

   应该根据 x k x_k xk q k ( d ) q_k(d) qk(d)近似 f ( x k + d ) f(x_k+ d) f(xk+d)的好坏来确定,具体来说,可以根据从 x k x_k xk x k + d k x_k+d_k xk+dk f ( x ) f(x) f(x)的实际减少量 Δ f k \Delta f_k Δfk与近似函数 q k ( d ) q_k(d) qk(d)的减少量 Δ q k \Delta q_k Δqk之比 γ k \gamma_k γk来衡量,其中 q k ( 0 ) = f ( x k ) q_k(0)=f(x_k) qk(0)=f(xk)

   Δ f k = f ( x k ) − f ( x k + d k ) Δ q k = q k ( 0 ) − q k ( d k ) γ k = Δ f k Δ q k \begin{array}{l}\Delta f_k=f(x_k)-f(x_k+d_k)\\ \\ \Delta q_k=q_k(0)-q_k(d_k)\\ \\ \gamma_k=\dfrac{\Delta f_k}{\Delta q_k}\end{array} Δfk=f(xk)f(xk+dk)Δqk=qk(0)qk(dk)γk=ΔqkΔfk

   γ k \gamma_k γk接近1时,表明 q k ( d ) q_k(d) qk(d)近似 f ( x k + d ) f(x_k+ d) f(xk+d)的程度好,下一步迭代应增大 Δ k \Delta_k Δk;当 γ k \gamma_k γk为接近于零的正数时,表明 q k ( d ) q_k(d) qk(d)近似 f ( x k + d ) f(x_k+ d) f(xk+d)的程度不好,下一步迭代应减小 Δ k \Delta_k Δk;当 γ k \gamma_k γk为零或负数时,说明 f ( x k + d k ) ≥ f ( x k ) f(x_k+ d_k)≥ f(x_k) f(xk+dk)f(xk) x k + d k x_k+ d_k xk+dk不应被接受为下一步的迭代点,这时只应缩小信赖域的半径 γ k \gamma_k γk:,并重新求解。


   3、信赖域方法的具体步骤

   (1)初始化:选择一个初始点 x 0 x_0 x0,设定信赖域的初始大小 Δ 0 \Delta_0 Δ0,初始化迭代次数k=0。

   (2)开始迭代:判断是否满足终止条件(例如目标函数的值达到了一定的精度),若满足则输出 x k x_k xk,迭代停止

   (3)构建局部模型:在当前点 x k x_k xk处,构建一个局部二次模型,

   q k ( d ) = f k + ∇ f k T d + 1 2 d T ∇ 2 f k d q_k(d)=f_k + \nabla f_k^T d + \frac{1}{2} d^T \nabla^2 f_k d qk(d)=fk+fkTd+21dT2fkd

   其中, f k f_k fk是目标函数在 x k x_k xk处的函数值, ∇ f k \nabla f_k fk是目标函数在 x k x_k xk处的梯度, ∇ 2 f k \nabla^2 f_k 2fk是目标函数在 x k x_k xk处的Hessian矩阵的近似值。

   (4)寻找下降方向:求解 q k ( d ) q_k(d) qk(d)的最小值 d k d_k dk,满足 ∣ d k ∣ ≤ Δ k |d_k| \leq \Delta_k dkΔk,其中 Δ k \Delta_k Δk是当前信赖域的半径。

   (5)计算实际下降量和预测下降量:计算从 x k x_k xk x k + d k x_k+d_k xk+dk f ( x ) f(x) f(x)的实际减少量 Δ f k \Delta f_k Δfk与近似函数 q k ( d ) q_k(d) qk(d)的减少量 Δ q k \Delta q_k Δqk之比 γ k \gamma_k γk

   (6)更新信赖域大小:根据比值 γ k \gamma_k γk的大小更新信赖域大小

   如果 γ k \gamma_k γk一定程度上接近于1(比如说 γ k \gamma_k γk>0.75)说明局部模型对目标函数有较好的拟合效果,可以增加信赖域的大小 Δ k + 1 = min ⁡ ( γ 2 Δ k , Δ max ⁡ ) \Delta_{k+1}=\min(\gamma_2 \Delta_k, \Delta_{\max}) Δk+1=min(γ2Δk,Δmax),其中 γ 2 > 1 \gamma_2>1 γ2>1是一个大于1的常数, Δ max ⁡ \Delta_{\max} Δmax是信赖域大小的上限。

   如果 γ k \gamma_k γk一定程度上接近于0(比如说 γ k \gamma_k γk<0.25)说明局部模型对目标函数的拟合效果较差,应该减少信赖域的大小 Δ k + 1 = γ 1 Δ k \Delta_{k+1}=\gamma_1 \Delta_k Δk+1=γ1Δk,其中 0 < γ 1 < 1 0<\gamma_1<1 0<γ1<1是一个小于1的常数。

   如果 γ k \gamma_k γk位于0~1之间,既不靠近0也不靠近1(比如说0.25< γ k \gamma_k γk<0.75)说明局部模型对目标函数的拟合效果既不好也不坏,可以保持信赖域不变 Δ k + 1 = Δ k \Delta_{k+1}=\Delta_k Δk+1=Δk

   (7)判断是否接受新的点 x k + 1 = x k + d k x_{k+1}=x_k+d_k xk+1=xk+dk

   如果 γ k \gamma_k γk<=0,说明 f ( x k + d k ) ≥ f ( x k ) f(x_k+ d_k)≥ f(x_k) f(xk+dk)f(xk) x k + d k x_k+ d_k xk+dk不应被接受为下一步的迭代点,取 x k + 1 = x k x_{k+1}=x_k xk+1=xk,转到第(2)步继续迭代,重新求取第k次迭代的解。

   如果 γ k \gamma_k γk>0,说明 f ( x k + d k ) < f ( x k ) f(x_k+ d_k)< f(x_k) f(xk+dk)<f(xk) x k + d k x_k+ d_k xk+dk可以被接受为下一步的迭代点,取 x k + 1 = x k + d k x_{k+1}=x_k+d_k xk+1=xk+dk,并将迭代数加1,即k=k+1,转到第(2)步继续迭代。


   4、总结

   与线搜索方法先在 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

   信赖域方法相对于其他优化算法的优点在于它可以保证每次迭代都可以得到一个可行解,并且可以保证在可信区域内寻找更优的解,从而增加算法的稳定性和可靠性。此外,信赖域方法也可以灵活地处理约束条件和不等式约束问题。

   然而,信赖域方法也存在一些缺点。例如,它可能会陷入局部最优解,并且每次迭代需要计算Hessian矩阵或其近似,计算成本较高。同时,信赖域大小的选取也需要一定的经验和调试。

   总的来说,信赖域方法是一种有效的非线性优化算法,可以用于解决一类较为复杂的优化问题。



   参考资料:

   1、机器人中的数值优化

   2、信赖域算法

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

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

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

相关文章

写的一款简易的热点词汇记录工具

项目需要对用户提交的附件、文章、搜索框内容等做热词分析。如下图&#xff1a; 公司有大数据团队。本着不麻烦别人就不麻烦别人的原则&#xff0c;写了一款简易的记录工具&#xff0c;原理也简单&#xff0c;手工在业务插入锚点&#xff0c;用分词器分好词&#xff0c;排掉字…

Ansible-playbook循环学习

循环语句简介 我们在编写playbook的时候&#xff0c;不可避免的要执行一些重复性操作&#xff0c;比如指安装软件包&#xff0c;批量创建用户&#xff0c;操作某个目录下的所有文件等。正如我们所说&#xff0c;ansible一门简单的自动化语言&#xff0c;所以流程控制、循环语句…

Ceph入门到精通-LVS基础知识

LB集群: &#xff08;Load Balancing&#xff09;即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能&#xff0c;其 实现方式分为硬件方式和软件方式。 硬件实现方式&#xff1a; 常用的有 F5公司的BIG-IP系列、A10公司的AX系列、Citrix公司的 NetScaler系列…

VisualStudio配置pybind11-Python调用C++方法

个人测试下来Debug生成的dll改pyd&#xff0c;py中import会报错gilstate->autoInterpreterState 如果遇到同样问题使用Release吧 目录 1.安装pybind11 1.pip&#xff1a; 2.github&#xff1a; 2.配置VS工程 2.在VC目录中的包含目录添加&#xff1a; 3.在VC目录中的库目录…

【Web系列二十四】使用JPA简化持久层接口开发

目录 环境配置 1、引入依赖 配置文件 代码编写 实体类创建 JPA常用注解 Service与ServiceImpl Service ServiceImpl Controller Dao 三种实现Dao功能方式 1.继承接口&#xff0c;使用默认接口实现 2.根据接口命名规则默认生成实现 3.自定义接口实现(类似MyBatis…

汽车类 ±0.25°C SPI 温度传感器,TMP126EDBVRQ1、TMP126EDCKRQ1、TMP127EDBVRQ1引脚配置图

一、概述 TMP126-Q1 是一款精度为 0.25C 的数字温度传感器 &#xff0c; 支持的环境温度范围为 -55C 至 175C 。TMP126-Q1 具 有 14 位 &#xff08; 有符号 &#xff09; 温度分辨率(0.03125C/LSB)&#xff0c;并且可在 1.62V 至 5.5V 的电源电压范围内工作。TMP126-Q1 具有转…

同创永益入选首批“金融数字韧性与混沌工程实践试点机构”

8月16日下午&#xff0c;由北京国家金融科技认证中心、北京国家金融标准化研究院联合主办的“传递信任 服务发展”金融科技标准认证生态大会在太原成功举办。中国金融电子化集团有限公司党委书记、董事长周逢民&#xff0c;中国科学院院士冯登国&#xff0c;中国工商银行首席技…

Unity 粒子特效遮罩(ParticleMask)

1.需求&#xff1a; 游戏中粒子特效能实现非常好的效果&#xff0c;但是由于粒子特效是独立的系统&#xff0c;Unity自带的Mask普通的遮罩&#xff0c;遮不住粒子特效。 2.实现原理&#xff1a; 通过shader把超出范围的粒子纹理(Texture)&#xff0c;改成透明颜色&#xff0…

Python安装指南(Windows版)

安装python环境 官网下载地址&#xff1a; Download Python | Python.org 我选择3.10.4版本&#xff0c;当然你也可以选择其他版本 安装 安装完成&#xff0c;需要验证是否安装成功。 打开CMD窗口&#xff0c;输入python命令&#xff0c;如果进入如下python窗口则安装成功&…

docker打包vue vite前端项目

打包vue vite 前端项目 1.打包时将测试删除 2.修改配置 3.打包项目 npm run build 显示成功&#xff08;黄的也不知道是啥&#xff09; 打包好的前端文件放入 4.配置 default.conf upstream wms-app {server 你自己的ip加端口 ;server 192.168.xx.xx:8080 ; } server { …

怎样将几个pdf合并?

在日常工作中&#xff0c;我们经常需要处理大量的PDF文件。有时候&#xff0c;我们需要将多个PDF文件合并成一个文件&#xff0c;以便于快速传输或方便查阅。虽然PDF文件本身不能进行编辑&#xff0c;但是借助专业的PDF编辑软件&#xff0c;我们可以轻松地实现将多个PDF文件合并…

推荐两款开源的绘制流程图软件

一句话导读 目前流程图绘制软件非常多&#xff0c;包括本机安装的、web端的都有&#xff0c;如Visio、Graphviz、processOn等等。但是几乎都是收费的。本文给大家介绍两款优秀的开源免费的流程图绘制软件。 目录 一句话导读 一、draw.io 二、Meta2d.js ​1.为什么使用 2.…

4、DVWA——文件包含

文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时&#xff0c;就可以通过php的某些特性函数&#xff08;i…

Java“牵手”京东商品详情数据,京东API接口申请指南

京东平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

JVM调优指令参数

常用命令查找文档站点&#xff1a;https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html -XX:PrintFlagsInitial 输出所有参数的名称和默认值&#xff0c;默认不包括Diagnostic和Experimental的参数。可以配合 -XX:UnlockDiagnosticVMOptions和-XX:UnlockEx…

【Locomotor运动模块】抓取:按朝向抓取(Orientation Handler)案例

文章目录 案例原理 案例 左右手柄抓宝剑时&#xff0c;宝剑的朝向不同 L35 一个手柄对应一个抓取点 原理 1、左右手柄分别抓取的是宝剑上的不同抓取点——GenericOrientation Handle通用朝向把手 它是我们设置“按朝向抓取”&#xff08;Orientation Handler&#xff09;时&…

项目一:基于YOLOv7的输电线路销钉缺失检测项目

1. YOLOv7模型介绍 YOLOv7是目标检测算法YOLO&#xff08;You Only Look Once&#xff09;的第七个版本&#xff0c;也是目前较流行的YOLO算法版本之一。 YOLOv8主要结构&#xff1a; 1. Backbone网络&#xff1a;采用CSPDarknet53作为主干网络&#xff0c;在不增加参数数量…

【牛客网题目】合并两个排序的链表

目录 描述 题目分析 描述 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围&#xff1a;0≤n≤1000&#xff0c;1000≤节点值≤1000 要求&#xff1a;空间复杂度 O(1)&#xff0c;时间复杂…

自然语言处理的多行业应用

在我们小时候&#xff0c;甚至是我们会走路或说话之前&#xff0c;就已经在察觉周围发出的声音了。我们倾听其他人发出的声响和声音。我们将声音组合成有意义的词语&#xff0c;例如“母亲”和“门”&#xff0c;并学习解读周围人的面部表情&#xff0c;以加深我们对词组的理解…

现浇钢筋混泥土楼板施工岗前安全VR实训更安全高效

建筑行业天天与钢筋混凝土砼在&#xff0c;安全施工便成了企业发展的头等大事。 当今社会&#xff0c;人人都奉行生命无价&#xff0c;安全至上。可工地安全事故频繁发生&#xff0c;吞噬掉多少宝贵生命。破坏了多小个家庭?痛定死痛&#xff0c;为了提高施工人员的安全意识。 …