什么是优化算法?
简单来说就是一种通过迭代逼近最优解的方法,即最优解的渐近估计方法。
深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的发展历程,目前Adam应该是最常用的优化算法。
为什么需要优化算法?
1.有的问题并没有解析解,只能迭代求得近似解
2.问题有解析解,但是求解析解的计算复杂度大的无法接受
3.求解析解有新数据进来时候需要全部重算,而online算法则只需要更新一下
无动量或一阶动量方法
梯度下降基础公式
BGD(Batch gradient descent/批量梯度下降):
- 简介:每一步迭代都用到训练集所有数据
- 缺点:该方法缺点是计算复杂度,存储复杂度都很高,只适用于小样本
- 优点:全局最优解,实现简单
SGD(Stochastic Gradient Descent/随机梯度下降)/MBGD(Mini-batch Gradient Descent/小批量梯度下降法):
- 简介:每步迭代用一小批样本
- 缺点:参数初始化敏感,容易陷入局部最小值,一般不是全局最优,收敛慢(路径是锯齿状的)。
- 优点:较BGD训练速度快,但依旧算是慢,经常会在局部最小值处震荡。
- 注意点:选取batch时候要尽量保持抽取的随机性,即熵最大准则。然后随机抽取的方式会引入噪声,所以即使算法到达最优解附近,算法仍会震荡,所以我们需要随着时间的推移逐渐降低学习率。