Caffe入门(三)优化器的详细介绍

2017-12-13  本文已影响0人  Yao_0

上篇文章超参数文件中提到的以下六种优化算法,此处对各类优化算法进行简要的介绍。(一般函数值的取值均为超参数)

Stochastic Gradient Descent (type: "SGD"), 在Caffe中SGD其实应该是Momentum(不是传统的梯度下降法 ,下篇文章详细介绍6种)

AdaDelta (type: "AdaDelta"),

Adaptive Gradient (type: "AdaGrad"),

Adam (type: "Adam"),

Nesterov’s Accelerated Gradient (type: "Nesterov")

RMSprop (type: "RMSProp")

各种优化器对比:
一、三种梯度下降法概述
1、标准梯度下降法:
标准梯度下降先计算所有样本汇总误差,然后根据总误差来更新权值
2、随机梯度下降法:
随机梯度下降随机抽取一个样本来计算误差,然后更新权值(数据较多时候用这个方法快,但是会引入噪声,权值跟新方向可能错误)
3、批量梯度下降法:(用的最多)
批量梯度下降算是一种折中的方案,从总样本中选取一个批次(比如一共有10000个样本,随机选取100个样本作为一个batch),然后计算这个batch的总误差,根据总误差来更新权值。

二、常用公式符号说明:

捕获.PNG

三、常用优化算法
1、SGD (梯度下降法)(速度最慢)


捕获.PNG

2、Momentum


捕获.PNG

当前权值的改变会受到上一次权值改变的影响,类似于小球向下滚动的时候带上了惯性。这样可以加快小球的向下的速度。

3、NAG(聪明版本的Momentum)


捕获.PNG

NAG在TF中跟Momentum合并在同一个函数tf.train.MomentumOptimizer中,可以通过参数配置启用。在Momentun中小球会盲目地跟从下坡的梯度,容易发生错误,所以我们需要一个更聪明的小球,这个小球提前知道它要去哪里,它还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。γvt−1(动力项)会用来修改W的值,计算W−γvt−1可以表示小球下一个位置大概在哪里。从而我们可以提前计算下一个位置的梯度,然后使用到当前位置。

4、Adagrad


捕获.PNG

gt,i 代表第i个分类代价函数的梯度

   它是基于SGD的一种算法,它的核心思想是对比较常见的数据给予它比较小的学习率去调整参数,对于比较罕见的数据给予它比较大的学习率去调整参数。它很适合应用于数据稀疏的数据集(比如一个图片数据集,有10000张狗的照片,10000张猫的照片,只有100张大象的照片)。

Adagrad主要的优势在于不需要人为的调节学习率,它可以自动调节。它的缺点在于,随着迭代次数的增多,学习率也会越来越低,最终会趋向于0。

5、RMSprop:


捕获.PNG

RMSprop借鉴了一些Adagrad的思想,不过这里RMSprop只用到了前t-1次梯度平方的平均值(t人为取值)加上当前梯度的平方的和的开平方作为学习率的分母。这样RMSprop不会出现学习率越来越低的问题,而且也能自己调节学习率,并且可以有一个比较好的效果。

6、Adadelta:
(训练速度快,模型训练时候快速的到结果,然后用其他优化器来保证准确率)


捕获.PNG

使用Adadelta我们甚至不需要设置一个默认学习率,在Adadelta不需要使用学习率也可以达到一个非常好的效果。

7、Adam:


捕获.PNG

就像Adadelta和RMSprop一样Adam会存储之前衰减的平方梯度,同时它也会保存之前衰减的梯度。经过一些处理之后再使用类似Adadelta和RMSprop的方式更新参数。

上一篇下一篇

猜你喜欢

热点阅读