Quasi-Newton Method
Quasi-Newton Method每一步计算过程中仅涉及到函数值和函数梯度值计算,这样有效避免了Newton Method中涉及到的Hessian矩阵计算问题。于Newton Method不同的是Quasi-Newton Method在每点处构建一个如下的近似模型:

从上面的近似模型我们可以看出,该模型用B_k代替了Newton Method中近似模型中涉及到的Hessian矩阵。因此Quasi-Newton Method中方向计算公式如下所示:
(24)
这里有必要解释一下用于近似Hessian矩阵的B_k可行性,及一个指导性方案。根据Taylor(泰勒)级数可知如下公式:

由于函数▽f(.)连续,因此上式可以表示为:

(25)
因此每一选择Hessian矩阵的近似B_ k+1时,可以像式(24)那样模仿真实的Hessian矩阵的性质。得到下式:
(26)
其中:

s_k = x_k+1 – x_k y_k = ▽f(x_k+1) – ▽f(x_k) (27)

同时要求B_k+1为对称正定矩阵。

BFGS Method

从Quasi-Newton Method方向公式 (24) 中,可以看到每一步计算方向的过程中均涉及到B_k+1矩阵求逆的问题,为了避免该计算,通过分析公式(26)可知,我们可以构建一个近似H_k+1,该近视满足如下方程:

H_k+1*y_k = s_k (28)

同时要求H_k+1为对称正定矩阵。因此BFGS Method中,每个点处的方向由如下公式计算:

p_k = –H_k*▽f(x_k) (29)

在此基础上,BFGS方向迭代公式如下所示:

(30)
其中ρ_k为一个标量:

有了上面(30)的H_k迭代公式后,还有一个问题就是初始的H_0如何计算,目前常用的方法是初始的H_0直接设为单位矩阵I。因此BFGS Method用于解无约束最优化的过程可以表示为如下过程:

LBFGS Method
上一节所介绍的BFGS Method比较适合解决中小规模无约束最优化问题,但是BFGS算法产生的Hessian近似矩阵H_k为n * n的,同时该矩阵非稀疏,因此当n的规模较大时将面临两个问题:
1) 存储问题:n规模较大时,n*n矩阵对内存的消耗将较大;
2) 计算问题:n规模较大,同时n*n矩阵非稀疏时,计算复杂度将较高;
为了解决以上问题,引申出了Limited-Memory Quasi-Newton Method,目前使用较多的LBFGS算法即属于该类算法。为了减少H_k矩阵的存储,LBFGS算法利用最近几代的curvature 信息来构建Hessian矩阵的近似。由BFGS Method我们知道:

x_k+1 = x_k + a_k * H_k*▽f(x_k)

其中a_k为步长,H_k为Hessian矩阵的近似,可以通过如下迭代公式计算:

H_k+1 = V_k* H_k*V_k+ρ_k * s_k* s_k (31)

其中:

从上面的H_k的迭代计算公式可知,H_k会慢慢由稀疏矩阵转变为稠密矩阵,因此存储该矩阵以及进行该矩阵和向量的相乘运算的消耗将较大。为了避免该问题,LBFGS算法在BFGS算法的基础上从两点进行了改进:
1)估算每一步对应的Hessian近似矩阵时,给出一个当前步的初始Hessian矩阵估计H_k0
2) 利用过去当前代及过去m-1代的curvature信息修正初始Hessian矩阵估计H_k0,得到最终的Hessian矩阵近似估计H_k。
计算式如下所示:

(32)
上述计算式(32),可以通过公式(31)递归计算获取。公式(32)可以用以下算法表示:

从上面计算H_k的公式(32)可知,要估算每个点x_k处的Hessian矩阵近似,需要给出初始估计H_k0,H_k0一般通过以下公式计算:

有了上面的方向计算算法后,LBFGS算法用于解无约束最优化问题,可以表示为如下算法:

1 选择一个初始点x_0,并选择收敛判断条件 ε> 0,以及常量m(代表过去代数)一般为6
2 k left 0 H_0 left I,因此r = H_0 *▽f(x_0) =▽f(x_0)
3 while ||▽f(x_k)|| > ε
4 计算从当前点x_k走到下一个点x_k+1的方向
p_k = –r
5 采用line search策略计算步长a_k
6 x_k+1 = x_k + a_k * p_k
7 if k > m
删除LBFGS计算H_k时用不上的向量对(s_k-m, y_k-m)
8 计算并保存 s_k = x_k+1 – x_k y_k = ▽f(x_k+1) – ▽f(x_k)
9 采用LBFGS Hessian矩阵近似算法计算 r
10 k left k+1

4.算法总结
用于解无约束优化算法的Quasi-Newton Method中的LBFGS算法到这里总算初步介绍完了,不过这里笔者要承认的是这篇文档省略了许多内容,包括算法收敛性的证明以及收敛速度证明等许多内容。因此读者若希望对这一块有一个更深入的认识可以参考以下两本书:
1) Numerical Methods for Unconstrained Optimization and Nonlinear Equations(J.E. Dennis Jr. Robert B. Schnabel)
2) Numerical Optimization(Jorge Nocedal Stephen J. Wright)

Quasi-Newton Method--LBFGS的更多相关文章

  1. Apply Newton Method to Find Extrema in OPEN CASCADE

    Apply Newton Method to Find Extrema in OPEN CASCADE eryar@163.com Abstract. In calculus, Newton’s me ...

  2. matlab Newton method

    % Matlab script to illustrate Newton's method % to solve a nonlinear equation % this particular scri ...

  3. Newton法(牛顿法 Newton Method)

               1.牛顿法应用范围                          牛顿法主要有两个应用方向:1.目标函数最优化求解.例:已知 f(x)的表达形式,,求 ,及g(x)取最小值时 ...

  4. Newton‘ method 的优缺点

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzE1Mjg5NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  5. AI人工智能专业词汇集

    作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客.论文.专家观点等内容上已经积累了超过两年多的经验.期间,从无到有,机器之心的编译团队一直在积累专业词汇.虽然有很多的文章因为专业性我们没能尽 ...

  6. 最优化算法:BFGS算法全称和L-BFGS算法全称

    在最优化算法研究中按时间先后顺序出现了许多算法包括如下几种,这里介绍下他们的全称和英文名称: 1.最速下降法(Gradient descent) 2.牛顿法(Newton method) 3. 共轭梯 ...

  7. L-BFGS

    L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源.本文主要通过对于无约束最优化问题的一些常用算法总结,一 ...

  8. L-BFGS算法介绍

    可以看出,拟牛顿法每次迭代只需要根据前次迭代的即可以计算出,不需要求出Hesse矩阵的逆. 2.4 L-BFGS(limited-memory BFGS) BFGS算法中每次迭代计算需要前次迭代得到的 ...

  9. Alink漫谈(十一) :线性回归 之 L-BFGS优化

    Alink漫谈(十一) :线性回归 之 L-BFGS优化 目录 Alink漫谈(十一) :线性回归 之 L-BFGS优化 0x00 摘要 0x01 回顾 1.1 优化基本思路 1.2 各类优化方法 0 ...

  10. jrae源码解析(一)

    jare用java实现了论文<Semi-Supervised Recursive Autoencoders for Predicting Sentiment Distributions>中 ...

随机推荐

  1. Linux Shell常用技巧(二) grep

    七. grep家族:       1.  grep退出状态:    0: 表示成功:    1: 表示在所提供的文件无法找到匹配的pattern:    2: 表示参数中提供的文件不存在.    见如 ...

  2. iOS 5 故事板入门(4)

    原文: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-2 让 AddPlayer 窗口动起来 现在,我们先 ...

  3. 【PHP SDK for OpenStack/Rackspace APIs】身份验证

    在你使用php-opencloud之前必须先取得云服务提供商的身份验证.这是整个过程中最简单也是最让人沮丧的部分. 说它最简单是因为你只需要两部分信息: 云服务提供商的身份验证端点 用来身份验证的证书 ...

  4. KVM 实现机制

    1.1.    KVM简介 KVM是一个基于Linux内核的虚拟机,它属于完全虚拟化范畴,从Linux-2.6.20开始被包含在Linux内核中.KVM基于x86硬件虚拟化技术,它的运行要求Intel ...

  5. 改变Edit的光标(使用CreateCaret,ShowCaret和LoadBitmap三个API函数)

    看着Edit的光标,是不是觉得了无生趣,想不想换个形状来玩玩,其实很简单,且听我道来. Edit是Windows的标准控件,它是一个系统范围窗口类,所以任何应用程序都能创建它.其实Edit本质上也是一 ...

  6. Gap 锁

    14.3.1 InnoDB Locking InnoDB 锁 本章节描述InnoDB 使用的锁类型: Shared and Exclusive Locks Intention Locks Record ...

  7. DelphiXE7中创建WebService(服务端+客户端) good

    相关资料:http://www.2ccc.com/news/Html/?1507.html DelphiXE7新建WebService具体操作:1.打开“DelphiXE7”->“File”-& ...

  8. ps中图层混合模式、多图层叠加、不透明度、填充、图层样式详解

    图像领域中,通过进行一下想法的时候,都要通过用ps看下是不是合理,而ps中图层是必用的一个功能,下面详解一下图层有关的叠加原理. 基本顺序是图层从下往上继续, 先计算图层的填充,再计算样式.最后计算不 ...

  9. ubuntu12.04下搭建ftpserver

    楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网server上搭建一个ftp的server. 1.安装ftp 首先在终端下键入例如以下内容,安装ftpserver: sudo ...

  10. stm32 ARM中的RO、RW和ZI DATA

    一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将 ...