1.拟牛顿法思想
考虑f(x)在当前是xk处的二次函数
mk(x):=f(xk)+∇f(xk)T(x−xk)+12(x−xk)TBk(x−xk)
其中Bk≻0
利用min mk(x)得方向,dk=−B−1k∇f(xk)
拟牛顿法框架
- 0.初始化 x0,ϵ,B0≻0,k:=0
- 1.如果||∇f(xk)||≤ϵ?,注意这里对矩阵是做范数操作
- 2.计算dk=−B−1k∇f(xk),这里矩阵Bk每次都要修正
- 3.确定步长αk
- 4.令xk+1=xk+αkdk
关键问题:Bk+1矩阵的确定
2.拟牛顿法方程(基本要求)
在xk+1处,要获得Bk+1
∇f(xk+1)−∇f(xk)=Bk+1(xk+1−xk)
理解
{xk+1:∇f(xk+1);Bk+1xk:∇f(xk);Bk
⇒∇f(xk+1)−∇f(xk)=∇2f(ξ)(xk+1−xk)
ξ=λxk+(1−λ)xk+1,λ∈0,1,中值定理
(Bk+1)n×n∈Sn,有n(n+1)2个元素待定,n个方程
记yk=∇f(xk+1)−∇f(xk),sk=xk+1−xk,上式简记为
yk=Bk+1sk
共记Hk=B−1k
拟牛顿法方程表示为
sk=Hk+1yk
满足拟牛顿法方程的矩阵有很多!
3.构建矩阵Bk方法
基于已有信息(yk,Sk,Bk)获取Bk+1,或基于(yk,sk,Hk)获取Hk+1
第一类方法,选择满足拟牛顿法方程且与Bk近似的矩阵
min ||B−Bk||(范数),s.t. Bsk=yk,B=BT
或者
min ||H−Hk||,s.t. Hyk=sk
第二类方法:对Bk或者Hk进行校正,如(重点)
令Bk+1=Bk+ΔB
→rank−2校正,要求ΔB的秩为2,有DFP方法,BFGS方法
→rank−1校正,要求ΔB的秩为1,有SR−方法
4.DFP方法(Davidan-Fletcher-Powell)
DFP方法可以看做是对Hk进行rank-2校正
(DFP)Hk+1=Hk−HkykyTkHkyTkHkyk+sksTkyTksk
什么是秩1 矩阵?
任意向量u=⎛⎜
⎜
⎜⎝u1u2...un⎞⎟
⎟
⎟⎠,v=⎛⎜
⎜
⎜⎝v1v2...vn⎞⎟
⎟
⎟⎠,uTv就是秩1矩阵,uTu也是秩1矩阵,uTu+vTv就是秩2矩阵,u,v线性无关
则Hk+1=Hk+auuT+bwT,a,b是标量,u,v∈Rn,注意s.t. Hk+1yk=sk
代入Hkyk+auuTyk+bvvTyk=sk
Hkyk+auuTyk+bvvTyk−sk=0
令u=Hkyk,并且令前面一半Hkyk+auuTyk=0(随便取一个解就行)
得到1+auTyk=0
即a=−1uTyk=−1yTkHTkyk
继续令v=sk,并令bv(vTyk)−sk=0,得到(bvTyk−1)=0,b=1vTyk=1sTkyk
好了,结合上面两个结论就是DFP的公式
⎧⎨⎩a=−1uTyk=−1yTkHTkykb=1vTyk=1sTkyk
还有一条路,如果矩阵范数恰好是Frobenius范数,Bk+1是可以求出来的,也就是最优偶问题
⎧⎨⎩min ||B−Bk||Fs.t. Bsk=ykB=BT⇒B∗=Bk+1,同时,Bk+1的公式就是DFP公式
5.BFGS(Broyden-Fletcher-Goldfarb-Shannon)方法
这个Shannon 就是信息论的鼻祖
BFGS主要是从Bk,不是从Hk入手
BFGS公式
Bk+1=Bk−BksksTkBksTkBksk+ykyTkyTksk
推导过程和DFP过程是对称的
求Bk+1还要求逆,这么多此一举的原因是什么?
B−1k+1可利用Sherman−Morrison公式显示写出
Sherman-Morrison公式
设A∈Rm×n,且A为可逆矩阵,u,v∈Rn为列向量,则A+uvT可逆,当且仅当1+vTA−1u≠0,且当A+uvT可逆时,该逆矩阵公式如下
(A+uvT)−1=A−1−A−1uv−1A−11+vTA−1u
证明
思路,即证明(A+uvT)(A+uvT)T=(A+uvT)T(A+uvT)=I即可
(A+uvT)(A−1−A−1uv−1A−11+vTA−1u)
=AA−1+uvTA−1−AA−1uvTA−1+uvTA−1uvTA−11+vTA−1u
=I+uvTA−1−u(1+vTA−1u)1+vTA−1u
注意此时的分母1+vTA−1u是一个标量,上下可以约去,不过要求1+vTA−1u≠0
=I+uvTA−1−uvTA−1
=I
扩展
(A+uvTλ)−1=A−1−A−1uvA−1λ+vTA−1u
或者(A−uvTλ)−1=A−1−A−1uvA−1λ−vTA−1u
回到BFGS
BFGS是目前最有效的拟牛顿法,具有超线性收敛的性质
6.Broyden族
DFP与BFGS的线性组合
λBDFPk+1+(1−λ)BBFGSk+1,λ∈[0,1]
7.SR-1方法
rank-1校正
Bk+1=Bk+(yk−Bksk)(yk−Bksk)T(yk−Bksk)sk
Bk+1=Bk+auuT
满足Bk+1sk=yk
Bks+k+au(uTsk)=yk
au(uTsk)=yk−Bksk
令u=yk−Bksk,得到auTsk=1
即a=1uTsk=1(yk−Bksk)Tsk
将{u=yk−Bkska=1uTsk=1(yk−Bksk)Tsk代入Bk+1sk=yk
SR-1迭代公式更简单,但不能保证正定性,适当条件下才能达到n步超线性收敛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)