以下内容摘自 http://www.cnblogs.com/xinchrome/p/4964930.html
我们介绍Adam,这是一种基于一阶梯度来优化随机目标函数的算法。随即目标函数的含义是,在训练过程的每一次迭代中,目标函数是不一样的。有时候因为内存不够大或者其他的原因,算法不会一下子读取全部记录来计算误差,而是选择选择对数据集进行分割,在每次迭代中只读取一部分记录进行训练,这一部分记录称为minibatch,这样每次迭代所使用的小批量数据集就是不同的,数据集不同,损失函数就不同,因此就有随机目标函数的说法。另外还有一个原因就是,采用小批量方式来进行训练,可以降低收敛到局部最优的风险(想象一个在凹凸不平的地面上运动的小球,小球很容易陷入一些小坑,这些小坑并不是最低点)。
简介:
Adam 这个名字来源于 adaptive moment estimation,自适应矩估计。概率论中矩的含义是:如果一个随机变量 X 服从某个分布,X 的一阶矩是 E(X),也就是样本平均值,X 的二阶矩就是 E(X^2),也就是样本平方的平均值。Adam 算法根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计动态调整针对于每个参数的学习速率。Adam 也是基于梯度下降的方法,但是每次迭代参数的学习步长都有一个确定的范围,不会因为很大的梯度导致很大的学习步长,参数的值比较稳定。it does not require stationary objective, works with sparse gradients, naturally performs a form of step size annealing. 按我的理解,它有利于降低模型收敛到局部最优的风险。
adam 论文 https://arxiv.org/pdf/1412.6980v8.pdf
tensorflow文档 关于adam https://www.tensorflow.org/versions/r0.11/api_docs/python/train.html#AdamOptimizer