机器学习笔记之最优化理论与方法(九)无约束优化问题——常用求解方法(下)

引言

上一节介绍了牛顿法、拟牛顿法。本节将继续以拟牛顿法为基础,介绍 DFP , BFGS \text{DFP},\text{BFGS} DFP,BFGS方法

回顾:经典牛顿法的缺陷与拟牛顿法思想

经典牛顿法缺陷与修正牛顿法

关于经典牛顿法中关于下降方向 D k ( k = 1 , 2 , ⋯ , ∞ ) \mathcal D_k(k=1,2,\cdots,\infty) Dk(k=1,2,,)数学符号表示如下:
D k = − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) \mathcal D_k = - [\nabla^2 f(x_k)]^{-1} \nabla f(x_k) Dk=[2f(xk)]1f(xk)
其中 ∇ f ( x k ) \nabla f(x_k) f(xk)表示目标函数 f ( ⋅ ) f(\cdot) f() x k x_k xk位置的梯度向量结果 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)表示目标函数 x k x_k xk位置的 Hessian Matrix \text{Hessian Matrix} Hessian Matrix。问题在于: ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)可能不是正定矩阵,从而无法求解 [ ∇ 2 f ( x k ) ] − 1 [\nabla^2 f(x_k)]^{-1} [2f(xk)]1,最终无法执行迭代过程。

关于这类问题,可以使用正则化法 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)进行修正
∇ 2 f ( x k ) : = ∇ 2 f ( x k ) + λ I \nabla^2 f(x_k):= \nabla^2 f(x_k) + \lambda \mathcal I 2f(xk):=2f(xk)+λI
其中 I \mathcal I I表示单位矩阵。执行该操作的目的是:保持 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)是正定矩阵状态。但这种方法同样存在弊端
λ > max ⁡ i = 1 , 2 , ⋯ , n { − λ i } \lambda > \mathop{\max}\limits_{i=1,2,\cdots,n} \{- \lambda_i\} λ>i=1,2,,nmax{λi}
如果 λ \lambda λ数值过大,可能会发生原始 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)中各特征值被 λ \lambda λ分掉相应权重,从而导致修正后 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)关于 x k x_k xk的二阶梯度信息减少,甚至无效。当然,也可以基于正则化法的思想,对 ∇ 2 f ( x k ) \nabla^2 f(x_k) 2f(xk)进行优化:
实际上,正则化法 λ \lambda λ过大最终影响当前迭代步骤的下降方向,并使其收敛到 ∇ f ( x k ) λ \begin{aligned}\frac{\nabla f(x_k)}{\lambda}\end{aligned} λf(xk)
∇ 2 f ( x k ) = Q T Diag ( τ i ) Q τ i = { τ i if  τ i ≥ δ δ Otherwise \begin{aligned} & \nabla^2 f(x_k) = \mathcal Q^T \text{Diag}(\tau_i) \mathcal Q \\ & \tau_i = \begin{cases} \tau_{i} \quad \text{if } \tau_i \geq \delta \\ \delta \quad \text{Otherwise} \end{cases} \end{aligned} 2f(xk)=QTDiag(τi)Qτi={τiif τiδδOtherwise
其中 δ \delta δ是一个适当正数;虽然该方式相比正则化法缓和不少——仅调整非正特征值的结果,其余正特征值保持不变。但该方法依然存在逻辑上的缺失:通过强行修改二阶梯度信息的方式使其收敛。

拟牛顿法与矩阵 B k + 1 \mathcal B_{k+1} Bk+1的选择

拟牛顿法的思想是:选择一个既包含 x k + 1 x_{k+1} xk+1处的二阶梯度信息,并且容易获取的正定矩阵 B k + 1 \mathcal B_{k+1} Bk+1来替代 ∇ 2 f ( x k + 1 ) \nabla^2 f(x_{k+1}) 2f(xk+1)
由于 [ ∇ 2 f ( x k + 1 ) ] n × n [\nabla^2 f(x_{k+1})]_{n \times n} [2f(xk+1)]n×n自身计算量较大: O ( n 3 ) \mathcal O(n^3) O(n3),从而不容易获取。

关于矩阵 B k + 1 \mathcal B_{k+1} Bk+1满足的基本要求表示如下:
∇ f ( x k + 1 ) − ∇ f ( x k ) = B k + 1 ( x k + 1 − x k ) \nabla f(x_{k+1} )- \nabla f(x_k) = \mathcal B_{k+1} (x_{k+1} - x_k) f(xk+1)f(xk)=Bk+1(xk+1xk)
可以发现:该式子是关于 n n n方程构成的方程组;而未知量包含 n ( n + 1 ) 2 \begin{aligned}\frac{n(n+1)}{2}\end{aligned} 2n(n+1)个( B k + 1 \mathcal B_{k+1} Bk+1上/下三角阵元素数量),并且: n ( n + 1 ) 2 ≥ n ; n ∈ N + \begin{aligned}\frac{n(n+1)}{2} \geq n;n \in \mathbb N^{+}\end{aligned} 2n(n+1)n;nN+。这意味着拟牛顿方程的解 B k + 1 \mathcal B_{k+1} Bk+1不唯一

既然满足基本要求的解不唯一,可以尝试从这些解中选择 B k / H k \mathcal B_k/\mathcal H_k Bk/Hk相似的矩阵作为 B k + 1 / H k + 1 \mathcal B_{k+1}/\mathcal H_{k+1} Bk+1/Hk+1

  • 其中: { S k = x k + 1 − x k y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) H k = B k − 1 \begin{cases} \mathcal S_k = x_{k+1} - x_k \\ y_k = \nabla f(x_{k+1}) - \nabla f(x_k) \\ \mathcal H_k = \mathcal B_k^{-1} \end{cases} Sk=xk+1xkyk=f(xk+1)f(xk)Hk=Bk1
  • 通过这种相似性来保证二阶梯度信息的有效性
  • 无论是 B k + 1 \mathcal B_{k+1} Bk+1还是 H k + 1 \mathcal H_{k+1} Hk+1都可以作为我们的求解目标。因为最终都可以对下降方向 D k + 1 \mathcal D_{k+1} Dk+1进行表示: D k + 1 = − B k + 1 − 1 ∇ f ( x k + 1 ) = − H k + 1 ∇ f ( x k + 1 ) \mathcal D_{k+1} = - \mathcal B_{k+1}^{-1} \nabla f(x_{k+1}) = -\mathcal H_{k+1}\nabla f(x_{k+1}) Dk+1=Bk+11f(xk+1)=Hk+1f(xk+1)
    { B k + 1 ⇒ B : { min ⁡ ∥ B − B k ∥ s.t.  B ⋅ S k = y k ; B T = B H k + 1 ⇒ H : { min ⁡ ∥ H − H k ∥ s.t.  H ⋅ y k = S k ; H T = H \begin{cases} \mathcal B_{k+1} \Rightarrow \mathcal B: \begin{cases} \min \|\mathcal B - \mathcal B_k\| \\ \text{s.t. } \mathcal B \cdot \mathcal S_k = y_k;\mathcal B^T = \mathcal B \end{cases} \\ \quad \\ \mathcal H_{k+1} \Rightarrow \mathcal H:\begin{cases} \min \|\mathcal H - \mathcal H_k\| \\ \text{s.t. } \mathcal H \cdot y_k = \mathcal S_k;\mathcal H^T = \mathcal H \end{cases} \end{cases} Bk+1B:{minBBks.t. BSk=yk;BT=BHk+1H:{minHHks.t. Hyk=Sk;HT=H

也可以尝试: B k + 1 / H k + 1 \mathcal B_{k+1}/\mathcal H_{k+1} Bk+1/Hk+1看作是 B k / H k \mathcal B_k/\mathcal H_k Bk/Hk的校正/优化后的结果。令 B k + 1 = B k + Δ B \mathcal B_{k+1} = \mathcal B_k + \Delta\mathcal B Bk+1=Bk+ΔB或者 H k + 1 = H k + Δ H \mathcal H_{k+1} = \mathcal H_{k} + \Delta \mathcal H Hk+1=Hk+ΔH,其中:

  • SR-1 \text{SR-1} SR-1方法是 Rank-1 \text{Rank-1} Rank-1校正: Δ B 、 Δ H \Delta \mathcal B、\Delta \mathcal H ΔBΔH的秩为 1 1 1的代表方法;
  • DFP,BFGS \text{DFP,BFGS} DFP,BFGS方法是 Rank-2 \text{Rank-2} Rank-2校正: Δ B 、 Δ H \Delta \mathcal B、\Delta \mathcal H ΔBΔH的秩为 2 2 2的代表方法。

拟牛顿法之 DFP \text{DFP} DFP方法

关于 DFP(Davidon-Fletcher-Power) \text{DFP(Davidon-Fletcher-Power)} DFP(Davidon-Fletcher-Power)方法可看做是 H k \mathcal H_k Hk进行 Rank-2 \text{Rank-2} Rank-2校正。对应迭代公式表示如下:
H k + 1 = H k − H k y k y k T H k y k T H k y k + S k S k T y k T S k \mathcal H_{k+1} = \mathcal H_k - \frac{\mathcal H_ky_ky_k^T \mathcal H_k}{y_k^T \mathcal H_k y_k} + \frac{\mathcal S_k\mathcal S_k^T}{y_k^T \mathcal S_k} Hk+1=HkykTHkykHkykykTHk+ykTSkSkSkT

DFP \text{DFP} DFP迭代公式的推导过程

DFP \text{DFP} DFP是一个 Rank-2 \text{Rank-2} Rank-2校正方法,那么如何表示一个秩为 2 2 2的矩阵 ? ? ?首先,先观察秩为 1 1 1的矩阵如何表示:某矩阵 A n × n \mathcal A_{n \times n} An×n可表示为如下形式:
该矩阵的所有行均相同。
A = U V T U , V ∈ R n ; U , V ≠ 0 \mathcal A = \mathcal U\mathcal V^T \quad \mathcal U,\mathcal V \in \mathbb R^n;\mathcal U,\mathcal V \neq 0 A=UVTU,VRn;U,V=0
此时 A \mathcal A A就是一个秩为 1 1 1的矩阵。但由于 H k \mathcal H_k Hk必然是一个对称矩阵,相比于上式, Δ H \Delta \mathcal H ΔH想满足是秩为 1 1 1仅需要满足:
Δ H = U U T U ∈ R n ; U ≠ 0 \Delta \mathcal H = \mathcal U \mathcal U^T \quad \mathcal U \in \mathbb R^n;\mathcal U \neq 0 ΔH=UUTURn;U=0
这是秩为 1 1 1的情况。那秩为 2 2 2 ? ? ?只需要满足:
Δ H = U U T + V V T { U , V ∈ R n U , V ≠ 0 U ≠ V \Delta \mathcal H = \mathcal U \mathcal U^T + \mathcal V \mathcal V^T \quad \begin{cases}\mathcal U,\mathcal V \in \mathbb R^n \\ \mathcal U,\mathcal V \neq 0 \\ \mathcal U \neq \mathcal V \end{cases} ΔH=UUT+VVT U,VRnU,V=0U=V
综上,将迭代关系 H k + 1 = H k + Δ H \mathcal H_{k+1} = \mathcal H_k + \Delta \mathcal H Hk+1=Hk+ΔH表示为如下形式:
其中 a , b a,b a,b是系数,均是标量~
H k + 1 = H k + a ⋅ U U T + b ⋅ V V T \mathcal H_{k+1} = \mathcal H_k + a \cdot \mathcal U \mathcal U^T + b \cdot \mathcal V \mathcal V^T Hk+1=Hk+aUUT+bVVT
由于 H k + 1 \mathcal H_{k+1} Hk+1需要满足基本要求 H k + 1 ⋅ y k = S k \mathcal H_{k+1} \cdot y_k = \mathcal S_k Hk+1yk=Sk,因而将上式带入。有:
H k y k + a ⋅ U U T y k + b ⋅ V V T y k − S k = 0 \mathcal H_k y_k + a \cdot \mathcal U\mathcal U^T y_k + b\cdot \mathcal V\mathcal V^T y_k - \mathcal S_k = 0 Hkyk+aUUTyk+bVVTykSk=0
其中:

  • 由于 H k ∈ R n × n , y k ∈ R n \mathcal H_k \in \mathbb R^{n \times n},y_k \in \mathbb R^n HkRn×n,ykRn,因而 H k y k ∈ R n \mathcal H_k y_k \in \mathbb R^n HkykRn,是一个 n n n维向量
  • 由于 U T y k ∈ R \mathcal U^T y_k \in \mathbb R UTykR,因而 a ⋅ U ( U T y k ) ∈ R n a \cdot \mathcal U (\mathcal U^T y_k) \in \mathbb R^n aU(UTyk)Rn,可看做向量 U \mathcal U U a ⋅ ( U T y k ) a \cdot (\mathcal U^T y_k) a(UTyk)
  • 同理, b ⋅ V ( V T y k ) ∈ R n b \cdot \mathcal V(\mathcal V^T y_k) \in \mathbb R^n bV(VTyk)Rn,可看做向量 V \mathcal V V b ⋅ ( V T y k ) b \cdot (\mathcal V^T y_k) b(VTyk)
  • S k = x k + 1 − x k ∈ R n \mathcal S_k = x_{k+1} - x_k \in \mathbb R^n Sk=xk+1xkRn

U , V \mathcal U,\mathcal V U,V进行取值。将项 H k , a ⋅ U ( U T y k ) \mathcal H_k,a \cdot \mathcal U (\mathcal U^T y_k) Hk,aU(UTyk)关联在一起;项 b ⋅ V ( V T y k ) , S k b \cdot \mathcal V (\mathcal V^T y_k),\mathcal S_k bV(VTyk),Sk关联在一起
[ H k y k + a ⋅ U ( U T y k ) ] ⏟ = 0 + [ b ⋅ V ( V T y k ) − S k ] ⏟ = 0 = 0 \underbrace{\left[\mathcal H_k y_k + a \cdot \mathcal U (\mathcal U^T y_k) \right]}_{=0} + \underbrace{\left[b \cdot \mathcal V ( \mathcal V^T y_k) - \mathcal S_k\right]}_{=0} = 0 =0 [Hkyk+aU(UTyk)]+=0 [bV(VTyk)Sk]=0
观察第一项:令 U = H k y k \mathcal U = \mathcal H_k y_k U=Hkyk,带入有:
H k y k + a ⋅ U ( U T y k ) = H k y k + a ⋅ H k y k [ ( H k y k ) T y k ] = ( H k y k ) [ 1 + a ⋅ ( H k y k ) T y k ] = 0 ⇒ 1 + a ⋅ ( H k y k ) T y k = 0 \begin{aligned} \mathcal H_k y_k + a \cdot \mathcal U (\mathcal U^T y_k) & = \mathcal H_ky_k + a \cdot\mathcal H_k y_k [(\mathcal H_k y_k)^Ty_k] \\ & = (\mathcal H_k y_k)[1 + a \cdot (\mathcal H_k y_k)^T y_k] \\ & = 0 \\ & \Rightarrow1 + a \cdot (\mathcal H_k y_k)^T y_k = 0 \end{aligned} Hkyk+aU(UTyk)=Hkyk+aHkyk[(Hkyk)Tyk]=(Hkyk)[1+a(Hkyk)Tyk]=01+a(Hkyk)Tyk=0
整理得: a = − 1 y k T H k T y k \begin{aligned}a = - \frac{1}{y_k^T \mathcal H_k^T y_k}\end{aligned} a=ykTHkTyk1
同理,观察第二项:令 V = S k \mathcal V = \mathcal S_k V=Sk,带入有:
b ⋅ S k T y k − 1 = 0 ⇒ b = 1 S k T y k b \cdot \mathcal S_k^T y_k - 1 = 0 \Rightarrow b = \frac{1}{\mathcal S_k^T y_k} bSkTyk1=0b=SkTyk1
至此,关于向量 U , V \mathcal U,\mathcal V U,V系数 a , b a,b a,b均已取值完毕,将该结果带入 H k + 1 = H k + a ⋅ U U T + b ⋅ V V T \mathcal H_{k+1} = \mathcal H_k + a \cdot \mathcal U \mathcal U^T + b \cdot \mathcal V \mathcal V^T Hk+1=Hk+aUUT+bVVT,即可得到 DFP \text{DFP} DFP公式中 H k + 1 \mathcal H_{k+1} Hk+1 H k \mathcal H_k Hk之间的迭代关系

小插曲: DFP \text{DFP} DFP方法与最小范数方法

关于最小范数方法: B k + 1 ⇒ B : { min ⁡ ∥ B − B k ∥ s.t.  B ⋅ S k = y k ; B T = B \mathcal B_{k+1} \Rightarrow \mathcal B: \begin{cases} \min \|\mathcal B - \mathcal B_k\| \\ \text{s.t. } \mathcal B \cdot \mathcal S_k = y_k;\mathcal B^T = \mathcal B \end{cases} Bk+1B:{minBBks.t. BSk=yk;BT=B,如果使用 Frobenius \text{Frobenius} Frobenius范数 ∥ B − B k ∥ \|\mathcal B - \mathcal B_k\| BBk进行表示:
可以看成是关于矩阵的 L 2 L_2 L2范数
∥ B − B k ∥ F = ∑ i = 1 n ∑ j = 1 n [ b i j − b i j ( k ) ] 2 \|\mathcal B - \mathcal B_k\|_{F} = \sqrt{\sum_{i=1}^n \sum_{j=1}^n \left[b_{ij} - b_{ij}^{(k)}\right]^2} BBkF=i=1nj=1n[bijbij(k)]2
通过该范数求解出的 B k + 1 \mathcal B_{k+1} Bk+1,它的逆: B k + 1 − 1 \mathcal B_{k+1}^{-1} Bk+11就是 DFP \text{DFP} DFP方法求解出的 H k + 1 \mathcal H_{k+1} Hk+1
世界真奇妙~

拟牛顿法之 BFGS \text{BFGS} BFGS方法

关于 BFGS(Broyden-Fletch-Goldfarb-Shannon) \text{BFGS(Broyden-Fletch-Goldfarb-Shannon)} BFGS(Broyden-Fletch-Goldfarb-Shannon)方法可看做是 B k \mathcal B_k Bk进行 Rank-2 \text{Rank-2} Rank-2校正。对应迭代公式表示如下:
B k + 1 = B k − B k S k S k T B k S k T B k S k + y k y k T y k T S k \mathcal B_{k+1} = \mathcal B_k - \frac{\mathcal B_k \mathcal S_k \mathcal S_k^T \mathcal B_k}{\mathcal S_k^T \mathcal B_k \mathcal S_k} + \frac{y_k y_k^T}{y_k^T \mathcal S_k} Bk+1=BkSkTBkSkBkSkSkTBk+ykTSkykykT

关于 BFGS \text{BFGS} BFGS公式的推导,它与 DFP \text{DFP} DFP公式的推导完全对称。只不过它使用的基本要求是: B k + 1 ⋅ S k = y k \mathcal B_{k+1} \cdot \mathcal S_k = y_k Bk+1Sk=yk

  • 对比 DFP \text{DFP} DFP公式:仅需要将第一项中的 y k y_k yk改成 S k \mathcal S_k Sk H k \mathcal H_k Hk改成 B k \mathcal B_k Bk;第二项将分子中的 S k \mathcal S_k Sk改成 y k y_k yk即可。
  • 关于 BFGS \text{BFGS} BFGS公式的推导不再赘述。

新的疑问:在使用 BFGS \text{BFGS} BFGS求解出 B k + 1 \mathcal B_{k+1} Bk+1后,在后续求解下降方向 D k = − B k + 1 − 1 ∇ f ( x k + 1 ) \mathcal D_k = - \mathcal B_{k+1}^{-1} \nabla f(x_{k+1}) Dk=Bk+11f(xk+1)中,依然不可避免地需要求解逆: B k + 1 − 1 \mathcal B_{k+1}^{-1} Bk+11。而求逆同样是一个非常麻烦的操作,为什么还会使用 BFGS \text{BFGS} BFGS方法 ? ? ?主要有两点原因

  • 具备 B k + 1 = B k + a ⋅ U U T + b ⋅ V V T \mathcal B_{k+1} = \mathcal B_k + a \cdot \mathcal U \mathcal U^T + b \cdot \mathcal V \mathcal V^T Bk+1=Bk+aUUT+bVVT格式的可以使用 Sherman-Morrison \text{Sherman-Morrison} Sherman-Morrison公式直接求解
    可以看出,求逆操作自身并不麻烦。
    ( A + U V T ) − 1 = A − 1 − A − 1 U V T A − 1 1 + V T A − 1 U (\mathcal A + \mathcal U \mathcal V^T)^{-1} = \mathcal A^{-1} - \frac{\mathcal A^{-1} \mathcal U \mathcal V^T \mathcal A^{-1}}{1 + \mathcal V^T \mathcal A^{-1} \mathcal U} (A+UVT)1=A11+VTA1UA1UVTA1
  • DFP \text{DFP} DFP方法求解,其结果稳定性较差。在迭代过程中可能出现 H k + 1 \mathcal H_{k+1} Hk+1变成奇异矩阵。相反, BFGS \text{BFGS} BFGS迭代过程中的数值稳定性更强。并且 BFGS \text{BFGS} BFGS被认为是最有效的拟牛顿法,它的收敛速度可达到超线性收敛

相比于牛顿法中直接求解 Hessian Matrix ⇒ ∇ 2 f ( x k ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(x_k) Hessian Matrix2f(xk) DFP,BFGS \text{DFP,BFGS} DFP,BFGS方法需要求解梯度 ∇ f ( x k ) , ∇ f ( x k + 1 ) \nabla f(x_k),\nabla f(x_{k+1}) f(xk),f(xk+1),以及套用求逆公式。其计算量远小于求解 Hessian Matrix \text{Hessian Matrix} Hessian Matrix

Broyden \text{Broyden} Broyden

假设使用 DFP \text{DFP} DFP方法求解出 H k + 1 \mathcal H_{k+1} Hk+1,将该结果求逆,将其还原
B DFP ; k + 1 = H k + 1 − 1 \mathcal B_{\text{DFP};k+1} = \mathcal H_{k+1}^{-1} BDFP;k+1=Hk+11
然后通过 BFGS \text{BFGS} BFGS方法直接求解出 B k + 1 \mathcal B_{k+1} Bk+1。对这两个矩阵进行线性组合
{ λ ⋅ B DFP ; k + 1 + ( 1 − λ ) ⋅ B k + 1 } λ ∈ [ 0 , 1 ] \{\lambda \cdot \mathcal B_{\text{DFP};k+1} + (1 - \lambda) \cdot \mathcal B_{k+1}\} \quad \lambda \in [0,1] {λBDFP;k+1+(1λ)Bk+1}λ[0,1]
这明显是一个集合。如果迭代过程中,矩阵 B k + 1 \mathcal B_{k+1} Bk+1落在集合内,对应的方法被称作 Broyden \text{Broyden} Broyden

拟牛顿法之 SR-1 \text{SR-1} SR-1方法

关于 SR-1 \text{SR-1} SR-1方法可看做是 B k \mathcal B_k Bk进行 Rank-1 \text{Rank-1} Rank-1校正。对应迭代公式表示如下:
B k + 1 = B k + ( y k − B k S k ) ( y k − B k S k ) T ( y k − B k S k ) T S k \mathcal B_{k+1} = \mathcal B_k + \frac{(y_k - \mathcal B_k \mathcal S_k)(y_k - \mathcal B_k \mathcal S_k)^T}{(y_k - \mathcal B_k \mathcal S_k)^T \mathcal S_k} Bk+1=Bk+(ykBkSk)TSk(ykBkSk)(ykBkSk)T

SR-1 \text{SR-1} SR-1迭代公式的推导过程

DFP \text{DFP} DFP方法的推导过程类似。将迭代关系 B k + 1 = B k + Δ B \mathcal B_{k+1} = \mathcal B_k + \Delta \mathcal B Bk+1=Bk+ΔB表示为如下形式:
B k + 1 = B k + a ⋅ U U T \mathcal B_{k+1} = \mathcal B_{k} + a \cdot \mathcal U \mathcal U^T Bk+1=Bk+aUUT
由于 B k + 1 \mathcal B_{k+1} Bk+1需要满足基本要求 B k + 1 ⋅ S k = y k \mathcal B_{k+1} \cdot \mathcal S_k = y_k Bk+1Sk=yk。因而将上式带入,有:
B k S k + a ⋅ U ( U T S k ) = y k ⇒ a ⋅ U ( U T S k ) = y k − B k S k \mathcal B_k \mathcal S_k + a \cdot \mathcal U( \mathcal U^T \mathcal S_k) = y_k \Rightarrow a \cdot \mathcal U(\mathcal U^T \mathcal S_k) = y_k - \mathcal B_k \mathcal S_k BkSk+aU(UTSk)=ykaU(UTSk)=ykBkSk
U = y k − B k S k \mathcal U = y_k - \mathcal B_k \mathcal S_k U=ykBkSk,有:系数 a ⋅ ( U T S k ) = 1 a \cdot (\mathcal U^T \mathcal S_k) = 1 a(UTSk)=1,最终可求出 a a a
a = 1 U T S k = 1 ( y k − B k S k ) T S k a = \frac{1}{\mathcal U^T \mathcal S_k} = \frac{1}{(y_k - \mathcal B_k \mathcal S_k)^T \mathcal S_k} a=UTSk1=(ykBkSk)TSk1
a , U a,\mathcal U a,U带回 B k + 1 = B k + a ⋅ U U T \mathcal B_{k+1} = \mathcal B_{k} + a \cdot \mathcal U\mathcal U^T Bk+1=Bk+aUUT,就有 SR-1 \text{SR-1} SR-1迭代公式

不可否认: SR-1 \text{SR-1} SR-1方法的迭代公式更加简便但它不能保证迭代过程中 B k + 1 \mathcal B_{k+1} Bk+1的正定性。在适当条件下, SR-1 \text{SR-1} SR-1算法可达到 n n n步超线性收敛
这里的 n n n步超线性收敛是指:当前步骤与执行 n n n步之后的结果呈超线性收敛趋势。对比超线性收敛,其数学符号表示如下:
{ lim ⁡ k → ∞ ∥ x k + 1 − x ∗ ∥ ∥ x k − x ∗ ∥ = 0 lim ⁡ k ⇒ ∞ ∥ x k + n − x ∗ ∥ ∥ x k − x ∗ ∥ = 0 \begin{cases} \begin{aligned} \mathop{\lim}\limits_{k \rightarrow \infty} \frac{\|x_{k+1} - x^*\|}{\|x_k - x^*\|} = 0\\ \mathop{\lim}\limits_{k \Rightarrow \infty} \frac{\|x_{k+n} - x^*\|}{\|x_k - x^*\|} = 0 \end{aligned} \end{cases} klimxkxxk+1x=0klimxkxxk+nx=0

Reference \text{Reference} Reference
最优化理论与方法-第六讲-无约束优化问题(二)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/78490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索装饰艺术的未来,留存传统的精髓

近一个世纪后,装饰艺术终于卷土重来。正如我们在全球新的项目、室内空间和家具中所看到的,那种令我们渴望20世纪初20年代繁荣时期的奢华和魅力。作为装饰艺术建筑和设计的独特身份一直在世界上继续启发着人们,那么从新的设计和现有设计的保留…

从零基础到精通Flutter开发:一步步打造跨平台应用

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 导言 Flutter是一种流行…

【RocketMQ】消息的拉取

在上一讲中,介绍了消息的存储,生产者向Broker发送消息之后,数据会写入到CommitLog中,这一讲,就来看一下消费者是如何从Broker拉取消息的。 RocketMQ消息的消费以组为单位,有两种消费模式: 广播…

如何使用SQL系列 之 如何在MySQL中使用存储过程

引言 通常,当使用关系型数据库时,你直接在应用程序代码中发出单独的结构化查询语言(SQL)查询来检索或操作数据,如SELECT、INSERT、UPDATE或DELETE。这些语句直接作用于并操作底层数据库表。如果相同的语句或一组语句中使用多个应用程序访问同…

Element Plus table formatter函数返回html内容

查看 Element Plus table formatter 支持返回 类型为string 和 VNode对象; 若依全局直接用h函数,无需引用 下面普通基本用法:在Element Plus中,你可以使用自定义的formatter函数来返回VNode对象,从而实现更灵活的自定…

RabbitMQ基本概念和工作原理

目录 RabbitMQ的基本概念 RabbitMQ的工作原理 RabbitMQ的交换机类型 RabbitMQ的实现原理 RabbitMQ的消息确认机制 RabbitMQ的消息持久化机制 RabbitMQ的事务 RabbitMQ的消息分发流程 RabbitMQ的消息分发机制 RabbitMQ实现RPC的机制 RabbitMQ的基本概念 RabbitMQ是一…

uni-app vuex全局计时

功能需求,在A页面进入时候开始计时中间会去到B页面查看数据,但是并没有销毁当前页面,所以计时一直在,直到在B页面提交数据,才结束计时 在根文件夹创建 store文件夹,同时创建index.js文件import Vue from v…

Navicat连接mysql8.0:提示无法加载身份验证插件“caching_sha2_password”

Navicat连接mysql时,提示:Unable to load authentication plugin ‘caching_sha2_password‘. 原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制。 D:\MySQL8.0\install\bin>mysql -uroot -p123456789 #登录 mysql: [War…

《动手学深度学习 Pytorch版》 4.10 实战Kaggle比赛:预测比赛

4.10.1 下载和缓存数据集 import hashlib import os import tarfile import zipfile import requests#save DATA_HUB dict() DATA_URL http://d2l-data.s3-accelerate.amazonaws.com/def download(name, cache_diros.path.join(.., data)): #save"""下载一个…

【Express.js】代码规范

代码规范 编程规范,对于一个优秀的项目是不可或缺的,有了良好的代码规范,有益于项目的维护与拓展。 命名规范 命名的第一要义是明了,要让阅读者看到命名就能大概猜测出其意义或用处。 以用户身份(userRole&#xff…

Pyramid Scene Parsing Network–CVPR,2017论文解读及其pytorch代码

文章目录 Pyramid Scene Parsing Network--CVPR,2017一、背景介绍二、网络结构和优化方法三、实验结果 Pyramid Scene Parsing Network–CVPR,2017 Github代码链接 一、背景介绍 现阶段随着数据集制作精细化、标签种类变多、具有语义相似标签等导致出…

Jtti:Linux如何开机启动bootstrap

在Linux中,"bootstrap"通常不是一个单独的启动项,而是指引导过程的一部分。引导过程涉及到启动引导加载程序,加载内核,初始化系统并启动各种服务。启动过程中不会直接启动"bootstrap",而是通过引导…

docker 网络模式 与 ftp 主动模式与被动模式

前言 在软件开发的过程中要访问ftp上传和下载文件,本地环境测试可以顺利访问ftp文件服务完成文件上传和下载的过程,但是发布到显示生产环境,通过docker容器化部署,无法访问ftp文件服务器。要理解产生这种问题的原因就需要理解doc…

DataX实现Mysql与ElasticSearch(ES)数据同步

文章目录 一、Linux环境要求二、准备工作2.1 Linux安装jdk2.2 linux安装python2.3 下载DataX: 三、DataX压缩包导入,解压缩四、编写同步Job五、执行Job六、定时更新6.1 创建定时任务6.2 提交定时任务6.3 查看定时任务 七、增量更新思路 一、Linux环境要求…

PDFBOX和ASPOSE.PDF

一、aspose.pdf 文档 https://docs.aspose.com/pdf/java/ 1、按段落分段 /*** docx文本按段分段*/ public static void main(String[] args) {int i 1;try {// 打开文件流FileInputStream file new FileInputStream("I:\\范文.docx");// 创建 Word 文档对象XWPFDo…

实时显示当前文件夹下的文件大小,shell脚本实现

图片来源于网络,如果侵权请联系博主删除! 需求: 写一个shell终端命令,实时显示当前文件夹下的文件大小 实现: 您可以使用以下的Shell脚本命令来实时显示当前文件夹下的文件大小: while true; docleardu …

2023-亲测有效-git clone失败怎么办?用代理?加git?

git 克隆不下来,超时 用以下格式: git clone https://ghproxy.com/https://github.com/Tencent/ncnn.git 你的网站前面加上 https://ghproxy.com/ 刷的一下就下完了!!

投资理财基础知识分享(三)

大家好,我是财富智星,今天跟继续跟大家分享投资理财基础知识,买理财,何时买,何时卖的问题。 一、何时买? 在投资中,决定何时买入资产对于理财新手来说并不是一个应该花费过多精力的问题&#xf…

音频驱动嘴型的视频数字人虚拟主播工具motionface replay使用教程

音频驱动嘴型的视频数字人虚拟主播工具motionface replay使用教程 1:系统要求 软件运行支持32位/64位window 10/11系统,内存最低要求> 8Gb.无其他硬性要求。 1:下载安装 打开百度网盘链接下载: 链接:百度网盘 请输入…

Transformers-Bert家族系列算法汇总

🤗 Transformers 提供 API 和工具,可轻松下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省从头开始训练模型所需的时间和资源。这些模型支持不同形式的常见任务,例如: 📝 自…