新优化器SGDP+AdamP:减慢基于动量的优化器的权重增长

论文:https://arxiv.org/pdf/2006.08217.pdf
代码:https://github.com/clovaai/AdamP

摘要

诸如batch normalization(BN)等正则化技术已导致深度神经网络性能的显著改善。先前的研究已经分析了梯度下降(GD)优化器所产生的权重尺度不变的好处:由于步长的自动调整,它导致了稳定的训练。但是,我们表明,结合基于动量的算法,尺度不变性往往会导致权重规范的过度增长。这反过来又过度抑制了训练过程中的有效步长,可能会导致深度神经网络中的次优表现。我们在理论和经验上都分析了这种现象。我们提出了一种简单有效的解决方案:在对尺度不变权重(例如,BN层之前的Conv权重)应用基于动量的GD优化器(例如SGD或Adam)的每次迭代中,我们都会删除径向分量(即与权重平行)向量)。直观地,该操作防止了沿径向的不必要的更新,该更新仅增加了重量标准而无助于损失的最小化。我们验证修改后的优化器SGDP和AdamP成功正则了norm增长并改善了广泛模型的性能。我们的实验涉及的任务包括图像分类和检索,目标检测,鲁棒性基准测试和音频分类。

使用方法

使用方法,很简单,源码都已封装好,直接调用API替代原有优化器即可。
先安装:

pip3 install adamp

其次调包使用:

from adamp import AdamP

# define your params
optimizer = AdamP(params, lr=0.001, betas=(0.9, 0.999), weight_decay=1e-2)
from adamp import SGDP

# define your params
optimizer = SGDP(params, lr=0.1, weight_decay=1e-5, momentum=0.9, nesterov=True)

后面有时间尝试一下效果。
好简单复制粘贴是不是?溜了溜了。。。。。。。。

-------------------------------------更新时间2020.06.23 23:05------------------------------------------------------
尝试了一下使用SGDP替代SGD,但是精度下降3,4个点。。。。。。。。。。。。。。。
说明还是要看数据集的。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章