拟牛顿法

拟牛顿法

基本思路:

为了避免 F ( x ( k ) ) − 1 F(x^{(k)})^{-1} F(x(k))−1这种矩阵求逆运算,可以通过设计其近似矩阵来代替。
x ( k + 1 ) = x ( k ) − α H k g ( k ) x^{(k+1)}=x^{(k)}-\alpha H_kg^{(k)} x(k+1)=x(k)−αHk​g(k)
拟牛顿法的迭代公式:
d ( k ) = − H k g ( k ) α k = a r g min ⁡ α ⩾ 0 f ( x ( k ) + α d ( k ) ) x ( k + 1 ) = x ( k ) + α k d ( k ) d^{(k)}=-H_kg^{(k)} \\\alpha_k=arg\min \limits_{\alpha\geqslant0}f(x^{(k)}+\alpha d^{(k)}) \\x^{(k+1)}=x^{(k)}+\alpha_kd^{(k)} d(k)=−Hk​g(k)αk​=argα⩾0min​f(x(k)+αd(k))x(k+1)=x(k)+αk​d(k)

黑塞矩阵逆矩阵的近似

g ( k + 1 ) − g ( k ) = Q ( x ( k + 1 ) − x ( k ) ) g^{(k+1)}-g^{(k)}=Q(x^{(k+1)}-x^{(k)}) g(k+1)−g(k)=Q(x(k+1)−x(k))

即:
△ g ( k ) = Q △ x ( k ) \vartriangle g^{(k)}=Q\vartriangle x^{(k)} △g(k)=Q△x(k)

H k + 1 △ g ( i ) = △ x ( i ) H_{k+1}\vartriangle g^{(i)}=\vartriangle x^{(i)} Hk+1​△g(i)=△x(i)

秩1修正公式

H k + 1 = H k + α k z ( k ) z ( k ) T H_{k+1}=H_k+\alpha_kz^{(k)}z^{(k)T} Hk+1​=Hk​+αk​z(k)z(k)T

其中, r a n k z ( k ) z ( k ) T = 1 rankz^{(k)}z^{(k)T}=1 rankz(k)z(k)T=1,故称为秩1修正算法。

秩1算法过程

  1. 令 k = 0 k=0 k=0,选择初始点 x ( 0 ) x^{(0)} x(0),任选一个对称正定实矩阵 H 0 H_0 H0​,一般选单位矩阵;
  2. 如果 g ( k ) = 0 g^{(k)}=0 g(k)=0,停止迭代;否则,令 d ( k ) = − H k g ( k ) d^{(k)}=-H_kg^{(k)} d(k)=−Hk​g(k);
  3. 计算 α k = − g ( k ) d ( k ) d ( k ) T Q d ( k ) , x ( k + 1 ) = x ( k ) + α k d ( k ) \alpha_k=-\frac{g^{(k)}d^{(k)}}{d^{(k)T}Qd^{(k)}},x^{(k+1)}=x^{(k)}+\alpha_kd^{(k)} αk​=−d(k)TQd(k)g(k)d(k)​,x(k+1)=x(k)+αk​d(k);
  4. 计算 △ x ( k ) = x ( k + 1 ) − x ( k ) = α k d ( k ) , g ( k + 1 ) = Q x ( k + 1 ) , △ g ( k ) = g ( k + 1 ) − g ( k ) ​ \vartriangle x^{(k)}=x^{(k+1)}-x^{(k)}=\alpha_kd^{(k)},g^{(k+1)}=Qx^{(k+1)},\vartriangle g^{(k)}=g^{(k+1)}-g^{(k)}​ △x(k)=x(k+1)−x(k)=αk​d(k),g(k+1)=Qx(k+1),△g(k)=g(k+1)−g(k)​;
  5. 计算 H k + 1 = H k + ( △ x ( k ) − H k △ g ( k ) ) ( △ x ( k ) − H k △ g ( k ) ) T △ g ( k ) T ( △ x ( k ) − H k △ g ( k ) ) H_{k+1}=H_k+\frac{(\vartriangle x^{(k)}-H_k\vartriangle g^{(k)})(\vartriangle x^{(k)}-H_k\vartriangle g^{(k)})^T}{\vartriangle g^{(k)T}(\vartriangle x^{(k)}-H_k\vartriangle g^{(k)})} Hk+1​=Hk​+△g(k)T(△x(k)−Hk​△g(k))(△x(k)−Hk​△g(k))(△x(k)−Hk​△g(k))T​;
  6. 返回2,直到 g ( k ) = 0 g^{(k)}=0 g(k)=0。

DFP算法

  1. 令 k = 0 k=0 k=0,选择初始点 x ( 0 ) x^{(0)} x(0),任选一个对称正定实矩阵 H 0 H_0 H0​,一般选单位矩阵;
  2. 如果 g ( k ) = 0 g^{(k)}=0 g(k)=0,停止迭代;否则,令 d ( k ) = − H k g ( k ) d^{(k)}=-H_kg^{(k)} d(k)=−Hk​g(k);
  3. 计算 α k = − g ( k ) d ( k ) d ( k ) T Q d ( k ) , x ( k + 1 ) = x ( k ) + α k d ( k ) \alpha_k=-\frac{g^{(k)}d^{(k)}}{d^{(k)T}Qd^{(k)}},x^{(k+1)}=x^{(k)}+\alpha_kd^{(k)} αk​=−d(k)TQd(k)g(k)d(k)​,x(k+1)=x(k)+αk​d(k);
  4. 计算 △ x ( k ) = x ( k + 1 ) − x ( k ) = α k d ( k ) , g ( k + 1 ) = Q x ( k + 1 ) , △ g ( k ) = g ( k + 1 ) − g ( k ) ​ \vartriangle x^{(k)}=x^{(k+1)}-x^{(k)}=\alpha_kd^{(k)},g^{(k+1)}=Qx^{(k+1)},\vartriangle g^{(k)}=g^{(k+1)}-g^{(k)}​ △x(k)=x(k+1)−x(k)=αk​d(k),g(k+1)=Qx(k+1),△g(k)=g(k+1)−g(k)​;
  5. 计算 H k + 1 = H k + △ x ( k ) △ x ( k ) T △ x ( k ) T △ g ( k ) − [ H k △ g ( k ) ] [ H k △ g ( k ) ] T △ g ( k ) T H k △ g ( k ) H_{k+1}=H_k+\frac{\vartriangle x^{(k)}\vartriangle x^{(k)T}}{\vartriangle x^{(k)T}\vartriangle g^{(k)}}-\frac{[H_k\vartriangle g^{(k)}][H_k\vartriangle g^{(k)}]^T}{\vartriangle g^{(k)T}H_k\vartriangle g^{(k)}} Hk+1​=Hk​+△x(k)T△g(k)△x(k)△x(k)T​−△g(k)THk​△g(k)[Hk​△g(k)][Hk​△g(k)]T​;
  6. 返回2,直到 g ( k ) = 0 g^{(k)}=0 g(k)=0。

BFGS算法

  1. 令 k = 0 k=0 k=0,选择初始点 x ( 0 ) x^{(0)} x(0),任选一个对称正定实矩阵 H 0 H_0 H0​,一般选单位矩阵;
  2. 如果 g ( k ) = 0 g^{(k)}=0 g(k)=0,停止迭代;否则,令 d ( k ) = − H k g ( k ) d^{(k)}=-H_kg^{(k)} d(k)=−Hk​g(k);
  3. 计算 α k = − g ( k ) d ( k ) d ( k ) T Q d ( k ) , x ( k + 1 ) = x ( k ) + α k d ( k ) \alpha_k=-\frac{g^{(k)}d^{(k)}}{d^{(k)T}Qd^{(k)}},x^{(k+1)}=x^{(k)}+\alpha_kd^{(k)} αk​=−d(k)TQd(k)g(k)d(k)​,x(k+1)=x(k)+αk​d(k);
  4. 计算 △ x ( k ) = x ( k + 1 ) − x ( k ) = α k d ( k ) , g ( k + 1 ) = Q x ( k + 1 ) , △ g ( k ) = g ( k + 1 ) − g ( k ) \vartriangle x^{(k)}=x^{(k+1)}-x^{(k)}=\alpha_kd^{(k)},g^{(k+1)}=Qx^{(k+1)},\vartriangle g^{(k)}=g^{(k+1)}-g^{(k)} △x(k)=x(k+1)−x(k)=αk​d(k),g(k+1)=Qx(k+1),△g(k)=g(k+1)−g(k);
  5. 计算 H k + 1 = H k + ( 1 + △ g ( k ) T H k △ g ( k ) △ g ( k ) T △ x ( k ) ) △ x ( k ) △ x ( k ) T △ x ( k ) T △ g ( k ) − H k △ g ( k ) △ x ( k ) T + ( H k △ g ( k ) △ x ( k ) T ) T △ g ( k ) T △ x ( k ) H_{k+1}=H_k+(1+\frac{\vartriangle g^{(k)T}H_k\vartriangle g^{(k)}}{\vartriangle g^{(k)T}\vartriangle x^{(k)}})\frac{\vartriangle x^{(k)}\vartriangle x^{(k)T}}{\vartriangle x^{(k)T}\vartriangle g^{(k)}}-\frac{H_k\vartriangle g^{(k)}\vartriangle x^{(k)T}+(H_k\vartriangle g^{(k)}\vartriangle x^{(k)T})^T}{\vartriangle g^{(k)T}\vartriangle x^{(k)}} Hk+1​=Hk​+(1+△g(k)T△x(k)△g(k)THk​△g(k)​)△x(k)T△g(k)△x(k)△x(k)T​−△g(k)T△x(k)Hk​△g(k)△x(k)T+(Hk​△g(k)△x(k)T)T​;
  6. 返回2,直到 g ( k ) = 0 g^{(k)}=0 g(k)=0。