牛顿法(Newton method)和拟牛顿法(quasi-Newton method)也是求解无约束最优化问题的常用方法,具有收敛速度快的优点。

牛顿法是迭代算法,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算比较复杂

拟牛顿法通过正定矩阵近似海赛矩阵的逆矩阵或海赛矩阵,简化了这一计算过程。

本篇设计的算法有:牛顿法、拟牛顿法、DFP算法、BFGS算法、L-BFGS算法、Broyden类算法。

1.牛顿法

对于一个无约束问题

,求该目标函数的

极小值点。

我们知道,通常情况下对于目标函数来说,极小值点的一阶导数为0。

二阶泰勒展开为:

其中,

,即为
的梯度向量在点
处的值;

海赛矩阵(Hesse matrix)

那么函数的一阶导数(对上面的二阶泰勒展开求导)就可以表示为:

上式就是我们的一阶导函数的直线近似,即上式为通过原函数的一阶导函数在点

上的切线。
https://blog.csdn.net/u012294618/article/details/79750224

如上图所示,已知第

次迭代得到的

切线方程为:

我们令其为0得到:

从而解得第

次迭代点为:
。此时得到了一条新的

切线,若目标函数为凸函数,则这个新的迭代点是逐步接近于极小值点的。

这个就是牛顿法!

但是我们可以看见在每一次的迭代过程中,都要涉及到

的计算,实际应用中,我们不直接计算它,而是将它转化为

求解线性代数方程组的形式:令

,即
,此时迭代过程变成:

来说一次,这就是牛顿法!!

牛顿法的迭代公式中由于没有步长因子,是定步长迭代,对于非凸目标函数,有时会使函数值上升,即出现

的情况,甚至最终发散导致计算失败。为了尽量避免这种情况发生,可以采用

“阻尼牛顿法”,即增加了一个步长因子

,将迭代式修改为:

牛顿法的一些致命缺点

1.海赛矩阵的逆矩阵计算

计算量可能很大;

2.海赛矩阵可能无法保持正定,这样就无法计算

,此时牛顿法失效。

这时我们就应该思考了,能不能绕过

的计算呢?

拟牛顿法就可以。

2.拟牛顿法

拟牛顿法的基本思想是:不用求二阶偏导数而构造出可以近似海赛矩阵(或海赛矩阵的逆)的正定对称阵。

不同的构造方法对应能够产生不同的拟牛顿法。(可以理解成,"拟牛顿法"是来近似"牛顿法"的,所以在“牛顿法”前面加了一个“拟”字。拟牛顿法可不止一种,它包含多种方法:如DFP算法、BFGS算法、Broyden类算法。)

我们说了,我们要构造一个近似海赛矩阵(或海赛矩阵的逆)的正定矩阵,首先需要满足拟牛顿条件。

(1)拟牛顿条件

泰勒展开我们得到了以下近似:

假设找到了下一步迭代点

,则有:

,则:

上述就是拟牛顿条件,即我们选择的

的替补,应当满足上面的条件才行。

从拟牛顿条件我们可知,有两种替补方式

1)选择

作为
的替补。即
(Davidon-Fletcher-Powell)算法;

2)选择

作为
的替补。即
(Broyden-Fletcher-Goldfarb-Shanno)算法。这两种算法通称“

拟牛顿法”,这两个算法名称缩写看起来高大上,但其实就是几个人名的首字母缩写,没有什么高大上的含义。

(2)DFP算法

DFP算法用

作为
的近似或替补,

我们知道海赛矩阵的更新是每一个迭代步骤上计算二阶偏导得到的,此时用

做近似了之后怎么更新呢?我们直接给出更新公式:

可以证明,如果初始矩阵

是正定对称的,则迭代过程中的每个矩阵
都是正定对称的。并且一般我们取初始矩阵
,即取初始矩阵为

单位阵。那么每一步迭代中的

都能通过上式得到。

此时有个疑问,计算

时,要用到

这个值如何确定的?是这么来的:

是当前点的一阶导,是可以计算出来的;我们置
;进行

一维搜索:求

使得
;置

这就绕过了

的计算。

可以对照算法过程来理解,DFP算法过程如下:

输入:目标函数

,梯度
,精度要求

输出:

的极小点

1)选定初始点

,取
为正定对称矩阵,置

2)计算

。若
,则停止计算,得近似解
;否则转第3步

3)置

4)一维搜索:求

使得

5)置

6)计算

,若
,则停止计算,得近似解
;否则,按式
算出

7)置

,转到第3步。

(3)BFGS算法

BFGS算法是最流行的你牛顿算法。它与DFP相比,性能更佳。该算法是用

来近似

海赛矩阵

。同DFP算法,我们也直接给出
的迭代公式:

同DFP算法,也可以证明,如果初始矩阵

是正定对称的,则迭代过程中的每个矩阵
都是正定对称的。并且一般我们取初始矩阵
,即取初始矩阵为

单位阵。那么每一步迭代中的

都能通过上式得到。

BFGS的算法流程与DFP相似,如下:

输入:目标函数

,梯度
,精度要求

输出:

的极小点

1)选定初始点

,取
为正定对称矩阵,置

2)计算

。若
,则停止计算,得近似解
;否则转第3步

3)由

求出

4)一维搜索:求

使得

5)置

6)计算

,若
,则停止计算,得近似解
;否则,按式
算出

7)置

,转到第3步。

上述就是具体地算法过程了,当然,我们也可以从BFGS算法矩阵

的迭代公式得到BFGS算法关于
的迭代公式。

首先我们介绍Sherman-Morrison公式(谢尔曼莫里森公式):假设

是n阶可逆矩阵,
是n维向量,且
也是可逆矩阵,则

这就是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算法中

的迭代公式得到的
记作
;将由BFGS算法中
的迭代公式得到的
记作
,它们都满足拟牛顿条件,并且都是正定的,所以它们的

线性组合

满足拟牛顿条件而且是正定的。其中

这样,根据取不同的

,就可以得到一系列的拟牛顿法,称为Broyden类算法。

上面的所有拟牛顿算法都仅仅是简述,例如DFP和BFGS算法的迭代公式没有推导其由来,L-BFGS算法也仅仅是提了一下。如果需要深入理解,可以参考下面的这个博客链接:

https://blog.csdn.net/songbinxu/article/details/79677948

二阶偏微分方程组 龙格库塔法_牛顿法和拟牛顿法——(书中附录B)相关推荐

  1. 二阶偏微分方程组 龙格库塔法_数值方法(MATLAB版)(原书第3版)[Numerical Methods Using MATLAB,Third Edition]pdf...

    摘要 本书特点 强大的图形表达 宽泛的计算方法 重点科学领域的重要算法 大量可运行的实例 数值方法(MATLAB版)(原书第3版)[Numerical Methods Using MATLAB,Thi ...

  2. 二阶偏微分方程组 龙格库塔法_深度科普---电磁波(三):无激励下的真空中的Maxwell方程组的解...

    很久没有写过与自己专业相关的文章了,于是计划穿插进几篇有关电磁波的深度科普的文章.计划分为几个部分: 1. 真空中的 方程组 2. 材料中的 方程组和电磁场的边值条件 3. 无激励下的真空中的 方程组 ...

  3. 二阶偏微分方程组 龙格库塔法_有限单元法(Finite Element Method)实现声波方程模拟(Part 2)...

    2.1 前言 承接上一篇文章,前面我们已经介绍了一维声波方程有限元求解: 蓝不是蓝:有限单元法(Finite Element Method)实现声波方程模拟(Part 1)​zhuanlan.zhih ...

  4. 《统计学习方法》啃书辅助:附录B 牛顿法和拟牛顿法

    <统计学习方法>啃书辅助:附录B 牛顿法和拟牛顿法 B.1 牛顿法 [基础知识]梯度 [基础知识]浅谈「正定矩阵」和「半正定矩阵」 - Xinyu Chen 的文章 - 知乎 二阶泰勒展开 ...

  5. 梯度类算法原理:最速下降法、牛顿法和拟牛顿法

    文章目录 算法结构 最速下降法 牛顿法 拟牛顿法 算法结构 梯度类算法有很多,本文主要学习最常见的3个算法:最速下降法.牛顿法和拟牛顿法.算法名称虽多,但是他们的算法结构都是一样的,可以描述为 (1) ...

  6. 机器学习优化算法中梯度下降,牛顿法和拟牛顿法的优缺点详细介绍

    1.梯度下降法 梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解.一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的. 梯度下降法的优化思想:用当前位置负梯度方向作为搜 ...

  7. 梯度下降法、牛顿法和拟牛顿法——机器学习面试

    梯度下降.牛顿.拟牛顿原理 梯度下降   牛顿法 为Hesse矩阵  参数更新的方程: 每一次迭代的更新方向都是当前点的牛顿方向,步长固定为1.每一次都需要计算一阶导数以及Hesse矩阵的逆矩阵,对于 ...

  8. 用共轭梯度法求极小值matlab,用MATLAB实现最速下降法_牛顿法和共轭梯度法求解实例——张小强.doc...

    机电产品优化设计 课程设计报告 姓 名 :张 小 强 学 号 :201222080633 学 院 :机械电子工程学院 实验的题目和要求 一.课程名称:最优化设计方法 二.实验日期:2013年6月27日 ...

  9. 统计学习方法--牛顿法和拟牛顿法

    与公众号同步更新,详细内容及相关ipynb文件在公众号中,公众号:AI入门小白 文章目录 牛顿法 拟牛顿法的思路 DFP (Davidon-Fletcher- Powell) 算法(DFP algor ...

最新文章

  1. mongo 创建索引_索引系列:2dsphere索引
  2. Javascript对于不同浏览器的兼容性
  3. Shall的变量功能
  4. delphi 安卓图片保存数据库_delphi 把图片存入数据库
  5. Qt Label自适应显示Logo图片
  6. 给ABBYY添加图像的方法
  7. 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
  8. Pycharm取消双击shift出现搜索框
  9. NLTK在python中文字所表达的情感预测
  10. 调用地图JS/API只显示一个省
  11. simulink提示错误Invalid OutputTimes specified in the Configuration Parameters dialog for block diagram
  12. python绘图小dome
  13. Android 10.0 webview版本升级的方法
  14. 【spinning up】2.2 功能超全的强化学习画图脚本
  15. PHP h5付款到支付宝账户
  16. CVX工具下载及测试
  17. Python深度学习与机器视觉(一)
  18. 八数码(Eight Digits)问题:宽度优先搜索、全局择优搜索、A*算法(C语言实现)
  19. 怎样做竞品分析?竞品分析的意义?
  20. HTTPS与自制SSL证书

热门文章

  1. [渝粤教育] 中国地质大学 金融保险业会计 复习题 (2)
  2. dev分支和master是什么_天天用Git,分支开发你怎么弄的?
  3. Java多线程(6)--Callable接口创建线程
  4. oracle 中文脚本,ORACLE常用脚本
  5. android 组合属性动画,Android属性动画组合(sequence串行、together并行)
  6. linux 书签管理工具,在书签管理工具中使用Ubuntu字体
  7. python string模块template_Python标准库笔记(1) — string模块
  8. 网络操作系统第242页作业
  9. day19 复习,组合和继承
  10. Log4j 2配置与IntelliJ IDEA控制台颜色