机器学习笔记之优化算法(十六)梯度下降法在强凸函数上的收敛性证明

机器学习笔记之优化算法——梯度下降法在强凸函数上的收敛性证明

  • 引言
    • 回顾:
      • 凸函数与强凸函数
      • 梯度下降法:凸函数上的收敛性分析
    • 关于白老爹定理的一些新的认识
    • 梯度下降法在强凸函数上的收敛性
      • 收敛性定理介绍
      • 结论分析
      • 证明过程

引言

本节将介绍:梯度下降法强凸函数上的收敛性,以及证明过程

回顾:

凸函数与强凸函数

关于凸函数的定义使用数学符号表示如下:
∀ x 1 , x 2 ∈ R n , ∀ λ ∈ ( 0 , 1 ) ⇒ f [ λ ⋅ x 2 + ( 1 − λ ) ⋅ x 1 ] ≤ λ ⋅ f ( x 2 ) + ( 1 − λ ) ⋅ f ( x 1 ) \forall x_1,x_2 \in \mathbb R^n, \forall \lambda \in (0,1) \Rightarrow f [\lambda \cdot x_2 + (1 - \lambda) \cdot x_1] \leq \lambda \cdot f(x_2) + (1 - \lambda) \cdot f(x_1) x1,x2Rn,λ(0,1)f[λx2+(1λ)x1]λf(x2)+(1λ)f(x1)
很明显,这描述的是 f [ λ ⋅ x 2 + ( 1 − λ ) ⋅ x 1 ] f[\lambda \cdot x_2 + (1 - \lambda) \cdot x_1] f[λx2+(1λ)x1] λ ⋅ f ( x 2 ) + ( 1 − λ ) ⋅ f ( x 1 ) \lambda \cdot f(x_2) + (1 - \lambda) \cdot f(x_1) λf(x2)+(1λ)f(x1)两个之间的大小关系。以 x 1 , x 2 ∈ R x_1,x_2 \in \mathbb R x1,x2R为例,它们的大小关系在图像中表示如下:
凸函数定义描述——示例
观察公式,可以看出:作为凸函数的定义,两个量之间有机会取等。依然以 x 1 , x 2 ∈ R x_1,x_2 \in \mathbb R x1,x2R为例,两个取等情况下的图像示例如下:
很明显,这是一个线性函数,对应的函数图像是一条直线。任选 x 1 , x 2 ∈ R x_1,x_2 \in \mathbb R x1,x2R,对应函数结果的连线内的任意一点都在该直线上。
特殊凸函数——示例
类似地,关于强凸函数的定义使用数学符号表示如下:对于 ∀ x 1 , x 2 ∈ R n , ∀ λ ∈ ( 0 , 1 ) , ∃ m > 0 \forall x_1,x_2 \in \mathbb R^n,\forall \lambda \in (0,1),\exist m > 0 x1,x2Rn,λ(0,1),m>0,总有:
λ ⋅ f ( x 1 ) + ( 1 − λ ) ⋅ f ( x 2 ) ≥ f [ λ ⋅ x 1 + ( 1 − λ ) ⋅ x 2 ] + m 2 ⋅ λ ( 1 − λ ) ⋅ ∣ ∣ x 1 − x 2 ∣ ∣ 2 \lambda \cdot f(x_1) + (1 - \lambda) \cdot f(x_2) \geq f[\lambda \cdot x_1 + (1 - \lambda) \cdot x_2] + \frac{m}{2} \cdot \lambda(1 - \lambda) \cdot ||x_1 - x_2||^2 λf(x1)+(1λ)f(x2)f[λx1+(1λ)x2]+2mλ(1λ)∣∣x1x22
相比于凸函数的定义,强凸函数定义明显的特点是:两个量之间不仅不能取等,并且还要相差一个大小为 m 2 ⋅ λ ( 1 − λ ) ⋅ ∣ ∣ x 1 − x 2 ∣ ∣ 2 \begin{aligned}\frac{m}{2} \cdot \lambda(1 - \lambda) \cdot ||x_1 - x_2||^2\end{aligned} 2mλ(1λ)∣∣x1x22的正值

  • 其中 m m m表示描述强凸函数的参数,也被称作 m m m-强凸函数
  • 这种定义的描述彻底杜绝了线性函数这种‘看起来不凸’的凸函数的情况。也就是说,强凸函数对于两个量之间的大小关系的约束更强了。

梯度下降法:凸函数上的收敛性分析

关于梯度下降法凸函数上的收敛性描述表示如下:

  • 条件:
    • 函数 f ( ⋅ ) f(\cdot) f()向下有界,在其定义域内可微,并且 f ( ⋅ ) f(\cdot) f()凸函数
    • 关于梯度函数 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续
    • 在梯度下降法的迭代过程中,步长 α k ( k = 1 , 2 , 3 , ⋯ ) \alpha_k(k=1,2,3,\cdots) αk(k=1,2,3,)存在明确的约束范围 α k ∈ ( 0 , 1 L ] \begin{aligned}\alpha_k \in \left(0,\frac{1}{\mathcal L}\right]\end{aligned} αk(0,L1]
      关于步长 α k \alpha_k αk约束范围的上界 1 L \begin{aligned}\frac{1}{\mathcal L}\end{aligned} L1,详见二次上界引理,这里不再赘述。
  • 结论:目标函数序列 { f ( x k ) } k = 0 ∞ \{f(x_k)\}_{k=0}^{\infty} {f(xk)}k=0 O ( 1 k ) \begin{aligned}\mathcal O \left(\frac{1}{k}\right)\end{aligned} O(k1)收敛类型,次线性收敛于目标函数的最优解 f ∗ f^* f
    关于证明过程详见优化算法——梯度下降法在凸函数上的收敛性

关于白老爹定理的一些新的认识

Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem一节中介绍过:如果 f ( ⋅ ) f(\cdot) f()在定义域内可微,并且是凸函数,而且 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续,那么必然有:函数 G ( x ) = L 2 x T x − f ( x ) \begin{aligned}\mathcal G(x) = \frac{\mathcal L}{2}x^Tx - f(x)\end{aligned} G(x)=2LxTxf(x)同样是凸函数

虽然证明过程比较简单,但新的问题出现:为什么要设计 G ( x ) \mathcal G(x) G(x)这样的函数 ? ? ?或者关于项 L 2 x T x \begin{aligned}\frac{\mathcal L}{2}x^Tx\end{aligned} 2LxTx产生的原因是什么 ? ? ?是否存在什么意义 ? ? ?

重新观察: ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续这个条件:
∀ x , y ∈ R n , ∃ L ⇒ ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ ≤ L ⋅ ∣ ∣ x − y ∣ ∣ \forall x,y \in \mathbb R^n,\exist \mathcal L \Rightarrow ||\nabla f(x) - \nabla f(y)|| \leq \mathcal L \cdot ||x - y|| x,yRn,L∣∣∇f(x)f(y)∣∣L∣∣xy∣∣
如果函数 f ( ⋅ ) f(\cdot) f()在其定义域内二阶可微,根据拉格朗日中值定理,有:
其中 I \mathcal I I表示单位矩阵。
∃ ξ ∈ ( x , y ) ⇒ ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ ∣ ∣ x − y ∣ ∣ = ∇ 2 f ( ξ ) ≼ L ⋅ I \exist \xi \in (x,y) \Rightarrow \frac{||\nabla f(x) - \nabla f(y)||}{||x - y||} = \nabla^2 f(\xi) \preccurlyeq \mathcal L \cdot \mathcal I ξ(x,y)∣∣xy∣∣∣∣∇f(x)f(y)∣∣=2f(ξ)LI
最终整理,有:
L ⋅ I − ∇ 2 f ( ξ ) ≽ 0 \mathcal L \cdot \mathcal I - \nabla^2 f(\xi) \succcurlyeq 0 LI2f(ξ)0
而不等式左侧正是 L 2 ξ T ξ − f ( ξ ) \begin{aligned}\frac{\mathcal L}{2}\xi^T\xi - f(\xi)\end{aligned} 2LξTξf(ξ)二阶梯度结果。这意味着: G ( x ) = L 2 x T x − f ( x ) \begin{aligned}\mathcal G(x) = \frac{\mathcal L}{2}x^Tx - f(x)\end{aligned} G(x)=2LxTxf(x)二阶梯度 ∇ 2 f ( x ) ( Hessian Matrix ) \nabla^2 f(x)(\text{Hessian Matrix}) 2f(x)(Hessian Matrix)存在关联关系。

当然,关于二次项 x T x x^Tx xTx,我们在强凸函数的定义中也发现过这种格式:
这里也使用 G ( x ) \mathcal G(x) G(x)描述了~
G ( x ) ≜ f ( x ) − m 2 x T x \mathcal G(x) \triangleq f(x) - \frac{m}{2}x^Tx G(x)f(x)2mxTx
假设这里的 G ( x ) \mathcal G(x) G(x)同样也是二阶可微的情况下,那么关于 ∇ 2 G ( x ) \nabla^2 \mathcal G(x) 2G(x)可表示为:
∇ 2 G ( x ) = ∇ 2 f ( x ) − m ⋅ I \nabla^2 \mathcal G(x) = \nabla^2 f(x) - m \cdot \mathcal I 2G(x)=2f(x)mI
根据强凸函数的二阶条件,必然有:
∇ 2 f ( x ) − m ⋅ I ≽ 0 \nabla^2 f(x) - m \cdot \mathcal I \succcurlyeq 0 2f(x)mI0

梯度下降法在强凸函数上的收敛性

收敛性定理介绍

类似地,关于梯度下降法 m m m-强凸函数上的收敛性描述表示如下:

  • 条件:
    • 函数 f ( ⋅ ) f(\cdot) f()向下有界,在其定义域内可微,并且 f ( ⋅ ) f(\cdot) f() m m m-强凸函数
    • 关于梯度函数 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续
    • 在梯度下降法的迭代过程中,步长 α k ( k = 1 , 2 , 3 , ⋯ ) \alpha_k(k=1,2,3,\cdots) αk(k=1,2,3,)存在明确的约束范围 α k ∈ ( 0 , 2 L + m ) \begin{aligned}\alpha_k \in \left(0,\frac{2}{\mathcal L + m}\right)\end{aligned} αk(0,L+m2)
  • 结论:
    数值解序列 { x k } k = 0 ∞ \{x_k\}_{k=0}^{\infty} {xk}k=0 Q \mathcal Q Q-线性收敛的收敛速度收敛于最优数值解 x ∗ x^* x
    • 关于 Q \mathcal Q Q-线性收敛的数学符号描述为: ∣ ∣ x k + 1 − x ∗ ∣ ∣ ∣ ∣ x k − x ∗ ∣ ∣ ≤ a ∈ ( 0 , 1 ) \begin{aligned}\frac{||x_{k+1} - x^*||}{||x_k - x^*||} \leq a \in (0,1)\end{aligned} ∣∣xkx∣∣∣∣xk+1x∣∣a(0,1);其他类型的收敛详见收敛速度的简单认识。
    • 该结论与凸函数的对应结论形式相同,唯一差别在于收敛速度的类型。无论使用 { x k } k = 0 ∞ \{x_k\}_{k=0}^{\infty} {xk}k=0还是使用 { f ( x k ) } k = 0 ∞ \{f(x_k)\}_{k=0}^{\infty} {f(xk)}k=0来描述收敛性,本质上是一样的。

结论分析

观察分子 ∣ ∣ x k + 1 − x ∗ ∣ ∣ ||x_{k+1} - x^*|| ∣∣xk+1x∣∣,使用线搜索方法的通式对其进行表达:

  • 分母可看作是常量,因为 x k x_{k} xk是上一次迭代产生的已知信息;而最优解 x ∗ x^* x随着函数 f ( ⋅ ) f(\cdot) f()客观存在的一个值,它不会发生变化。
  • 由于是梯度下降法,因而方向 P k = − ∇ f ( x k ) \mathcal P_k = -\nabla f(x_k) Pk=f(xk);而当前迭代步骤下, α k \alpha_k αk是我们要求解的量,因而将其记作变量 α \alpha α
    ∣ ∣ x k + 1 − x ∗ ∣ ∣ = ∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ ||x_{k+1} - x^*|| = ||x_k -\alpha \cdot \nabla f(x_k) - x^*|| ∣∣xk+1x∣∣=∣∣xkαf(xk)x∣∣

为了证明过程中对该量进行放缩,在上述等式两侧分别执行平方操作,从而得到一个新的等式:
∣ ∣ x k + 1 − x ∗ ∣ ∣ 2 = ∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ 2 ||x_{k+1} - x^*||^2 = ||x_k -\alpha \cdot \nabla f(x_k) - x^*||^2 ∣∣xk+1x2=∣∣xkαf(xk)x2
对等式右侧进行展开

  • 将项 x k − α ⋅ ∇ f ( x k ) − x ∗ x_k -\alpha \cdot \nabla f(x_k) - x^* xkαf(xk)x视作项 x k − x ∗ x_k - x^* xkx与项 α ⋅ ∇ f ( x k ) \alpha \cdot \nabla f(x_k) αf(xk)之间的减法。

  • 这里啰嗦一下:关于 ∣ ∣ ( x − x ∗ ) − α ⋅ ∇ f ( x k ) ∣ ∣ 2 ||(x - x^*) - \alpha \cdot \nabla f(x_k)||^2 ∣∣(xx)αf(xk)2,可以描述成内积形式:
    ∣ ∣ ( x − x ∗ ) − α ⋅ ∇ f ( x k ) ∣ ∣ 2 = [ ( x − x ∗ ) − α ⋅ ∇ f ( x k ) ] T [ ( x − x ∗ ) − α ⋅ ∇ f ( x k ) ] ||(x - x^*) - \alpha \cdot \nabla f(x_k)||^2 = \left[(x - x^*) - \alpha \cdot \nabla f(x_k)\right]^T[(x - x^*) - \alpha \cdot \nabla f(x_k)] ∣∣(xx)αf(xk)2=[(xx)αf(xk)]T[(xx)αf(xk)]
    其中 [ ( x − x ∗ ) − α ⋅ ∇ f ( x k ) ] T = [ ( x − x ∗ ) T − ( α ⋅ ∇ f ( x k ) ) T ] \left[(x - x^*) - \alpha \cdot \nabla f(x_k)\right]^T = [(x - x^*)^T - (\alpha \cdot \nabla f(x_k))^T] [(xx)αf(xk)]T=[(xx)T(αf(xk))T],将其替换后可得到如下三项结果:

    • ( x k − x ∗ ) T ( x k − x ∗ ) = ∣ ∣ x k − x ∗ ∣ ∣ 2 (x_k - x^*)^T(x_k - x^*) = ||x_k - x^*||^2 (xkx)T(xkx)=∣∣xkx2
    • [ α ⋅ ∇ f ( x k ) ] T [ α ⋅ ∇ f ( x k ) ] = α 2 ⋅ ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 [\alpha \cdot \nabla f(x_k)]^T[\alpha \cdot \nabla f(x_k)] = \alpha^2 \cdot ||\nabla f(x_k)||^2 [αf(xk)]T[αf(xk)]=α2∣∣∇f(xk)2
    • 其中 − ( x k − x ∗ ) T [ α ⋅ ∇ f ( x k ) ] -(x_k - x^*)^T[\alpha \cdot \nabla f(x_k)] (xkx)T[αf(xk)] − ( x k − x ∗ ) [ α ∇ f ( x k ) ] T -(x_k - x^*)[\alpha \nabla f(x_k)]^T (xkx)[αf(xk)]T结果都是 1 × 1 1 \times 1 1×1的标量,因而这两项相等,并将其合并在一起
      − 2 α ⋅ [ ∇ f ( x k ) ] T ( x k − x ∗ ) -2\alpha \cdot [\nabla f(x_k)]^T(x_k - x^*) 2α[f(xk)]T(xkx)

    对于 − 2 α ⋅ [ ∇ f ( x k ) ] T ( x k − x ∗ ) -2\alpha \cdot [\nabla f(x_k)]^T(x_k - x^*) 2α[f(xk)]T(xkx),可以继续进行描述:由于 x ∗ x^* x是最优数值解,那么必然有: ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 f(x)=0,将该式代入到上式中有:
    − 2 α ⋅ [ ∇ f ( x k ) ] T ( x k − x ∗ ) = − 2 α ⋅ [ ∇ f ( x k ) − ∇ f ( x ∗ ) ] T ( x k − x ∗ ) -2\alpha \cdot [\nabla f(x_k)]^T(x_k - x^*) = -2\alpha \cdot [\nabla f(x_k) - \nabla f(x^*)]^T(x_k - x^*) 2α[f(xk)]T(xkx)=2α[f(xk)f(x)]T(xkx)

最终有:
∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ 2 = ∣ ∣ ( x − x ∗ ) − α ⋅ ∇ f ( x k ) ∣ ∣ 2 = ∣ ∣ x k − x ∗ ∣ ∣ 2 − 2 α ⋅ [ ∇ f ( x k ) − ∇ f ( x ∗ ) ] T ( x k − x ∗ ) + α 2 ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 \begin{aligned} ||x_k -\alpha \cdot \nabla f(x_k) - x^*||^2 & = ||(x - x^*) - \alpha \cdot \nabla f(x_k)||^2 \\ & = ||x_k - x^*||^2 - 2 \alpha \cdot [\nabla f(x_k) - \nabla f(x^*)]^T(x_k - x^*) +\alpha^2 ||\nabla f(x_k)||^2 \end{aligned} ∣∣xkαf(xk)x2=∣∣(xx)αf(xk)2=∣∣xkx22α[f(xk)f(x)]T(xkx)+α2∣∣∇f(xk)2
从而将关注点放在寻找 [ ∇ f ( x k ) − ∇ f ( x ∗ ) ] T ( x k − x ∗ ) [\nabla f(x_k) - \nabla f(x^*)]^T(x_k - x^*) [f(xk)f(x)]T(xkx)的下界信息,从而关注 ∣ ∣ x k + 1 − x ∗ ∣ ∣ ∣ ∣ x k − x ∗ ∣ ∣ \begin{aligned}\frac{||x_{k+1} - x^*||}{||x_k - x^*||}\end{aligned} ∣∣xkx∣∣∣∣xk+1x∣∣的相关信息。

证明过程

思考:
由于函数 f ( ⋅ ) f(\cdot) f() m m m-强凸函数,本质上就是约束性更苛刻的凸函数,并且 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续,那么根据优化算法——白老爹定理中介绍的,该函数 f ( ⋅ ) f(\cdot) f()一定满足余强制性
∀ x 1 , x 2 ∈ R n ⇒ [ ∇ f ( x 1 ) − ∇ f ( x 2 ) ] T ( x 1 − x 2 ) ≥ 1 L ∣ ∣ ∇ f ( x 1 ) − ∇ f ( x 2 ) ∣ ∣ 2 \forall x_1,x_2 \in \mathbb R^n \Rightarrow [\nabla f(x_1) - \nabla f(x_2)]^T(x_1 - x_2) \geq \frac{1}{\mathcal L}||\nabla f(x_1) - \nabla f(x_2)||^2 x1,x2Rn[f(x1)f(x2)]T(x1x2)L1∣∣∇f(x1)f(x2)2
相反地,由于 f ( ⋅ ) f(\cdot) f() m m m-强凸函数,因而对 [ ∇ f ( x 1 ) − ∇ f ( x 2 ) ] T ( x 1 − x 2 ) [\nabla f(x_1) - \nabla f(x_2)]^T(x_1 - x_2) [f(x1)f(x2)]T(x1x2)的下界描述: 1 L ∣ ∣ ∇ f ( x 1 ) − ∇ f ( x 2 ) ∣ ∣ 2 \begin{aligned}\frac{1}{\mathcal L}||\nabla f(x_1) - \nabla f(x_2)||^2\end{aligned} L1∣∣∇f(x1)f(x2)2过于宽松,至少没有看到参数 m m m在余强制性中的作用。因而我们需要找到一个更严格的下界

回归证明过程:
由于 f ( ⋅ ) f(\cdot) f() m m m-强凸函数,根据强凸函数的定义,令 G ( x ) ≜ f ( x ) − m 2 x T x \begin{aligned}\mathcal G(x) \triangleq f(x) - \frac{m}{2} x^Tx\end{aligned} G(x)f(x)2mxTx,必然有: G ( x ) \mathcal G(x) G(x)凸函数
充分必要条件~

由于 f ( ⋅ ) f(\cdot) f()可微,并且 m 2 x T x \begin{aligned}\frac{m}{2}x^Tx\end{aligned} 2mxTx是关于 x x x二次函数——必然在定义域内可微。因此:函数 G ( ⋅ ) \mathcal G(\cdot) G()在定义域内可微。对应梯度 ∇ G ( x ) \nabla \mathcal G(x) G(x)表示为:
∇ G ( x ) = ∇ [ f ( x ) − m 2 x T x ] = ∇ f ( x ) − m ⋅ x \nabla \mathcal G(x) = \nabla \left[f(x) - \frac{m}{2}x^Tx\right] = \nabla f(x) - m \cdot x G(x)=[f(x)2mxTx]=f(x)mx

思考:
又因为 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续,那么 G ( ⋅ ) \mathcal G(\cdot) G()是否也满足利普希兹连续 ? ? ? 必然是满足的。可以从定义角度观察 ⇒ \Rightarrow ∣ ∣ ∇ G ( x ) − ∇ G ( y ) ∣ ∣ ||\nabla \mathcal G(x) - \nabla \mathcal G(y)|| ∣∣∇G(x)G(y)∣∣ ∣ ∣ x − y ∣ ∣ ||x - y|| ∣∣xy∣∣之间的关联关系

  • ∇ G ( x ) = ∇ f ( x ) − m ⋅ x \nabla \mathcal G(x) =\nabla f(x) - m \cdot x G(x)=f(x)mx代入~
  • 使用三角不等式: ∣ ∣ [ ∇ f ( x ) − ∇ f ( y ) ] − m ( x − y ) ∣ ∣ ≤ ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ + ∣ ∣ m ⋅ ( x − y ) ∣ ∣ ||[\nabla f(x) - \nabla f(y)] - m(x - y)|| \leq ||\nabla f(x) - \nabla f(y)|| + ||m \cdot (x - y)|| ∣∣[f(x)f(y)]m(xy)∣∣∣∣∇f(x)f(y)∣∣+∣∣m(xy)∣∣
  • 利用利普希兹连续将 ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ ||\nabla f(x) - \nabla f(y)|| ∣∣∇f(x)f(y)∣∣替换成 L ⋅ ∣ ∣ x − y ∣ ∣ \mathcal L \cdot ||x - y|| L∣∣xy∣∣,不等号不发生变化。
    ∣ ∣ ∇ G ( x ) − ∇ G ( y ) ∣ ∣ = ∣ ∣ ∇ f ( x ) − ∇ f ( y ) − m ( x − y ) ∣ ∣ ≤ ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ + ∣ ∣ m ⋅ ( x − y ) ∣ ∣ ≤ L ⋅ ∣ ∣ x − y ∣ ∣ + m ⋅ ∣ ∣ x − y ∣ ∣ = ( L + m ) ⋅ ∣ ∣ x − y ∣ ∣ \begin{aligned} ||\nabla \mathcal G(x) - \nabla \mathcal G(y)|| & = ||\nabla f(x) - \nabla f(y) - m (x - y)|| \\ & \leq ||\nabla f(x) - \nabla f(y)|| + ||m \cdot (x - y)|| \\ & \leq \mathcal L \cdot ||x - y|| + m \cdot ||x - y|| \\ & = (\mathcal L + m) \cdot||x - y|| \end{aligned} ∣∣∇G(x)G(y)∣∣=∣∣∇f(x)f(y)m(xy)∣∣∣∣∇f(x)f(y)∣∣+∣∣m(xy)∣∣L∣∣xy∣∣+m∣∣xy∣∣=(L+m)∣∣xy∣∣

虽然通过一个简单的证明确定了 ∇ G ( ⋅ ) \nabla \mathcal G(\cdot) G()满足利普希兹连续,并得到了一个关于 ∇ G ( ⋅ ) \nabla \mathcal G(\cdot) G()利普希兹常数: L + m \mathcal L + m L+m,但这个常数并不合理。因为相比于 ∇ f ( ⋅ ) \nabla f(\cdot) f() ∇ G ( ⋅ ) \nabla \mathcal G(\cdot) G()的约束强度变低了
关于函数 G ( ⋅ ) \mathcal G(\cdot) G()的斜率变化范围反而大于 f ( ⋅ ) f(\cdot) f()
∃ ξ ∈ ( x , y ) ⇒ ∣ ∣ ∇ G ( x ) − ∇ G ( y ) ∣ ∣ ∣ ∣ x − y ∣ ∣ = G ′ ( ξ ) ≤ L + m \exist \xi \in (x,y) \Rightarrow\frac{||\nabla \mathcal G(x) - \nabla \mathcal G(y)||}{||x - y||} = \mathcal G'(\xi) \leq \mathcal L + m ξ(x,y)∣∣xy∣∣∣∣∇G(x)G(y)∣∣=G(ξ)L+m
我们希望能够找到一个约束性更强的利普希兹常数,而不是 L + m \mathcal L + m L+m

回归证明过程:
如果令 H ( x ) ≜ L 2 x T x − f ( x ) \begin{aligned}\mathcal H(x) \triangleq \frac{\mathcal L}{2} x^Tx - f(x)\end{aligned} H(x)2LxTxf(x),根据白老爹定理 H ( x ) \mathcal H(x) H(x)必然也是凸函数。将 f ( x ) f(x) f(x)使用 G ( x ) \mathcal G(x) G(x)进行替换:
{ f ( x ) = G ( x ) + m 2 x T x H ( x ) ≜ L 2 x T x − m 2 x T x − G ( x ) = L − m 2 x T x − G ( x ) \begin{cases} \begin{aligned} f(x) & = \mathcal G(x) + \frac{m}{2} x^Tx \\ \mathcal H(x) & \triangleq \frac{\mathcal L}{2}x^Tx - \frac{m}{2}x^Tx - \mathcal G(x) \\ & = \frac{\mathcal L - m}{2} x^Tx - \mathcal G(x) \end{aligned} \end{cases} f(x)H(x)=G(x)+2mxTx2LxTx2mxTxG(x)=2LmxTxG(x)

观察这个新式子: H ( x ) = L − m 2 x T x − G ( x ) \begin{aligned}\mathcal H(x) = \frac{\mathcal L - m}{2} x^Tx - \mathcal G(x)\end{aligned} H(x)=2LmxTxG(x),由于 H ( x ) , G ( x ) \mathcal H(x),\mathcal G(x) H(x),G(x)都是凸函数,那么可以再次使用白老爹定理,可推出: G ( ⋅ ) \mathcal G(\cdot) G()的梯度 ∇ G ( ⋅ ) \nabla \mathcal G(\cdot) G()满足余强制性。即:

  • 其中 G ( x ) \mathcal G(x) G(x)为凸函数是前提条件; H ( x ) \mathcal H(x) H(x)为凸函数是其中一个等价条件。
  • 对应描述余强制性不等式的系数由 1 L \begin{aligned}\frac{1}{\mathcal L}\end{aligned} L1变为 1 L − m \begin{aligned}\frac{1}{\mathcal L - m}\end{aligned} Lm1
  • 实际上,关于白老爹定理的最后一个等价条件也是满足的。即: ∇ G ( ⋅ ) \nabla \mathcal G(\cdot) G()满足 ( L − m ) (\mathcal L - m) (Lm)-利普希兹连续。与之前的 ( L + m ) (\mathcal L + m) (L+m)-利普希兹连续相反,它的约束性比 L \mathcal L L-利普希兹连续更强了。

[ ∇ G ( x ) − ∇ G ( y ) ] T ( x − y ) ≥ 1 L − m ∣ ∣ ∇ G ( x ) − ∇ G ( y ) ∣ ∣ 2 [\nabla \mathcal G(x) - \nabla \mathcal G(y)]^T(x - y) \geq \frac{1}{\mathcal L - m} ||\nabla \mathcal G(x) - \nabla \mathcal G(y)||^2 [G(x)G(y)]T(xy)Lm1∣∣∇G(x)G(y)2

( 2023 / 8 / 20 ) (2023/8/20) (2023/8/20):关于为什么凸函数 G ( ⋅ ) \mathcal G(\cdot) G()相比 m − m- m强凸函数 f ( ⋅ ) f(\cdot) f()在利普希兹连续的角度有更强的约束性,个人错误的认为是凸函数与强凸函数之间的差异性导致的。(错误想法)
因为强凸函数、凸函数之间的差异性主要体现在下界;而利普希兹连续 ( L ; L − m ) (\mathcal L;\mathcal L - m) (L;Lm)约束描述的是上界。
\quad
正确的逻辑思路是:关于凸函数 G ( x ) ≜ f ( x ) − m 2 x T x \begin{aligned}\mathcal G(x) \triangleq f(x) - \frac{m}{2} x^Tx \end{aligned} G(x)f(x)2mxTx,我们可以将其理解为:在凸函数 f ( x ) f(x) f(x)的基础上,减掉了一部分恒正二次项系数 ( m > 0 ) (m > 0) (m>0),从而相比于 f ( x ) f(x) f(x) G ( x ) \mathcal G(x) G(x)函数凸的效果有所减小。这才是导致其利普希兹常数 ( L − m ) < f ( x ) (\mathcal L - m) < f(x) (Lm)<f(x)利普希兹常数 ( L ) (\mathcal L) (L)的真正原因

基于该结论,将 ∇ G ( x ) = ∇ f ( x ) − m ⋅ x \nabla \mathcal G(x) = \nabla f(x) - m \cdot x G(x)=f(x)mx代入,有:
我们的目标是凑出 [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) [\nabla f(x) - \nabla f(y)]^T(x - y) [f(x)f(y)]T(xy)
[ ∇ f ( x ) − ∇ f ( y ) − m ⋅ ( x − y ) ] T ( x − y ) ≥ 1 L − m ∣ ∣ ∇ f ( x ) − ∇ f ( y ) − m ⋅ ( x − y ) ∣ ∣ 2 [\nabla f(x) - \nabla f(y) - m\cdot (x - y)]^T (x - y) \geq \frac{1}{\mathcal L - m} ||\nabla f(x) - \nabla f(y) - m \cdot (x - y)||^2 [f(x)f(y)m(xy)]T(xy)Lm1∣∣∇f(x)f(y)m(xy)2
由于 [ ( ∇ f ( x ) − ∇ f ( y ) ) − m ⋅ ( x − y ) ] T = [ ∇ f ( x ) − ∇ f ( y ) ] T − m ⋅ ( x − y ) T [(\nabla f(x) - \nabla f(y)) - m \cdot (x - y)]^T = [\nabla f(x) - \nabla f(y)]^T - m\cdot (x - y)^T [(f(x)f(y))m(xy)]T=[f(x)f(y)]Tm(xy)T,因此将不等式左侧继续展开

  • 展开过程中将 m ⋅ ( x − y ) T ( x − y ) m \cdot (x - y)^T(x - y) m(xy)T(xy)写成范数平方的形式: m ⋅ ∣ ∣ x − y ∣ ∣ 2 m \cdot ||x - y||^2 m∣∣xy2
  • 关于不等式右侧的范数平方可看作上述两项 ∇ f ( x ) − ∇ f ( y ) \nabla f(x) - \nabla f(y) f(x)f(y) m ⋅ ( x − y ) m \cdot (x - y) m(xy)差的平方形式,使用完全平方公式进行展开。
    [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) − m ⋅ ∣ ∣ x − y ∣ ∣ 2 ≥ 1 L − m { ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ 2 + m 2 ⋅ ∣ ∣ x − y ∣ ∣ 2 − 2 m ⋅ [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) } [\nabla f(x) - \nabla f(y)]^T(x - y) - m \cdot ||x - y||^2 \geq \frac{1}{\mathcal L - m} \left\{||\nabla f(x) - \nabla f(y)||^2 + m^2 \cdot ||x - y||^2 - 2m \cdot [\nabla f(x) - \nabla f(y)]^T(x - y)\right\} [f(x)f(y)]T(xy)m∣∣xy2Lm1{∣∣∇f(x)f(y)2+m2∣∣xy22m[f(x)f(y)]T(xy)}

将不等式右侧的 [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) [\nabla f(x) - \nabla f(y)]^T(x - y) [f(x)f(y)]T(xy)的项移到不等式左侧,同时将不等式左侧的含 ∣ ∣ x − y ∣ ∣ 2 ||x - y||^2 ∣∣xy2的项移到不等式右侧,从而有:

  • 此时不等式左侧仅包含关于 [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) [\nabla f(x) - \nabla f(y)]^T(x - y) [f(x)f(y)]T(xy)项的信息。

( 1 + 2 m L − m ) [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) ≥ 1 L − m ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ 2 + ( m + m 2 L − m ) ∣ ∣ x − y ∣ ∣ 2 \left(1 + \frac{2m}{\mathcal L - m} \right)[\nabla f(x) - \nabla f(y)]^T (x - y) \geq \frac{1}{\mathcal L - m}||\nabla f(x) - \nabla f(y)||^2 + \left(m + \frac{m^2}{\mathcal L - m}\right)||x - y||^2 (1+Lm2m)[f(x)f(y)]T(xy)Lm1∣∣∇f(x)f(y)2+(m+Lmm2)∣∣xy2
继续化简,有
由于 L , m \mathcal L,m L,m分别是约束 ∇ 2 f ( ⋅ ) \nabla^2 f(\cdot) 2f()上界与下界的常数参数,由于 f ( ⋅ ) f(\cdot) f()是强凸函数,那么 L > m \mathcal L> m L>m恒成立。

  • 如果 L < m \mathcal L < m L<m,即上界小于下界,那就不是凸函数了~
  • 如果 L = m \mathcal L = m L=m,例如线性函数,那么它只是凸函数,而不是强凸函数

因而将不等式左侧的系数 L + m L − m \begin{aligned}\frac{\mathcal L + m}{\mathcal L - m}\end{aligned} LmL+m移到右侧,不等号方向不变。此时,不等式左侧只剩下了 [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) [\nabla f(x) - \nabla f(y)]^T(x - y) [f(x)f(y)]T(xy)
L + m L − m [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) ≥ 1 L − m ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ 2 + L ⋅ m L − m ∣ ∣ x − y ∣ ∣ 2 ⇒ [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) ≥ ( 1 L − m ⋅ L − m L + m ) ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ 2 + ( L ⋅ m L − m ⋅ L − m L + m ) ∣ ∣ x − y ∣ ∣ 2 = [ ∇ f ( x ) − ∇ f ( y ) ] T ( x − y ) ≥ 1 L + m ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ 2 + L ⋅ m L + m ∣ ∣ x − y ∣ ∣ 2 \begin{aligned} & \quad \frac{\mathcal L + m}{\mathcal L - m}[\nabla f(x) - \nabla f(y)]^T (x - y) \geq \frac{1}{\mathcal L - m}||\nabla f(x) - \nabla f(y)||^2 + \frac{\mathcal L \cdot m}{\mathcal L - m}||x - y||^2 \\ & \quad \\ & \Rightarrow [\nabla f(x) - \nabla f(y)]^T(x - y) \geq \left(\frac{1}{\mathcal L - m} \cdot \frac{\mathcal L - m}{\mathcal L + m}\right) ||\nabla f(x) - \nabla f(y)||^2 + \left(\frac{\mathcal L \cdot m}{\mathcal L - m} \cdot \frac{\mathcal L - m}{\mathcal L + m}\right) ||x-y||^2 \\ & = [\nabla f(x) - \nabla f(y)]^T(x - y) \geq \frac{1}{\mathcal L + m} ||\nabla f(x) - \nabla f(y)||^2 + \frac{\mathcal L \cdot m}{\mathcal L + m} ||x-y||^2 \end{aligned} LmL+m[f(x)f(y)]T(xy)Lm1∣∣∇f(x)f(y)2+LmLm∣∣xy2[f(x)f(y)]T(xy)(Lm1L+mLm)∣∣∇f(x)f(y)2+(LmLmL+mLm)∣∣xy2=[f(x)f(y)]T(xy)L+m1∣∣∇f(x)f(y)2+L+mLm∣∣xy2

至此,回顾结论分析,由于 x , y ∈ R n x,y \in \mathbb R^n x,yRn内任意取值,因此令: x = x k ; y = x ∗ x = x_k;y = x^* x=xk;y=x,上式有:
关于不等式右侧的 ∇ f ( x ∗ ) = 0 \nabla f(x^*) =0 f(x)=0这里就省略了~
[ ∇ f ( x k ) − ∇ f ( x ∗ ) ] T ( x k − x ∗ ) ≥ 1 L + m ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 + L ⋅ m L + m ∣ ∣ x k − x ∗ ∣ ∣ 2 [\nabla f(x_k) - \nabla f(x^*)]^T(x_k - x^*) \geq \frac{1}{\mathcal L + m} ||\nabla f(x_k)||^2 + \frac{\mathcal L \cdot m}{\mathcal L + m}||x_k - x^*||^2 [f(xk)f(x)]T(xkx)L+m1∣∣∇f(xk)2+L+mLm∣∣xkx2
从而将这个描述 [ ∇ f ( x k ) − ∇ f ( x ∗ ) ] T ( x k − x ∗ ) [\nabla f(x_k) - \nabla f(x^*)]^T(x_k - x^*) [f(xk)f(x)]T(xkx)下界的不等式代回到结论分析的式子中有:

  • 由于 − 2 α -2\alpha 2α使不等号方向发生变化~
  • 合并同类项~
    ∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ 2 = ∣ ∣ x k − x ∗ ∣ ∣ 2 − 2 α ⋅ [ ∇ f ( x k ) − ∇ f ( x ∗ ) ] T ( x k − x ∗ ) + α 2 ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 ≤ ∣ ∣ x k − x ∗ ∣ ∣ 2 − 2 α ( 1 L + m ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 + L ⋅ m L + m ∣ ∣ x k − x ∗ ∣ ∣ 2 ) + α 2 ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 ≤ ∣ ∣ x k − x ∗ ∣ ∣ 2 − 2 α L + m ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 − 2 α L m L + m ∣ ∣ x k − x ∗ ∣ ∣ 2 + α 2 ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 = ( 1 − 2 α L m L + m ) ∣ ∣ x k − x ∗ ∣ ∣ 2 + α ( α − 2 L + m ) ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 \begin{aligned} ||x_k -\alpha \cdot \nabla f(x_k) - x^*||^2 & = ||x_k - x^*||^2 - 2 \alpha \cdot [\nabla f(x_k) - \nabla f(x^*)]^T(x_k - x^*) +\alpha^2 ||\nabla f(x_k)||^2 \\ & \leq ||x_k- x^*||^2 - 2\alpha \left(\frac{1}{\mathcal L + m} ||\nabla f(x_k)||^2 + \frac{\mathcal L \cdot m}{\mathcal L + m}||x_k - x^*||^2\right) + \alpha^2 ||\nabla f(x_k)||^2 \\ & \leq ||x_k- x^*||^2 - \frac{2 \alpha}{\mathcal L + m} ||\nabla f(x_k)||^2 - \frac{2\alpha \mathcal L m}{\mathcal L + m}||x_k - x^*||^2 + \alpha^2 ||\nabla f(x_k)||^2 \\ & = \left(1 - \frac{2 \alpha \mathcal L m}{\mathcal L + m}\right) ||x_k - x^*||^2 + \alpha \left(\alpha - \frac{2}{\mathcal L + m}\right) ||\nabla f(x_k)||^2 \end{aligned} ∣∣xkαf(xk)x2=∣∣xkx22α[f(xk)f(x)]T(xkx)+α2∣∣∇f(xk)2∣∣xkx22α(L+m1∣∣∇f(xk)2+L+mLm∣∣xkx2)+α2∣∣∇f(xk)2∣∣xkx2L+m2α∣∣∇f(xk)2L+m2αLm∣∣xkx2+α2∣∣∇f(xk)2=(1L+m2αLm)∣∣xkx2+α(αL+m2)∣∣∇f(xk)2

根据收敛性定理中关于步长 α \alpha α的条件: α ∈ ( 0 , 2 L + m ) \begin{aligned}\alpha \in \left(0, \frac{2}{\mathcal L + m}\right) \end{aligned} α(0,L+m2),有:
很明显,项 α ( α − 2 L + m ) ∣ ∣ ∇ f ( x k ) ∣ ∣ 2 \begin{aligned}\alpha \left(\alpha - \frac{2}{\mathcal L + m}\right) ||\nabla f(x_k)||^2\end{aligned} α(αL+m2)∣∣∇f(xk)2是一个负值,从而可以对 ∣ ∣ x k = α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ 2 ||x_k = \alpha \cdot \nabla f(x_k) - x^*||^2 ∣∣xk=αf(xk)x2进行进一步的约束。
∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ 2 ≤ ( 1 − α ⋅ 2 L m L + m ) ∣ ∣ x k − x ∗ ∣ ∣ 2 \begin{aligned} ||x_k -\alpha \cdot \nabla f(x_k) - x^*||^2 \leq \left(1 - \alpha \cdot \frac{2 \mathcal L m}{\mathcal L + m}\right) ||x_k - x^*||^2 \end{aligned} ∣∣xkαf(xk)x2(1αL+m2Lm)∣∣xkx2
最终移项并开根号,得到关于收敛速度定义的一个表达:
关于收敛速度,详见收敛速度的简单认识。
∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ ∣ ∣ x k − x ∗ ∣ ∣ ≤ 1 − α ⋅ 2 L m L + m \begin{aligned}\frac{||x_k - \alpha \cdot \nabla f(x_k) -x^*||}{||x_k - x^*||} \leq \sqrt{1 - \alpha \cdot \frac{2\mathcal L m}{\mathcal L + m}} \end{aligned} ∣∣xkx∣∣∣∣xkαf(xk)x∣∣1αL+m2Lm
C = 1 − α ⋅ 2 L m L + m \begin{aligned}\mathcal C = 1 - \alpha \cdot \frac{2\mathcal L m}{\mathcal L + m}\end{aligned} C=1αL+m2Lm,观察:

  • 由于: α , L , m \alpha,\mathcal L,m α,L,m > 0 >0 >0,因而 C < 1 \mathcal C <1 C<1
  • 根据 α \alpha α条件 α < 2 L + m \begin{aligned}\alpha < \frac{2}{\mathcal L + m}\end{aligned} α<L+m2,因而将该式代入,有:
    C = 1 − α ⋅ 2 L m L + m > 1 − 4 L m ( L + m ) 2 = ( L + m ) 2 − 4 L m ( L + m ) 2 = ( L − m ) 2 ( L + m ) 2 \begin{aligned}\mathcal C = 1 - \alpha \cdot \frac{2\mathcal L m}{\mathcal L + m} > 1 -\frac{4 \mathcal L m}{(\mathcal L + m)^2} = \frac{(\mathcal L + m)^2 - 4\mathcal L m}{(\mathcal L + m)^2} = \frac{(\mathcal L - m)^2}{(\mathcal L + m)^2}\end{aligned} C=1αL+m2Lm>1(L+m)24Lm=(L+m)2(L+m)24Lm=(L+m)2(Lm)2
    由于 L , m \mathcal L,m L,m恒正,必然有: ( L − m ) 2 ( L + m ) 2 > 0 \begin{aligned}\frac{(\mathcal L - m)^2}{(\mathcal L + m)^2} > 0\end{aligned} (L+m)2(Lm)2>0

从而最终有: C ∈ ( 0 , 1 ) \mathcal C \in (0,1) C(0,1),从而 C ∈ ( 0 , 1 ) \sqrt \mathcal C \in (0,1) C (0,1)。即:
∣ ∣ x k + 1 − x ∗ ∣ ∣ ∣ ∣ x k − x ∗ ∣ ∣ = ∣ ∣ x k − α ⋅ ∇ f ( x k ) − x ∗ ∣ ∣ ∣ ∣ x k − x ∗ ∣ ∣ ≤ C ∈ ( 0 , 1 ) \begin{aligned}\frac{||x_{k+1} -x^*||}{||x_k - x^*||} = \frac{||x_k - \alpha \cdot \nabla f(x_k) -x^*||}{||x_k - x^*||} \leq \sqrt{\mathcal C} \in (0,1) \end{aligned} ∣∣xkx∣∣∣∣xk+1x∣∣=∣∣xkx∣∣∣∣xkαf(xk)x∣∣C (0,1)
因而 { x k } k = 0 ∞ \{x_k\}_{k=0}^{\infty} {xk}k=0的收敛速度是 Q \mathcal Q Q-线性收敛,证毕。

相关参考:
【优化算法】梯度下降法-强凸函数的收敛性分析(上)

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

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

相关文章

探索PDF校对:为何这是现代数字文档的关键步骤

在今日的数字化浪潮中&#xff0c;文档的创建与分享从未如此频繁。尤其是PDF&#xff0c;作为一个普遍接受的标准文件格式&#xff0c;其在企业、学术和日常生活中的应用已经无处不在。但随之而来的挑战是如何确保文档的准确性和专业性。让我们深入探索PDF校对的重要性以及它为…

Linux 定时任务 crontab 用法学习整理

一、linux版本 lsb_release -a 二、crontab 用法学习 2.1&#xff0c;crontab 简介 linux中crontab命令用于设置周期性被执行的指令&#xff0c;该命令从标准输入设备读取指令&#xff0c;并将其存放于“crontab”文件中&#xff0c;以供之后读取和执行。cron 系统调度进程。…

SQL注入之万能用户名

文章目录 分析代码原理实现 分析代码 在安装的cms数据库目录C:\phpStudy\WWW\cms\admin下找到login.action.php文件&#xff0c;查看第20行&#xff0c;发现如下php代码&#xff1a; $user_row $db->getOneRow("select userid from cms_users where username "…

消息队列——RabbitMQ(一)

MQ的相关概念 什么事mq MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff…

【unity数据持久化】XML数据管理器知识点

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

如何更高效的写出更健全的代码,一篇文章教会你如何拥有一个良好的代码风格

前言&#xff1a;在平常的写代码的过程中&#xff0c;或多或少的遇到很多奇怪的 bug &#xff0c;尤其是一些大的程序&#xff0c;明明上一部分都是好好的&#xff0c;写下一块的时候突然多几百个 bug 的情况&#xff0c;然后这一块写完了后编译的时候直接傻眼了&#xff0c;看…

缓存穿透、缓存击穿和缓存雪崩

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱发博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…

拼多多app商品详情接口 获取pdd商品主图价格销量库存信息

拼多多是中国一家知名的电商平台&#xff0c;以"社交团购新零售"的商业模式闻名&#xff0c;通过手机app和微信小程序等渠道提供商品销售和购物体验。平台上的商品种类丰富多样&#xff0c;涵盖了服装、家居、美妆、食品、数码电子等各个领域。 拼多多的商业模式主要…

Windows运行Spark所需的Hadoop安装

解压文件 复制bin目录 找到winutils-master文件hadoop对应的bin目录版本 全部复制替换掉hadoop的bin目录文件 复制hadoop.dll文件 将bin目录下的hadoop.dll文件复制到System32目录下 配置环境变量 修改hadoop-env.cmd配置文件 注意jdk装在非C盘则完全没问题&#xff0c;如果装在…

springboot+docker实现微服务的小例子

【任务】&#xff1a; 创建一个服务A&#xff1a;service_hello 创建一个服务B&#xff1a;service_name service_name负责提供一个api接口返回一个name字符串。 service_hello负责从这个接口获取name字符串&#xff0c;然后进行一个字符串拼接&#xff0c;在后面加一个hello&…

Module not found: Error: Can‘t resolve ‘vue-pdf‘ in ‘xxx‘

使用命令npm run serve时vue项目报错&#xff1a; Module not found: Error: Cant resolve vue-pdf in xxx 解决方案&#xff1a; 运行命令&#xff1a; npm install vue-pdf --save --legacy-peer-deps 即可解决。 再次顺利执行npm run serve

C语言暑假刷题冲刺篇——day4

目录 一、选择题 二、编程题 &#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C语言每日一练 ✨其他专栏&#xff1a;代码小游戏C语言初阶&#x1f91d;希望作者的文章能对你…

更改计算机睡眠时间

控制面板–>系统和安全–>电源选项下的更改计算机睡眠时间 如果关闭显示器时间小于使计算机进入睡眠状态时间&#xff0c;时间先到达关闭显示器时间&#xff0c;显示器关闭&#xff0c;这时电脑还在正常工作状态。如果此时敲击键盘显示器出现画面&#xff0c;无需输入密…

MySQL 主从配置

环境 centos6.7 虚拟机两台 主&#xff1a;192.168.23.160 从&#xff1a;192.168.23.163 准备 在两台机器上分别安装mysql5.6.23&#xff0c;安装完成后利用临时密码登录mysql数据修改root的密码&#xff1b;将my.cnf配置文件放至/etc/my.cnf&#xff0c;重启mysql服务进…

Spark Standalone环境搭建及测试

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 篇一&#xff1a;Linux系统下配置java环境 篇二&#xff1a;hadoop伪分布式搭建&#xff08;超详细&#xff09; 篇三&#xff1a;hadoop完全分布式集群搭建&#xff08;超详细&#xf…

解决生僻字,中兴新支点操作系统通过GB 18030-2022《中文编码字符集》认证

您认识上图中的这个字吗&#xff1f; 上面一个“鸟”&#xff0c;下面一个“甲”&#xff0c;这个字读“nia&#xff08;四声&#xff09;”。它是云南丽江傈僳族中一支氏族的姓氏。这个氏族以鸟为图腾。因信息系统中无法输入显示“nia”字&#xff0c;氏族里近700人不得不妥协…

python并发编程

一、程序提速的方法 二、python对并发编程的支持 多线程&#xff1a;threading&#xff0c;利用CPU和IO可以同时执行的原理&#xff0c;让CPU不会干巴巴等待IO完成&#xff1b;多进程&#xff1a;multiprocess&#xff0c;利用多核CPU的能力&#xff0c;真正的并行执行任务&am…

某多多商品平台数据采集

某多多商品平台数据采集 声明逆向目标寻找加密位置代码分析补环境补充内容声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者 无关,若有侵权,请私信我立即删除! 逆向目标 Anti-Content参数 寻找加密位置 先在控制台全局搜…

idea 新建servlet 访问提示404 WebServlet注解找不到包 报错

检查访问路径是否设置正确 如果设置为name “/testServlet”&#xff0c;则会404 WebServlet注解报错找不到包 检查是否引入了tomcat依赖包

基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 LSTM: GRU 2.算法运行软件版本 matlab2022a 3.部分核心程序 %构建GRU网络模型 layers [ ...sequenceInputLayer(N_feature)gruLayer(N_hidden)f…