#5 Optimization

2018-02-19  本文已影响0人  nearby

优化的目的是通过最小化损失函数,找到合适的权重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
上一篇下一篇

猜你喜欢

热点阅读