概述

拟牛顿方法类似于最速下降法,在每一步迭代过程中仅仅利用梯度信息,但是通过度量梯度之间的变化,能够产生超线性的收敛效果。本节主要学习一下知识点:
1. 拟牛顿方程推导
2. 几个常见的拟牛顿方法
3. 拟牛顿方法的收敛性

拟牛顿方程

拟牛顿方法既有线搜索的影子也有牛顿方法的思想,下面从两个角度分别介绍拟牛顿方程,即在拟牛顿方法中要遵循的一个原则。

线搜索角度

假设在第K步迭代过程中,对点xkx_k进行建模

mk(p)=fk+∇fTk+12pTBkp

m_k(p)=f_k+\nabla f_k^T+\frac12 p^TB_kp,这是一个相对标准的建模过程,在点x_k处寻找下一个搜索方向。该模型满足 mk(0)=fk; ∇mk(0)=∇fTkm_k(0)=f_k ; \ \nabla m_k(0)=\nabla f_k^T。
此时如果B为正定矩阵,则最优解为 pk=−B−1k∇fkp_k=-B_k^{-1}\nabla f_k。则下一个迭代值 xk+1=xk+αkpkx_{k+1}=x_k+\alpha_kp_k.
问题来了如何构造有效的 BkB_k呢,如果选择Hessian矩阵该方法就为线搜索的牛顿方法。
高人就想出了通过当前点和上一步的搜索点构造该矩阵的方法, 需要满足模型m和目标函数f在xk,xk+1x_k, x_{k+1}保持梯度一致

此时在xk+1x_{k+1}处的模型为

mk+1(p)=fk+1+∇fTk+1+12pTBk+1p

m_{k+1}(p)=f_{k+1}+\nabla f_{k+1}^T+\frac12 p^TB_{k+1}p,需要满足 xk,xk+1x_k,x_{k+1}梯度一致。则有

∇mk+1(xk+1)=∇fk+1∇mk+1(xk)=∇fk

\nabla m_{k+1}(x_{k+1})=\nabla f_{k+1} \\ \nabla m_{k+1}(x_{k})=\nabla f_{k}等价于

∇mk+1(0)=∇fk+1∇mk+1(−αkpk)=∇fk

\nabla m_{k+1}(0)=\nabla f_{k+1} \\ \nabla m_{k+1}(-\alpha_k p_k)=\nabla f_{k}从而有

∇mk+1(−αkpk)=∇fk+1−αkBk+1pk=∇fk

\nabla m_{k+1}(-\alpha_k p_k)=\nabla f_{k+1}-\alpha_kB_{k+1}p_k=\nabla f_{k}。根据 xk+1=xk+αkpkx_{k+1}=x_k+\alpha_kp_k有 Bk+1(xk+1−xk)=∇fk+1−∇fkB_{k+1}(x_{k+1}-x_k)=\nabla f_{k+1}-\nabla f_k。一般情况下记

sk=xk+1−xkyk=∇fk+1−∇fk

s_k=x_{k+1}-x_k \\ y_k=\nabla f_{k+1}-\nabla f_k
可以推出拟牛顿方程也叫(Secant equation):

Bk+1sk=yk

B_{k+1}s_k=y_k

牛顿法角度

拟牛顿方法也可以认为是一种特殊的共轭梯度算法,其主要思想是利用目标函数梯度的差分构造目标函数Hessian矩阵的某种近似,然后基于牛顿方程产生搜索方向,最后通过线搜索完成迭代过程。
假设在点xk+1x_{k+1}处进行泰勒展开有

f(x)=fk+1+∇fTk+1(x−xk+1)+12(x−xk+1)T∇2fk+1(x−xk+1)

f(x)=f_{k+1}+\nabla f_{k+1}^T(x-x_{k+1})+\frac12 (x-x_{k+1})^T\nabla^2f_{k+1}(x-x_{k+1})
两端对x求梯度并且 x=xkx=x_k有

∇fk=∇fk+1+∇2fk+1(xk−xk+1)

\nabla f_k=\nabla f_{k+1}+\nabla^2f_{k+1}(x_k-x_{k+1}),整理后得到

∇2fk+1(xk+1−xk)=∇fk+1−∇fk

\nabla^2f_{k+1}(x_{k+1}-x_k)=\nabla f_{k+1}-\nabla f_k由于Hessian矩阵比较难求解,用其近似矩阵 Bk+1B_{k+1}代替,同时借用上面的表达式有 Bk+1sk=ykB_{k+1}s_k=y_k。
如果记 Hk+1=B−1k+1H_{k+1}=B_{k+1}^{-1},也有 Hk+1sk=ykH_{k+1}s_k=y_k。
以上两种形式都称为拟牛顿方程。

拟牛顿方程:Bk+1sk=ykB_{k+1}s_k=y_k或者Hk+1sk=ykH_{k+1}s_k=y_k

拟牛顿方程成立条件

由于BkB_k需要满足对称正定,因此需要满足sTkyk≥0s_k^Ty_k \ge 0,如果步长满足一定条件,例如Wolfe条件,则上式一定成立。

前半部分是由于sTkBk+1sk=skyks_k^TB_{k+1}s_k=s_k y_k,由于B是正定的,肯定必须满足两个向量相乘大于0

后半部分是由于,Wolfe条件的第二个约束是

∇fTk+1sk≥c2∇fTksk<=>∇fTk+1sk−∇fTksk≥c2∇fTksk−∇fTksk<=>yTksk≥(c1−1)αk∇fTkpk

\nabla f_{k+1}^Ts_k \ge c_2 \nabla f_k^Ts_k \\ \nabla f_{k+1}^Ts_k-\nabla f_k^Ts_k \ge c_2 \nabla f_k^Ts_k-\nabla f_k^Ts_k \\y_k^Ts_k \ge (c_1-1)\alpha_k \nabla f_k^T p_k 由于 c2<1c_2 如果搜索方向是下降方向则一定是大于0的。

拟牛顿方法

根据拟牛顿方程可以找到很多满足约束的矩阵,为求解方便需要进行一些约束,主要是秩的约束,由此产生了下面一些方法。

DFP方法

为保证B求解的唯一性,寻找满足条件约束并且离BkB_k最近的一个矩阵,因此问题转变为:

min||B−Bk|| s.tB=BT Bsk=yk

min ||B-B_k|| \ s.t B=B^T \ Bs_k=y_k。
如果上面范数选择Weighted Frobenius范数并且加权矩阵采用平均Hessian,则可以推导出一个唯一确定的解

Bk+1=(I−ρkyksTk)Bk(I−ρkyksTk)+ρkykyTk

B_{k+1}=(\mathbf I-\rho_ky_ks_k^T)B_k(\mathbf I-\rho_ky_ks_k^T)+\rho_ky_ky_k^T其中

ρk=1/(yTksk)

\rho_k=1/(y_k^Ts_k)。由于实际应用时会用到 Hk+1=B−1k+1H_{k+1}=B_{k+1}^{-1},根据一个求逆公式(Morrison-Woodbury)可以得到

Hk+1=Hk−HkykyTkHkyTkHkyk+sksTkyTksk

H_{k+1}=H_k-\frac{H_ky_ky_k^TH_k}{y_k^TH_ky_k}+\frac{s_ks_k^T}{y_k^Ts_k}
该构造方法称之为DFP方法

BFGS方法

类似于DFP方法,如果利用第二个拟牛顿方程,问题转变为:

min||H−Hk|| s.tH=HT Hsk=yk

min ||H-H_k|| \ s.t H=H^T \ Hs_k=y_k。
如果上面范数选择Weighted Frobenius范数并且加权矩阵采用平均Hessian,则可以推导出一个唯一确定的解

Hk+1=(I−ρkskyTk)Hk(I−ρkskyTk)+ρksksTk

H_{k+1}=(\mathbf I-\rho_ks_ky_k^T)H_k(\mathbf I-\rho_ks_ky_k^T)+\rho_ks_ks_k^T其中

ρk=1/(yTksk)

\rho_k=1/(y_k^Ts_k)。根据一个求逆公式(Morrison-Woodbury)可以得到

Bk+1=Bk−BksksTkBksTkBksk+ykyTkyTksk

B_{k+1}=B_k-\frac{B_ks_ks_k^TB_k}{s_k^TB_ks_k}+\frac{y_ky_k^T}{y_k^Ts_k}
该构造方法称之为BFGS方法,利用四个发明者名字进行命名。

DFP和BFGS关系

可以看到DFP和BFGS好像是将sk,yk以及Bk,Hks_k,y_k以及B_k,H_k进行了位置替换。理论证明他们互为对偶。

  1. BFGS和DFP一个比较好的性质是,如果H_k是正定的,则下一个Hk+1H_{k+1}也是正定的,可以从公式中推导出来。
  2. BFGS和DFP都有一定能力进行自我修正,如果某个位置选择的矩阵不好,在未来几步呢,可以自我修复。这个能力,BFGS比DFP效果要好,这也是BFGS比较常用的原因。
  3. 不好的地方就是:需要存储这个对称矩阵。

BFGS算法如下图所示

实际实现中初始值H0H_0一般选择单位,初始化步长为1。 Wolfe条件中的参数c1=10−1,c2=0.9c_1=10^{-1}, c_2=0.9

SR-1方法

上面推导DFP和BFGS方法是从最优化角度进行考虑,由于满足拟牛顿方程解个数不止一个,另外一个自然的想法就是通过对BkB_k进行修正从而得到Bk+1B_{k+1},即

Bk+1=Bk+ΔBk

B_{k+1}=B_k+\Delta B_k。习惯上根据 ΔBk\Delta B_k的秩来称呼校正公司,例如秩-1校正公式和秩-2校正公式

秩-2校正公式

DFP秩-2校正公式

Hk+1=Hk+asksTk+bHkykyTkHk

H_{k+1}=H_k+as_ks_k^T+bH_ky_ky_k^TH_k
BFGS秩-2校正公式

Bk+1=Bk+aykyTk+bBksksTkBk

B_{k+1}=B_k+ay_ky_k^T+bB_ks_ks_k^TB_k根据拟牛顿方程可以推导出参数a和b的值,最终结果和上述最优化问题保持一致。

秩-1校正公式(SR-1)

SR-1校正公式为

Hk+1=Hk+vkvTk

H_{k+1}=H_k+v_kv_k^T根据拟牛顿条件可以推导出

Hk+1=Hk+(sk−Hkyk)(sk−Hkyk)T(sk−Hkyk)Tyk

H_{k+1}=H_k+\frac{(s_k-H_ky_k)(s_k-H_ky_k)^T}{(s_k-H_ky_k)^Ty_k}

优缺点

相对与BFGS

  1. SR1能够更好的拟合Hessian矩阵,因此在一些带约束的问题或者部分可导的函数,不总是能满足Wolfe条件或者sTkyks_k^Ty_k是大于0的
  2. SR1最大缺点是不能保证每一求解到的矩阵Hk+1H_{k+1}是正定的

Broyden族校正公式

校正公式为:

Hk+1=Hk+asksTk+b(HkyksTk+skyTkHk)+cHkykyTkHk

H_{k+1}=H_k+as_ks_k^T+b(H_ky_ks_k^T+s_ky_k^TH_k)+cH_ky_ky_k^TH_k可以根据牛顿条件求解到参数值。

SR-1、DFP和BFGS都是该一族算法,共同的问题是
1) 不能利用目标函数的稀疏性质
2)需要存储中间矩阵H

收敛性

拟牛顿方法具有全局收敛性并且有超线性的收敛速度

总结

通过本节的学习能够了解
1. 拟牛顿方程以及由来
2. DFP、BFGS方法的迭代公式以及使用条件、场景和优缺点
3. 了解其收敛速度

数值优化(Numerical Optimization)学习系列-拟牛顿方法(Quasi-Newton)相关推荐

  1. 求解非约束优化问题的拟牛顿方法(BFGS、DFP)

    求解非约束优化问题的拟牛顿方法(BFGS.DFP) 拟牛顿法是一种以牛顿法为基础设计的,求解非线性方程组或连续的最优化问题函数的零点或极大.极小值的算法.当牛顿法中所要求计算的雅可比矩阵或Hessia ...

  2. 如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归。log

    如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归.logi ...

  3. 经典数值优化算法--专题学习

    通用的损失函数最优化的数值方法,来源于泰勒展开式,多元函数的泰勒展开式为: 一.一阶逼近与一阶方法 一阶泰勒展开式: 其中,是代表了β变化的可能性,t在之后说到的梯度下降方法中演变成了学习速率. 现在 ...

  4. 数值优化(Numerical Optimization)学习系列-文件夹

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...

  5. 数值优化(Numerical Optimization)学习系列-目录

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程可以参考的资料有 1. <Numerical Optim ...

  6. 数值优化-信赖域方法

    信赖域方法 除了之前讲过的线搜索方法,信赖域方法(trust region)也是数值优化中的一类重要的方法.在信赖域方法中我们需要定义一个信赖域,在这个信赖域中使用替代函数来代替原来的目标函数,通过优 ...

  7. 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods)

    原文地址为: 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods) 概述 求解带约束的最优化问题,一类很 ...

  8. 无约束优化:Hessian-Free Optimization 拟牛顿类算法(BFGS,L-BFGS)

    文章目录 无约束优化:Hessian-Free Optimization 拟牛顿类算法(BFGS,L-BFGS) 为什么要用拟牛顿算法 割线方程 严格凸且光滑函数的BFGS算法 非凸但光滑函数的BFG ...

  9. 复旦大学吴立德《数值优化》、《深度学习》和

    http://i.youku.com/i/UNjAzMzA4NjQ=/playlists?spm=a2hzp.8253869.0.0 [1]复旦大学吴立德教授讲授的<数值优化>. 使用教材 ...

最新文章

  1. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )
  2. 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
  3. 连载:阿里巴巴大数据实践—数据建模综述
  4. php+中午截取,php中截取中文字符串的代码小结
  5. 用JS获取地址栏参数的方法(超级简单)
  6. 现代软件工程讲义 如何提出靠谱的项目建议
  7. python常用代码大全-Python常用库大全,看看有没有你需要的
  8. axure原型素材模板-手机端蓝色科幻科技动态酷炫游戏大数据手机H5页面模板素材聊天
  9. java企业公文流转系统ssm框架
  10. 中小企业(OA)办公系统方案 huangai[VA]
  11. PS的对图像一些简单处理
  12. Hadoop大数据技术课程总结2021-2022学年第1学期
  13. unity隐藏鼠标光标的2种方法
  14. 【pytorch图像分类】AlexNet网络结构
  15. 哇塞!集齐7张卡片,真的可以召唤神龙耶!
  16. ubuntu16.04 重装系统后要做的事情总结
  17. python爬虫从入门到放弃,含案例分析,超详细讲解(一)
  18. 怎么搭建建设符合SEO优化的企业官网网站呢?
  19. 数据库设计——医药销售管理系统
  20. Excel生成条形码

热门文章

  1. [Eclipse插件开发-001] SWT/JFACE布局入门总结
  2. swift5 ios的国际化(本地化,全球化,多语言)(最主要博客)
  3. THINKPAD X200 无光驱 U盘 安装XP SP3
  4. 零基础如何学编程?网易云高级工程师告诉你方法,不要错过了!
  5. webuploader在ie7下的flash模式的使用
  6. Verilog的generate的用法
  7. html引入公共的头部,导航栏,尾部
  8. linux core文件默认位置,linux下core文件
  9. 第三章 正则表达式括号的作用
  10. 移动架构 (一) 详解架构设计中UML图的使用