美文网首页
Day 4: 优化算法

Day 4: 优化算法

作者: andyjkt | 来源:发表于2019-11-17 11:16 被阅读0次

    1.Gradient Decent

    把所有的训练样本丢进去训练一次之后,把W和b更新一次,然后重复这个过程,具体重复多少次就看我们的“迭代次数”是多少。

    “把所有训练样本过一遍”为一个epoch

    2. Mini-batch GD

    我们训练的时候,跑完一个mini-batch就把W和b更新一次,这样的的话,在一个epoch中,我们就已经把参数更新了多次了!虽然每一步没有batch GD的一步走的准,但是我多步加起来,怎么样也比你走一步的效果好的多,因此可以加快训练速度,更快到达最值点。

    对于不同的mini-batch的大小(size),也有不一样的效果:

    size=样本数 —> Batch GD

    size=1 —> Stochastic GD(随机梯度下降)

    size=1的时候,会有两个问题:

    1)震动太剧烈,误差会灰常大,可能根本无法到达最低点

    2)每次只计算一个样本,就失去了我们前面提到的“Vectorization(矢量化)”的优势,因此计算效率反而不高

    mini-batch size通常取2的指数,主要是16,32,64,128,256,512,1024这几个值,因为计算机是二进制,这样的数字计算起来效率会更高一些

    3. Momentum 动量法

    使用mini-batch之后,稳定性降低了,在梯度下降的时候会有较为剧烈的振动,这样可能导致在最低点附近瞎晃悠,因此效果会受影响。

    参数更新过程

    一般的梯度下降的更新过程(以W为例)是:W = W -α*dW。

    动量法相当于多了一个V_dW,它考虑了前面若干个dW,(实际上,V_dW约等于前1/(1-β)个dW的平均值,数学上称为“指数加权平均”)这样,dW的方向就会受到前面若干个dW的冲击,于是整体就变得更平缓。

    momentum更新示意图

    mini-batch是上下起伏不定的箭头,但是把若干个的方向平均一下,就变得平缓多了,相当于抵消掉了很多的方向相反的误差

    超参数β一般取0.9

    4. Adam算法

    momentum再进一步改进,结合了RMSprop算法(是另一种减小梯度下降振动的方法),更新过程如下:

    Adam更新公式

    learning-rate太小以及数据集比较简单的情况下momentum发挥不了太大的作用

    Adam算法中的超参数β1和β2以及learning-rate也会显著影响模型,因此需要我们反复调试

    一般β1=0.9和β2=0.999


    参考文献

    相关文章

      网友评论

          本文标题:Day 4: 优化算法

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