深度学习任务中一般都采用优化器来决定模型的梯度更新算法,本文简单对常用的优化器做个简单介绍。
SGD
- SGD(stochastic gradient descent)随机梯度下降:单条数据就可以对参数进行一次更新。优点是参数更新快,缺点是每次更新采用的数据量小,容易震荡。
BGD
- BGD(batch gradient descent)批量梯度下降:所有数据都参与参数的每一次更新。优点是梯度更新平滑,缺点是参数更新较慢。
MBGD
- MBGD(min-batch gradient descent)小批量梯度下降:每次更新都只取数据中的一部分参与运算,是目前最常见的梯度更新策略。有点事相随与随机梯度下降,梯度更新更加平滑,且不会像BGD一样参数更新缓慢。但是需要制定每个batch中的数据均衡策略保证训练不会出现震荡。
momentum
- 主要解决随机梯度下降时的震荡问题,通过加入一个momentum参数,以本次计算得到的梯度和上次梯度更新的加权和作为本次要更新的梯度,加速网络收敛,同时抑制震荡,但是有可能难以找到最优点,因此在模型训练的后期通常会将其关闭。
Adagrad
- Adagrad(adaptive gradient algorithm),实际上是在梯度更新时依据每个参数的重要程度对其进行自适应加权,具体做法是将低频的参数和高频的参数分开处理,对低频参数做较大的更新,高频参数进行较小的更新。可以不用手动调节学习率,但是最红学习率会变得非常小。
RMSprop
- 主要解决Adagrad学习率会急剧下降的问题。
Adam
- Adam(adaptive moment estimation)是目前最常被采用的优化器,是每个参数自适应学习率的方法。相当于RMSprop和momentum的结合。
博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏,感谢大家。