梯度下降算法

梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。原理:目标函数关于参数的梯度将是目标函数上升最快的方向。对于最小化优化问题,只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数的下降。
梯度下降算法又可以分为:
1.批量梯度下降算法(Batch Gradient Descent)在整个训练集上计算的,如果数据集比较大,可能会面临内存不足问题,而且其收敛速度一般比较慢。
2.随机梯度下降算法(Stochastic GradientDescent)针对训练集中的一个训练样本计算,又称为在线学习,即得到了一个样本,就可以执行一次参数更新。其收敛速度会快一些,但是有可能出现目标函数值震荡现象。
3.小批量梯度下降算法(Mini-batch Gradient Descent)。选取训练集中一个小批量样本计算,这样可以保证训练过程更稳定,是目前最常用的梯度下降算法。
梯度下降算法针对凸优化问题原则上可以收敛到全局最优,因但深度学习模型是一个复杂的非线性结构,一般属于非凸问题,这意味着存在很多局部最优点(鞍点),采用梯度下降算法可能会陷入局部最优。理想的梯度下降算法要满足两点:收敛速度要快;能全局收敛。
梯度下降算法变种:
1.冲量梯度下降算法(Momentum optimization)参数更新时不仅考虑当前梯度值,而且加上了一个积累项(冲量),但了一个超参数。
2.NAG算法(Nesterov Accelerated Gradient)计算“超前梯度”更新冲量项。
3.AdaGrad。一种学习速率自适应的梯度下降算法。在训练迭代过程,其学习速率是逐渐衰减的,经常更新的参数其学习速率衰减更快。
4.RMSprop。类似Momentum思想,引入一个超参数,在积累梯度平方项进行衰减。
5.Adam(Adaptive moment estimation)结合了Momentum和RMSprop算法的思想。相比Momentum算法,其学习速率是自适应的,而相比RMSprop,其增加了冲量项。
梯度下降算法梯度下降算法梯度下降算法梯度下降算法梯度下降算法
梯度下降算法

上一篇:c/c++ 图的创建(二维数组法)


下一篇:torch.optim.SGD()各参数的解释