秩1修正公式
在秩1修正公式中,修正项为αkz(k)z(k)T,αk∈R,z(k)∈Rn,是一个对称矩阵,近似矩阵的更新方程为:
Hk+1=Hk+αkz(k)z(k)T
注意:
rankz(k)z(k)T=rank(⎡⎣⎢⎢⎢⎢⎢⎢z(k)1z(k)2⋮z(k)n⎤⎦⎥⎥⎥⎥⎥⎥[z(k)1,z(k)2,…,z(k)n])=1
所以称为秩1修正算法。如果 Hk是对称的,则 Hk+1也是对称的。
接下来的问题是在给定的 Hk,Δg(k),Δx(k)的前提下,确定合适的 αk,z(k), 保证:
Hk+1Δg(k)=(Hk+αkz(k)z(k)T)Δg(k)=Δx(k)
注意, z(k)TΔg(k)是一个标量,因此:
Δx(k)−HkΔg(k)=(αkz(k)TΔg(k))z(k)(1)
有:
z(k)=Δx(k)−HkΔg(k)αk(z(k)TΔg(k))
可得:
αkz(k)z(k)T=(Δx(k)−HkΔg(k))(Δx(k)−HkΔg(k))Tαk(z(k)TΔg(k))2
那么近似矩阵的中间更新方程为:
Hk+1=Hk+(Δx(k)−HkΔg(k))(Δx(k)−HkΔg(k))Tαk(z(k)TΔg(k))2(2)
在(1)式两端同乘以 Δg(k)T:
Δg(k)TΔx(k)−Δg(k)THkΔg(k)=Δg(k)T(αkz(k)TΔg(k))z(k)
因为 αk,z(k)TΔg(k)=Δg(k)Tz(k)是标量,所以:
Δg(k)TΔx(k)−Δg(k)THkΔg(k)=αk(z(k)TΔg(k))2
将上式代入2式可得:
Hk+1=Hk+(Δx(k)−HkΔg(k))(Δx(k)−HkΔg(k))TΔg(k)T(Δx(k)−HkΔg(k))
根据以上讨论,可得秩1算法的步骤:
1. 令 k=0,选择初始点 x(0),任选一个对称正定实矩阵 H0。
2. 如果 g(k)=0,停止迭代,否则,令 d(k)=−Hkg(k)
3. 计算
αk=argminα≥0f(x(k)+αd(k))x(k+1)=x(k)+αd(k))
4.计算
Δx(k)=αd(k)Δg(k)=g(k+1)−g(k)Hk+1=Hk+(Δx(k)−HkΔg(k))(Δx(k)−HkΔg(k))TΔg(k)T(Δx(k)−HkΔg(k))
5. 令 k=k+1, 回到第二步。
需要秩1并不完全令人满意。首先,该算法产生的矩阵Hk+1并不一定是正定的,这将导致d(k+1)可能不是下降方向,其次,如果Δg(k)T(Δx(k)−HkΔg(k))接近0,Hk+1可能面临计算困难。