拟牛顿法BFGS的一些修正公式

牛顿法 (Newton Method)
牛顿法的基本思想是在极小点附近通过对目标函数 f ( x ) f(x) f(x)做二阶Taylor展开,进而找到 f ( x ) f(x) f(x)的极小点的估计值[1]。一维情况下,也即令函 φ ( x ) \varphi(x) φ(x)

φ ( x ) = f ( x k ) + f ′ ( x k ) ( x − x k ) + 1 2 f ′ ′ ( x k ) ( x − x k ) 2 \varphi(x) = f(x_k)+f^{'}(x_k)(x-x_k)+\frac{1}{2}f^{''}(x_k)(x-x_k)^2 φ(x)=f(xk)+f(xk)(xxk)+21f(xk)(xxk)2

则其导数 φ ′ ( x ) \varphi^{'}(x) φ(x)满足

φ ′ ( x ) = f ′ ( x k ) + f ′ ′ ( x k ) ( x − x k ) = 0 \varphi^{'}(x) =f^{'}(x_k)+f^{''}(x_k)(x-x_k)=0 φ(x)=f(xk)+f(xk)(xxk)=0

因此

x k + 1 = x k − f ′ ( x k ) f ′ ′ ( x k ) x_{k+1}=x_k-\frac{f^{'}(x_k)}{f^{''}(x_k)} xk+1=xkf(xk)f(xk) (1)

x k + 1 x_{k+1} xk+1作为 f ( x ) f(x) f(x)极小点的一个进一步的估计值。重复上述过程,可以产生一系列的极小点估值集合 { x k } \{x_k\} {xk}。一定条件下,这个极小点序列 { x k } \{x_k\} {xk}收敛于 f ( x ) f(x) f(x)的极值点。

将上述讨论扩展到 N N N维空间,类似的,对于 N N N维函数 f ( x ) f(\mathbf{x}) f(x)

f ( x ) ≈ φ ( x ) = f ( x k ) + ∇ f ( x k ) ( x − x k ) + 1 2 ( x − x k ) T ∇ 2 f ( x − x k ) f(\mathbf{x})\approx \varphi(\mathbf{x})=f(\mathbf{x}_k)+\nabla f(\mathbf{x}_k)(\mathbf{x}-\mathbf{x}_k)+\frac{1}{2}(\mathbf{x}-\mathbf{x}_k)^{\rm T}\nabla^2 f(\mathbf{x}-\mathbf{x}_k) f(x)φ(x)=f(xk)+f(xk)(xxk)+21(xxk)T2f(xxk)

其中 ∇ f ( x ) \nabla f(\mathbf{x}) f(x) ∇ 2 f ( x ) \nabla^2f(\mathbf{x}) 2f(x)分别是目标函数的的一阶和二阶导数,表现为 N N N维向量和 N N N × \times × N N N矩阵,而后者又称为目标函数 f ( x ) f(\mathbf{x}) f(x) x k \mathbf{x}_k xk处的Hesse矩阵。 设 ∇ 2 f ( x ) \nabla^2f(\mathbf{x}) 2f(x)可逆,则可得与方程(1)类似的迭代公式:

x k + 1 = x k − [ ∇ 2 f ( x k ] − 1 ∇ f ( x k ) \mathbf{x}_{k+1}=\mathbf{x}_k-[\nabla^2f(\mathbf{x}_k]^{-1}\nabla f(\mathbf{x}_k) xk+1=xk[2f(xk]1f(xk) (2)

这就是原始牛顿法的迭代公式。

原始牛顿法虽然具有二次终止性(即用于二次凸函数时,经有限次迭代必达极小点),但是要求初始点需要尽量靠近极小点,否则有可能不收敛。因此人们又提出了阻尼牛顿法[1]。这种方法在算法形式上等同于所有流行的优化方法,即确定搜索方向,再沿此方向进行一维搜索,找出该方向上的极小点,然后在该点处重新确定搜索方向,重复上述过程,直至函数梯度小于预设判据 ϵ \epsilon ϵ。具体步骤列为算法1。

算法1:

(1) 给定初始点 x 0 \mathbf{x}_0 x0,设定收敛判据 ϵ \epsilon ϵ k = 0 k=0 k=0.

(2) 计算 ∇ f ( x k ) \nabla f(\mathbf{x}_k) f(xk) ∇ 2 f ( x k ) \nabla^2f(\textbf{x}_k) 2f(xk).

(3) 若 ∣ ∣ ∇ f ( x k ) ∣ ∣ < ϵ ||\nabla f(\mathbf{x}_k)|| < \epsilon f(xk)<ϵ,则停止迭代,否则确定搜索方向 d k = − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) \mathbf{d}_k=-[\nabla^2f(\mathbf{x}_k)]^{-1} \nabla f(\mathbf{x}_k) dk=[2f(xk)]1f(xk).

(4) 从 x k \mathbf{x}_k xk出发,沿 d k \mathbf{d}_k dk做一维搜索,

min ⁡ λ f ( x k + λ d k ) = f ( x k + λ k d k ) \underset{\lambda}{\min}f(\mathbf{x}_k+\lambda\mathbf{d}_k)=f(\mathbf{x}_k+\lambda_k\mathbf{d}_k) λminf(xk+λdk)=f(xk+λkdk)

x k + 1 = x k + λ k d k \mathbf{x}_{k+1}=\mathbf{x}_k+\lambda_k\mathbf{d}_k xk+1=xk+λkdk.

(5) 设 k = k + 1 k=k+1 k=k+1,转步骤(2).

在一定程度上,阻尼牛顿法具有更强的稳定性

拟牛顿法

如同上一节指出,牛顿法虽然收敛速度快,但是计算过程中需要计算目标函数的二阶偏导数,难度较大。更为复杂的是目标函数的Hesse矩阵无法保持正定,从而令牛顿法失效。为了解决这两个问题,人们提出了拟牛顿法。这个方法的基本思想是不用二阶偏导数而构造出可以近似Hesse矩阵的逆的正定对称阵, 从而在"拟牛顿"的条件下优化目标函数。构造方法的不同决定了不同的拟牛顿法。

首先分析如何构造矩阵可以近似Hesse矩阵的逆:

设第k次迭代之后得到点 x k + 1 \mathbf{x}_{k+1} xk+1,将目标函数 f ( x ) f(\mathbf{x}) f(x) x k + 1 \mathbf{x}_{k+1} xk+1处展成Taylor级数,取二阶近似,得到

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(\mathbf{x})\approx f(\mathbf{x}_{k+1})+\nabla f(\mathbf{x}_{k+1})(\mathbf{x}-\mathbf{x}_{k+1})+\frac{1}{2}(\mathbf{x}-\mathbf{x}_{k+1})^{\rm T}\nabla^2f(\mathbf{x}_{k+1})(\mathbf{x}-\mathbf{x}_{k+1}) f(x)f(xk+1)+f(xk+1)(xxk+1)+21(xxk+1)T2f(xk+1)(xxk+1)

因此

∇ f ( x ) ≈ ∇ f ( x k + 1 ) + ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) \nabla f(\mathbf{x}) \approx \nabla f(\mathbf{x}_{k+1})+\nabla^2f(\mathbf{x}_{k+1})(\mathbf{x}-\mathbf{x}_{k+1}) f(x)f(xk+1)+2f(xk+1)(xxk+1)

x = x k \mathbf{x}=\mathbf{x}_k x=xk,则

∇ f ( x k + 1 ) − ∇ f ( x k ) ≈ ∇ 2 f ( x k + 1 ) ( x k − x k + 1 ) \nabla f(\mathbf{x}_{k+1})-\nabla f(\mathbf{x}_k) \approx\nabla^2f(\mathbf{x}_{k+1})(\mathbf{x}_k-\mathbf{x}_{k+1}) f(xk+1)f(xk)2f(xk+1)(xkxk+1) (3)

s k = x k + 1 − x k , y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) \mathbf{s}_k=\mathbf{x}_{k+1}-\mathbf{x}_k,\quad \mathbf{y}_k=\nabla f(\mathbf{x}_{k+1})-\nabla f(\mathbf{x}_k) sk=xk+1xk,yk=f(xk+1)f(xk)

同时设Hesse矩阵 ∇ 2 f ( x k + 1 ) \nabla^2f(\mathbf{x}_{k+1}) 2f(xk+1)可逆,则方程(3)可以表示为

s k ≈ [ ∇ 2 f ( x k + 1 ) ] − 1 y k \mathbf{s}_k \approx [\nabla^2f(\mathbf{x}_{k+1})]^{-1}\mathbf{y}_k sk[2f(xk+1)]1yk (4)

因此,只需计算目标函数的一阶导数,就可以依据方程(4)估计该处的Hesse矩阵的逆。也即,为了用不包含二阶导数的矩阵 H k + 1 \mathbf{H}_{k+1} Hk+1近似牛顿法中的Hesse矩阵 ∇ 2 f ( x k + 1 ) \nabla^2f(\mathbf{x}_{k+1}) 2f(xk+1)的逆矩 阵, H k + 1 \mathbf{H}_{k+1} Hk+1必须满足

s k ≈ H k + 1 y k \mathbf{s}_k \approx \mathbf{H}_{k+1}\mathbf{y}_k skHk+1yk (5)

方程(5)也称为拟牛顿条件。不加证明的,下面给出两个最常用的 H k + 1 \mathbf{H}_{k+1} Hk+1构造公式

BFGS公式

BFGS公式有时也称为DFP公式的对偶公式。这是因为其推导过程与方程(6)完全一样,只需要用矩阵 B k + 1 \mathbf{B}_{k+1} Bk+1取代 H k + 1 − 1 \mathbf{H}_{k+1}^{-1} Hk+11,同时将 s k \mathbf{s}_k sk y k \mathbf{y}_k yk互换,最后可以得到

H k + 1 = H k + [ 1 + y k T H k y k s k T y k ] ⋅ s k s k T s k T y k − s k y k T H k s k T y k \mathbf{H}_{k+1}=\mathbf{H}_k+[1+\frac{\mathbf{y}_k^{\rm T}\mathbf{H}_k\mathbf{y}_k}{\mathbf{s}_k^{\rm T}\mathbf{y}_k}]\cdot\frac{\mathbf{s}_k\mathbf{s}_k^{\rm T}}{\mathbf{s}_k^{\rm T}\mathbf{y}_k}-\frac{\mathbf{s}_k\mathbf{y}_k^{\rm T}\mathbf{H}_k}{\mathbf{s}_k^{\rm T}\mathbf{y}_k} Hk+1=Hk+[1+skTykykTHkyk]skTykskskTskTykskykTHk (7)

这个公式要优于DFP公式,因此目前得到了最为广泛的应用。

利用方程(6)或(7)的拟牛顿法计算步骤列为算法2。

算法2:

(1) 给定初始点 x 0 \mathbf{x}_0 x0,设定收敛判据 ϵ \epsilon ϵ k = 0 k=0 k=0.

(2) 设 H 0 = I \mathbf{H}_0 = \mathbf{I} H0=I,计算出目标函数 f ( x ) f(\mathbf{x}) f(x) x k \mathbf{x}_k xk处的梯度 g k = ∇ f ( x k ) g_k = \nabla f(\mathbf{x}_k) gk=f(xk).

(3) 确定搜索方向 d k \mathbf{d}_k dk

d k = H k g k \quad \mathbf{d}_k = \mathbf{H}_k\mathbf{g}_k dk=Hkgk.

(4) 从 x k \mathbf{x}_k xk出发,沿 d k \mathbf{d}_k dk做一维搜索,满足

f ( x k + λ k d k ) = min ⁡ λ ≥ 0 f ( x k + λ d k ) f(\mathbf{x}_k+\lambda_k\mathbf{d}_k) = \underset{\lambda\geq 0}{\min}f(\mathbf{x}_k+\lambda\mathbf{d}_k) f(xk+λkdk)=λ0minf(xk+λdk)

x k + 1 = x k + λ k d k \mathbf{x}_{k+1}=\mathbf{x}_k+\lambda_k\mathbf{d}_k xk+1=xk+λkdk.

(5) 若 ∣ ∣ f ( x k + 1 ) ∣ ∣ ≤ ϵ ||f(\mathbf{x}_{k+1})|| \leq \epsilon f(xk+1)ϵ,则停止迭代,得到最优解 x = x k + 1 \mathbf{x}=\mathbf{x}_{k+1} x=xk+1,否则进行步骤(6).

(6) 若 k = N − 1 k=N-1 k=N1,则令 x 0 = x k + 1 \mathbf{x}_0 = \mathbf{x}_{k+1} x0=xk+1,回到步骤(2),否则进行步骤(7).

(7) 令 g k + 1 = f ′ ( x k + 1 ) \mathbf{g}_{k+1}=f^{'}(\mathbf{x}_{k+1}) gk+1=f(xk+1) s k = x k + 1 − x k \mathbf{s}_k= \mathbf{x}_{k+1}-\mathbf{x}_k sk=xk+1xk y k = g k + 1 − g k \mathbf{y}_k=\mathbf{g}_{k+1}- \mathbf{g}_k yk=gk+1gk,利用方程(6)或(7)计算 H k + 1 \mathbf{H}_{k+1} Hk+1,设 k = k + 1 k = k+1 k=k+1,回到步骤(3)。

对于二次凸函数,BFGS算法具有良好的全局收敛性。但是对于二次非凸函数,也即目标函数Hesse矩阵非正定的情况,无法保证按照BFGS算法构造的拟牛顿方向必为下降方向。为了推广BFGS公式的应用范围,很多工作提出了对BFGS公式稍作修改或变形的办法。下面举两个例子。

Li-Fukushima方法[3]
Li和Fukushima提出新的构造矩阵 H k \mathbf{H}_k Hk的方法:

H k + 1 − 1 = H k − 1 − H k − 1 s k s k T H k − 1 s k T H k − 1 s k + y k ∗ y k ∗ T y k ∗ T s k \mathbf{H}^{-1}_{k+1}=\mathbf{H}^{-1}_k-\frac{\mathbf{H}^{-1}_k\mathbf{s}_k\mathbf{s}^{\rm T}_k\mathbf{H}^{-1}_k}{\mathbf{s}^{\rm T}_k\mathbf{H}^{-1}_k\mathbf{s}_k}+\frac{\mathbf{y}^{\ast}_k\mathbf{y}^{\ast\rm T}_k}{\mathbf{y}^{\ast\rm T}_k\mathbf{s}_k} Hk+11=Hk1skTHk1skHk1skskTHk1+ykTskykykT

H k + 1 = ( I − ρ k ∗ s k y k ∗ T ) H k ( I − ρ k ∗ y k ∗ T s k T ) + ρ k ∗ s k s k T \mathbf{H}_{k+1}=(\mathbf{I}-\rho^{\ast}_k\mathbf{s}_k\mathbf{y}^{\ast\rm T}_k)\mathbf{H}_k(\mathbf{I}-\rho^{\ast}_k\mathbf{y}^{\ast\rm T}_k\mathbf{s}^{\rm T}_k)+\rho^{\ast}_k\mathbf{s}_k\mathbf{s}^{\rm T}_k Hk+1=(IρkskykT)Hk(IρkykTskT)+ρkskskT (11)

其中

y k ∗ = g k + 1 − g k + t k ∣ ∣ g k ∣ ∣ s k \mathbf{y}^{\ast}_k=\mathbf{g}_{k+1}-\mathbf{g}_k+t_k||\mathbf{g}_k||\mathbf{s}_k yk=gk+1gk+tkgksk
t k = 1 + max ⁡ { 0 , − y k T s k ∣ ∣ s k ∣ ∣ 2 } t_k=1+\max\{0, \frac{-\mathbf{y}^{\rm T}_k\mathbf{s}_k}{||\mathbf{s}_k||^2}\} tk=1+max{0,sk2ykTsk}

y k \mathbf{y}_k yk的定义见算法2中步骤(7),而

ρ k ∗ = 1 y k ∗ T s k \rho^{\ast}_k=\frac{1}{\mathbf{y}^{\ast\rm T}_k\mathbf{s}_k} ρk=ykTsk1

除此之外,算法2中步骤(3)的一维搜索采用如下方式:

给定两个参数 σ ∈ ( 0 , 1 ) \sigma \in (0,1) σ(0,1) ϵ ∈ ( 0 , 1 ) \epsilon \in (0,1) ϵ(0,1),找出最小的非负整数j,满足

f ( x k + ϵ j d k ) ≤ f ( x k ) + σ ϵ j g k T d k f(\mathbf{x}_k+\epsilon_j\mathbf{d}_k)\leq f(\mathbf{x}_k)+\sigma\epsilon_j\mathbf{g}^{\rm T}_k\mathbf{d}_k f(xk+ϵjdk)f(xk)+σϵjgkTdk

j k = j j_k=j jk=j,步长 λ k = ϵ j k \lambda_k=\epsilon_{j_k} λk=ϵjk

Xiao-Wei-Wang方法[4]

Xiao、Wei和Wang提出了计入目标函数值 f ( x ) f(\mathbf{x}) f(x)的另一种 H k \mathbf{H}_k Hk的构造方法:

y k † = y k + α k s k \mathbf{y}^{\dagger}_k = \mathbf{y}_k+\alpha_k\mathbf{s}_k yk=yk+αksk,其中

α k = 1 ∣ ∣ s k ∣ ∣ 2 [ 2 ( f ( x k ) − f ( x k + 1 ) + ( g k + 1 + g k ) T s k ] \alpha_k = \frac{1}{||\mathbf{s}_k||^2}[2(f(\mathbf{x}_k)-f(\mathbf{x}_{k+1})+(\mathbf{g}_{k+1}+\mathbf{g}_k)^{\rm T}\mathbf{s}_k] αk=sk21[2(f(xk)f(xk+1)+(gk+1+gk)Tsk]

H k \mathbf{H}_k Hk的构造方法与方程(7)和(11)形式相同:

H k + 1 = ( I − ρ k † s k y k † T ) H k ( I − ρ k † y k † ) s k T + ρ k † s k s k T \mathbf{H}_{k+1}=(\mathbf{I}-\rho^{\dagger}_k\mathbf{s}_k\mathbf{y}^{\dagger\rm T}_k)\mathbf{H}_k(\mathbf{I}-\rho^{\dagger}_k\mathbf{y}^{\dagger}_k)\mathbf{s}^{\rm T}_k+\rho^{\dagger}_k\mathbf{s}_k\mathbf{s}^{\rm T}_k Hk+1=(IρkskykT)Hk(Iρkyk)skT+ρkskskT (12)
相应的 ρ k † = 1 y k † T s k \rho^{\dagger}_k=\frac{1}{\mathbf{y}^{\dagger\rm T}_k\mathbf{s}_k} ρk=ykTsk1
而一维搜索则采用弱Wolfe-Powell准则:

给定两个参数 δ ∈ ( 0 , 1 / 2 ) \delta\in (0,1/2) δ(0,1/2) σ ∈ ( δ , 1 ) \sigma\in (\delta,1) σ(δ,1),找出步长 λ k \lambda_k λk,满足

f ( x k + λ k d k ) ≤ f ( x k ) + δ λ k g k T d k f(\mathbf{x}_k+\lambda_k\mathbf{d}_k) \leq f(\mathbf{x}_k)+\delta\lambda_k\mathbf{g}^{\rm T}_k\mathbf{d}_k f(xk+λkdk)f(xk)+δλkgkTdk (13)

g k + 1 T d k ≥ σ g k T d k \mathbf{g}^{\rm T}_{k+1}\mathbf{d}_k \geq \sigma\mathbf{g}^{\rm T}_k\mathbf{d}_k gk+1TdkσgkTdk (14)

如果 λ k \lambda_k λk = 1 1 1满足方程(13)、(14),则取 λ k \lambda_k λk = 1 1 1

可以看出,这两种方法只是改变了 y k \mathbf{y}_k yk的定义方式,其他则与标准的BFGS方法完全一样。因此将二者推广到限域形式是非常直接的,这里不再给出算法。对于二次非凸函数的拟牛顿方法还在进一步发展当中,上述的两个例子并不一定是最佳算法。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值