当前位置: 首页 > news >正文

统计学习方法 牛顿法和拟牛顿法

文章目录

  • 统计学习方法 牛顿法和拟牛顿法
    • 牛顿法
    • 拟牛顿法
      • DFP 算法
      • BFGS 算法
      • Broyden 类算法

统计学习方法 牛顿法和拟牛顿法

学习李航的《统计学习方法》时,关于牛顿法和拟牛顿法的笔记。

牛顿法(Newton method)和拟牛顿法(quasi-Newton method)时求解无约束优化问题的常用方法,有收敛速度快的优点。牛顿法时迭代算法,每一步需要求解目标函数的 Hession 矩阵的逆矩阵,计算较为复杂;拟牛顿法通过正定矩阵近似 Hession 矩阵或其逆矩阵,简化了计算过程。

牛顿法

牛顿法的推导:考虑无约束最优化问题:
min ⁡ x ∈ R n f ( x ) \min\limits_{x\in \R^n} f(x) xRnminf(x)
x ∗ x^\ast x 是目标函数的极小点。

假设 f ( x ) f(x) f(x) 具有二姐连续偏导数,若第 k k k 次迭代的值为 x ( k ) x^{(k)} x(k) ,则对 f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k) 附近二阶泰勒展开:
f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) H k ( x − x ( k ) ) f(x)=f(x^{(k)})+g_k^\mathrm{T}(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})H_k(x-x^{(k)}) f(x)=f(x(k))+gkT(xx(k))+21(xx(k))Hk(xx(k))
其中 g k g_k gk f ( x ) f(x) f(x) x ( k ) x^{(k)} x(k) 处的梯度向量, H k H_k Hk f ( x ) f(x) f(x) 的 Hession 矩阵在 x ( k ) x^{(k)} x(k) 处的值:
g ( x ) = ∇ f ( x ) = [ ∂ f ∂ x i ] n × 1 , H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n g(x)=\nabla f(x)=\left[\frac{\partial f}{\partial x_i}\right]_{n\times 1},\quad H(x)=\left[ \frac{\partial^2 f}{\partial x_i\partial x_j} \right]_{n\times n} g(x)=f(x)=[xif]n×1,H(x)=[xixj2f]n×n
函数 f ( x ) f(x) f(x) 有极值的必要条件是在极值点处一阶导数(即梯度向量)为 0 0 0 。特别地,当 H ( x ) H(x) H(x) 在极值点处是正定矩阵时,函数 f ( x ) f(x) f(x) 的极值为极小值。

牛顿法利用极小点的必要条件,每次从上一次迭代得到的极小点 x ( k ) x^{(k)} x(k) 开始,得到当前目标函数的极小点 x ( k + 1 ) x^{(k+1)} x(k+1) ,即:
∇ f ( x ( k + 1 ) ) = g k + ( x ( k + 1 ) − x ( k ) ) = 0 \nabla f(x^{(k+1)})=g_k+(x^{(k+1)}-x^{(k)})=0 f(x(k+1))=gk+(x(k+1)x(k))=0
解得:
x ( k + 1 ) = x ( k ) − H k − 1 g k x^{(k+1)}=x^{(k)}-H_k^{-1}g_k x(k+1)=x(k)Hk1gk
假设 p k p_k pk 为一 n × 1 n\times 1 n×1 的列向量,且满足:
H k p k = − g k H_kp_k=-g_k Hkpk=gk
则迭代公式可写为:
x ( k + 1 ) = x ( k ) + p k x^{(k+1)}=x^{(k)}+p_k x(k+1)=x(k)+pk
算法:牛顿法

  • 输入:目标函数 f ( x ) f(x) f(x) ,梯度 g ( x ) = ∇ f ( x ) g(x)=\nabla f(x) g(x)=f(x) ,Hession 矩阵 H ( x ) H(x) H(x) ,精度 ε \varepsilon ε
  • 输出: f ( x ) f(x) f(x) 的极小值点 x ∗ x^\ast x
  1. 取初始点 x ( 0 ) x^{(0)} x(0) ,置 k = 0 k=0 k=0
  2. 计算 g k = g ( x ( k ) ) g_k=g(x^{(k)}) gk=g(x(k))
  3. ∥ g k ∥ < ε \|g_k\|\lt \varepsilon gk<ε ,则停止计算,返回近似解 x ∗ = x ( k ) x^\ast=x^{(k)} x=x(k)
  4. 计算 H k = H ( x ( k ) ) H_k=H(x^{(k)}) Hk=H(x(k)) ,并求 p k p_k pk

H k p k = − g k H_kp_k=-g_k Hkpk=gk

  1. 更新 x ( k + 1 ) = x ( k ) + p k x^{(k+1)}=x^{(k)}+p_k x(k+1)=x(k)+pk k = k + 1 k=k+1 k=k+1 ,跳转至 2;

拟牛顿法

牛顿法中需要计算 H k − 1 H_k^{-1} Hk1 ,比较耗时,我们考虑使用一个与 Hession 矩阵具有类似性质的 n n n 阶矩阵 G k = G ( x ( k ) ) G_k=G(x^{(k)}) Gk=G(x(k)) 来近似代替 H k − 1 H_k^{-1} Hk1

条件一:首先,对 x ( k ) x^{(k)} x(k) 处的二阶泰勒展开进行求导,取 x = ( k + 1 ) x=^{(k+1)} x=(k+1) ,得:
g k + 1 − g k = H k ( x ( k + 1 ) − x ( k ) ) g_{k+1}-g_k=H_k(x^{(k+1)}-x^{(k)}) gk+1gk=Hk(x(k+1)x(k))
y k = g k + 1 − g k y_k=g_{k+1}-g_k yk=gk+1gk δ k = x ( k + 1 ) − x ( k ) \delta_{k}=x^{(k+1)}-x^{(k)} δk=x(k+1)x(k) ,则满足:
y k = H k δ k y_k=H_k\delta_k yk=Hkδk
或:
H k − 1 y k = δ k H_k^{-1}y_k=\delta_k Hk1yk=δk
该条件称为拟牛顿条件

条件二:如果 H k H_k Hk 是正定的( H k − 1 H_k^{-1} Hk1 也是正定的),那么可以保证牛顿法搜索方向 p k p_k pk 是下降方向,因为:
x ( k + 1 ) = x ( k ) + λ p k = x ( k ) − λ H k − 1 g k x^{(k+1)}=x^{(k)}+\lambda p_k=x^{(k)}-\lambda H_k^{-1}g_k x(k+1)=x(k)+λpk=x(k)λHk1gk
带入前面的泰勒展开式,为:
f ( x ( k + 1 ) ) = f ( x k ) − λ g k T H k − 1 g k + 1 2 λ 2 g k T H k − T H k H k − 1 g k ≈ f ( x k ) − λ g k T H k − 1 g k f(x^{(k+1)})=f(x^{k})-\lambda g_k^{\mathrm{T}}H_k^{-1}g_k+\frac{1}{2}\lambda^2g_k^\mathrm{T}H_k^{-\mathrm{T}}H_kH_{k}^{-1}g_k\approx f(x^{k})-\lambda g_k^{\mathrm{T}}H_k^{-1}g_k f(x(k+1))=f(xk)λgkTHk1gk+21λ2gkTHkTHkHk1gkf(xk)λgkTHk1gk
λ \lambda λ 为一个足够小的正数时,由于 H k H_k Hk 正定,即 λ g k T H k − 1 g k > 0 \lambda g_k^{\mathrm{T}}H_k^{-1}g_k \gt 0 λgkTHk1gk>0 ,因此有 f ( x ( k + 1 ) ) < f ( x ( k ) ) f(x^{(k+1)})\lt f(x^{(k)}) f(x(k+1))<f(x(k)) ,也就是说 p k p_k pk 时下降方向。

综合前面两个条件,我们在选择近似矩阵 G k G_k Gk 时,首先要求每次迭代时 G k G_k Gk 是正定的,其次 G k G_k Gk 需要满足以下的拟牛顿条件:
G k + 1 y k = δ k G_{k+1}y_{k}=\delta_k Gk+1yk=δk
同时,按照拟牛顿条件,每次迭代可以选择更新矩阵 G k + 1 G_{k+1} Gk+1
G k + 1 = G k + Δ G k G_{k+1}=G_{k}+\Delta G_{k} Gk+1=Gk+ΔGk
有多种选择近似矩阵的方法:

DFP 算法

DFP (Davidon-Fletcher-Powell)算法对 G k G_{k} Gk 的更新为:
G k + 1 = G k + P k + Q k G_{k+1}=G_{k}+P_k+Q_k Gk+1=Gk+Pk+Qk
其中 P k P_k Pk Q k Q_k Qk 是待定矩阵,此时:
G k + 1 y k = G k y k + P k y k + Q k y k = δ k G_{k+1}y_{k}=G_ky_k+P_ky_k+Q_ky_k=\delta_k Gk+1yk=Gkyk+Pkyk+Qkyk=δk
为了满足拟牛顿条件,可以令:
P k y k = δ k , Q k y k = − G k y k P_ky_k=\delta_k,\quad Q_ky_k=-G_ky_k Pkyk=δk,Qkyk=Gkyk
书上给了一个例子:
P k = δ k δ k T δ k T y k , Q k = − G k y k y k T G k y k T G k y k P_k=\frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k},\quad Q_k=-\frac{G_ky_ky_k^{\mathrm{T}}G_k}{y_k^{\mathrm{T}}G_ky_k} Pk=δkTykδkδkT,Qk=ykTGkykGkykykTGk
可以证明(咱也不知道怎么证明),如果 G 0 G_0 G0 是正定的,则迭代过程中的每个矩阵 G k G_k Gk 都是正定的。

算法:DFP 算法

  • 输入:目标函数 f ( x ) f(x) f(x) ,梯度 g ( x ) = ∇ f ( x ) g(x)=\nabla f(x) g(x)=f(x) ,精度 ε \varepsilon ε
  • 输出: f ( x ) f(x) f(x) 的极小点 x ∗ x^\ast x
  1. 选定初始点 x ( 0 ) x^{(0)} x(0) ,取 G 0 G_0 G0 为正定对称矩阵,置 k = 0 k=0 k=0
  2. 计算 g k = g ( x ( k ) ) g_k=g(x^{(k)}) gk=g(x(k)) ,若 ∥ g ( x ( k ) ) ∥ < ε \|g(x^{(k)})\| \lt \varepsilon g(x(k))<ε ,则停止计算,返回近似解 x ∗ = x ( k ) x^\ast=x^{(k)} x=x(k) ,否则继续;
  3. 计算 p k = − G k g k p_k=-G_kg_k pk=Gkgk
  4. 一维搜索:求 λ k \lambda_k λk 使得:

f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\min_{\lambda \geq 0}f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)

  1. x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)}=x^{(k)}+\lambda_kp_k x(k+1)=x(k)+λkpk
  2. 计算 G k + 1 G_{k+1} Gk+1 ,置 k = k + 1 k=k+1 k=k+1 ,转 2;

G k + 1 = G k + δ k δ k T δ k T y k − G k y k y k T G k y k T G k y k G_{k+1}=G_{k}+\frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k}-\frac{G_ky_ky_k^{\mathrm{T}}G_k}{y_k^{\mathrm{T}}G_ky_k} Gk+1=Gk+δkTykδkδkTykTGkykGkykykTGk

BFGS 算法

BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法是最流行的拟牛顿算法。此时考虑使用 B k B_k Bk 近似 H k H_k Hk ,更新方法类似:
B k + 1 = B k + P k + Q k B_{k+1}=B_{k}+P_{k}+Q_{k} Bk+1=Bk+Pk+Qk
为了满足拟牛顿条件:
B k + 1 δ k = B k δ k + P k δ k + Q k δ k = y k B_{k+1}\delta_k=B_k\delta_k+P_k\delta_k+Q_k\delta_k=y_k Bk+1δk=Bkδk+Pkδk+Qkδk=yk
取:
P k δ k = y k , Q k δ k = − B k δ k P_k\delta_k=y_k,\quad Q_k\delta_k=-B_k\delta_k Pkδk=yk,Qkδk=Bkδk
同样可令:
P k = y k y k T y k T δ k , Q k = − B k δ k δ k T B k δ k T B k δ k P_k=\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k},\quad Q_k=-\frac{B_k\delta_k\delta_k^{\mathrm{T}}B_k}{\delta_k^{\mathrm{T}}B_k\delta_k} Pk=ykTδkykykT,Qk=δkTBkδkBkδkδkTBk
算法:BFGS 算法

  • 输入:目标函数 f ( x ) f(x) f(x) ,梯度 g ( x ) = ∇ f ( x ) g(x)=\nabla f(x) g(x)=f(x) ,精度 ε \varepsilon ε
  • 输出: f ( x ) f(x) f(x) 的极小点 x ∗ x^\ast x
  1. 选定初始点 x ( 0 ) x^{(0)} x(0) ,取 B 0 B_0 B0 为正定对称矩阵,置 k = 0 k=0 k=0
  2. 计算 g k = g ( x ( k ) ) g_k=g(x^{(k)}) gk=g(x(k)) ,若 ∥ g ( x ( k ) ) ∥ < ε \|g(x^{(k)})\| \lt \varepsilon g(x(k))<ε ,则停止计算,返回近似解 x ∗ = x ( k ) x^\ast=x^{(k)} x=x(k) ,否则继续;
  3. B k p k = − g k B_kp_k=-g_k Bkpk=gk 计算 p k p_k pk
  4. 一维搜索:求 λ k \lambda_k λk 使得:

f ( x ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ p k ) f(x^{(k)}+\lambda_kp_k)=\min_{\lambda \geq 0}f(x^{(k)}+\lambda p_k) f(x(k)+λkpk)=λ0minf(x(k)+λpk)

  1. x ( k + 1 ) = x ( k ) + λ k p k x^{(k+1)}=x^{(k)}+\lambda_kp_k x(k+1)=x(k)+λkpk
  2. 计算 B k + 1 B_{k+1} Bk+1 ,置 k = k + 1 k=k+1 k=k+1 ,转 2;

B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k B_{k+1}=B_{k}+\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}-\frac{B_k\delta_k\delta_k^{\mathrm{T}}B_k}{\delta_k^{\mathrm{T}}B_k\delta_k} Bk+1=Bk+ykTδkykykTδkTBkδkBkδkδkTBk

Broyden 类算法

根据 BFGS 算法中 B k B_k Bk 矩阵的迭代公式,我们可以得到对应的 G k G_k Gk 矩阵。有 G k = B k − 1 G_k=B_k^{-1} Gk=Bk1 G k + 1 − 1 = B k + 1 − 1 G_{k+1}^{-1}=B_{k+1}^{-1} Gk+11=Bk+11 ;有:
G k + 1 − 1 = G k − 1 + y k y k T y k T δ k − G k − 1 δ k δ k T G k − 1 δ k T G k − 1 δ k ⇒ G k + 1 = ( G k − 1 + y k y k T y k T δ k + − G k − 1 δ k δ k T G k − 1 δ k T G k − 1 δ k ) − 1 \begin{aligned} G_{k+1}^{-1}=&\, G_{k}^{-1}+\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}-\frac{G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k} \\ \Rightarrow G_{k+1}=&\, \left( G_{k}^{-1}+\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}+\frac{-G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k} \right)^{-1} \\ \end{aligned} Gk+11=Gk+1=Gk1+ykTδkykykTδkTGk1δkGk1δkδkTGk1(Gk1+ykTδkykykT+δkTGk1δkGk1δkδkTGk1)1
需要用到 Shermax-Morrison 公式:
( A + u v T ) − 1 = A − 1 − A − 1 u v T A − 1 1 + v T A − 1 u (A+uv^\mathrm{T})^{-1}=A^{-1}-\frac{A^{-1}uv^\mathrm{T}A^{-1}}{1+v^{\mathrm{T}}A^{-1}u} (A+uvT)1=A11+vTA1uA1uvTA1
其中 u u u v v v n n n 维向量, A A A 为可逆矩阵;记:
A = G k − 1 + y k y k T y k T δ k , u = − G k − 1 δ k , v T = δ k T G k − 1 δ k T G k − 1 δ k A=G_k^{-1}+\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k},\quad u=-G_k^{-1}\delta_k,\quad v^{\mathrm{T}}=\frac{\delta_k^{\mathrm{T}}G_k^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k} A=Gk1+ykTδkykykT,u=Gk1δk,vT=δkTGk1δkδkTGk1
则:
G k + 1 = ( A + − G k − 1 δ k δ k T G k − 1 δ k T G k − 1 δ k ) − 1 = A − 1 + A − 1 G k − 1 δ k δ k T G k − 1 δ k T G k − 1 δ k A − 1 1 − δ k T G k − 1 A − 1 G k − 1 δ k δ k T G k − 1 δ k = A − 1 + A − 1 G k − 1 δ k δ k T G k − 1 A − 1 δ k T G k − 1 δ k − δ k T G k − 1 A − 1 G k − 1 δ k \begin{aligned} G_{k+1} =&\, \left(A+\frac{-G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k}\right)^{-1} \\ =&\, A^{-1}+\frac{A^{-1}\frac{G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k}A^{-1}}{1-\frac{\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}G_k^{-1}\delta_{k}} {\delta_k^{\mathrm{T}}G_k^{-1}\delta_k}} \\ =&\, A^{-1}+\frac{A^{-1}G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k-\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}G_k^{-1}\delta_{k}} \end{aligned} Gk+1===(A+δkTGk1δkGk1δkδkTGk1)1A1+1δkTGk1δkδkTGk1A1Gk1δkA1δkTGk1δkGk1δkδkTGk1A1A1+δkTGk1δkδkTGk1A1Gk1δkA1Gk1δkδkTGk1A1
A A A 再次使用公式,此时 u = y k u=y_k u=yk v T = y k T y k T δ k v^{\mathrm{T}}=\frac{y_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k} vT=ykTδkykT ,得到:
A − 1 = ( G k − 1 + y k y k T y k T δ k ) − 1 = G k − G k y k y k T y k T δ k G k 1 + y k T G k y k y k T δ k = G k − G k y k y k T G k y k T δ k + y k T G k y k A^{-1}=\left(G_k^{-1}+\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}\right)^{-1} =G_{k}-\frac{G_k\frac{y_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}G_k} {1+\frac{y_k^{\mathrm{T}}G_ky_k}{y_k^{\mathrm{T}}\delta_k}} =G_{k}-\frac{G_ky_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} A1=(Gk1+ykTδkykykT)1=Gk1+ykTδkykTGkykGkykTδkykykTGk=GkykTδk+ykTGkykGkykykTGk
A − 1 A^{-1} A1 逐步代入 G k + 1 G_{k+1} Gk+1 ,得到:
G k + 1 = A − 1 + A − 1 G k − 1 δ k δ k T G k − 1 A − 1 δ k T G k − 1 δ k − δ k T G k − 1 A − 1 G k − 1 δ k = A − 1 + A − 1 G k − 1 δ k δ k T G k − 1 A − 1 δ k T G k − 1 δ k − δ k T G k − 1 ( G k − G k y k y k T G k y k T δ k + y k T G k y k ) G k − 1 δ k = A − 1 + A − 1 G k − 1 δ k δ k T G k − 1 A − 1 δ k T y k y k T δ k y k T δ k + y k T G k y k = A − 1 + ( G k − G k y k y k T G k y k T δ k + y k T G k y k ) ( G k − 1 δ k δ k T G k − 1 δ k T y k y k T δ k y k T δ k + y k T G k y k ) ( G k − G k y k y k T G k y k T δ k + y k T G k y k ) = A − 1 + ( I − G k y k y k T y k T δ k + y k T G k y k ) ( δ k δ k T δ k T y k y k T δ k y k T δ k + y k T G k y k ) ( I − y k y k T G k y k T δ k + y k T G k y k ) = A − 1 + ( ( δ k δ k T ) ( y k T δ k + y k T G k y k ) δ k T y k y k T δ k ) − ( δ k δ k T y k y k T G k δ k T y k y k T δ k ) − ( G k y k y k T δ k δ k T δ k T y k y k T δ k ) + ( G k y k y k T δ k δ k T y k y k T G k ( δ k T y k y k T δ k ) ( y k T δ k + y k T G k y k ) ) = G k − G k y k y k T G k y k T δ k + y k T G k y k + ( ( δ k δ k T ) ( y k T δ k + y k T G k y k ) δ k T y k y k T δ k ) − ( δ k δ k T y k y k T G k δ k T y k y k T δ k ) − ( G k y k y k T δ k δ k T δ k T y k y k T δ k ) + ( G k y k y k T G k y k T δ k + y k T G k y k ) = G k + ( ( δ k δ k T ) ( y k T δ k ) δ k T y k y k T δ k ) + ( ( δ k δ k T ) ( y k T G k y k ) δ k T y k y k T δ k ) − ( δ k y k T G k y k T δ k ) − ( G k y k δ k T δ k T y k ) = G k − ( G k y k δ k T δ k T y k ) − ( δ k y k T G k y k T δ k ) + ( δ k ( y k T G k y k ) δ k T δ k T y k y k T δ k ) + ( δ k δ k T δ k T y k ) = G k ( I − y k δ k T δ k T y k ) − ( δ k y k T G k y k T δ k ) ( I − y k δ k T δ k T y k ) + ( δ k δ k T δ k T y k ) = ( I − δ k y k T y k T δ k ) G k ( I − y k δ k T δ k T y k ) + ( δ k δ k T δ k T y k ) = ( I − δ k y k T y k T δ k ) G k ( I − δ k y k T y k T δ k ) T + ( δ k δ k T δ k T y k ) \begin{aligned} G_{k+1} =&\, A^{-1}+\frac{A^{-1}G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k-\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}G_k^{-1}\delta_{k}} \\ =&\, A^{-1}+\frac{A^{-1}G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}}{\delta_k^{\mathrm{T}}G_k^{-1}\delta_k-\delta_k^{\mathrm{T}}G_k^{-1} \left( G_{k}-\frac{G_ky_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \right) G_k^{-1}\delta_{k}} \\ =&\, A^{-1}+\frac{A^{-1}G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}A^{-1}} {\frac{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k}{y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k}} \\ =&\, A^{-1}+ \left( G_{k}-\frac{G_ky_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \right) \left( \frac{G_k^{-1}\delta_k\delta_k^{\mathrm{T}}G_k^{-1}} {\frac{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k}{y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k}} \right) \left( G_{k}-\frac{G_ky_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \right) \\ =&\, A^{-1}+ \left( I-\frac{G_ky_ky_k^{\mathrm{T}}} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \right) \left( \frac{\delta_k\delta_k^{\mathrm{T}}} {\frac{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k}{y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k}} \right) \left( I-\frac{y_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \right) \\ =&\, A^{-1}+ \left( \frac{(\delta_k\delta_k^{\mathrm{T}})(y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k)} {\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) -\left( \frac{\delta_k\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}G_k}{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) -\left( \frac{G_ky_ky_k^{\mathrm{T}}\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) +\left( \frac{G_ky_ky_k^{\mathrm{T}}\delta_k\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}G_k} {(\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k)(y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k)} \right) \\ =&\, G_{k}-\frac{G_ky_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \\ +&\,\left( \frac{(\delta_k\delta_k^{\mathrm{T}})(y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k)} {\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) -\left( \frac{\delta_k\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}G_k}{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) -\left( \frac{G_ky_ky_k^{\mathrm{T}}\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) +\left( \frac{G_ky_ky_k^{\mathrm{T}}G_k} {y_k^{\mathrm{T}}\delta_k+y_k^{\mathrm{T}}G_ky_k} \right) \\ =&\, G_{k}+ \left( \frac{(\delta_k\delta_k^{\mathrm{T}})(y_k^{\mathrm{T}}\delta_k)} {\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) +\left( \frac{(\delta_k\delta_k^{\mathrm{T}})(y_k^{\mathrm{T}}G_ky_k)} {\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) -\left( \frac{\delta_ky_k^{\mathrm{T}}G_k}{y_k^{\mathrm{T}}\delta_k} \right) -\left( \frac{G_ky_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) \\ =&\, G_{k} -\left( \frac{G_ky_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) -\left( \frac{\delta_ky_k^{\mathrm{T}}G_k}{y_k^{\mathrm{T}}\delta_k} \right) +\left( \frac{\delta_k(y_k^{\mathrm{T}}G_ky_k)\delta_k^{\mathrm{T}}} {\delta_k^{\mathrm{T}}y_ky_k^{\mathrm{T}}\delta_k} \right) +\left( \frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) \\ =&\, G_{k}\left( I- \frac{y_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) -\left( \frac{\delta_ky_k^{\mathrm{T}}G_k}{y_k^{\mathrm{T}}\delta_k} \right) \left( I-\frac{y_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) +\left( \frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) \\ =&\, \left( I- \frac{\delta_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}\right) G_k \left( I-\frac{y_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) +\left( \frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) \\ =&\, \left( I- \frac{\delta_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}\right) G_k \left( I- \frac{\delta_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}\right)^\mathrm{T} +\left( \frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} \right) \\ \end{aligned} Gk+1=======+=====A1+δkTGk1δkδkTGk1A1Gk1δkA1Gk1δkδkTGk1A1A1+δkTGk1δkδkTGk1(GkykTδk+ykTGkykGkykykTGk)Gk1δkA1Gk1δkδkTGk1A1A1+ykTδk+ykTGkykδkTykykTδkA1Gk1δkδkTGk1A1A1+(GkykTδk+ykTGkykGkykykTGk) ykTδk+ykTGkykδkTykykTδkGk1δkδkTGk1 (GkykTδk+ykTGkykGkykykTGk)A1+(IykTδk+ykTGkykGkykykT) ykTδk+ykTGkykδkTykykTδkδkδkT (IykTδk+ykTGkykykykTGk)A1+(δkTykykTδk(δkδkT)(ykTδk+ykTGkyk))(δkTykykTδkδkδkTykykTGk)(δkTykykTδkGkykykTδkδkT)+((δkTykykTδk)(ykTδk+ykTGkyk)GkykykTδkδkTykykTGk)GkykTδk+ykTGkykGkykykTGk(δkTykykTδk(δkδkT)(ykTδk+ykTGkyk))(δkTykykTδkδkδkTykykTGk)(δkTykykTδkGkykykTδkδkT)+(ykTδk+ykTGkykGkykykTGk)Gk+(δkTykykTδk(δkδkT)(ykTδk))+(δkTykykTδk(δkδkT)(ykTGkyk))(ykTδkδkykTGk)(δkTykGkykδkT)Gk(δkTykGkykδkT)(ykTδkδkykTGk)+(δkTykykTδkδk(ykTGkyk)δkT)+(δkTykδkδkT)Gk(IδkTykykδkT)(ykTδkδkykTGk)(IδkTykykδkT)+(δkTykδkδkT)(IykTδkδkykT)Gk(IδkTykykδkT)+(δkTykδkδkT)(IykTδkδkykT)Gk(IykTδkδkykT)T+(δkTykδkδkT)
因此得到 BFGS 算法的 G k G_k Gk 的迭代公式:
G k + 1 BFGS = ( I − δ k y k T y k T δ k ) G k BFGS ( I − δ k y k T y k T δ k ) T + δ k δ k T δ k T y k G_{k+1}^{\text{BFGS}}= \left( I- \frac{\delta_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}\right) G_k^{\text{BFGS}} \left( I- \frac{\delta_ky_k^{\mathrm{T}}}{y_k^{\mathrm{T}}\delta_k}\right)^\mathrm{T} +\frac{\delta_k\delta_k^{\mathrm{T}}}{\delta_k^{\mathrm{T}}y_k} Gk+1BFGS=(IykTδkδkykT)GkBFGS(IykTδkδkykT)T+δkTykδkδkT
由 DFP 算法得到的 G k G_k Gk 记作 G k DFP G_k^{\text{DFP}} GkDFP ,可知二者的线性组合也满足拟牛顿条件式,而且是正定的:
G k + 1 = α G k DFP + ( 1 − α ) G k BFGS , 0 ≤ α ≤ 1 G_{k+1}=\alpha G_k^{\text{DFP}}+(1-\alpha)G_k^{\text{BFGS}},\quad 0\leq\alpha\leq 1 Gk+1=αGkDFP+(1α)GkBFGS,0α1
这样就得到了一类拟牛顿算法,称为 Broyden 类算法

相关文章:

统计学习方法 牛顿法和拟牛顿法

文章目录 统计学习方法 牛顿法和拟牛顿法牛顿法拟牛顿法DFP 算法BFGS 算法Broyden 类算法 统计学习方法 牛顿法和拟牛顿法 学习李航的《统计学习方法》时&#xff0c;关于牛顿法和拟牛顿法的笔记。 牛顿法&#xff08;Newton method&#xff09;和拟牛顿法&#xff08;quasi-…...

React基础知识02

一、通过属性来传值&#xff08;props&#xff09; react中可以使用属性&#xff08;props&#xff09;可以传递给子组件&#xff0c;子组件可以使用这些属性值来控制其行为和呈现输出。 例子&#xff1a; // 1.1 父组件 import React, { useState } from react // 1.2引入子…...

Oracle(10)Managing Undo Data

目录 一、基础知识 1、AUM :Init Parameters AUM:初始化参数 2、AUM:Other Parameters AUM:其他参数 3、AUM:Sizing an UNDO TS AUM:调整UNDOTS的大小 4、AUM :Undo Quota AUM:撤消配额 5、Get Undo Segment Info 获取撤消段信息 二、基础操作 1、AUM:UNDO Tablespace …...

Xcode 14.3 新版问题总结

1. "xxx/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/xxxx" failed: No such file or directory 解决&#xff1a;Pods/Targets Support Files/Pods-App-frameworks.sh中 if [ -L "${source}" ]; thenecho "Symlinked..."# sour…...

14 _ 排序优化:如何实现一个通用的、高性能的排序函数?

几乎所有的编程语言都会提供排序函数,比如C语言中qsort(),C++ STL中的sort()、stable_sort(),还有Java语言中的Collections.sort()。在平时的开发中,我们也都是直接使用这些现成的函数来实现业务逻辑中的排序功能。那你知道这些排序函数是如何实现的吗?底层都利用了哪种排…...

如何记录每天的工作日程?电脑手机通用的日程管理软件

在工作时间有限&#xff0c;但工作任务愈加繁多的现在职场中&#xff0c;要求每一个职场人士做好高效日程管理。通过高效管理日程&#xff0c;我们可以更好地组织和安排任务&#xff0c;合理分配时间和优先级&#xff0c;这有助于我们更专注地进行工作&#xff0c;减少时间的浪…...

基础Redis-结构与命令

结构与命令 1.基础-Redisa.Redis数据结构介绍b.Redis通用命令c.key的结构d.String类型e.Hash类型f.List类型g.Set类型h.SortedSet类型 1.基础-Redis a.Redis数据结构介绍 Redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;不过value的类型多种多样&a…...

[强网杯 2019]随便注1

打开题目 输入1 输入1&#xff0c;页面报错&#xff0c;输入1 #页面正常 说明1为注入点且注入方式为字符型的单引号注入 判断列名 输入 1 order by 2 # 页面正常 1 order by 3 #页面报错 说明列名字段数为2 接下来我们尝试用联合注入的方式爆出数据显示位 输入1 union s…...

Skywalking介绍

一个优秀的项目&#xff0c;除了具有高拓展的架构、高性能的方案、高质量的代码之外&#xff0c;还应该在上线后具备多角度的监控功能。现在企业中的监控服务也有很多&#xff0c;Skywalking除了提供多维度、多粒度的监控之外&#xff0c;也提供了良好的图形化界面以及性能剖析…...

K8S知识点(四)

&#xff08;1&#xff09;环境搭建-集群安装 查看所需镜像 定义下载镜像 循环下载镜像&#xff1a; 下载完成之后&#xff1a;查看一下镜像&#xff0c;名字也已经改成了k8s的名字 集群初始化只在master节点上运行&#xff0c; 出现sucessfully表示成功&#xff0c;提示要运…...

Android WMS——WMS窗口更新移除(十四)

前面通过几篇的文章详细的介绍了 Window 窗口的添加过程,这里我们简单看一下,AMS 如何实现 Window 窗口的更新和移除流程。 一、窗口更新 这里我们从 Session 开始分析。 1、Session 源码位置:/frameworks/base/services/core/java/com/android/server/wm/Session.java …...

Java程序设计2023-第三次上机练习

这次的练习主要是一些类的高阶操作&#xff0c;像继承、接口和内部类这些&#xff0c;但其实还是挺简单的 目录 7-1 jmu-Java-03面向对象基础-04-形状-继承 前言 本题描述 思考 输入样例: 输出样例: 7-3 jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack m…...

opencv复习(简短的一次印象记录)

2-高斯与中值滤波_哔哩哔哩_bilibili 1、均值滤波 2、高斯滤波 3、中值滤波 4、腐蚀操作 卷积核不都是255就腐蚀掉 5、膨胀操作 6、开运算 先腐蚀再膨胀 7、闭运算 先膨胀再腐蚀 8、礼帽 原始数据-开运算结果 9、黑帽 闭运算结果-原始数据 10、Sobel算子 左-右&#x…...

pytorch-损失函数-分类和回归区别

torch.nn 库和 torch.nn.functional库的区别 torch.nn库&#xff1a;这个库提供了许多预定义的层&#xff0c;如全连接层&#xff08;Linear&#xff09;、卷积层&#xff08;Conv2d&#xff09;等&#xff0c;以及一些损失函数&#xff08;如MSELoss、CrossEntropyLoss等&…...

数字IC后端实现 |TSMC 12nm 与TSMC 28nm Metal Stack的区别

下图为咱们社区IC后端训练营项目用到的Metal Stack。 芯片Tapeout Review CheckList 数字IC后端零基础入门Innovus学习教程 1P代表一层poly&#xff0c;10M代表有10层metal&#xff0c;M5x表示M2-M6为一倍最小线宽宽度的金属层&#xff0c;2y表示M7-M8为二倍最小线宽宽度的金…...

Spring Security OAuth 2.0 资源服务器— JWT

目录 一、JWT的最小依赖 二、JWT的最基本配置 1、指定授权服务器 2、初始预期&#xff08;Startup Expectations&#xff09; 3、运行时预期&#xff08;Runtime Expectations&#xff09; 三、JWT认证是如何工作的 四、直接指定授权服务器 JWK Set Uri 五、提供 audie…...

C++初阶(八)类和对象

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Static成员1、Static概念2、Static特性3、试题 二、友元1、友元的类型2、友元函数3、 友元…...

Excel文档名称批量翻译的高效方法

在处理大量文件时&#xff0c;我们常常需要借助一些工具来提高工作效率。例如&#xff0c;在需要对Excel文档名称进行批量翻译时&#xff0c;一个方便快捷的工具可以帮助我们省去很多麻烦。今天&#xff0c;我将介绍一款名为固乔文件管家的软件&#xff0c;它能够帮助我们轻松实…...

python里面的浅拷贝和深拷贝

目录 浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a;深拷贝&#xff08;Deep Copy&#xff09;&#xff1a;实现方式&#xff1a;使用copy模块进行拷贝&#xff1a;使用切片&#xff08;只适用于列表和其他序列类型&#xff09;进行浅拷贝&#xff1a;使用list()、di…...

HJ76 尼科彻斯定理

题目&#xff1a; HJ76 尼科彻斯定理 题解&#xff1a; m个连续奇数之和&#xff0c;所以我们只要求出连续奇数的第一位就能以此枚举所有奇数&#xff0c;连续奇数是一个等差数列。 S m^3, n m, d 2 > a1 m^2 - (m-1) import java.util.Scanner;// 注意类名必须…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...

Electron简介(附电子书学习资料)

一、什么是Electron&#xff1f; Electron 是一个由 GitHub 开发的 开源框架&#xff0c;允许开发者使用 Web技术&#xff08;HTML、CSS、JavaScript&#xff09; 构建跨平台的桌面应用程序&#xff08;Windows、macOS、Linux&#xff09;。它将 Chromium浏览器内核 和 Node.j…...

第14节 Node.js 全局对象

JavaScript 中有一个特殊的对象&#xff0c;称为全局对象&#xff08;Global Object&#xff09;&#xff0c;它及其所有属性都可以在程序的任何地方访问&#xff0c;即全局变量。 在浏览器 JavaScript 中&#xff0c;通常 window 是全局对象&#xff0c; 而 Node.js 中的全局…...

LTR-381RGB-01RGB+环境光检测应用场景及客户类型主要有哪些?

RGB环境光检测 功能&#xff0c;在应用场景及客户类型&#xff1a; 1. 可应用的儿童玩具类型 (1) 智能互动玩具 功能&#xff1a;通过检测环境光或物体颜色触发互动&#xff08;如颜色识别积木、光感音乐盒&#xff09;。 客户参考&#xff1a; LEGO&#xff08;乐高&#x…...

timestamp时间戳转换工具

作为一名程序员&#xff0c;一款高效的 在线转换工具 &#xff08;在线时间戳转换 计算器 字节单位转换 json格式化&#xff09;必不可少&#xff01;https://jsons.top 排查问题时非常痛的点: 经常在秒级、毫秒级、字符串格式的时间单位来回转换&#xff0c;于是决定手撸一个…...