梯度下降算法(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,其增加了冲量项。
相关文章
- 07-21算法题 week3
- 07-21leetcode 714买卖股票的最佳时机含手续费 贪心算法
- 07-21Kaldi的自然梯度理论基础
- 07-21从零开始的Nesterov动量梯度下降
- 07-21吴恩达-梯度下降
- 07-21LeetCode 算法 191:位1的个数
- 07-21Python——递归、二分查找算法
- 07-21递归下降语法分析
- 07-21QT 引用之前项目模板导致计算速度严重下降
- 07-21Python3求解字符串滤值与百元买百鸡算法