二阶偏微分方程组 龙格库塔法_牛顿法和拟牛顿法——(书中附录B)
牛顿法(Newton method)和拟牛顿法(quasi-Newton method)也是求解无约束最优化问题的常用方法,具有收敛速度快的优点。
牛顿法是迭代算法,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算比较复杂。
拟牛顿法通过正定矩阵近似海赛矩阵的逆矩阵或海赛矩阵,简化了这一计算过程。
本篇设计的算法有:牛顿法、拟牛顿法、DFP算法、BFGS算法、L-BFGS算法、Broyden类算法。
1.牛顿法
对于一个无约束问题:
极小值点。
我们知道,通常情况下对于目标函数来说,极小值点的一阶导数为0。
而
二阶泰勒展开为:
其中,
海赛矩阵(Hesse matrix)
那么函数的一阶导数(对上面的二阶泰勒展开求导)就可以表示为:
上式就是我们的一阶导函数的直线近似,即上式为通过原函数的一阶导函数在点
如上图所示,已知第
切线方程为:
我们令其为0得到:
从而解得第
切线,若目标函数为凸函数,则这个新的迭代点是逐步接近于极小值点的。
这个就是牛顿法!
但是我们可以看见在每一次的迭代过程中,都要涉及到
求解线性代数方程组的形式:令
来说一次,这就是牛顿法!!
牛顿法的迭代公式中由于没有步长因子,是定步长迭代,对于非凸目标函数,有时会使函数值上升,即出现
“阻尼牛顿法”,即增加了一个步长因子
牛顿法的一些致命缺点:
1.海赛矩阵的逆矩阵计算
2.海赛矩阵可能无法保持正定,这样就无法计算
这时我们就应该思考了,能不能绕过
拟牛顿法就可以。
2.拟牛顿法
拟牛顿法的基本思想是:不用求二阶偏导数而构造出可以近似海赛矩阵(或海赛矩阵的逆)的正定对称阵。
不同的构造方法对应能够产生不同的拟牛顿法。(可以理解成,"拟牛顿法"是来近似"牛顿法"的,所以在“牛顿法”前面加了一个“拟”字。拟牛顿法可不止一种,它包含多种方法:如DFP算法、BFGS算法、Broyden类算法。)
我们说了,我们要构造一个近似海赛矩阵(或海赛矩阵的逆)的正定矩阵,首先需要满足拟牛顿条件。
(1)拟牛顿条件
对
泰勒展开我们得到了以下近似:
假设找到了下一步迭代点
记
上述就是拟牛顿条件,即我们选择的
从拟牛顿条件我们可知,有两种替补方式:
1)选择
2)选择
拟牛顿法”,这两个算法名称缩写看起来高大上,但其实就是几个人名的首字母缩写,没有什么高大上的含义。
(2)DFP算法
DFP算法用
我们知道海赛矩阵的更新是每一个迭代步骤上计算二阶偏导得到的,此时用
可以证明,如果初始矩阵
单位阵。那么每一步迭代中的
此时有个疑问,计算
这个值如何确定的?是这么来的:
一维搜索:求
这就绕过了
可以对照算法过程来理解,DFP算法过程如下:
输入:目标函数
输出:
1)选定初始点
2)计算
3)置
4)一维搜索:求
5)置
6)计算
7)置
(3)BFGS算法
BFGS算法是最流行的你牛顿算法。它与DFP相比,性能更佳。该算法是用
海赛矩阵
同DFP算法,也可以证明,如果初始矩阵
单位阵。那么每一步迭代中的
BFGS的算法流程与DFP相似,如下:
输入:目标函数
输出:
1)选定初始点
2)计算
3)由
4)一维搜索:求
5)置
6)计算
7)置
上述就是具体地算法过程了,当然,我们也可以从BFGS算法矩阵
首先我们介绍Sherman-Morrison公式(谢尔曼莫里森公式):假设
这就是Sherman-Morrison公式。
如果我们记
两次应用Sherman-Morrison公式得到
即称此式为BFGS算法关于
。(公式的具体推导过程请参考本专栏的另一篇文章https://zhuanlan.zhihu.com/p/91230555)
(4)L-BFGS算法
在BFGS算法中,每一步迭代都需要用到一个
L-BFGS算法就是为了解决这个问题而提出的,其目的是减少BFGS算法迭代过程中所需的内存开销。
L-BFGS(Limited-memory BFGS或Limited-storage BFGS)是BFGS算法的进一步近似。其基本思想是:不再存储完整的矩阵
(5)Broyden类算法
根据前面的内容,我们将由DFP算法中
线性组合
也满足拟牛顿条件而且是正定的。其中
这样,根据取不同的
,就可以得到一系列的拟牛顿法,称为Broyden类算法。
上面的所有拟牛顿算法都仅仅是简述,例如DFP和BFGS算法的迭代公式没有推导其由来,L-BFGS算法也仅仅是提了一下。如果需要深入理解,可以参考下面的这个博客链接:
https://blog.csdn.net/songbinxu/article/details/79677948
二阶偏微分方程组 龙格库塔法_牛顿法和拟牛顿法——(书中附录B)相关推荐
- 二阶偏微分方程组 龙格库塔法_数值方法(MATLAB版)(原书第3版)[Numerical Methods Using MATLAB,Third Edition]pdf...
摘要 本书特点 强大的图形表达 宽泛的计算方法 重点科学领域的重要算法 大量可运行的实例 数值方法(MATLAB版)(原书第3版)[Numerical Methods Using MATLAB,Thi ...
- 二阶偏微分方程组 龙格库塔法_深度科普---电磁波(三):无激励下的真空中的Maxwell方程组的解...
很久没有写过与自己专业相关的文章了,于是计划穿插进几篇有关电磁波的深度科普的文章.计划分为几个部分: 1. 真空中的 方程组 2. 材料中的 方程组和电磁场的边值条件 3. 无激励下的真空中的 方程组 ...
- 二阶偏微分方程组 龙格库塔法_有限单元法(Finite Element Method)实现声波方程模拟(Part 2)...
2.1 前言 承接上一篇文章,前面我们已经介绍了一维声波方程有限元求解: 蓝不是蓝:有限单元法(Finite Element Method)实现声波方程模拟(Part 1)zhuanlan.zhih ...
- 《统计学习方法》啃书辅助:附录B 牛顿法和拟牛顿法
<统计学习方法>啃书辅助:附录B 牛顿法和拟牛顿法 B.1 牛顿法 [基础知识]梯度 [基础知识]浅谈「正定矩阵」和「半正定矩阵」 - Xinyu Chen 的文章 - 知乎 二阶泰勒展开 ...
- 梯度类算法原理:最速下降法、牛顿法和拟牛顿法
文章目录 算法结构 最速下降法 牛顿法 拟牛顿法 算法结构 梯度类算法有很多,本文主要学习最常见的3个算法:最速下降法.牛顿法和拟牛顿法.算法名称虽多,但是他们的算法结构都是一样的,可以描述为 (1) ...
- 机器学习优化算法中梯度下降,牛顿法和拟牛顿法的优缺点详细介绍
1.梯度下降法 梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解.一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的. 梯度下降法的优化思想:用当前位置负梯度方向作为搜 ...
- 梯度下降法、牛顿法和拟牛顿法——机器学习面试
梯度下降.牛顿.拟牛顿原理 梯度下降 牛顿法 为Hesse矩阵 参数更新的方程: 每一次迭代的更新方向都是当前点的牛顿方向,步长固定为1.每一次都需要计算一阶导数以及Hesse矩阵的逆矩阵,对于 ...
- 用共轭梯度法求极小值matlab,用MATLAB实现最速下降法_牛顿法和共轭梯度法求解实例——张小强.doc...
机电产品优化设计 课程设计报告 姓 名 :张 小 强 学 号 :201222080633 学 院 :机械电子工程学院 实验的题目和要求 一.课程名称:最优化设计方法 二.实验日期:2013年6月27日 ...
- 统计学习方法--牛顿法和拟牛顿法
与公众号同步更新,详细内容及相关ipynb文件在公众号中,公众号:AI入门小白 文章目录 牛顿法 拟牛顿法的思路 DFP (Davidon-Fletcher- Powell) 算法(DFP algor ...
最新文章
- mongo 创建索引_索引系列:2dsphere索引
- Javascript对于不同浏览器的兼容性
- Shall的变量功能
- delphi 安卓图片保存数据库_delphi 把图片存入数据库
- Qt Label自适应显示Logo图片
- 给ABBYY添加图像的方法
- 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
- Pycharm取消双击shift出现搜索框
- NLTK在python中文字所表达的情感预测
- 调用地图JS/API只显示一个省
- simulink提示错误Invalid OutputTimes specified in the Configuration Parameters dialog for block diagram
- python绘图小dome
- Android 10.0 webview版本升级的方法
- 【spinning up】2.2 功能超全的强化学习画图脚本
- PHP h5付款到支付宝账户
- CVX工具下载及测试
- Python深度学习与机器视觉(一)
- 八数码(Eight Digits)问题:宽度优先搜索、全局择优搜索、A*算法(C语言实现)
- 怎样做竞品分析?竞品分析的意义?
- HTTPS与自制SSL证书
热门文章
- [渝粤教育] 中国地质大学 金融保险业会计 复习题 (2)
- dev分支和master是什么_天天用Git,分支开发你怎么弄的?
- Java多线程(6)--Callable接口创建线程
- oracle 中文脚本,ORACLE常用脚本
- android 组合属性动画,Android属性动画组合(sequence串行、together并行)
- linux 书签管理工具,在书签管理工具中使用Ubuntu字体
- python string模块template_Python标准库笔记(1) — string模块
- 网络操作系统第242页作业
- day19 复习,组合和继承
- Log4j 2配置与IntelliJ IDEA控制台颜色