D2L-pytorch版 Task07笔记

本文介绍了优化算法的进阶,包括Momentum、AdaGrad、RMSProp、AdaDelta和Adam。动量法通过指数加权移动平均减少噪声影响,而AdaGrad、RMSProp和AdaDelta则根据历史梯度信息动态调整学习率。Adam结合了动量法和RMSProp的优点,进一步改善了学习效率。文章还提到了词嵌入的基础,如Word2Vec的Skip-Gram模型和负采样,并简述了GloVe全局向量的词嵌入模型。
摘要由CSDN通过智能技术生成

优化算法进阶

1.Momentum

目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向。因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量。然而,如果自变量的迭代方向仅仅取决于自变量当前位置,这可能会带来一些问题。对于noisy gradient,我们需要谨慎的选取学习率和batch size, 来控制梯度方差和收敛的结果。

g t = ∂ w 1 ∣ B t ∣ ∑ i ∈ B t f ( x i , w t − 1 ) = 1 ∣ B t ∣ ∑ i ∈ B t g i , t − 1 . \mathbf{g}_t = \partial_{\mathbf{w}} \frac{1}{|\mathcal{B}_t|} \sum_{i \in \mathcal{B}_t} f(\mathbf{x}_{i}, \mathbf{w}_{t-1}) = \frac{1}{|\mathcal{B}_t|} \sum_{i \in \mathcal{B}_t} \mathbf{g}_{i, t-1}. gt=wBt1iBtf(xi,wt1)=Bt1iBtgi,t1.

  • An ill-conditioned Problem

Condition Number of Hessian Matrix:

c o n d H = λ m a x λ m i n cond_{H} = \frac{\lambda_{max}}{\lambda_{min}} condH=λminλmax

where λ m a x , λ m i n \lambda_{max}, \lambda_{min} λmax,λmin is the maximum amd minimum eignvalue of Hessian matrix.

让我们考虑一个输入和输出分别为二维向量 x = [ x 1 , x 2 ] ⊤ \boldsymbol{x} = [x_1, x_2]^\top x=[x1,x2]和标量的目标函数:

f ( x ) = 0.1 x 1 2 + 2 x 2 2 f(\boldsymbol{x})=0.1x_1^2+2x_2^2 f(x)=0.1x12+2x22

c o n d H = 4 0.2 = 20 → ill-conditioned cond_{H} = \frac{4}{0.2} = 20 \quad \rightarrow \quad \text{ill-conditioned} condH=0.24=20ill-conditioned

  • Maximum Learning Rate

  • For f ( x ) f(x) f(x), according to convex optimizaiton conclusions, we need step size η \eta η.
  • To guarantee the convergence, we need to have η \eta η .
  • Supp: Preconditioning

在二阶优化中,我们使用Hessian matrix的逆矩阵(或者pseudo inverse)来左乘梯度向量 i . e . Δ x = H − 1 g i.e. \Delta_{x} = H^{-1}\mathbf{g} i.e.Δx=H1g,这样的做法称为precondition,相当于将 H H H 映射为一个单位矩阵,拥有分布均匀的Spectrum,也即我们去优化的等价标函数的Hessian matrix为良好的identity matrix。
同一位置上,目标函数在竖直方向( x 2 x_2 x2轴方向)比在水平方向( x 1 x_1 x1轴方向)的斜率的绝对值更大。因此,给定学习率,梯度下降迭代自变量时会使自变量在竖直方向比在水平方向移动幅度更大。那么,我们需要一个较小的学习率从而避免自变量在竖直方向上越过目标函数最优解。然而,这会造成自变量在水平方向上朝最优解移动变慢。

  • Momentum Algorithm

动量法的提出是为了解决梯度下降的上述问题。设时间步 t t t 的自变量为 x t \boldsymbol{x}_t xt,学习率为 η t \eta_t ηt
在时间步 t = 0 t=0 t=0,动量法创建速度变量 m 0 \boldsymbol{m}_0 m0,并将其元素初始化成 0。在时间步 t > 0 t>0 t>0,动量法对每次迭代的步骤做如下修改:

m t ← β m t − 1 + η t g t , x t ← x t − 1 − m t , \begin{aligned} \boldsymbol{m}_t &\leftarrow \beta \boldsymbol{m}_{t-1} + \eta_t \boldsymbol{g}_t, \\ \boldsymbol{x}_t &\leftarrow \boldsymbol{x}_{t-1} - \boldsymbol{m}_t, \end{aligned} mtxtβmt1+ηtgt,xt1mt,

Another version:

m t ← β m t − 1 + ( 1 − β ) g t , x t ← x t − 1 − α t m t , \begin{aligned} \boldsymbol{m}_t &\leftarrow \beta \boldsymbol{m}_{t-1} + (1-\beta) \boldsymbol{g}_t, \\ \boldsymbol{x}_t &\leftarrow \boldsymbol{x}_{t-1} - \alpha_t \boldsymbol{m}_t, \end{aligned} mtxtβmt1+(1β)gt,xt1αtmt,

α t = η t 1 − β \alpha_t = \frac{\eta_t}{1-\beta} αt=1βηt

其中,动量超参数 β \beta β满足 0 ≤ β < 1 0 \leq \beta < 1 0β<1。当 β = 0 \beta=0 β=0 时,动量法等价于小批量随机梯度下降。使用较小的学习率 η = 0.4 \eta=0.4 η=0.4 和动量超参数 β = 0.5 \beta=0.5 β=0.5 时,动量法在竖直方向上的移动更加平滑,且在水平方向上更快逼近最优解。

  • Exponential Moving Average

为了从数学上理解动量法,让我们先解释一下指数加权移动平均(exponential moving average)。给定超参数 0 ≤ β < 1 0 \leq \beta < 1 0β<1,当前时间步 t t t 的变量 y t y_t yt 是上一时间步 t − 1 t-1 t1 的变量 y t − 1 y_{t-1} yt1 和当前时间步另一变量 x t x_t xt 的线性组合:

y t = β y t − 1 + ( 1 − β ) x t . y_t = \beta y_{t-1} + (1-\beta) x_t. yt=βyt1+(1β)xt.

我们可以对 y t y_t yt 展开:

y t = ( 1 − β ) x t + β y t − 1 = ( 1 − β ) x t + ( 1 − β ) ⋅ β x t − 1 + β 2 y t − 2 = ( 1 − β ) x t + ( 1 − β ) ⋅ β x t − 1 + ( 1 − β ) ⋅ β 2 x t − 2 + β 3 y t − 3 = ( 1 − β ) ∑ i = 0 t β i x t − i \begin{aligned} y_t &= (1-\beta) x_t + \beta y_{t-1}\\ &= (1-\beta)x_t + (1-\beta) \cdot \beta x_{t-1} + \beta^2y_{t-2}\\ &= (1-\beta)x_t + (1-\beta) \cdot \beta x_{t-1} + (1-\beta) \cdot \beta^2x_{t-2} + \beta^3y_{t-3}\\ &= (1-\beta) \sum_{i=0}^{t} \beta^{i}x_{t-i} \end{aligned} yt=(1β)xt+βyt1=(1β)xt+(1β)βxt1+β2yt2=(1β)xt+(1β)βxt1+(1β)β2xt2+β3yt3=(1β)i=0tβixti

( 1 − β ) ∑ i = 0 t β i = 1 − β t 1 − β ( 1 − β ) = ( 1 − β t ) (1-\beta)\sum_{i=0}^{t} \beta^{i} = \frac{1-\beta^{t}}{1-\beta} (1-\beta) = (1-\beta^{t}) (1β)i=0t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值