16、什么是拟牛顿法(Quasi-Newton Methods)?

2023-11-12

拟牛顿法是求解非线性优化问题最有效的方法之一,于20世纪50年代由美国Argonne国家实验室的物理学家W.C.Davidon所提出来。Davidon设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一。不久R. Fletcher和M. J. D. Powell证实了这种新的算法远比其他方法快速和可靠,使得非线性优化这门学科在一夜之间突飞猛进。

拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。

另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。

具体步骤:
拟牛顿法的基本思想如下。首先构造目标函数在当前迭代xk的二次模型:

这里Bk是一个对称正定矩阵,于是我们取这个二次模型的最优解作为搜索方向,并且得到新的迭代点:

其中我们要求步长ak 满足Wolfe条件。这样的迭代与牛顿法类似,区别就在于用近似的Hessian矩阵Bk 代替真实的Hessian矩阵。所以拟牛顿法最关键的地方就是每一步迭代中矩阵Bk 的更新。现在假设得到一个新的迭代xk+1,并得到一个新的二次模型:

我们尽可能地利用上一步的信息来选取Bk。具体地,我们要求

从而得到

这个公式被称为割线方程。常用的拟牛顿法有DFP算法和BFGS算法。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

16、什么是拟牛顿法(Quasi-Newton Methods)? 的相关文章

随机推荐

  • Mysql group by 与order by 一起使用

    项目中遇到这样的要求 从数据表里查出每台机器的最后一次链接时间 必须group by机器id order by connect time SELECT c d equipment type FROM ms gateway connect c
  • C++中float和double的比较

    在c 开发中 double或者float类型判断相等性不能简单的用等于符号 进行 一般会采用如下方式进行判断 static inline bool DoubleEqual double a double b return fabs a b
  • Log4j学习笔记

    Log4j学习笔记 1 入门实例 2 Log4j基本使用方法 2 1 定义配置文件 2 2 在代码中使用Log4j 2 3 日志级别 本文参考https blog csdn net u013870094 article details 79
  • 实战--Kafka学习(二)

    问题导读1 Kafka工作包含哪些流程 2 为防止log文件过大导致数据定位效率低下 kafka引入了什么 3 Kafka生产者分区的原因和原则是什么 4 Kafka数据可靠性是如何保证的 3 1 Kafka工作流程及文件存储机制Kafka
  • 哈希及其应用(字典,加密等)

    一 名词说明 Hash 一般翻译做散列 杂凑 或音译为哈希 是把任意长度的输入 又叫做预映射pre image 通过散列算法变换成固定长度的输出 该输出就是散列值 这种转换是一种压缩映射 也就是 散列值的空间通常远小于输入的空间 不同的输入
  • kafka学习

    链接1 Kafka入门教程 香菜 的博客 CSDN博客 链接2 https mbd baidu com ug share mbox 4a83aa9e65 share product smartapp tk d716b5f663babe030
  • mysql函数及关键字使用

    collect set collect set col 函数只接受 基本数据类型 它的主要作用是将某字段的值进行去重汇总 产生array类型字段 MySQL中concat函数 连接字符串 MySQL中concat函数 使用方法 concat
  • java语法基础练习

    1 阅读示例 EnumTest java 并运行 分析结果 代码 public class EnumTest public static void main String args Size s Size SMALL Size t Size
  • MSP432学习笔记:IAR的环境配置(官方demo程序的测试)

    近来入手一块MSP432 折腾了一天 终于把官方demo程序导入IAR 可以愉快的写代码了 以下是我个人的解决办法 首先 如果要使用IAR对TI的单片机进行开发 首先要下载对应的单片机型号的MSPWARE 本人目前使用的是TI的MSP432
  • python实现的一些方法,可以直接拿来用的那种

    1 日期生成 很多时候我们需要批量生成日期 方法有很多 这里分享两段代码 获取过去 N 天的日期 import datetime def get nday list n before n days for i in range 1 n 1
  • 梯度下降算法

    下面这篇文章讲的非常不错 https www jianshu com p c7e642877b0e 转载于 https www cnblogs com lvchaoshun p 11403808 html
  • 【网络】协议定制+序列化/反序列化

    为什么要序列化 如果光看定义很难理解序列化的意义 那么我们可以从另一个角度来推导出什么是序列化 那么究竟序列化的目的是什么 其实序列化最终的目的是为了对象可以跨平台存储 和进行网络传输 而我们进行跨平台存储和网络传输的方式就是IO 而我们的
  • leetcode刷题(5)

    各位朋友们 大家好 今天是我leedcode刷题的第五篇 我们一起来看看吧 文章目录 栈的压入 弹出序列 题目要求 用例输入 提示 做题思路 代码实现 C语言代码实现 Java代码实现 最小栈 题目要求 用例输入 提示 做题思路 代码实现
  • eclipse中使用Install New software下载资源超时解决

    问题 使用eclipse中提供的Help菜单 Install New software 已填入正确的链接地址 但是在下载过程中出现错误 Some sites could not be found See the error log for
  • 宝塔面板升级踩坑:ImportError: class/PluginLoader.so: undefined symbol: PyImport_GetModule

    今天在宝塔面板升级了PHP8 但是站点的PHP版本选择仍然没有PHP8以上的版本 百度了一下说是要升级宝塔面板 于是在面板首页右上角进行了升级 结果升级后发现安全入口无法打开 于是用ssh登录服务器 执行命令 etc init d bt d
  • 推荐 20 款 IDEA 主题!

    官方对主题模块的介绍 作为一名开发人员 您需要使用大量文本资源 编辑器中的源代码 搜索结果 调试器信息 控制台输入和输出等等 颜色和字体样式用于格式化这个文本 并帮助您更好地理解它一目了然 个人感觉 每天我们大半的时间都是在跟代码打交道 时
  • Vue前端代码风格指南超级详细

    本文仅作日常项目开发中的知识补充 不必按顺序阅读 如果已经知悉 请跳过 一 命名规范 现有常用的命名规范 camelCase 小驼峰 首字母小写 PsscalCase 大驼峰 首字母大写 kebab case 短横线连接式 Snake 下划
  • VSCode好用的插件

    文章目录 前言 1 Snippet Creator easy snippet 自定义代码 2 Indent Rainbow 代码缩进 3 Chinese Simplified Language Pack 中文包 4 Path Intelli
  • react项目配置 @ 为src根目录

    前置 修改jsconfig json文件 compilerOptions jsx react experimentalDecorators true baseUrl paths src 1 原生create react app 的情况 若已
  • 16、什么是拟牛顿法(Quasi-Newton Methods)?

    拟牛顿法是求解非线性优化问题最有效的方法之一 于20世纪50年代由美国Argonne国家实验室的物理学家W C Davidon所提出来 Davidon设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一 不久R Fletcher和M