查看原文
其他

【强基固本】误区! Adam+L2并不能发挥效果!

“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。

来源:知乎—Rulcy

地址:https://zhuanlan.zhihu.com/p/429022216


01

前言——主要内容概括
在SGD优化的前提下,L2正则和Weight Decay是等价的。当我们考虑为损失函数引入L2正则项时,Pytorch是这样实现的:
torch.optim.SGD(...,weight_decay=0.001)
而当我们使用Adam作为优化器时,是否可以通过下面的方式实现L2正则呢?
torch.optim.Adam(...,weight_decay=0.001)
答案是否定的。引用Bert原文语句:
Just adding the square of the weights to the loss function is *not* the correct way of using L2 regularization/weight decay with Adam, since that will interact with the m and v parameters in strange ways.
在Adam优化器中,weight decay与L2正则并不等价,除此之外,Adam+L2的方案会导致不理想的优化过程。论文《Decoupled Weight Decay Regularization》指出了这一点,并提出了AdamW优化器,实现了Adam与weight dacay共同使用时的解耦。实现方式(Pytorch):
torch.optim.AdamW(...,weight_decay=0.001)


02

Adam+L2为什么会失效?
我们不妨简单模拟一下Adam+L2的优化过程。
首先在损失函数中引入正则项,系数为    ,求梯度结果为:

计算一阶动量    与二阶动量    :

更新参数,    为学习率,    是一个为了防止分母为0而引入的极小数:

以上是Adam+L2方案的简化优化过程。将   与    代入上述公式:

我们知道L2正则化的目的在于使参数    有更小的值。从上述公式分析:分子发挥正常效果,对于大的    加大惩罚;而分母使得在梯度快速变化的方向(    较大)更新的更少,从而削弱了L2正则的惩罚。正是由于    中分子与分母的相互作用,使得L2正则效果变得模糊。


03

只需要简单的改变!AdamW告诉你怎么做!
AdamW将L2正则与Adam进行简单的解耦,从而获得了效果的提升。既然    这一项会引入无效的优化计算,那么只需要删除这一项,在更新时额外加入Weight Decay即可。

关于实现方式的认知误区:AdamW=Adam+Weight Decay

很容易发现,在理论上可以认为AdamW=Adam+Weight Decay。那回到开头,我们是不是可以通过下面方式实现AdamW相同的效果:
torch.optim.Adam(...,weight_decay=0.001)
答案是否定的。这是由于在大多数库中实现Weight Decay的方式并不是正确的,在Adam中,Weight Decay通常以第一种的方式实现,而不是直接将权重进行衰减:
# I st: Adam weight decay implementation (L2 regularization)final_loss = loss + wd * all_weights.pow(2).sum() / 2
# II nd: equivalent to this in SGDw= w - lr *w.grad - lr *wd * w
而AdamW采用第二种方式实现。

参考资料:

https://arxiv.org/pdf/1711.05101.pdf

https://stackoverflow.com/questions/64621585/adamw-and-adam-with-weight-decay

https://www.fast.ai/2018/07/02/adam-weight-decay/

https://zhuanlan.zhihu.com/p/63982470

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

“强基固本”历史文章


更多强基固本专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存