机器人中的数值优化(八)——拟牛顿方法(上)

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



   十、拟牛顿方法

   1、拟牛顿方法介绍

   Newton方法的缺点是在每步迭代时需计算Hesse矩阵 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk),为此要计算n(n + 1)/2个二阶偏导数;若该方法产生的迭代点不能充分接近极小点, ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)的正定性不能保证。Newton方法的优点在于它具有二阶收敛的速度.这促使我们去考虑是否可以构造一种方法,它既不需要计算二阶偏导数,又具有较快的收敛速度。

在这里插入图片描述
   假设我们要构造一个矩阵M去近似Hessian矩阵,那么M应该满足什么条件?

   ①:它应该不需要计算所有元素的二阶导

   ②:可以不用显式的求解线性方程组,方程组应该有闭式解,以便很快的解出

   ③:它应该不需要是满秩的,所以它的存储应该是紧凑的

   ④:它必须保持下降方向,即它必须是正定的

   ⑤:它应该包含曲率信息(局部二次近似),即应该逼近Hessian矩阵

在这里插入图片描述


   从下图的推导可以看出,当近似矩阵M是正定的矩阵时,可以保证搜索方向与负梯度方向成锐角,即可保证搜索方向为下降方向。

在这里插入图片描述


   ☆☆☆注:在深蓝学院课程机器人中的数值优化中,用H表示Hessian矩阵,用M表示Hessian矩阵的近似,用B表示M的逆矩阵,而在数值最优化方法(高立 编著)这本书中,用B表示Hessian矩阵的近似,而用H表示B的逆矩阵,在下文的文字描述中采用数值最优化方法(高立 编著)这本书中的表示方法,下文中的图片大部分是基于深蓝学院课程机器人中的数值优化课程中的PPT进行修改补充后而形成的,采用该课程的表示方法


   假定当前迭代点为 x k + 1 x_{k+1} xk+1,若我们用已得到的 x k x_{k} xk x k + 1 x_{k+1} xk+1及其一阶导数信息 ∇ f ( x k ) \nabla f\left(x_{k}\right) f(xk) ∇ f ( x k + 1 ) \nabla f\left(x_{k+1}\right) f(xk+1),构造一个正定矩阵 B k + 1 B_{k+1} Bk+1作为 ∇ f 2 ( x k + 1 ) \nabla f^2\left(x_{k+1}\right) f2(xk+1)的近似,这样下降方向 d k + 1 d_{k+1} dk+1 由以下方程组给出

   B k + 1 d = − ∇ f ( x k + 1 ) {B}_{k+1}d=-\nabla f\left(x_{k+1}\right) Bk+1d=f(xk+1)

   然而这样做仍需求解一个线性方程组.进一步的改进为用相同的信息构造一个矩阵 H k + 1 H_{k+1} Hk+1作为 ∇ f 2 ( x k + 1 ) − 1 \nabla f^2\left(x_{k+1}\right)^{-1} f2(xk+1)1的近似,这样下降方向 d k + 1 d_{k+1} dk+1就可以由下式给出

   d = − H k + 1 ∇ f ( x k + 1 ) d=-H_{k+1}\nabla f\left(x_{k+1}\right) d=Hk+1f(xk+1)

   近似矩阵的构造应该是简单有效的,它应具有如下的条件:

   ①:只需 f ( x ) f(x) f(x)的一阶导数信息;

   ②: B k + 1 {B}_{k+1} Bk+1 ( H k + 1 ) (H_{k+1}) (Hk+1)正定,以保证方向的下降性;

   ③:方法具有较快的收敛速度。


   对梯度进行泰勒展开,去掉高阶小量,可得下式

   ∇ f ( x k + 1 ) − ∇ f ( x k ) ≈ ∇ 2 f ( x ) ∗ ( x k + 1 − x k ) \nabla f\left(x_{k+1}\right)-\nabla f\left(x_{k}\right) ≈ \nabla^2 f(x)*(x_{k+1}-x_k) f(xk+1)f(xk)2f(x)xk+1xk

   若进行以下定义:

   s k = x k + 1 − x k , y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) , \begin{array}{c}s_k=x_{k+1}-x_k,\\ \\ y_k=\nabla f\left(x_{k+1}\right)-\nabla f\left(x_{k}\right),\end{array} sk=xk+1xk,yk=f(xk+1)f(xk),

   B k + 1 {B}_{k+1} Bk+1作为 ∇ f 2 ( x k + 1 ) \nabla f^2\left(x_{k+1}\right) f2(xk+1)的近似,应该满足以下方程:

   B k + 1 s k = y k B_{k+1}s_k=y_k Bk+1sk=yk

   该方程称为拟Newton方程或拟Newton条件。若记 H k + 1 = B k + 1 − 1 , H_{k+1}=B_{k+1}^{-1}, Hk+1=Bk+11, H k + 1 H_{k+1} Hk+1应该满足下式

   H k + 1 y k = s k . H_{k+1}y_k=s_k. Hk+1yk=sk.

   拟Newton方法是指由 B k + 1 d = − ∇ f ( x k + 1 ) {B}_{k+1}d=-\nabla f\left(x_{k+1}\right) Bk+1d=f(xk+1)式或者 d = − H k + 1 ∇ f ( x k + 1 ) d=-H_{k+1}\nabla f\left(x_{k+1}\right) d=Hk+1f(xk+1)式确定迭代方向d的最优化方法,其中的 B k + 1 {B}_{k+1} Bk+1需满足拟 Newton条件 B k + 1 s k = y k B_{k+1}s_k=y_k Bk+1sk=yk H k + 1 {H}_{k+1} Hk+1需满足拟Newton条件 H k + 1 y k = s k H_{k+1}y_k=s_k Hk+1yk=sk

   下面我们给出一般拟Newton方法的结构,其算法以矩阵 H k + 1 H_{k+1} Hk+1的迭代为例.


   在上述算法中,初始矩阵H通常取为单位矩阵,这样算法的第一步迭代的迭代方向取为负梯度方向.

   那么如何修正 H k {H}_{k} Hk H k + 1 {H}_{k+1} Hk+1呢?,即如何确定在下式中的 Δ H k \Delta H_k ΔHk呢?

   H k + 1 = H k + Δ H k H_{k+1}=H_k+\Delta H_k Hk+1=Hk+ΔHk

   Δ H k \Delta H_k ΔHk的取法是多种多样的,但它应具有简单、计算量小、有效的特点.下面介绍几种重要的修正 H k H_k Hk B k B_k Bk的公式.


   1、拟牛顿方法修正公式

   (1)对称秩1公式(SR1)

   对称秩1(Symmetric Rank 1,SR1)公式是由Broyden、Davidon等人独立提出的。

   H k + 1 S R 1 = H k + ( s k − H k y k ) ( s k − H k y k ) T ( s k − H k y k ) T y k , H_{k+1}^{\mathrm{SR1}}=H_k+\dfrac{(s_k-H_ky_k)(s_k-H_ky_k)^{\mathrm{T}}}{(s_k-H_ky_k)^{\mathrm{T}}y_k}, Hk+1SR1=Hk+(skHkyk)Tyk(skHkyk)(skHkyk)T,

   B k + 1 S R 1 = B k + ( y k − B k s k ) ( y k − B k s k ) T ( y k − B k s k ) T s k . B_{k+1}^{\mathrm{SR1}}=B_k+\dfrac{(y_k-B_k s_k)(y_k-B_k s_k)^{\mathrm{T}}}{(y_k-B_k s_k)^{\mathrm{T}}s_k}. Bk+1SR1=Bk+(ykBksk)Tsk(ykBksk)(ykBksk)T.


   (2)DFP公式

   DFP公式,或者说DFP方法,首先是由Davidon于1959年提出,后经Fletcher 和 Powell发展得到的。该方法是第一个被提出的拟 Newton方法,它为拟 Newton方法的建立与发展奠定了基础.

   H k + 1 D F P = H k + s k s k T s k T y k − H k y k y k T H k y k T H k y k . H_{k+1}^{\mathrm{DFP}}=H_k+\frac{s_k s_k^{\mathrm{T}}}{s_k^{\mathrm{T}}y_k}-\frac{H_ky_ky_k^{\mathrm{T}}H_k}{y_k^{\mathrm{T}}H_ky_k}. Hk+1DFP=Hk+skTykskskTykTHkykHkykykTHk.

   我们称采用DFP公式来修正矩阵的拟Newton方法为DFP方法。假定 H k H_k Hk H k + 1 H_{k+1} Hk+1都可逆,根据Shermann-Morrison-Woodbury 公式,由上式可以导出 B k + 1 B_{k+1} Bk+1的修正公式

   B k + 1 D F P = B k + ( 1 + s k T B k s k s k T y k ) y k y k T s k T y k − ( y k s k T B k + B k s k y k T s k T y k ) . B_{k+1}^{\mathrm{DFP}}=B_{k}+\left(1+\frac{s_{k}^{\mathrm{T}}B_{k}s_{k}}{s_{k}^{\mathrm{T}}y_{k}}\right)\frac{y_{k}y_{k}^{\mathrm{T}}}{s_{k}^{\mathrm{T}}y_{k}}-\left(\frac{y_{k}s_{k}^{\mathrm{T}}B_{k}+B_{k}s_{k}y_{k}^{\mathrm{T}}}{s_{k}^{\mathrm{T}}y_{k}}\right). Bk+1DFP=Bk+(1+skTykskTBksk)skTykykykT(skTykykskTBk+BkskykT).

   上式其实也是下面问题的解:

   min ⁡ ∥ W − T ( B − B k ) W − 1 ∥ F , s.t. B = B T , B s k = y k , \begin{array}{l}\min\|W^{-\mathrm T}(B-B_k)W^{-1}\|_{\mathrm F},\\ \text{s.t.}\quad B=B^{\mathrm T},B s_k=y_k,\end{array} minWT(BBk)W1F,s.t.B=BT,Bsk=yk,

   其中 W ∈ R n × n W ∈R^{n×n} WRn×n非奇异。 W T W = B W^TW=B WTW=B满足拟Newton条件 B s k = y k Bs_k=y_k Bsk=yk、这个问题的目的是在所有对称、满足拟Newton条件的矩阵中,寻找在加权F范数意义下与 B k B_k Bk的差最小的矩阵.如果在这个问题中改变目标函数的矩阵范数,就得到其他的拟Newton修正公式



   参考资料:

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

   2、机器人中的数值优化


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

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

相关文章

vue项目配置MongoDB的增删改查操作

在Vue中配置MongoDB的增删改查操作,需要先安装mongoose模块来连接MongoDB数据库。 1. 在Vue项目的根目录中,使用命令行安装mongoose模块: npm install mongoose --save 2. 找到启动node的app.js文件(我这里是在server文件中&…

processflow流程图多人协作预热

前言 在线上办公如火如荼的今天,多人协作功能是每个应用绕不开的门槛。processflow在线流程图(前身基于drawio二次开发)沉寂两年之久,经过长时间设计开发,调整,最终完成了多人协作的核心模块设计。废话不多…

肖sir__设计测试用例方法之场景法04_(黑盒测试)

设计测试用例方法之场景法 1、场景法主要是针对测试场景类型的,顾也称场景流程分析法。 2、流程分析是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支能走到。 举例说明&…

网易低代码引擎Tango正式开源

一、Tango简介 Tango 是一个用于快速构建低代码平台的低代码设计器框架,借助 Tango 只需要数行代码就可以完成一个基本的低代码平台前端系统的搭建。Tango 低代码设计器直接读取前端项目的源代码,并以源代码为中心,执行和渲染前端视图,并为用户提供低代码可视化搭建能力,…

uniapp从零到一的学习商城实战

涵盖的功能: 安装开发工具HBuilder:HBuilderX-高效极客技巧 创建项目步骤: 1.右键-项目: 2.选择vue2和默认模板: 3.完整的项目目录: 微信开发者工具调试: 1.安装微信开发者工具 2.打开…

GeoServe Web 管理界面 实现远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

Android Studio新版本New UI及相关设置丨遥遥领先版

1、前言 俗话说工欲善其事必先利其器嘛,工具用不好怎么行呢,借着Android Studio的更新,介绍一下新版本中的更新内容,以及日常开发中那些好用的设置。 2、关于新版本 2.1、最新正式版本 Android Studio Giraffe | 2022.3.1 Pat…

elementui el-table在有summary-method时,table数据行将合计行遮挡住了

前端使用框架:elementUI 使用组件:el-table 在表格内添加合计了合计行,根据业务多次调用数据渲染画面后,偶然导致画面变成如下图所示,table的数据行将合计行遮挡住了,且这个现象有时候好用,有…

Android图形-架构1

目录 引言 Android图形的关键组件: Android图形的pipeline数据流 BufferQueue是啥? 引言 Android提供用于2D和3D图形渲染的API,可与制造商的驱动程序实现代码交互,下面梳理一下Android图形的运作原理。 应用开发者通过三种方…

C++多态案例2----制作饮品

#include<iostream> using namespace std;//制作饮品的大致流程都为&#xff1a; //煮水-----冲泡-----倒入杯中----加入辅料//本案例利用多态技术&#xff0c;提供抽象类制作饮品基类&#xff0c;提供子类制作茶叶和咖啡class AbstractDrinking {public://煮水//冲水//倒…

视频监控/视频汇聚/视频云存储EasyCVR平台HLS流集成在小程序无法播放问题排查

安防视频/视频云存储/视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求&#xff0c;让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上&#xff0c;视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频…

字节前端实习的两道算法题,看看强度如何

最长严格递增子序列 题目描述 给你一个整数数组nums&#xff0c;找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7…

文件系统与inode编号

文件描述符fd 0&1&2 Linux 进程默认情况会有3个缺省打开的文件描述符&#xff0c;分别是标准输入0&#xff0c; 标准输出1&#xff0c; 标准错误2. 0,1,2对应的物理设备一般是&#xff1a;键盘&#xff0c;显示器&#xff0c;显示器 所以输入输出还可以采用如下方式 …

AVR128单片机 自动售水机

一、系统方案 1、设计使用两个按键分别为S1和S2及一个发光二极管LED。S1为出水控制按键&#xff0c;当S1按下&#xff0c;表示售水机持续出水&#xff0c;继电器&#xff08;库元件relay&#xff09;接通&#xff0c;指示灯LED亮。S2为停水控制键&#xff0c;当S2按下&#xff…

OSCS 安全周报第 58 期:VMware Aria Operations SSH 身份验证绕过漏洞 (CVE-2023-34039)

​ 本周安全态势综述 OSCS 社区共收录安全漏洞 3 个&#xff0c;公开漏洞值得关注的是 VMware Aria Operations SSH 身份验证绕过漏洞( CVE-2023-34039 )、Apache Airflow Spark Provider 反序列化漏洞( CVE-2023-40195 )。 针对 NPM 仓库&#xff0c;共监测到 324 个不同版本…

volatile 关键字 与 CPU cache line 的效率问题

分析&回答 Cache Line可以简单的理解为CPU Cache中的最小缓存单位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假设我们有一个512字节的一级缓存&#xff0c;那么按照64B的缓存单位大小来算&#xff0c;这个一级缓存所能存放的缓存个数就是512/64 8个。具体参见下…

【跟小嘉学 Rust 编程】二十三、Cargo 使用指南

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…

百度低质量站点怎么办?解决百度低质量站点的方法和工具

百度低质量站点怎么恢复&#xff1f;这是许多网站主和运营人员在SEO优化过程中经常面临的一个问题。百度作为中国最大的搜索引擎&#xff0c;对于网站收录和排名具有至关重要的影响。然而&#xff0c;由于各种原因&#xff0c;有些网站可能面临被百度降权或收录减少的情况。那么…

Medium: Where to Define Qualified users in A/B testing?

1. Common AB Testing Setup Issue (Framework) 局限性: unqualified users will also be considered and mess up experimentation results.

SeaTunnel扩展Transform插件,自定义转换插件

代码结构 在seatunnel-transforms-v2中新建数据包名&#xff0c;新建XXXTransform&#xff0c;XXXTransformConfig&#xff0c;XXXTransformFactory三个类 自定义转换插件功能说明 这是个适配KafkaSource的转换插件&#xff0c;接收到的原文格式为&#xff1a; {"path&…