美文网首页
Stanford cs231n #2 Parameter Upd

Stanford cs231n #2 Parameter Upd

作者: 麦兜胖胖次 | 来源:发表于2016-12-18 21:41 被阅读0次

    在开始assignment之前,要先马一个国外大神对于gradient descent optimization algorithm的总结:http://sebastianruder.com/optimizing-gradient-descent/index.html#fnref:1

    Gradient Descent

    (1) SGD

    Paste_Image.png

    SGD的问题在于,在很多情况下收敛速度过慢,考虑如下情况:

    Paste_Image.png

    在flat的方向上过慢,而在steep的方向上上下幅度过大导致收敛过程异常缓慢。为了解决这个问题,有人提出了Momentum Update

    (2) Momentum update

    Paste_Image.png

    Andrej大神教我们如何去理解这个momentum(动量)。首先我们的loss function在这个field内就像一个小球,它需要force产生加速度,从而有速度。gradient就相当于加速度,v就是速度,那么mu*v就是friction。也就是说为了让小球能稳定下来,我们需要一个friction来达到steady state。mu就是momentum,表示虽然我们希望改变梯度,但是要保留原来的值,好比惯性一样,和当前计算得出的改变量做一个tradeoff。mu可以取0.5,0.9,0.99等...

    当然有人在momentum基础上又做了一步改进,就是

    Paste_Image.png

    NAG的意义在于,向前多“观测”了一步,这样调整过程可以更快速。

    (3) AdaGrad

    Paste_Image.png

    这样的意义在于,当我们发现原来在steep方向上下降速度过快(可以从累积的cache体现),这样的scale down做法就可以减缓这个方向的下降速度,从而减小jiggle,加快收敛。但是问题是,过了一些迭代之后“小球”就停下来了,这并不是我们想要的,尤其是在训练深度神经网络的时候。Hinton在12年对这个算法做出了改进。加入了leaky:

    Paste_Image.png

    这样的好处在于解决了当cache过大的时候,梯度下降不再继续的尴尬。 比较funny的一点在于,Hinton本人并没有发表文章,只是在他po在coursera的课上的一个slide里面提到...之后有人在论文里只好引用这个slide...哈哈哈6666,Hinton都不屑于发这种东西了是嘛……

    (4) Adam Update

    Adam: combining momentum update and RMSProp

    Paste_Image.png

    Andrej说一般来讲beta1取0.9,beta2取0.995。

    (5) 关键是 Learning decay rate over time!

    Paste_Image.png

    通常这些exponential decay用于sgd。

    (6) Second order optimization methods

    nice feature: no learning rate,可以由hessian矩阵更直接的知道该向最速下降方向走多少。

    Paste_Image.png

    两种常见的second order optimization: BFGS and L-BFGS

    相关文章

      网友评论

          本文标题:Stanford cs231n #2 Parameter Upd

          本文链接:https://www.haomeiwen.com/subject/btszmttx.html