zoukankan      html  css  js  c++  java
  • Deep Learning 优化方法总结

    Stochastic Gradient Descent (SGD)

    SGD的参数

    在使用随机梯度下降(SGD)的学习方法时,一般来说有以下几个可供调节的参数:

    • Learning Rate 学习率
    • Weight Decay 权值衰减
    • Momentum 动量
    • Learning Rate Decay 学习率衰减

    再此之中只有第一的参数(Learning Rate)是必须的,其余部分都是为了提高自适应性的参数,也就是说后3个参数不需要时可以设为0。

    Learning Rate

    学习率决定了权值更新的速度,设置得太大会使结果越过最优值,太小会使下降速度过慢。仅靠人为干预调整参数需要不断修改学习率,因此后面3种参数都是基于自适应的思路提出的解决方案。

    wiwiηEwi

    Weight decay

    在实际运用中,为了避免模型的over-fitting,需要对cost function加入规范项,在SGD中我们加入ηλwi这一项来对cost function进行规范化。

    wiwiηEwiηλwi


    这个公式的基本思路是减小不重要的参数对结果的影响,而有用的权重则不会受到Weight decay的影响,这种思路与Dropout的思路原理上十分相似。

    Link 1
    Link 2

    Learning Rate Decay

    一种提高SGD寻优能力的方法,具体做法是每次迭代减小学习率的大小。

    • initial learning rate η=η0
    • learning rate decay ηd
    • At each iteration s:

     

    η(s)=η01+sηd


    在许多论文中,另一种比较常见的方法是迭代30-50次左右直接对学习率进行操作(η0.5η)

    Momentum

    灵感来自于牛顿第一定律,基本思路是为寻优加入了“惯性”的影响,这样一来,当误差曲面中存在平坦区SGD可以一更快的速度学习。

    wimwiηEwi


    注意:这里的表示方法并没有统一的规定,这里只是其中一种

    Link 1
    Link 2
    Link 3
    Link 4

    SGD优缺点

    • 实现简单,当训练样本足够多时优化速度非常快
    • 需要人为调整很多参数,比如学习率,收敛准则等

    Averaged Stochastic Gradient Descent (ASGD)

    在SGD的基础上计算了权值的平均值。
    $$ar{w}t=frac{1}{t-t_0}sum^t{i=t_0+1} w_t$$

    ASGD的参数

    在SGD的基础上增加参数t0

    • 学习率 η
    • 参数 t0

    ASGD优缺点

    • 运算花费和second order stochastic gradient descent (2SGD)一样小。
    • 比SGD的训练速度更为缓慢。
    • t0的设置十分困难

    Link 1

    3. Conjugate Gradient(共轭梯度法)

    介于最速下降法与牛顿法之间的一个方法,它仅仅需要利用一阶导数的信息,克服了GD方法收敛慢的特点。

    Link 1

    Limited-memory Broyden-Fletcher-Goldfarb-Shanno (LBFGS) (一种拟牛顿算法)

    L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源。

    Link 1
    Link 2
    Link 3

    应用分析

    不同的优化算法有不同的优缺点,适合不同的场合:

    • LBFGS算法在参数的维度比较低(一般指小于10000维)时的效果要比SGD(随机梯度下降)和CG(共轭梯度下降)效果好,特别是带有convolution的模型。
    • 针对高维的参数问题,CG的效果要比另2种好。也就是说一般情况下,SGD的效果要差一些,这种情况在使用GPU加速时情况一样,即在GPU上使用LBFGS和CG时,优化速度明显加快,而SGD算法优化速度提高很小。
    • 在单核处理器上,LBFGS的优势主要是利用参数之间的2阶近视特性来加速优化,而CG则得得益于参数之间的共轭信息,需要计算器Hessian矩阵。

    Link 1

  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/anyview/p/5014670.html
Copyright © 2011-2022 走看看