• 2.1-梯度下降


    在上一章回归那节,我们讨论了如何找到一个最好模型的过程,也就是去找一组参数θ,让这个loss函数越小越好:
    θ ∗ = a r g m i n θ L ( θ ) θ^{*}=arg\underset{θ}{min}L(θ) θ=argθminL(θ)
    当θ有两个参数 { θ 1 , θ 2 } \{\theta _{1},\theta _{2}\} {θ1θ2}时,随机选择一组起始的点 θ 0 = [ θ 1 0 θ 2 0 ] \theta ^{0}=

    [θ10θ20]" role="presentation" style="position: relative;">[θ10θ20]
    θ0=[θ10θ20],上标0代表为初始的那一组参数,下标1,2代表是这一组参数中的第一个参数和第二个参数。

    接下来计算 { θ 1 , θ 2 } \{\theta _{1},\theta _{2}\} {θ1θ2}各自的偏微分:

    • [ θ 1 1 θ 2 1 ] = [ θ 1 0 θ 2 0 ] − η [ ∂ L ( θ 1 0 ) ∂ θ 1 ∂ L ( θ 2 0 ) ∂ θ 2 ]

      [θ11θ21]" role="presentation" style="position: relative;">[θ11θ21]
      =
      [θ10θ20]" role="presentation" style="position: relative;">[θ10θ20]
      -\eta
      [L(θ10)θ1L(θ20)θ2]" role="presentation" style="position: relative;">[L(θ10)θ1L(θ20)θ2]
      [θ11θ21]=[θ10θ20]η[θ1L(θ10)θ2L(θ20)]

    • [ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] − η [ ∂ L ( θ 1 1 ) ∂ θ 1 ∂ L ( θ 2 1 ) ∂ θ 2 ]

      [θ12θ22]" role="presentation" style="position: relative;">[θ12θ22]
      =
      [θ11θ21]" role="presentation" style="position: relative;">[θ11θ21]
      -\eta
      [L(θ11)θ1L(θ21)θ2]" role="presentation" style="position: relative;">[L(θ11)θ1L(θ21)θ2]
      [θ12θ22]=[θ11θ21]η[θ1L(θ11)θ2L(θ21)]

    对于 { θ 1 , θ 2 } \{\theta _{1},\theta _{2}\} {θ1θ2}的偏微分还有另外一种写法: ▽ L ( θ ) \bigtriangledown L(\theta) L(θ)也被叫做梯度(Gradient),代表一组向量(vector)
    ▽ L ( θ ) = [ ∂ L ( θ 1 ) ∂ θ 1 ∂ L ( θ 2 ) ∂ θ 2 ] \bigtriangledown L(\theta)=

    [L(θ1)θ1L(θ2)θ2]" role="presentation" style="position: relative;">[L(θ1)θ1L(θ2)θ2]
    L(θ)=[θ1L(θ1)θ2L(θ2)]

    • θ 1 = θ 0 − η ▽ L ( θ 0 ) \theta ^1=\theta ^0-\eta\bigtriangledown L(\theta ^0) θ1=θ0ηL(θ0)
    • θ 2 = θ 1 − η ▽ L ( θ 1 ) \theta ^2=\theta ^1-\eta\bigtriangledown L(\theta ^1) θ2=θ1ηL(θ1)

    下图是梯度下降(Gradient Descent)的可视化过程:红色的箭头代表梯度的方向,蓝色的箭头代表参数更新的方向,两者是相反的。

    image-20220807091852217

    一、调整学习率

    • 当你有3个及以上的参数时,是无法可视化梯度下降(Gradient Descent)的过程的。但是却可以可视化学习率(learning rate)η和Loss值之间的曲线。
    image-20220807092506865

    1.1 自适应学习率(Adaptive Learning Rates)

    • 在开始时,由于我们距离最优解有较远的距离,因此可以采用较大的学习率,加大梯度下降的步伐。
    • 在经过几轮的训练后,我们此时比较靠近最优解,所以要减小学习率,降低梯度下降的步伐,防止在最优解附近一直震荡。
    • 最简单的策略是让学习率随着时间的变化而变化,如: η t = η t + 1 \eta^t=\frac{\eta}{\sqrt{t+1}} ηt=t+1 η
    • 但并不是所有的参数都适用这样一套调整策略

    1.2 Adagrad

    • Adagrad是将每个参数的学习率除以其先前微分值的均方根(root mean square )

    让我们来看一看普通的梯度下降(Vanilla Gradient descent)和Adagrad之间的区别:

    • Vanilla Gradient descent:
      • Font metrics not found for font: .
    • Adagrad: σ t \sigma ^t σt代表参数w先前所有微分值的均方根(root mean square )
      • Font metrics not found for font: .
    • 下面是Adagrad的具体推导过程和最终的简化写法:

    image-20220807095328126image-20220807095521548

    • 在最终的简化写法中存在着一些矛盾(Contradiction)之处:当梯度g越大时,我们期望得到更大的下降步伐,然而式子的分母却在阻止我们这样做。
    image-20220807100151573
    • 对于这个问题,有这样两种解释:

      • 直观的解释(Intuitive Reason):为了强调某一次梯度的反差效果(特别大或者特别小),我们加上了分母这一项
      image-20220807100739605
      • 更正式的解释:

        • 对于一个参数:当我们踏出去的步伐和微分的大小成正比时,那么有可能就是最好的步伐。
        image-20220807101229496
        • 比较不同的参数(Comparison between different parameters):为了真实反映所在位置和最低点之间的距离,我们不仅要正比于梯度g的一次微分,还要反比于梯度g的二次微分。
        image-20220807101926045
    • 下图是对式子中分母这一项来估计二次微分的解释:当采样足够多的点,梯度g的平方和再开根号就可以近似等于梯度g的二次微分

    image-20220807103358464

    二、随机梯度下降(Stochastic Gradient Descent)

    • 随机梯度下降相比普通的梯度下降要快很多:
      • 这是因为对于随机梯度下降而言,它会看每一个example的loss值,相当于走了20步
    image-20220807112632108 image-20220807112706879

    三、特征缩放(Feature Scaling)

    • 将x1和x2两个不同的特征分布缩放到同一比例:
      • 如右图,这样做的意义是让我们在做梯度下降这一过程时变得更加容易,更加有效率。因为经过特征缩放后的起始点无论从哪里开始,做梯度下降的方向都是指向最低点的。

    image-20220807113504447image-20220807113552892

    • Z分数归一化(Z-Score Normalization)
      • Z分数归一化是实现特征缩放的一种常见方法。其工作原理为算出每一维(行)特征的均值mi和标准差σi,然后将特征矩阵的每一个值 x i r x_i^r xir都减去均值mi并除以标准差σi,这样更新后的 x i r x_i^r xir就都处于0~1之间了。
    image-20220807125039116

    四、数学推导

    • 泰勒级数(Taylor Series):
      • 设h(x)是任意函数在x=x0附近可微,那么h(x)可以写成下面这样
    image-20220807131952494
    • 多变量泰勒级数(Multivariable Taylor Series):
      • 根据泰勒级数的定义,如果右图中的红圈足够小,那么在红圈内就可以把loss函数用泰勒级数做简化
      • 简化之后,就变成了在红圈范围内找 θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2使得loss值最小的问题
      • 当推导到最后一步时,就变成了我们之前做梯度下降的式子,但式子成立的前提是红圈的半径r要足够小,由于学习率 η \eta η是和r成正比的,所以学习率不能太大,理论上要无穷小时式子才会成立,但在实际操作的过程中只要足够小就可以了。
      • 上面的推导过程我们采用的是泰勒级数的一次式,当考虑到二次,三次,甚至是多次时,我们对红圈的要求就没有那么大了,理论上学习率也可以调的高一点。但在深度学习的过程中却很少这么做,这是因为由此带来的庞大计算量是无法承受的。

    image-20220807161216384image-20220807161455677image-20220807162646693image-20220807162952736

    image-20220807163059557

    五、梯度下降的限制(More Limitation of Gradient Descent)

    • 在做梯度下降的过程,实际上就是在找loss函数微分为0的地方,然而微分为0的地方却不一定是局部最优解,它还可能是图中的鞍点。
    • 另外在实际求解的过程中,我们并不是找微分真正为0的点,而是当微分小于某一个数(如10的-6次方)的点,实际上这个点可能还在一个比较高的地方,离要找的局部最优解仍然很远。
    • 在下一章我们会继续讨论这个问题
    image-20220807164553863
  • 相关阅读:
    Go的题目
    [题]宝物筛选 #单调队列优化
    项目成本超支的主要原因以及解决方法
    基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(六)
    PyTorch中的intrusive_ptr
    20-指针-2
    堆与堆排序
    Servlet | HTTP协议、模板方法设计模式
    端到端语音识别笔记
    2025汤家凤考研数学,基础视频课程+百度网盘+PDF真题讲解
  • 原文地址:https://blog.csdn.net/weixin_46227276/article/details/126213606