目录
说明
模型每次反向传导都会给各个可学习参数p计算出一个偏导数,用于更新对应的参数p。通常偏导数
不会直接作用到对应的可学习参数p上,而是通过优化器做一下处理,得到一个新的值
,处理过程用函数F表示(不同的优化器对应的F的内容不同),即
,然后和学习率lr一起用于更新可学习参数p,即
。
Adam是在RMSProp和AdaGrad的基础上改进的。先掌握RMSProp的原理,就很容易明白Adam了。本文是在RMSProp这篇博客的基础上写的。
Adam原理
在RMSProp的基础上,做两个改进:梯度滑动平均和偏差纠正。
梯度滑动平均
在RMSProp中,梯度的平方是通过平滑常数平滑得到的,即(根据论文,梯度平方的滑动均值用v表示;根据pytorch源码,Adam中平滑常数用的是β,RMSProp中用的是α),但是并没有对梯度本身做平滑处理。
在Adam中,对梯度也做了平滑,平滑后的滑动均值用m表示,即

Adam优化器结合了RMSProp和AdaGrad的优点,通过对梯度及其平方进行滑动平均,并进行偏差纠正,有效解决了梯度消失和爆炸的问题。本文详细解析了Adam的工作原理,包括其在PyTorch中的具体实现参数。
最低0.47元/天 解锁文章
1983

被折叠的 条评论
为什么被折叠?



