首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

机器学习笔记之优化算法(十)梯度下降法铺垫:总体介绍引言

  • 23-09-23 09:20
  • 2580
  • 6696
blog.csdn.net

机器学习笔记之优化算法——梯度下降法铺垫:总体介绍

  • 引言
    • 回顾:线搜索方法
      • 线搜索方法的方向 P k mathcal P_k Pk​
      • 线搜索方法的步长 α k alpha_k αk​
    • 梯度下降方法整体介绍

引言

从本节开始,将介绍梯度下降法 ( Gradient Descent,GD ) ( ext{Gradient Descent,GD}) (Gradient Descent,GD)。

回顾:线搜索方法

线搜索方法作为一种常见优化问题的策略,该方法的特点是:其迭代过程中,将数值解的方向和步长分开执行。对应数学符号表达如下:

  • 其中 P k mathcal P_k Pk​是一个向量,描述更新方向; α k alpha_k αk​是一个 > 0 >0 >0的实数,表示步长。
  • 由于我们更关注向量 P k mathcal P_k Pk​的方向性,因而通常将其表示为单位向量,即 ∣ ∣ P k ∣ ∣ = 1 ||mathcal P_k|| = 1 ∣∣Pk​∣∣=1。
    x k + 1 = x k + α k ⋅ P k x_{k+1} = x_k + alpha_k cdot mathcal P_k xk+1​=xk​+αk​⋅Pk​

线搜索方法的方向 P k mathcal P_k Pk​

在线搜索方法——方向角度中介绍过:关于目标函数 f ( ⋅ ) f(cdot) f(⋅)的终极目标: min ⁡ X ∈ R n f ( X ) mathop{min}limits_{mathcal X in mathbb R^n} f(mathcal X) X∈Rnmin​f(X),如果数值解序列 { 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∞​服从严格的单调性:
f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1​)<f(xk​)
那么必然有:

  • 其中 [ ∇ f ( x k ) ] [ abla f(x_k)] [∇f(xk​)]表示数值解 x k x_k xk​对应目标函数的梯度向量,详细推导过程见上方链接。
  • P k mathcal P_k Pk​化为单位向量产生的常数系数合并到 α k alpha_k αk​中。
    f ( x k + 1 ) − f ( x k ) ≈ [ ∇ f ( x k ) ] T P k ⋅ α k < 0 f(x_{k+1}) - f(x_k) approx [ abla f(x_k)]^T mathcal P_k cdot alpha_k < 0 f(xk+1​)−f(xk​)≈[∇f(xk​)]TPk​⋅αk​<0

从而将满足该条件的 P k mathcal P_k Pk​称作下降方向 ( Descent Direction ) ( ext{Descent Direction}) (Descent Direction)。将上式展开有:

  • 其中 θ k heta_k θk​表示向量 ∇ f ( x k ) abla f(x_k) ∇f(xk​)与向量 P k mathcal P_k Pk​之间的夹角。
  • 在仅考虑方向角度对 f ( x k + 1 ) − f ( x k ) f(x_{k+1}) - f(x_k) f(xk+1​)−f(xk​)影响的情况下,将 α k alpha_k αk​忽略,不改变不等号方向。
    ∣ ∣ ∇ f ( x k ) ∣ ∣ ⋅ ∣ ∣ P k ∣ ∣ ⋅ cos ⁡ θ k < 0 || abla f(x_k)|| cdot ||mathcal P_k|| cdot cos heta_k <0 ∣∣∇f(xk​)∣∣⋅∣∣Pk​∣∣⋅cosθk​<0

其中 ∣ ∣ ∇ f ( x k ) ∣ ∣ , ∣ ∣ P k ∣ ∣ || abla f(x_k)||,||mathcal P_k|| ∣∣∇f(xk​)∣∣,∣∣Pk​∣∣均表示向量的模(均为固定的正值),因而 cos ⁡ θ k ∈ [ − 1 , 0 ) cos heta_k in [-1,0) cosθk​∈[−1,0)。当 cos ⁡ θ k = − 1 cos heta_k = -1 cosθk​=−1时, f ( x k + 1 ) − f ( x k ) f(x_{k+1}) - f(x_k) f(xk+1​)−f(xk​)可取得最小值,从而达到最佳的优化方向。而此时下降方向 P k mathcal P_k Pk​与梯度方向 ∇ f ( x k ) abla f(x_k) ∇f(xk​)方向相反。因此也称此时的 P k mathcal P_k Pk​为最速下降方向:
其中 ∣ ∣ ∇ f ( x k ) ∣ ∣ || abla f(x_k)|| ∣∣∇f(xk​)∣∣是关于上一次迭代结果 x k x_k xk​的函数,因而是已知信息。
P k = − ∇ f ( x k ) mathcal P_k = - abla f(x_k) Pk​=−∇f(xk​)

线搜索方法的步长 α k alpha_k αk​

关于当前迭代步骤的最优步长 α k alpha_k αk​通常有两种求解方式:

  • 精确搜索:在 P k mathcal P_k Pk​固定的情况下,选择使得 f ( x k + 1 ) f(x_{k+1}) f(xk+1​)达到最小的步长结果作为当前迭代步骤的最优步长:
    其中 x k , P k x_k,mathcal P_k xk​,Pk​是确定的信息,因此可将 f ( x k + 1 ) f(x_{k+1}) f(xk+1​)视作关于 α alpha α的函数 ϕ ( α ) phi(alpha) ϕ(α)。
    α k = arg ⁡ min ⁡ α > 0 f ( x k + 1 ) = arg ⁡ min ⁡ α > 0 f ( x k + α ⋅ P k ) = arg ⁡ min ⁡ α > 0 ϕ ( α ) αk=argminα>0f(xk+1)=argminα>0f(xk+α⋅Pk)=argminα>0ϕ(α)
    αk=argminα>0f(xk+1)=argminα>0f(xk+α⋅Pk)=argminα>0ϕ(α)
    αk​​=α>0argmin​f(xk+1​)=α>0argmin​f(xk​+α⋅Pk​)=α>0argmin​ϕ(α)​

    具体求解方式就是:对 α alpha α求导,从而获取极值。但真实情况下,这种方式并不可取。
    • 关于目标函数 f ( ⋅ ) f(cdot) f(⋅)的复杂程度我们一无所知。关于梯度 ∇ f ( x k + α ⋅ P k ) abla f(x_k + alpha cdot mathcal P_k) ∇f(xk​+α⋅Pk​)可能非常复杂。
    • 这仅仅是一次迭代步骤的解。也就是说:每次迭代都要求解精确解。这无疑增加了迭代的计算代价,我们仅希望迭代产生的步长能够收敛到 lim ⁡ k ⇒ ∞ f ( x k ) ⇒ f ∗ mathop{lim}limits_{k Rightarrow infty}f(x_{k}) Rightarrow f^* k⇒∞lim​f(xk​)⇒f∗,它的中间过程是否准确并不在乎。
      { ∂ ϕ ( α ) ∂ α = ϕ ′ ( α ) = [ ∇ f ( x k + α ⋅ P k ) ] T P k ϕ ′ ( α ) = 0 ⇒ α k {∂ϕ(α)∂α=ϕ′(α)=[∇f(xk+α⋅Pk)]TPkϕ′(α)=0⇒αk
      ⎧⎩⎨∂ϕ(α)∂α=ϕ′(α)=[∇f(xk+α⋅Pk)]TPkϕ′(α)=0⇒αk
      ⎩ ⎨ ⎧​​∂α∂ϕ(α)​=ϕ′(α)=[∇f(xk​+α⋅Pk​)]TPk​ϕ′(α)=0⇒αk​​​
  • 非精确搜索:相比于精确搜索,我们不计较迭代产生的步长结果是否最优,仅需要该结果能够帮助 f ( x k ) f(x_k) f(xk​)有效收敛即可:
    lim ⁡ k ⇒ ∞ f ( x k ) ⇒ f ∗ mathop{lim}limits_{k Rightarrow infty}f(x_{k}) Rightarrow f^* k⇒∞lim​f(xk​)⇒f∗
    常见的非精确方法有: Armijo ext{Armijo} Armijo准则,对 Armijo ext{Armijo} Armijo准则进行优化的 Glodstein ext{Glodstein} Glodstein准则,以及基于 Armijo ext{Armijo} Armijo准则,对 Armijo,Glodstein ext{Armijo,Glodstein} Armijo,Glodstein准则进行优化的 Wolfe ext{Wolfe} Wolfe准则。
    这里不再赘述。

梯度下降方法整体介绍

梯度下降法是一种典型的线搜索方法。并且它的更新方向 P k mathcal P_k Pk​就是最速下降方向: − ∇ f ( x k ) - abla f(x_k) −∇f(xk​)。

  • 梯度下降法也被称作最速下降法。
  • 这个最速下降方向仅仅是每一个迭代步骤中向量 x k x_k xk​所在位置的最速下降方向,而不是全局最速下降方向。这与贪心算法类似,是一个局部最优。如下图:
    迭代最优方向与全局最优方向
    很明显,蓝色实线是指本次迭代步骤中的最优方向;而蓝色虚线是指全局最优方向。上图描述的是二维权重特征对应的迭代过程。如果权重特征只有一维特征(一维向量;标量),对应图像表示如下:
    一维特征梯度示例
    此时函数关于 x k x_k xk​的梯度 ∇ f ( x k ) = [ f ′ ( x k ) ] 1 × 1 abla f(x_k) = [f'(x_k)]_{1 imes 1} ∇f(xk​)=[f′(xk​)]1×1​,在迭代过程中寻找最优方向时,仅存在两个方向进行选择:沿着坐标轴与逆着坐标轴(红色箭头)。而此时 f ′ ( x k ) > 0 f'(x_k) >0 f′(xk​)>0,因而我们将数轴的正方向视作梯度方向;对应地,将数轴的反方向视作负梯度方向。针对当前的斜率信息,我们沿着负梯度方向更新到 x k + 1 x_{k+1} xk+1​。

关于梯度下降法的步长:

  • 在后续过程中将介绍梯度下降法中如何求解精确步长,以及相应的限制条件。这里加一个传送门;

  • 关于非精确搜索求解步长,这里补充一点关于各非精确搜索方法之间的一些逻辑上的关系。

    在简单认识 Wolfe Condition ext{Wolfe Condition} Wolfe Condition的收敛性证明一节中介绍了使用 Zoutendijk ext{Zoutendijk} Zoutendijk定理,验证了作用于 Wolfe ext{Wolfe} Wolfe准则的步长结果可以使 { f ( x k ) } k = 1 ∞ {f(x_k)}_{k=1}^{infty} {f(xk​)}k=1∞​收敛。但实际上: Zoutendijk ext{Zoutendijk} Zoutendijk定理同样可以作用于 Armijo,Glodstein ext{Armijo,Glodstein} Armijo,Glodstein准则,并证明其步长能够使 { f ( x k ) } k = 1 ∞ {f(x_k)}_{k=1}^{infty} {f(xk​)}k=1∞​收敛。

    由于 Wolfe ext{Wolfe} Wolfe准则是基于 Armijo ext{Armijo} Armijo准则提出的,其本质就是:在 Armijo ext{Armijo} Armijo准则的基础上,那些梯度结果 ∇ f ( x k + 1 ) abla f(x_{k+1}) ∇f(xk+1​)过小的 ϕ ( α ) phi(alpha) ϕ(α)点对应的 α alpha α通过参数 C 2 mathcal C_2 C2​消除掉了:
    Armijo Condition :  { ϕ ( α ) < f ( x k ) + C 1 ⋅ [ ∇ f ( x k ) ] T P k ⋅ α C 1 ∈ ( 0 , 1 ) Wolfe Condition :  { ϕ ( α ) ≤ f ( x k ) + C 1 ⋅ [ ∇ f ( x k ) ] T P k ⋅ α ϕ ′ ( α ) ≥ C 2 ⋅ [ ∇ f ( x k ) ] T P k C 1 ∈ ( 0 , 1 ) C 2 ∈ ( C 1 , 1 ) Armijo Condition : {ϕ(α)<f(xk)+C1⋅[∇f(xk)]TPk⋅αC1∈(0,1)Wolfe Condition : {ϕ(α)≤f(xk)+C1⋅[∇f(xk)]TPk⋅αϕ′(α)≥C2⋅[∇f(xk)]TPkC1∈(0,1)C2∈(C1,1)

    Armijo Condition : ⎧⎩⎨ϕ(α)<f(xk)+C1⋅[∇f(xk)]TPk⋅αC1∈(0,1)Wolfe Condition : ⎧⎩⎨⎪⎪⎪⎪⎪⎪ϕ(α)≤f(xk)+C1⋅[∇f(xk)]TPk⋅αϕ′(α)≥C2⋅[∇f(xk)]TPkC1∈(0,1)C2∈(C1,1)
    ​Armijo Condition : ⎩ ⎨ ⎧​ϕ(α)<f(xk​)+C1​⋅[∇f(xk​)]TPk​⋅αC1​∈(0,1)​Wolfe Condition : ⎩ ⎨ ⎧​ϕ(α)≤f(xk​)+C1​⋅[∇f(xk​)]TPk​⋅αϕ′(α)≥C2​⋅[∇f(xk​)]TPk​C1​∈(0,1)C2​∈(C1​,1)​​
    反过来说: Armijo ext{Armijo} Armijo准则相当于 Wolfe ext{Wolfe} Wolfe准则的一种极端情况:在 C 1 mathcal C_1 C1​确定划分边界的基础上,一个 α alpha α都不去除,即: C 2 = 1 mathcal C_2 = 1 C2​=1。
    同理, Glodstein ext{Glodstein} Glodstein准则也是 Wolfe ext{Wolfe} Wolfe准则中的一种情况。与 Armijo ext{Armijo} Armijo这种极端情况不同的是, Glodstein ext{Glodstein} Glodstein准则更像是一种取巧情况:在 C 1 ∈ ( 0 , 1 2 ) C1∈(0,12)
    C1​∈(0,21​)​
    确定划分边界的基础上,选择一个合适的 C 2 ∈ ( 1 2 , 1 ) C2∈(12,1)
    C2​∈(21​,1)​
    使得斜率分别为 C 1 ⋅ [ ∇ f ( x k ) ] T P k mathcal C_1 cdot [ abla f(x_k)]^T mathcal P_k C1​⋅[∇f(xk​)]TPk​和 C 2 ⋅ [ f ( x k ) ] T P k mathcal C_2 cdot [f(x_k)]^T mathcal P_k C2​⋅[f(xk​)]TPk​的直线关于斜率为 1 2 [ ∇ f ( x k ) ] T P k 12[∇f(xk)]TPk
    21​[∇f(xk​)]TPk​​
    直线对称
    。
    因为在 C 1 ∈ ( 0 , 1 2 ) mathcal C_1 in (0,12)
    C1​∈(0,21​)​
    情况下, Wolfe ext{Wolfe} Wolfe准则关于 C 2 mathcal C_2 C2​的描述范围 ( C 1 , 1 ) (mathcal C_1,1) (C1​,1)必然大于 ( 1 2 , 1 ) (12,1)
    (21​,1)​
    。因此必然能够找到这个合适的点,从而使该点情况下 Wolfe ext{Wolfe} Wolfe准则等价于 Glodstein ext{Glodstein} Glodstein准则。

关于梯度下降法的收敛速度:相比梯度下降法的收敛性,我们更关心在已知收敛的情况下,它的收敛速度情况。在上一节中对收敛速度进行了简单认识:

  • 从收敛速度判别标准的角度划分,介绍了 Q mathcal Q Q-收敛速度与 R mathcal R R-收敛速度;
  • 从收敛速度强度的角度划分(以 Q mathcal Q Q-收敛速度为例),介绍了 Q mathcal Q Q-次线性收敛/线性收敛/超线性收敛/二次收敛。

而在梯度下降法中,它的收敛速度取决于目标函数 f ( ⋅ ) f(cdot) f(⋅)自身的性质:

  • 关于目标函数 f ( ⋅ ) f(cdot) f(⋅)的基础条件:向下有界,在定义域内可微(至少局部可微);
    如果不可微,我们甚至没有办法求解梯度,更不要说梯度的更新了。

  • 要求 f ( ⋅ ) f(cdot) f(⋅)至少是局部凸函数,并且其梯度 ∇ f ( ⋅ ) abla f(cdot) ∇f(⋅)必然服从利普希兹连续。而利普希兹连续的作用在于:目标函数梯度 ∇ f ( ⋅ ) abla f(cdot) ∇f(⋅)的变化量被常数 L mathcal L L限制住。或者说: ∇ f ( ⋅ ) abla f(cdot) ∇f(⋅)的变化不会过于剧烈。

    相反,如果不对 ∇ f ( ⋅ ) abla f(cdot) ∇f(⋅)进行约束,很容易会出现梯度爆炸。因为可能存在:目标函数梯度可能在某一范围内飙升至极大。

在综上条件下,可达到次线性收敛级别的收敛速度。

在上述条件的基础上,如果 f ( ⋅ ) f(cdot) f(⋅)是一个强凸函数 ( Strong Convex Function ) ( ext{Strong Convex Function}) (Strong Convex Function),可达到线性收敛级别的收敛速度。
关于凸函数的强度性质:凸函数 < < <严格凸函数 < < <强凸函数。在后续进行介绍。传送门

在第二种条件的基础上:如果 f ( ⋅ ) f(cdot) f(⋅)仍然是一个强凸函数,并且 f ( ⋅ ) f(cdot) f(⋅)在其定义域内二阶可微,其对应的 Hession Matrix ∇ 2 f ( ⋅ ) ext{Hession Matrix} abla^2 f(cdot) Hession Matrix∇2f(⋅)存在并满足:

  • 其中 L mathcal L L依然是利普希兹连续中的具有限制作用的常数; ≼ preccurlyeq ≼表示矩阵小于等于; I mathcal I I表示单位矩阵。
  • 关于 ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ ∣ ∣ x − y ∣ ∣ = ∇ 2 f ( ξ ) ||∇f(x)−∇f(y)||||x−y||=∇2f(ξ)
    ∣∣x−y∣∣∣∣∇f(x)−∇f(y)∣∣​=∇2f(ξ)​
    详见拉格朗日中值定理。
    ∀ x , y ∈ R n : ∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ ∣ ∣ x − y ∣ ∣ = ∇ 2 f ( ξ ) ≼ L ⋅ I forall x,y in mathbb R^n :||∇f(x)−∇f(y)||||x−y||=∇2f(ξ)≼L⋅I
    ∀x,y∈Rn:∣∣x−y∣∣∣∣∇f(x)−∇f(y)∣∣​=∇2f(ξ)≼L⋅I​

同样可以达到线性收敛级别的收敛速度。

相关参考:
【优化算法】梯度下降法-总体介绍

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览51117 人正在系统学习中
注:本文转载自blog.csdn.net的静静的喝酒的文章"https://blog.csdn.net/qq_34758157/article/details/132107536"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top