• 深度学习笔记之优化算法(一)铺垫:梯度下降法VS最速下降法


    引言

    从本节开始,将介绍深度学习中常见的优化算法。在介绍随机梯度下降之前,将针对最速下降法与梯度下降法之间差异性做一些说明。

    关于条件数的介绍优点喧宾夺主~本节主要目的不是描述梯度下降法的缺陷,而是描述最速下降法梯度下降法之间的差异性

    回顾:

    条件数

    梯度下降法在强凸函数的收敛性证明中介绍了梯度下降法 m m m-强凸函数上的收敛性定理

    条件

    • 目标函数 f ( ⋅ ) f(\cdot) f()向下有界,在其定义域内可微;并且 f ( ⋅ ) f(\cdot) f() m m m-强凸函数
    • 关于 f ( ⋅ ) f(\cdot) f()梯度函数 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续
    • 梯度下降法在迭代过程中,其步长 α k \alpha_k αk存在明确的约束范围 α k ∈ ( 0 , 2 L + m ) αk(0,2L+m) αk(0,L+m2)

    结论
    数值解序列 { x k } k = 0 ∞ \{x_k\}_{k=0}^{\infty} {xk}k=0 Q \mathcal Q Q-线性收敛的收敛速度收敛于最优数值解 x ∗ x^* x

    在证明过程中,实现了线性收敛的定义式的证明:
    ∥ x k + 1 − x ∗ ∥ ∥ x k − x ∗ ∥ = ∥ x k − α ⋅ ∇ f ( x k ) − x ∗ ∥ ∥ x k − x ∗ ∥ ≤ 1 − α ⋅ 2 L m L + m ∈ ( 0 , 1 ) xk+1xxkx=xkαf(xk)xxkx1α2LmL+m(0,1) xkxxk+1x=xkxxkαf(xk)x1αL+m2Lm (0,1)
    如果目标函数 f ( ⋅ ) f(\cdot) f()满足二阶连续可微的条件下,并且其梯度函数 ∇ f ( ⋅ ) \nabla f(\cdot) f()满足 L \mathcal L L-利普希兹连续,那么 f ( ⋅ ) f(\cdot) f()对应的 Hessian Matrix ⇒ ∇ 2 f ( ⋅ ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(\cdot) Hessian Matrix2f()必然存在并且有:

    • 下面的推导过程详见梯度下降法在强凸函数的收敛性分析
    • 其中 I \mathcal I I表示单位矩阵
      m ⋅ I ≼ ∇ 2 f ( ⋅ ) ≼ L ⋅ I m \cdot \mathcal I \preccurlyeq \nabla^2 f(\cdot) \preccurlyeq \mathcal L \cdot \mathcal I mI2f()LI

    正定矩阵 ∇ 2 f ( ⋅ ) \nabla^2 f(\cdot) 2f()进行分解,可得到 n n n正特征值 { λ i } i = 1 n \{\lambda_i\}_{i=1}^n {λi}i=1n
    其中 Q \mathcal Q Q是正交矩阵。
    ∇ 2 f ( ⋅ ) = Q Λ Q − 1 = Q ( λ 1 λ 2 ⋱ λ n ) Q − 1 \nabla^2 f(\cdot) = \mathcal Q \Lambda \mathcal Q^{-1} = \mathcal Q (λ1λ2λn) \mathcal Q^{-1} 2f()=QΛQ1=Q λ1λ2λn Q1
    这些特征值必然满足:
    0 < m ≤ λ m i n ≤ λ m a x ≤ L { λ m i n = min ⁡ { λ i } i = 1 n λ m a x = max ⁡ { λ j } j = 1 n 0 < m \leq \lambda_{min} \leq \lambda_{max} \leq \mathcal L \quad {λmin=min{λi}ni=1λmax=max{λj}nj=1 0<mλminλmaxL{λmin=min{λi}i=1nλmax=max{λj}j=1n
    在上述条件下,取一种特殊情况
    关于 α = 1 L = 2 L + L ∈ ( 0 , 2 L + m ) α=1L=2L+L(0,2L+m) α=L1=L+L2(0,L+m2)恒成立,目的是将条件数收敛速度关联起来
    λ m a x = L ; λ m i n = m ; α = 1 L \lambda_{max} = \mathcal L;\lambda_{min} = m;\alpha = \frac{1}{\mathcal L} λmax=L;λmin=m;α=L1
    将上述情况代入原式,那么线性收敛定义式简化为:
    ∥ x k − α ⋅ ∇ f ( x k ) − x ∗ ∥ ∥ x k − x ∗ ∥ ≤ 1 − 1 L ⋅ 2 L m L + m = λ m a x − λ m i n λ m a x + λ m i n = 1 − 1 K [ ∇ 2 f ( ⋅ ) ] 1 + 1 K [ ∇ 2 f ( ⋅ ) ] xkαf(xk)xxkx11L2LmL+m=λmaxλminλmax+λmin=11K[2f()]1+1K[2f()] xkxxkαf(xk)x1L1L+m2Lm =λmax+λminλmaxλmin =1+K[2f()]11K[2f()]1
    其中 K [ ∇ 2 f ( ⋅ ) ] = λ m a x λ m i n K[2f()]=λmaxλmin K[2f()]=λminλmax被称作 Hessian Matrix ⇒ ∇ 2 f ( ⋅ ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(\cdot) Hessian Matrix2f()条件数 ( Condition Number ) (\text{Condition Number}) (Condition Number),可以发现:

    • 条件数可看作是目标函数 f ( ⋅ ) f(\cdot) f()自身的性质,因为它仅与 ∇ 2 f ( ⋅ ) \nabla^2 f(\cdot) 2f()最大、最小特征值相关。
    • 条件数与收敛速度之间的关系: K [ ∇ 2 f ( ⋅ ) ] \mathcal K[\nabla^2 f(\cdot)] K[2f()]趋近于 ∞ \infty 时,有:
      lim ⁡ K [ ∇ 2 f ( ⋅ ) ] ⇒ ∞ ∥ x k − α ⋅ ∇ f ( x k ) − x ∗ ∥ ∥ x k − x ∗ ∥ ≤ lim ⁡ K [ ∇ 2 f ( ⋅ ) ] ⇒ ∞ 1 − 1 K [ ∇ 2 f ( ⋅ ) ] 1 + 1 K [ ∇ 2 f ( ⋅ ) ] = 1 − 0 1 + 0 = 1 \mathop{\lim}\limits_{\mathcal K[\nabla^2 f(\cdot)] \Rightarrow \infty} \frac{\|x_k - \alpha \cdot \nabla f(x_k) - x^*\|}{\|x_k - x^*\|} \leq \mathop{\lim}\limits_{\mathcal K[\nabla^2 f(\cdot)] \Rightarrow \infty} \sqrt{\frac{1 - \frac{1}{\mathcal K[\nabla^2 f(\cdot)]}}{1 + \frac{1}{\mathcal K[\nabla^2 f(\cdot)]}}} = \sqrt{\frac{1 - 0}{1 + 0}} = 1 K[2f()]limxkxxkαf(xk)xK[2f()]lim1+K[2f()]11K[2f()]1 =1+010 =1
      取等时,收敛速度将从线性收敛退化至次线性收敛

    也就是说:

    • 使用梯度下降法时,在特定条件的情况下,其收敛速度与目标函数 f ( ⋅ ) f(\cdot) f()自身性质——条件数存在关联关系
    • 条件数越大,收敛速度越慢;该现象被称作病态问题

    范数

    范数通常被用来度量向量空间中,向量的长度或大小。我们通常使用特征空间中的点与特征空间原点之间的明可夫斯基距离来描述向量的范数
    D m k ( x , O ) = [ ∑ k = 1 n ( x k ) m ] 1 m \mathcal D_{mk}(x,\mathcal O) = \left[\sum_{k=1}^{n}(x_k )^m \right]^{\frac{1}{m}} Dmk(x,O)=[k=1n(xk)m]m1
    其中 m m m表示阶数,上式也称作 m m m-阶范数。例如 m = 2 m=2 m=2对应的二阶范数(也称欧式范数):
    ∥ x ∥ 2 = [ ∑ k = 1 n ( x k ) 2 ] 1 2 = x 1 2 + x 2 2 + ⋯ + x n 2 x2=[nk=1(xk)2]12=x21+x22++x2n x2=[k=1n(xk)2]21=x12+x22++xn2

    范数不仅描述了向量的大小;反过来,如果固定范数的阶数和大小,它可以描述满足阶数与大小条件的集合。以二维特征空间为例,在范数大小为 1 1 1的前提下,不同阶数对应的集合形状表示如下:
    基于相同大小不同阶数描述集合的表示效果
    很明显,当阶数 p < 1 p < 1 p<1是,其对应集合是一个非凸集合;相反,对应集合是一个凸集合

    相关描述

    在笔记线搜索方法——方向角度的结尾提到:在当前迭代步骤中,负梯度方向作为下降方向,对应目标函数的下降效果最明显,因而被称作最速下降方向,从而称最速下降法为梯度下降法。但如果详细追究,它们之间依然存在一些区别。

    关于梯度下降法

    梯度下降法直观地认为:负梯度方向 − ∇ f ( ⋅ ) -\nabla f(\cdot) f()是目标函数 f ( ⋅ ) f(\cdot) f()的值下降最快的方向。对应迭代过程表示如下:
    x k + 1 = x k + η ⋅ Δ x k Δ x k = − ∇ f ( x k ) x_{k+1} = x_k + \eta \cdot \Delta x_k \quad \Delta x_k = - \nabla f(x_k) xk+1=xk+ηΔxkΔxk=f(xk)

    因而每次迭代过程中将决策变量 x k x_k xk沿着负梯度方向移动,从而使目标函数值逐渐收敛。思路虽然简单,但由于下降方向 ⇒ − ∇ f ( ⋅ ) \Rightarrow - \nabla f(\cdot) f()被确定,导致梯度下降法的收敛速度非常大的依赖于目标函数 f ( ⋅ ) f(\cdot) f()自身 Hessian Matrix \text{Hessian Matrix} Hessian Matrix的条件数
    解释: Hessian Matrix \text{Hessian Matrix} Hessian Matrix并没有直接参与梯度下降法的迭代过程,只是下降方向被确定为 − ∇ f ( ⋅ ) - \nabla f(\cdot) f()时,作为 f ( ⋅ ) f(\cdot) f()自身性质的条件数就已经对梯度下降法的收敛速度进行约束了。

    最速下降法

    根据上面链接笔记中的描述:负梯度方向只是下降方向的一种,而下降方向 P k \mathcal P_k Pk的判定逻辑是:满足目标函数 f ( x k + 1 ) = f ( x k + α k P k ) f(x_{k+1}) = f(x_k + \alpha_k \mathcal P_k) f(xk+1)=f(xk+αkPk)的一阶泰勒展开式 f ( x k ) f(x_k) f(xk)之间存在严格的单调性
    其中 O ( ∥ α k P k ∥ ) \mathcal O(\|\alpha_k \mathcal P_k\|) O(αkPk)表示关于 α k P k \alpha_k\mathcal P_k αkPk的二阶无穷小。
    f ( x k + 1 ) = f ( x k + α k P k ) = f ( x k ) + 1 1 ! α k ⋅ ( P k ) T ∇ f ( x k ) + O ( ∥ α k P k ∥ ) ≈ f ( x k ) + α k ⋅ ( P k ) T ∇ f ( x k ) Monotonicity:  f ( x k + 1 ) − f ( x k ) ≈ α k ⋅ ( P k ) T ∇ f ( x k ) < 0 ⇒ ( P k ) T ∇ f ( x k ) < 0 ( α k > 0 ) f(xk+1)=f(xk+αkPk)=f(xk)+11!αk(Pk)Tf(xk)+O(αkPk)f(xk)+αk(Pk)Tf(xk)Monotonicity: f(xk+1)f(xk)αk(Pk)Tf(xk)<0(Pk)Tf(xk)<0(αk>0) f(xk+1)Monotonicity: f(xk+1)f(xk)=f(xk+αkPk)=f(xk)+1!1αk(Pk)Tf(xk)+O(αkPk)f(xk)+αk(Pk)Tf(xk)αk(Pk)Tf(xk)<0(Pk)Tf(xk)<0(αk>0)
    方向导数的角度考虑,将 k k k次迭代过程的更新方向记作变量 P \mathcal P P,从而将最速下降方向 P k \mathcal P_k Pk描述为:选择合适的更新方向 P \mathcal P P,使得 f ( x k + 1 ) f(x_{k+1}) f(xk+1)或者 f ( x k + 1 ) − f ( x k ) f(x_{k+1}) - f(x_k) f(xk+1)f(xk)关于 P \mathcal P P方向的方向导数最小

    • 由于 f ( x k ) f(x_k) f(xk)是已知项,因而其关于 P \mathcal P P的方向导数为 0 0 0。但 f ( x k + 1 ) f(x_{k+1}) f(xk+1) f ( x k + 1 ) − f ( x k ) f(x_{k+1}) - f(x_k) f(xk+1)f(xk)描述的意义不相同,这里使用 f ( x k + 1 ) − f ( x k ) f(x_{k+1}) - f(x_k) f(xk+1)f(xk)进行描述。
    • 关于该方向导数的描述,见《深度学习(花书)》P55.
      { f ( x k + 1 ) − f ( x k ) = ϕ k ( P ) = α k ⋅ P T ∇ f ( x k ) P k = arg ⁡ min ⁡ P ∂ ϕ k ( P ) ∂ α k = arg ⁡ min ⁡ P P T ∇ f ( x k ) {f(xk+1)f(xk)=ϕk(P)=αkPTf(xk)Pk=argminPϕk(P)αk=argminPPTf(xk) f(xk+1)f(xk)=ϕk(P)=αkPTf(xk)Pk=Pargminαkϕk(P)=PargminPTf(xk)

    单位范数的描述

    如果对上述最速下降方向进行标准化,即标准化最速下降方向 ( Normalized Steepest Descent ) (\text{Normalized Steepest Descent}) (Normalized Steepest Descent)在单位范数 ( Unit Norm ) (\text{Unit Norm}) (Unit Norm)步长内能够使目标函数下降最多的方向。记作:
    需要注意的是,这里的单位范数步长描述的并不是 α k \alpha_k αk(因为它是标量),而是对 P \mathcal P P的约束。由于这里仅观察 P \mathcal P P的变化情况,从而令 α k = 1 \alpha_k=1 αk=1
    P n s d = arg ⁡ min ⁡ P { [ ∇ f ( x k ) ] T P ∣ ∥ P ∥ ≤ 1 } \mathcal P_{nsd} = \mathop{\arg\min}\limits_{\mathcal P} \{[\nabla f(x_k)]^T \mathcal P \mid \|\mathcal P\| \leq 1\} Pnsd=Pargmin{[f(xk)]TPP1}
    对应非标准化的最速下降方向 P s d \mathcal P_{sd} Psd可表示为:
    其中 ∥ ⋅ ∥ ∗ \| \cdot \|_* 表示对偶范数;其对应展开式中 sup ⁡ \sup sup表示上确界。
    P s d = ∥ ∇ f ( x k ) ∥ ∗ P n s d = sup ⁡ { [ ∇ f ( x k ) ] T P n s d ∣ ∥ P n s d ∥ ≤ 1 } Psd=f(xk)Pnsd=sup{[f(xk)]TPnsdPnsd1} Psd=∥∇f(xk)Pnsd=sup{[f(xk)]TPnsdPnsd1}

    可以看出:最速下降方向受到单位范数步长的限制。重点在于:不同类型的单位范数步长,其对应的限制范围也存在差异。例如 p = 1 , 2 , 4 p=1,2,4 p=1,2,4时对应小于单位范数的描述范围对比如下:
    其中橙色线描述的单位圆也被称作欧式范数
    不同范数类型对应的单位范数效果
    再如:矩阵 2 2 2-范数 ∥ z ∥ Q \|z\|_{\mathcal Q} zQ:对应小于单位范数描述范围表示如下:
    关于矩阵2范数 ∥ z ∥ Q = ( z T Q z ) 1 / 2 \|z\|_{\mathcal Q} = (z^T \mathcal Qz)^{1/2} zQ=(zTQz)1/2的描述范围与 Q \mathcal Q Q的性质相关。下图中的橙色线表示对角矩阵 Q = ( 1 0 0 2 ) \mathcal Q = (1002) Q=(1002)的情况;蓝色线则表示正定矩阵 Q = ( 1 1 1 2 ) \mathcal Q = (1112) Q=(1112)的情况。
    矩阵2范数示例

    梯度下降法VS最速下降法

    梯度下降法等价于最速下降法的情况

    如果上述关于 P n s d = arg ⁡ min ⁡ V { [ ∇ f ( x k ) ] T P ∣ ∥ P ∥ ≤ 1 } \mathcal P_{nsd} = \mathop{\arg\min}\limits_{\mathcal V} \{[\nabla f(x_k)]^T \mathcal P \mid \|\mathcal P\| \leq 1\} Pnsd=Vargmin{[f(xk)]TPP1}的描述中,单位范数步长 ∣ ∣ P ∣ ∣ ||\mathcal P|| ∣∣P∣∣欧式范数,那么此时的最速下降法与梯度下降法等价。因为在欧式范数 ∥ P ∥ ≤ 1 \|\mathcal P\|\leq 1 P1的描述范围内,某位置 x k x_k xk标准最速下降方向 P n s d \mathcal P_{nsd} Pnsd与该位置对应的负梯度方向 − ∇ f ( x k ) -\nabla f(x_k) f(xk)相同。举一个例子:

    • 假设目标函数 f ( x ) = x T Q x ; x ∈ R 2 f(x) = x^T \mathcal Q x;x \in \mathbb R^2 f(x)=xTQx;xR2标准型,并且 Q = I \mathcal Q = \mathcal I Q=I(单位矩阵)。该函数的等值线以及欧式范数的描述范围表示如下:
      此时,无论是欧式范数描述范围还是等值线,都是标准圆的格式,因而使得 [ ∇ f ( x k ) ] T P [\nabla f(x_k)]^T \mathcal P [f(xk)]TP达到最小的方向就是负梯度方向
      最速下降与梯度下降等价示例

    • 其中红色虚线表示 f ( x ) f(x) f(x)等值线蓝色圆以及内部的灰色阴影表示欧式范数描述范围。在迭代过程中某时刻黄色点 x k x_k xk,此时该点处的梯度方向 ∇ f ( x k ) \nabla f(x_k) f(xk)负梯度方向 − ∇ f ( x k ) -\nabla f(x_k) f(xk)见上图。

    • 最速下降法的角度观察,为了让 x k x_k xk更快地达到最优值点(特征空间原点处所在位置):

      • 通过计算 [ ∇ f ( x k ) ] T P = ∥ ∇ f ( x k ) ∥ ⋅ ∥ P ∥ ⋅ cos ⁡ θ [\nabla f(x_k)]^T \mathcal P = \|\nabla f(x_k)\| \cdot \|\mathcal P\| \cdot \cos \theta [f(xk)]TP=∥∇f(xk)Pcosθ,在向量大小 ∥ P ∥ \|\mathcal P\| P夹角 θ \theta θ两者的共同作用下,找到最优更新方向(灰色阴影内的绿色箭头)。
        \quad

      至此,找到一个红色点,坐标空间原点指向红色点的向量就是 P n s d \mathcal P_{nsd} Pnsd。从图像中可以看出:负梯度方向 − ∇ f ( x k ) -\nabla f(x_k) f(xk) P n s d \mathcal P_{nsd} Pnsd所指方向完全相同
      由于欧式范数的原因, P n s d \mathcal P_{nsd} Pnsd − ∇ f ( x k ) -\nabla f(x_k) f(xk)大小、方向均完全相同。

    很明显,此时的这种目标函数格式,可以满足:全局范围内,梯度下降方向等价于最速下降方向

    欧式范数约束产生的更新方向可能不是最优方向

    那么在其他目标函数中,欧式范数会产生什么样的现象 ? ? ?
    假设目标函数 f ( x ) = x T Q x ; x ∈ R 2 f(x) = x^T \mathcal Q x;x\in \mathbb R^2 f(x)=xTQx;xR2,其中 Q \mathcal Q Q正定矩阵且 Q = ( 1 1 1 2 ) \mathcal Q = (1112) Q=(1112)。假设这里依然使用欧式范数,对应等值线与欧式范数描述范围表示如下:
    区别于上图,此时的等值线是椭圆,并且对应正交基与坐标轴不平行。
    更新方向不是最优方向示例
    与上面的配置相同,此时的最速下降法梯度下降法依然是等价的绿色箭头表示负梯度方向 − ∇ f ( x k ) -\nabla f(x_k) f(xk) P n s d \mathcal P_{nsd} Pnsd。这里发现一个新现象:更新方向 − ∇ f ( x ) -\nabla f(x) f(x) P n s d \mathcal P_{nsd} Pnsd并没有指向最优方向,也就是说:这里的更新方向并不是最优方向;真正指向最优方向的是红色箭头

    梯度下降法与最速下降法不等价的情况

    换一种角度:假设这里没有使用欧式范数,而是使用 L 1 \mathcal L_1 L1范数,也可以得到一些其他效果:
    最速下降法与梯度下降法不等价示例2
    其中绿色箭头描述的是梯度下降法产生的更新方向;红色箭头则描述的是最速下降法的更新方向。很明显:红色箭头描述的位置相比于绿色箭头更接近最优解。此时两者不等价。

    范数的选取与收敛速度的关系

    范数的选取对于收敛速度产生较大的影响。当目标函数 f ( ⋅ ) f(\cdot) f()二阶连续可微的情况下,使用矩阵 2 2 2-范数,它的收敛速度会显著提高。在关于目标函数 f ( x ) f(x) f(x)优化问题的迭代过程中,在 x k x_k xk点处如果使用其对应 Hessian Matrix ⇒ ∇ 2 f ( x k ) \text{Hessian Matrix} \Rightarrow \nabla^2 f(x_k) Hessian Matrix2f(xk)定义的矩阵 2 2 2-范数,该位置对应的实际更新方向 P s d \mathcal P_{sd} Psd可表示为:
    P s d = − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) \mathcal P_{sd} = - [\nabla^2 f(x_k)]^{-1} \nabla f(x_k) Psd=[2f(xk)]1f(xk)

    这就是经典牛顿法描述的更新方向。
    这里不再展开,只是为了描述选取合适的关于更新方向的范数约束,可以提高迭代的收敛速度。

    Reference \text{Reference} Reference
    笔记 || 梯度法与最速下降法的本质区别

  • 相关阅读:
    C语言实现五子棋游戏
    linux(14)之audit子系统
    Springboot毕设项目高校学籍档案管理p84mw(java+VUE+Mybatis+Maven+Mysql)
    【北京迅为】RK3568开发板android11系统固件讲解
    计算机毕业设计ssm基于SSM框架在线电影评论投票系统3gr0f系统+程序+源码+lw+远程部署
    季度业绩疲软,股价下跌25%,遮蔽了京东的长期增长潜力
    python离散事件仿真库SimPy官方教程(1)
    C++.I/O流
    JAVA 基础网络编程(后一部分)
    T31开发笔记:metaipc测试
  • 原文地址:https://blog.csdn.net/qq_34758157/article/details/132974811