tensorflow各优化器总结

1、RMSprop 算法是一种自适应学习率的优化算法,其核心思想是通过统计相似梯度的平均值的方式来自动地调整学习率。一般来讲,我们会在梯度算法中引入一个衰减系数,使每一次衰减都有一定的比例。在TensorFlow 中,一般使用tf.train.RMSPropOptimizer()方法来创建一个优化器。

2、Momentum 算法也是神经网络的常用优化算法之一,并且也属于梯度下降的变形算法。Momentum 算法的核心在于将梯度学习算法中加入了动量的概念,当前权值的改变会收到上一次权值的改变的影响,就像小球滚动时候一样,由于惯性,当前状态会受到上一个状态影响,这样可以加快速度,使得优化速度会变得更快。在TensorFlow 中, 一般使用tf.train.MomentumOptimizer() 方法来创建一个momentum 优化器。普通的梯度下降算法对于所有的参数所使用的学习率都是相同的,但是同一个学习率却不一定适用于所有的参数。

3、相对于梯度下降算法来讲,Adagrad 算法最大的特点就是可以自适应地为各个参数设置不同的学习率,对于各个参数,随着其更新总距离的增加,其学习速率也会随着变慢。对于常见的数据给予比较小的学习率去调整参数,对于不常见的数据给予比较大的学习率调整参数。它可以自动调节学习率,但迭代次数多的时候,学习率也会下降,在TensorFlow 中,一般调用tf.train.AdagradOptimizer()方法来创建一个Adagrad优化器。

4、Adam 这个名字来源于自适应矩估计(adaptive moment estimation),也是梯度下降算法的一种变形,但是每次迭代参数的学习率都有一定的范围,不会因为梯度很大而导致学习率(步长)也变得很大,参数的值相对比较稳定。会把之前衰减的梯度和梯度平方保存起来,使用RMSprob,Adadelta相似的方法更新参数。在TensorFlow 中,一般调用tf.train.AdamOptimizer()方法来创建一个Adam 优化器。

5、NAG(Nesterov Accelerated gradient)与momentum相比,它更为聪明,因为momentum是一个路痴,它不知道去哪里,而NAG则知道我们的目标在哪里。也就是NAG知道我们下一个位置大概在哪里,然后提前计算下一个位置的梯度。然后应用于当前位置指导下一步行动。
6、RMSprob :采用前t-1次梯度平方的平均值 加上当前梯度的平方 的和再开放作为分母

7、Adadelta :不使用学习率

8、标准梯度下降法:汇总所有样本的总误差,然后根据总误差更新权值

9、随机梯度下降:随机抽取一个样本误差,然后更新权值 (每个样本都更新一次权值,可能造成的误差比较大)

10、批量梯度下降法:相当于前两种的折中方案,抽取一个批次的样本计算总误差,比如总样本有10000个,可以抽取1000个作为一个批次,然后根据该批次的总误差来更新权值。(常用)

猜你喜欢

转载自blog.csdn.net/zcc_0015/article/details/84557243
今日推荐