深度学习的优化算法
目前,深度学习的优化器以反向传播的梯度下降算法为主流。常见的优化器有如下几种:
- BGD
- SGD
- MBGD
- Momentum
- RMSProp
- AdaGrad
- Adam
1. 批量梯度下降(Batch Gradient Descent, BGD)
2. 随机梯度下降法(Stochastic Gradient Descent,SGD)
3. 小批量随机梯度下降(Mini-batch Gradient Descent, MBGD)
4. SGDM(SGD with Momentum)
SGDM在SGD基础上引入了一阶动量:
SGD-M参数更新公式如下,其中
一阶动量是各个时刻梯度方向的指数移动平均值,也就是说,
特点:
因为加入了动量因素,SGD-M缓解了SGD在局部最优点梯度为0,无法持续更新的问题和振荡幅度过大的问题,但是并没有完全解决,当局部沟壑比较深,动量加持用完了,依然会困在局部最优里来回振荡。
5. RMSProp
6. 自适应梯度法(adaptive gradient, AdaGrad)
它通过记录每次迭代过程中的前进方向和距离,从而使得针对不同问题,有一套自适应调整学习率的方法,即不同的参数是需要不同的学习率的。具有损失较大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。
AdaGrad的效果是:在参数空间中更为平缓的倾斜方向会取得更大的进步(因为平缓,所以历史梯度平方和较小,对应学习下降的幅度较小)。
优点:解决了SGD中学习率不能自适应调整的问题。
缺点:
(1)对于训练深度神经网络模型而言,从训练开始时累积平方梯度值会越来越大,会导致学习率过早和过量的减少,从而导致迭代后期收敛及其缓慢。AdaGrad在某些深度学习模型上效果不错,但不是全部。
(2)需要手动设置全局学习率
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律