深度学习入门——Mini-batch、Momentum与Adam算法

   日期:2024-12-27    作者:xhb273511 浏览:56    移动:http://w.yusign.com/mobile/quote/7552.html

学习记录自:deeplearning.ai-andrewNG-master

1.1 常用优化算法
在机器学习或深度学习中,一般采取梯度下降对参数进行优化更新,本文主要讨论Mini-Batch算法、Momentum算法、RMSprop以及Adam算法。
1.2 为什么要改进梯度下降
对于一个数据量适中的数据集而言,可以直接利用梯度下降或者随机梯度下降(Stochastic Gradient Descent)。此时在整个训练集进行梯度下降优化不会消耗太多的时间,效率也不会受太大影响。
但是在深度学习中,往往有巨大的数据样本,如果这种情况下,依然对整个样本数据集进行梯度下降,那么整个训练速度很非常慢。以上算法针对此问题进行了探索,提出更合理的梯度下降优化方法。

2.1 Mini-Batch梯度下降
对非常庞大的数据样本进行整个数据集梯度下降往往耗时耗力,Mini-Batch梯度下降算法很好的解决了这个问题。主要思路在于对庞大的数据集进行样本划分,把原本特别大的数据样本随机划分为一个个的小样本集,其中每个小样本集中含有数量相同的样本个数。再分别对每个小样本集进行训练,实施梯度下降。样本划分的操作涉及Shuffle和Partition。

Mini-batch梯度下降法因为样本划分的原因,每个样本集的梯度下降不一定会始终朝着损失函数最小化的方向迭代,所以噪声会更大,但整体趋势也是趋于损失函数最优化。
另外对于Mini-batch算法,如何选择mini-batch-size也是一个问题,根据相关实验与经验,一般的在样本集不超过2000个时,选择一般梯度下降即可。当样本集超过2000个时,经典的mini-batch-size为64、128、256、512等。

2.2 Momentum与RMSprop
从刚刚Mini-batch梯度下降法的损失函数迭代图来看,它的收敛速率并不是特别好,并且优化时存在数值振荡,为了减小优化时的震荡,提出了动量梯度下降法(Momentunm)。
动量梯度下降算法实际上是用了指数加权平均的原理,在讨论Momentum与RMSprop之前,先对指数加权平均进行说明。

分母中的 eplison,是为了防止出现除零情况而增加的一个小量,另外alpha 和beta 都是超参数。

图 9 Momentum算法模型分类效果

3.2 Adam算法效果
Adam算法损失函数迭代图和模型分类效果如下图所示

图 11 Adam算法模型分类效果

3.3 对比分析
从结果来看Adam明显胜过Mini-batch和Momentum。如果在简单的数据集上运行,那么这三种方法都将产生非常好的结果。但是,Adam收敛得更快。Adam的优势包括:相对较低的内存要求,即使很少调整超参数,通常也能很好地工作。

本文所用到的代码如下

 

#利用Momentum 进行梯度下降 参数更新

 

Adam算法代码

 

模型整合

本文地址:http://w.yusign.com/quote/7552.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号