美文网首页
#5 Optimization

#5 Optimization

作者: nearby | 来源:发表于2018-02-19 11:28 被阅读0次

    优化的目的是通过最小化损失函数,找到合适的权重W,使得分类效果最佳。

    优化策略有如下几种

    • Random Search
    • Follow the slope (Numerical gradient)
    • Analytic gradient
    • Mini-batch gradient descent

    Random Search

    对于策略1,随机权重W,重复多次,比如1000次,从这1000次中找到使损失最小的那个W,将其定义为最优权重。以cifar-10数据集为例,总共有10个类别,随机猜的情况下,准确率有10%。用随机搜索策略,随机1000次后,最优W得到的准确率约为15.5%。随机搜索策略,不仅效率低,准确率也低。

    Follow the slope

    对W每一个元素上的改变,分别求导数$\frac{dL(W)}{dW}=\lim_{\Delta W \to 0}\frac{L(W+\Delta W)-L(W)}{\Delta W}$这种方法可行,但效率低,称之为Numerical gradient.

    image.png

    Analytic gradient

    由于L是只与W有关,与训练集无关的函数,利用微分原理,可以求L对W的梯度,免去上一策略对W所有元素求导的繁杂。
    在实际使用中,用求梯度(analytic gradient)的方法进行调优,只在需要确定梯度函数是否正确时,使用numerical gradient计算。

    Mini-batch gradient descent

    当训练集较大时,如果对所有的数据训练一遍后再对W做调整,很费时。因此考虑每次只用一小部分训练数据(mini-batch size)做训练,对模型进行调优。常用的batch size = 32/64/128,通常取决于GPU的大小,如果GPU较小,则batch size也应当调小。
    对比full-batch和mini-batch做出来的性能曲线,full batch只有一条曲线构成,mini-batch是由波动的多条曲线构成。


    mini batch下的loss曲线

    学习率对损失函数的影响

    • 学习率设置得小,损失函数收敛的时间长;
    • 学习率设置过高,在梯度下降的过程中,loss震荡可能越过最小值(谷底),导致loss无法收敛
    learning rate 对loss的影响

    梯度更新的方法

    • SGD 随机梯度下降 $Weights+=LearningRate*WeightsGradient$
    • Momentm
    • Adagrad
    • RMSProp
    • Adam

    相关文章

      网友评论

          本文标题:#5 Optimization

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