当前位置:网站首页>2.1-梯度下降

2.1-梯度下降

2022-08-11 06:50:00 一条大蟒蛇6666

在上一章回归那节,我们讨论了如何找到一个最好模型的过程,也就是去找一组参数θ,让这个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}=\begin{bmatrix} \theta _{1}^{0}\\ \theta _{2}^{0} \end{bmatrix} θ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 ] \begin{bmatrix} \theta _{1}^{1}\\ \theta _{2}^{1} \end{bmatrix}=\begin{bmatrix} \theta _{1}^{0}\\ \theta _{2}^{0} \end{bmatrix}-\eta \begin{bmatrix} \frac{\partial L(\theta _{1}^{0})}{\partial \theta _{1}}\\ \frac{\partial L(\theta _{2}^{0})}{\partial \theta _{2}} \end{bmatrix} [θ11θ21]=[θ10θ20]η[θ1L(θ10)θ2L(θ20)]

  • [ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] − η [ ∂ L ( θ 1 1 ) ∂ θ 1 ∂ L ( θ 2 1 ) ∂ θ 2 ] \begin{bmatrix} \theta _{1}^{2}\\ \theta _{2}^{2} \end{bmatrix}=\begin{bmatrix} \theta _{1}^{1}\\ \theta _{2}^{1} \end{bmatrix}-\eta \begin{bmatrix} \frac{\partial L(\theta _{1}^{1})}{\partial \theta _{1}}\\ \frac{\partial L(\theta _{2}^{1})}{\partial \theta _{2}} \end{bmatrix} [θ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)=\begin{bmatrix} \frac{\partial L(\theta _{1})}{\partial \theta _{1}}\\ \frac{\partial L(\theta _{2})}{\partial \theta _{2}} \end{bmatrix} 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-20220807112632108image-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
原网站

版权声明
本文为[一条大蟒蛇6666]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_46227276/article/details/126213606