BFGS

本文详细介绍了BFGS算法的工作原理及其优化版本L-BFGS。通过数学推导展示了BFGS如何利用近似海森矩阵进行优化,并解释了L-BFGS如何在保持精度的同时减少内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BFGS

step 1.

根据泰勒公式,省略掉高阶项:

f(x)f(xk+1)+f(xk+1)(xxk+1)+12(xxk+1)T2f(xk+1)(xxk+1) f ( x ) ≈ f ( x k + 1 ) + ∇ f ( x k + 1 ) ⋅ ( x − x k + 1 ) + 1 2 ⋅ ( x − x k + 1 ) T ⋅ ∇ 2 f ( x k + 1 ) ⋅ ( x − x k + 1 )

再两边取导数得

f(x)=f(x+1)+Hk+1(xxk+1) ∇ f ( x ) = ∇ f ( x + 1 ) + H k + 1 ( x − x k + 1 )

此时,取 x=xk x = x k ,并设 f(xk)=gk,2f(xk)=Hk ∇ f ( x k ) = g k , ∇ 2 f ( x k ) = H k

gk+1gk=Hk+1(xk+1xk) g k + 1 − g k = H k + 1 ⋅ ( x k + 1 − x k ) ,设 gk+1gk=yk g k + 1 − g k = y k , xk+1xk=Sk x k + 1 − x k = S k

则有

yk=Hk+1Sk(1) (1) y k = H k + 1 ⋅ S k

step 2.

Bk B k 表示海森矩阵 Hk H k 的近似,用 Dk D k 表示 Hk1 H k − 1 (海森矩阵的逆)的近似

Bk+1=Bk+ΔBk B k + 1 = B k + Δ B k

Bk=αuuT+βvvT ∇ B k = α u u T + β v v T ,其中 u u v v 是n维向量

又由(1)得 yk=Bk+1Sk y k = B k + 1 ⋅ S k

所以

yk=BkSk+αuuTSk+βvvTSk y k = B k ⋅ S k + α u u T S k + β v v T S k

yk=BkSk+αuTSku+βvTSkv y k = B k ⋅ S k + α u T S k u + β v T S k v (之所以能这么换位置,是因为 uTSk u T S k 是一个数,而不是一个矩阵或向量)

αuTSk=1βvTSk=1u=ykv=BkSk}Bk+1ykSk { α u T S k = 1 β v T S k = 1 u = y k v = B k S k } 这 样 设 是 为 了 将 B k + 1 能 用 y k 和 S k 表 示

可以解得

α=1yTkSk α = 1 y k T S k

β=1vTSk=1STkBTkSk β = − 1 v T S k = − 1 S k T B k T S k

所以

ΔBk=ykyTkyTkSkBkSkSTkBTKSTKBTKSk(2) (2) Δ B k = y k y k T y k T S k − B k S k S k T B K T S K T B K T S k

后面转自:

作者: peghoty

出处: http://blog.youkuaiyun.com/itplus/article/details/21897443

这里写图片描述

这里写图片描述

这里写图片描述

L-BFGS

所谓L-BFGS是对BFGS进行了空间优化:
这是由于向量维数n到达了一定数量级, n×n n × n 的矩阵需要相当大的内存。

L-BFGS算法并没有直接存储整个矩阵,而是在需要用到时,根据若干个n维向量来计算。

由于计算的结果需要用到之前每一次迭代/循环中的结果, L-BFGS算法只保存了最近的m次迭代的结果,所以L-BFGS算法又做了近似。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值