牛顿法和拟牛顿法介绍

news2025/6/8 21:46:50

最优化笔记,主要参考资料为《最优化:建模、算法与理论》


文章目录

  • 一、经典牛顿法
    • (1) 迭代格式
    • (2)收敛性
  • 二、拟牛顿法
    • (1) 割线方程
    • (2) BFGS公式
    • (3) BFGS全局收敛性
  • 参考资料


梯度法仅仅依赖函数值和梯度的信息(即一阶信息),如果函数 f ( x ) f(x) f(x)充分光滑,则可以利用二阶导数信息构造下降方向 d k d^k dk.牛顿类算法就是利用二阶导数信息来构造迭代格式的算法.由于利用的信息变多,牛顿法的实际表现可以远好于梯度法,但是它对函数 f ( x ) f(x) f(x) 的要求也相应变高.

一、经典牛顿法

(1) 迭代格式

对于可微二次函数 f ( x ) f(x) f(x),考虑目标函数 f f f 在点 x k x_k xk二阶泰勒展开
f ( x k + d k ) = f ( x k ) + ∇ f ( x k ) T d k + 1 2 ( d k ) T ∇ 2 f ( x k ) d k + o ( ∥ d k ∥ 2 ) . f\left(x^k+d^k\right)=f\left(x^k\right)+\nabla f\left(x^k\right)^{\mathrm{T}}d^k+\frac12\left(d^k\right)^{\mathrm{T}}\nabla^2f\left(x^k\right)d^k+o\left(\left\|d^k\right\|^2\right). f(xk+dk)=f(xk)+f(xk)Tdk+21(dk)T2f(xk)dk+o( dk 2).
忽略高阶项 o ( ∥ d k ∥ 2 ) o\left(\|d^k\|^2\right) o(dk2),并将等式右边视作 d k d^k dk 的函数并极小化(关于 d k d^k dk的二次函数),求导得

∇ 2 f ( x k ) d k = − ∇ f ( x k ) . ( 1 ) \nabla^2f\left(x^k\right)d^k=-\nabla f\left(x^k\right). \quad (1) 2f(xk)dk=f(xk).(1)

方程(1)被称为牛顿方程 d k d^k dk 被称为牛顿方向。若 ∇ 2 f ( x k ) \nabla^2f\left(x^k\right) 2f(xk) 非奇异,可构造迭代格式
x k + 1 = x k − α k ∇ 2 f ( x k ) − 1 ∇ f ( x k ) . ( 2 ) x^{k+1}=x^k-\alpha_k\nabla^2f\left(x^k\right)^{-1}\nabla f\left(x^k\right). \quad (2) xk+1=xkαk2f(xk)1f(xk).(2)
当步长 α k = 1 \alpha_k=1 αk=1时迭代格式(2)被称为经典牛顿法

(2)收敛性

截屏2024-01-04 14.02.58

经典牛顿法是收敛速度很快的算法,但它的收敛是有条件的:

  1. 初始点 x 0 必须距离问题的解充分近,即牛顿法只有局部收敛性,当 x 0 x_0 x0 距问题的解较远时,牛顿算法在多数情况下会失效;
  2. 第二,海瑟矩阵 ∇ 2 f ( x ) \nabla^2f(x) 2f(x)需要为正定矩阵.

下面给出经典牛顿法收敛性的证明.

从牛顿法的定义(1)和最优值点 x ∗ x^* x 的性质 ∇ f ( x ∗ ) = 0 \nabla f\left(x^*\right)=0 f(x)=0 可得
x k + 1 − x ∗ = x k − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) − x ∗ = ∇ 2 f ( x k ) − 1 [ ∇ 2 f ( x k ) ( x k − x ∗ ) − ( ∇ f ( x k ) − ∇ f ( x ∗ ) ) ] . \begin{aligned} x^{k+1}-x^* & =x^k-\nabla^2 f\left(x^k\right)^{-1} \nabla f\left(x^k\right)-x^* \\ & =\nabla^2 f\left(x^k\right)^{-1}\left[\nabla^2 f\left(x^k\right)\left(x^k-x^*\right)-\left(\nabla f\left(x^k\right)-\nabla f\left(x^*\right)\right)\right] . \end{aligned} xk+1x=xk2f(xk)1f(xk)x=2f(xk)1[2f(xk)(xkx)(f(xk)f(x))].

我们把后面一项凑出二阶导的格式,由常见的积分技巧可得
∇ f ( x k ) − ∇ f ( x ∗ ) = ∫ 0 1 ∇ 2 f ( x k + t ( x ∗ − x k ) ) ( x k − x ∗ ) d t , \nabla f\left(x^k\right)-\nabla f\left(x^*\right)=\int_0^1 \nabla^2 f\left(x^k+t\left(x^*-x^k\right)\right)\left(x^k-x^*\right) \mathrm{d} t, f(xk)f(x)=012f(xk+t(xxk))(xkx)dt,

因此我们有估计
∥ ∇ 2 f ( x k ) ( x k − x ∗ ) − ( ∇ f ( x k ) − ∇ f ( x ∗ ) ) ∥ = ∥ ∫ 0 1 [ ∇ 2 f ( x k + t ( x ∗ − x k ) ) − ∇ 2 f ( x k ) ] ( x k − x ∗ ) d t ∥ ⩽ ∫ 0 1 ∥ ∇ 2 f ( x k + t ( x ∗ − x k ) ) − ∇ 2 f ( x k ) ∥ ∥ x k − x ∗ ∥ d t ⩽ ∥ x k − x ∗ ∥ 2 ∫ 0 1 L t   d t = L 2 ∥ x k − x ∗ ∥ 2 , \begin{aligned} & \left\|\nabla^2 f\left(x^k\right)\left(x^k-x^*\right)-\left(\nabla f\left(x^k\right)-\nabla f\left(x^*\right)\right)\right\| \\ = & \left\|\int_0^1\left[\nabla^2 f\left(x^k+t\left(x^*-x^k\right)\right)-\nabla^2 f\left(x^k\right)\right]\left(x^k-x^*\right) \mathrm{d} t\right\| \\ \leqslant & \int_0^1\left\|\nabla^2 f\left(x^k+t\left(x^*-x^k\right)\right)-\nabla^2 f\left(x^k\right)\right\|\left\|x^k-x^*\right\| \mathrm{d} t \\ \leqslant & \left\|x^k-x^*\right\|^2 \int_0^1 L t \mathrm{~d} t \\ = & \frac{L}{2}\left\|x^k-x^*\right\|^2, \end{aligned} == 2f(xk)(xkx)(f(xk)f(x)) 01[2f(xk+t(xxk))2f(xk)](xkx)dt 01 2f(xk+t(xxk))2f(xk) xkx dt xkx 201Lt dt2L xkx 2,

其中第二个不等式是由于海瑟矩阵的局部利普希茨连续性. 又因为 ∇ 2 f ( x ∗ ) \nabla^2 f\left(x^*\right) 2f(x)是非奇异的且 f f f 二阶连续可微, 因此存在 r r r, 使得对任意满足 ∥ x − x ∗ ∥ ⩽ r \left\|x-x^*\right\| \leqslant r xxr,有$|\nabla2f(x){-1}|\leqslant 2|\nabla2f(x*)^{-1}| $,结合上式,可得:
∥ x k + 1 − x ∗ ∥ ⩽ ∥ ∇ 2 f ( x k ) − 1 ∥ ∥ ∇ 2 f ( x k ) ( x k − x ∗ ) − ( ∇ f ( x k ) − ∇ f ( x ∗ ) ) ∥ ⩽ L ∥ ∇ 2 f ( x ∗ ) − 1 ∥ ∥ x k − x ∗ ∥ 2 . \begin{aligned} &\left\|x^{k+1}-x^*\right\| \\ & \leqslant\left\|\nabla^2 f\left(x^k\right)^{-1}\right\|\left\|\nabla^2 f\left(x^k\right)\left(x^k-x^*\right)-\left(\nabla f\left(x^k\right)-\nabla f\left(x^*\right)\right)\right\| \\ & \leqslant L\left\|\nabla^2 f\left(x^*\right)^{-1}\right\|\left\|x^k-x^*\right\|^2 . \end{aligned} xk+1x 2f(xk)1 2f(xk)(xkx)(f(xk)f(x)) L 2f(x)1 xkx 2.

即:
∥ x k + 1 − x ∗ ∥ ∥ x k − x ∗ ∥ 2 ⩽ L ∥ ∇ 2 f ( x ∗ ) − 1 ∥ \frac{\left\|x^{k+1}-x^*\right\|}{\left\|x^k-x^*\right\|^2 } \leqslant L\left\|\nabla^2 f\left(x^*\right)^{-1}\right\| xkx2 xk+1x L 2f(x)1
因此, 当初始点 x 0 x^0 x0 满足
∥ x 0 − x ∗ ∥ ⩽ min ⁡ { δ , r , 1 2 L ∥ ∇ 2 f ( x ∗ ) − 1 ∥ } =  def  δ ^ \left\|x^0-x^*\right\| \leqslant \min \left\{\delta, r, \frac{1}{2 L\left\|\nabla^2 f\left(x^*\right)^{-1}\right\|}\right\} \stackrel{\text { def }}{=} \hat{\delta} x0x min δ,r,2L 2f(x)1 1 = def δ^

时, 可保证迭代点列一直处于邻域 N δ ^ ( x ∗ ) N_{\hat{\delta}}\left(x^*\right) Nδ^(x) 中, 因此 { x k } Q \left\{x^k\right\} \mathrm{Q} {xk}Q-二次收敛 x ∗ x^* x.

二、拟牛顿法

牛顿法在理论上和实践中均取得很好的效果.然而对于大规模问题,函数的海瑟矩阵计算代价特别大或者难以得到,即便得到海瑟矩阵我们还需要求解一个大规模线性方程组.那么能否使用海瑟矩阵或其逆矩阵的近似来进行牛顿迭代呢?拟牛顿法便是这样的算法,它能够在每一步以较小的计算代价生成近似矩阵,并且使用近似矩阵代替海瑟矩阵而产生的迭代序列仍具有超线性收敛的性质

拟牛顿方法不计算海瑟矩阵 ∇ 2 f ( x ) \nabla^2f(x) 2f(x) , 而是构造其近似矩阵 B k B^k Bk 或其逆的近似矩阵 H k H^k Hk. 我们希望 B k B^k Bk H k H^k Hk 仍然保留海瑟矩阵的部分性质,例如使得 d k d^k dk 仍然为下降方向.

(1) 割线方程

f ( x ) f(x) f(x)是二阶连续可微函数.对一阶向量值函数 ∇ f ( x ) \nabla f(x) f(x)在点 x k + 1 x^{k+1} xk+1处一阶泰勒近似,得

∇ f ( x ) = ∇ f ( x k + 1 ) + ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) + O ( ∥ x − x k + 1 ∥ 2 ) , \nabla f(x)=\nabla f(x^{k+1})+\nabla^2f(x^{k+1})(x-x^{k+1})+\mathcal{O}(\left\|x-x^{k+1}\right\|^2), f(x)=f(xk+1)+2f(xk+1)(xxk+1)+O( xxk+1 2),

x = x k x=x^k x=xk,且 s k = x k + 1 − x k \color{red}{s^k=x^{k+1}-x^k} sk=xk+1xk点差 y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) \color{red}{y^k=\nabla f(x^{k+1})-\nabla f(x^k)} yk=f(xk+1)f(xk)梯度差,得

∇ 2 f ( x k + 1 ) s k + O ( ∥ s k ∥ 2 ) = y k . \nabla^2f(x^{k+1})s^k+\mathcal{O}(\left\|s^k\right\|^2)=y^k. 2f(xk+1)sk+O( sk 2)=yk.

现忽略高阶项 ∥ s k ∥ 2 \|s^k\|^2 sk2,只希望近似海瑟矩阵的矩阵 B k + 1 B^{k+1} Bk+1满足方程

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满足
H k + 1 y k = s k . H^{k+1}y^k=s^k. Hk+1yk=sk.
上述两个方程即称为割线方程。所以在拟牛顿算法中,我们用 B k + 1 B^{k+1} Bk+1来近似海塞矩阵 ∇ 2 f ( x ) \nabla^2 f(x) 2f(x),其算法基本框架如下:

截屏2024-01-04 14.50.05

要保证算法收敛,近似矩阵要满足正定的要求:

截屏2024-01-04 14.53.17

拟牛顿法的关键在于近似矩阵 B K B^{K} BK H K H^K HK怎么计算,下面介绍经典的BFGS公式。

(2) BFGS公式

截屏2024-01-04 14.55.18

截屏2024-01-04 14.51.34

(3) BFGS全局收敛性

截屏2024-01-04 14.58.52

参考资料

  1. 刘浩洋、户将、李勇锋、文再文. 最优化:建模、算法与理论. 高教出版社, 2022.
  2. http://faculty.bicmr.pku.edu.cn/~wenzw/

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

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

相关文章

csdn查看积分的方法(最快)

我在浏览别人“资源”的时候,发现需要积分下载。下面分享最快查看积分的方法,非常简单。 在个人主页,选择任意一篇文章。最左边会显示积分(如果不在主页,点击上面的csdn头像会跳到首页)。如图:…

耳机声音变小了?意味你的耳机需要清洁了,两步教你快速清洁耳机

前两天觉得华为FreeBuds SE 2的声音有点小,于是准备调大一点,却收到手机的弹窗提示“耳机音量超出推荐值”的伤耳提示。 这其实是耳机的通病——长时间的佩戴使用,使得灰尘、耳垢、汗水在耳机的出音孔和泄音孔形成污垢。简单来说&#xff0c…

iPhone强制恢复出厂设置,记好这2种方法!

随着智能手机的广泛普及,如今有越来越多的人开始使用iPhone手机。但是,在使用的过程中,我们可能会遇到各种问题,比如程序崩溃、软件故障、系统运行缓慢等等。 此时,恢复出厂设置成为了一种解决问题的有效方法。本文将…

test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍

测试覆盖率 测试覆盖率(test coverage)是衡量软件测试完整性的一个重要指标。掌握测试覆盖率数据,有利于客观认识软件质量,正确了解测试状态,有效改进测试工作。 当然,要发挥这些作用,前提是我们掌握了真实的测试覆盖…

RT-DETR Gradio 前端展示页面

效果展示 使用方法 Gradio 是一个开源库,旨在为机器学习模型提供快速且易于使用的网页界面。它允许开发者和研究人员轻松地为他们的模型创建交互式的演示,使得无论技术背景如何的人都可以方便地试用和理解这些模型。使用Gradio,你只需几行代码就可以生成一个网页应用程序,…

Nat Med | 多组学神经病理学在儿科神经肿瘤学中提高了诊断准确性

导语 今天给同学们分享一篇实验文章“Multiomic neuropathology improves diagnostic accuracy in pediatric neuro-oncology”,这篇文章发表在Nat Med期刊上,影响因子为82.9。 结果解读: 患者招募和样本处理 在为期4年的时间内&#xff08…

【Java】log4j和slf4j区别

log4j:Apache Software Foundation 开源 slf4j:不支持日志滚动等高级功能 在开源库或内部库中使用 SLF4J,将使其独立于任何特定的日志记录实现,这意味着无需为多个库管理多个日志记录配置,您的客户端将会很需要这一点…

prometheus grafana mysql监控配置使用

文章目录 前传bitnami/mysqld-exporter:0.15.1镜像出现了问题.my.cnf可以用这个"prom/mysqld-exporter:v0.15.0"镜像重要的事情mysql监控效果外传 前传 prometheus grafana的安装使用:https://nanxiang.blog.csdn.net/article/details/135384541 本文说…

Mac——VsCode使用格式化工具进行整理和格式化

1. 打开VSCode编辑器。 2. 点击左下角⚙️图标,打开设置 3. 进入设置后,你会看到一个搜索框,在搜索框中输入 format on save 来查找相关设置项。 4. 在设置列表中找到 Editor: Format On Save 选项,勾选它以启用在保存文件时自动格…

炼石白小勇:免改造技术“多快好省”落地数据安全

现代数字化企业已然成为持续演变和进化的数字生命体,其架构复杂性的爆炸性增长,正加速形成企业内部数字化基因的代差积累。如何在数字基因动态演进的过程中实现原生安全范式,是网络安全行业面临的共同挑战。在此背景下,新一轮网络…

一文掌握文本语义分割:从BERT切分、Cross-Segment到阿里SeqModel

前言 之所以写本文,源于以下两点 在此文《基于LangChainLLM的本地知识库问答:从企业单文档问答到批量文档问答》的3.5节中,我们曾分析过langchain-chatchat项目中文本分割相关的代码,当时曾提到该项目中的文档语义分割模型为达摩…

用CHAT写一简单的C语言线程池的示例

问CHAT&#xff1a;编写一个简单的C语言线程池的示例 CHAT回复&#xff1a;在C语言中&#xff0c;实现线程池需要手动创建线程和管理任务队列。以下是一个简单的C语言线程池的示例&#xff1a; c #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 …

2023年12月青少年机器人技术等级考试(一级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;一级&#xff09;理论综合试卷 题目总数&#xff1a;45 总分数&#xff1a;100 单选题 第 1 题 单选题 如图&#xff0c;使用下列物品时哪个是费力杠杆&#xff1f;&#xff08; &#xff09; A. a B. b C. c D…

【银行测试】银行项目-系统性能测试总结(最详细汇总)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、需求分析 1&a…

FBL刷写

刷写 1、刷写需求的理解2、刷写流程2.1、预编程阶段&#xff1a;保证在编程阶段的动作能够正常操作&#xff0c;控制器给响应。整车功能不会出现问题 刷写某一控制器时&#xff0c;避免其他控制器集DTC,85控制DTC&#xff1b; 28 通信控制.保证总线负载率不要过高&#xff08;下…

这个方法可以让你把图片无损放大

随着数字技术的不断发展&#xff0c;照片无损放大已经成为了摄影领域中的一项重要技术。照片无损放大能够让摄影师在不损失细节和画质的情况下&#xff0c;将照片放大到更大的尺寸&#xff0c;从而让观众能够更加清晰地欣赏到照片中的每一个细节。 今天推荐的这款软件主要是通…

Java 深入理解 AQS 和 CAS 原理

AQS 介绍 AQS 全称是 Abstract Queued Synchronizer&#xff0c;一般翻译为同步器。它是一套实现多线程同步功能的框架&#xff0c;由大名鼎鼎的 Doug Lea 操刀设计并开发实现的。AQS 在源码中被广泛使用&#xff0c;尤其是在 JUC&#xff08;Java Util Concurrent&#xff09;…

【问题解决】web页面html锚点定位后内容被遮挡问题解决【暗锚】

正常的锚点跳转 a标签的href填写目标元素的id即可 <a href"#my_target">to div1</a> <div id"my_target">div1</div> 顶栏被遮挡示例 但是当id所在元素被嵌套多层flex和relative布局之后&#xff0c;跳转后部分内容会被遮挡。 …

清风数学建模笔记-聚类算法

K-maens算法&#xff1a; 算法的原理&#xff1a; 在论文中时&#xff0c;可以把一些可以流程化的算法的流程图加上去 优点&#xff1a; 缺点&#xff1a; 点容易受异常值的影响&#xff0c;且受影响较大 k-means算法&#xff1a; 使用SPSS进行聚类分析&#xff1a; S默认使用…

vue-cli项目中vue.config.js的配置

vue-cli项目中vue.config.js的配置 一、直接上代码 一、直接上代码 let path require(path) let glob require(glob)function resolve(dir) {return path.join(__dirname, src/${dir}) }module.exports {pages: {index: {// page 的入口entry: src/main.js,// 模板来源temp…