梯度下降方法是目前最流行的神经网络优化方法,并且现在主流的深度学习框架(tensorflow,caffe,keras,MXNET等)都包含了若干种梯度下降迭代优化器。我们在搭建网络的时候,基本都是拿它们封装好的函数直接用。实际上这些算法在不同情况可能有很大的性能差异,弄清楚它们的原理差异,有助于我们分析。
参考文章:梯度下降优化方法总结
梯度下降(gradient descent,GD)是最基础的概念,它有三个很近似的名词:
批量梯度下降(Batch gradient descent)
每次使用整个训练集计算目标函数的梯度,
因为每更新一次参数就需要计算整个数据集,所以批量梯度下降算法十分缓慢而且难以存放在内存中计算,且无法在线更新。
随机梯度下降(stochastic gradient descent, SGD)
一次只使用一个样本计算目标函数的梯度,
因为每次只计算一个样本,所以SGD计算非常快且适合线上更新模型。SGD频繁地参数更新可以使算法跳出局部最优点,更可