zoukankan      html  css  js  c++  java
  • 拟牛顿法——变种及其相互关系

     最优化算法是实用性、实践性很强的学问;但是要想在使用中选择确定最适合的优化算法,又必须具备一定的理论基础,特别是要知道每一种算法的设计思想是什么。这是我经过本课的学习,获得的最大感受与心得。

    拟牛顿法变种众多,实际中应用广泛。本文就拟牛顿法进行比较全面的探讨,特别是考察每种变种算法的设计思想以及不同变种算法之间的横向对比。

    1 牛顿法

    介绍拟牛顿法之前必须简要回顾经典牛顿法。

    经典牛顿法的基本思想是在极小点附近通过对目标函数做二阶Taylor展开,进而找到的极小点的估计值。

    考虑最简单的一维情况,即令函数

    拟牛顿法

    经典牛顿法虽然具有二次收敛性,但是要求初始点需要尽量靠近极小点,否则有可能不收敛。计算过程中需要计算目标函数的二阶偏导数,难度较大。更为复杂的是目标函数的Hesse矩阵无法保持正定,会导致算法产生的方向不能保证是fXk 处的下降方向,从而令牛顿法失效;特别的,如果Hesse矩阵奇异,牛顿方向可能根本是不存在的。

    2 拟牛顿法基本思想

    上一节指出,牛顿法收敛速度快,但是计算过程中需要计算目标函数的二阶偏导数,难度较大;目标函数的Hesse矩阵无法保持正定,从而令牛顿法失效。

    为了解决这两个问题,人们提出了拟牛顿法,即模拟牛顿法的改进型算法。基本思想是不用二阶偏导数而构造出可以近似Hesse矩阵的逆的正定对称阵,从而在拟牛顿的条件下优化目标函数。Hesse阵的构造方法的不同决定了不同的拟牛顿法。

    拟牛顿法鈥斺敱渲旨捌湎嗷ス叵

    3 SR1算法

    拟牛顿法鈥斺敱渲旨捌湎嗷ス叵

    SR1算法是一个非常有特色的拟牛顿算法,有许多改进的SR1算法研究。其中,SR1的一个突出优点是在极小正定二次目标函数时无需线搜索仍具有至多n步的终止性质。

    4 BFGS算法

    BFGS算法是BroydenFletcherGoldfarbShanno四位优化大家在1970年几乎同时从不同的优化角度提出的。从发明到现在的40多年时间里,它仍然被认为是最好的拟牛顿算法。

    拟牛顿法鈥斺敱渲旨捌湎嗷ス叵

    5 DFP算法

    DFP算法是以DavidonFletcherPowell发明人的名字首字母命名的。

    DFP算法也是一种秩2的修正算法。推导步骤和BFGS算法是类似的,并且两种修正公式之间构成了对偶关系。记忆时候,可以只记住一种修正公式,然后利用对偶关系写出另一种。

    拟牛顿法鈥斺敱渲旨捌湎嗷ス叵

     

    6 Broyden族算法

    BFGS修正公式和DFP修正公式的加权线性组合构成一类修正共识,其中含有一个参数的称为Broyden族修正公式

    拟牛顿法鈥斺敱渲旨捌湎嗷ス叵

    后来人们又发展出含有两个参数的Oren族算法和含有三个参数的Huang族算法。之所以开发这些算法,目的就是为了找到一个能够超越BFGS的更优算法。然而,经过40多年的努力,这个愿望至今还没有实现。

    7 收敛性及进一步修正

    拟牛顿法对于一般非二次函数的收敛性,最早由Powell1971年给出。目前得到的收敛结果都是假设目标函数是凸的。对于一般的非凸目标函数,拟牛顿法的收敛性还没有统一的证明,只散见个别的案例。

    比如,当用于非凸函数极小值问题求解时,有例子表明BFGS采用精确线性搜索或者W-P搜索不收敛,而BFGS又是十分好用的算法,于是在为了克服BFGS的缺陷,又产生了不少修正算法,如MBFGSCBFGS等。

    8 其他拟牛顿法算法

    差分拟牛顿法是用差商代替梯度的拟牛顿算法,属于不用梯度运算的直接搜索法。

    锥模型拟牛顿法使用锥函数对函数进行变换。

    9 参考文献

    1.       倪勤. 最优化方法与程序设计. 北京:科学出版社,2009

    2.      张立卫,单峰. 最优化方法. 北京:科学出版社,2010

    3.      李董辉等. 数值最优化算法与理论(第二版). 北京:科学出版社,2010

    4.      http://en.wikipedia.org/wiki/Quasi-Newton_method

    5.      http://en.wikipedia.org/wiki/DFP_updating_formula

    6.      http://en.wikipedia.org/wiki/BFGS_method

    7.      http://en.wikipedia.org/wiki/Broyden's_method

    8.     http://en.wikipedia.org/wiki/SR1_formula

    9.      http://en.wikipedia.org/wiki/LBFGS


  • 相关阅读:
    Chrome开发者工具中Elements(元素)断点的用途
    最简单的SAP云平台开发教程
    Java实现 LeetCode 495 提莫攻击
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 494 目标和
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 493 翻转对
    Java实现 LeetCode 492 构造矩形
  • 原文地址:https://www.cnblogs.com/riskyer/p/3292306.html
Copyright © 2011-2022 走看看