新鲜 / 健康 / 便利 / 快速 / 放心
tensorflow中一共有如下几种optimizer:
tf.train.GradientDescentOptimizer:梯度下降法
tf.train.AdadeltaOptimizer
tf.train.AdagradOptimizer
tf.train.AdagradDAOptimizer
tf.train.MomentumOptimizer
tf.train.AdamOptimizer
tf.train.FtrlOptimizer
tf.train.ProximalGradientDescentOptimizer
tf.train.ProximalAdagradOptimizer
tf.train.RMSPropOptimizer
各种优化器对比:
标准梯度下降法:标准梯度下降先计算所有样本汇总误差,然后根据总误差来更新权值
随机梯度下降法:随机梯度下降随机抽取一个样本来计算误差,然后更新权值
批量梯度下降法:批量梯度下降算是一种折中的方案,从总样本中选取一个批次(比如一共有10000个样本,随机选取100个样本作为一个batch),然后计算这个batch的总误差,根据总误差来更新权值。
下图为一个梯度下降法的示意图:
W:要训练的参数? ? ?J(W):代价函数
即代价函数对W求导
SGD:随机梯度下降法
Momentum:
NAG(Nesterov acclerated gradient):
Adagrad:
基于随机梯度下降法。
观察公式,比如抽到的狗的照片越多,分母越大,学习率越小。
它很适合应用于数据稀疏的数据集
RMSprop:
RMS是均方根的缩写。(Root Mean Square)
Adadelta:
Adam:
更新参数的部分跟Adadelta和RMS类似。
?
? ? ? Adam(Adaptive Moment Estimation)本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。
特点:
结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
对内存需求较小
为不同的参数计算不同的自适应学习率
也适用于大多非凸优化 - 适用于大数据集和高维空间
? ? ? ? ? ?对学习率有了更强的约束,同时对梯度的更新也有更直接的影响。一般而言,在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。
使用的代码基于交叉熵时的代码。
?
?