weight-decay与L2正则化差异

最近在看其他量化训练的一些代码、论文等,不经意间注意到有人建议要关注weight decay值的设置,建议设置为1e-4, 不要设置为1e-5这么小,当然,这个值最好还是在当下的训练任务上调一调。

因为weight-decay 可以使参数尽可能地小,尽可能地紧凑,那这样权重的数值就不太可能出现若干个极端数值(偏离权重均值过大或过小)导致数值区间过大,这样求得的scale=(b-a)/255 会偏大,导致的结果就是大量数值较为接近的浮点数被量化到同一个数,严重损失了精度。

关于weight-decay 需要和L2正则做个区分:参考《DECOUPLED WEIGHT DECAY REGULARIZATION》,论文连接如下:

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

 

weight-decay 的原始定义如下:

概念的含义为:在与梯度做运算时,当前权重先减去一定比例的大小。

L2正则化的定义如下:

概念的含义为: 在损失函数增加一项权重的L2约束。

可以看出两个的定义完全不同,但是在SGD中,当满足特定条件时,这两者又是等价的,参考论文中的证明:

 

训练框架中往往没有实现真正的weight-decay,只是在SGD中碰巧等同了,因此才发展出论文中提到的AdamW, SGDW.

各个框架是否做了修正,还需要细看,在量化训练中,可以把两种优化方式都试试。

 

关于量化训练的一个小tip: weight-decay - magic的文章 - 知乎 https://zhuanlan.zhihu.com/p/157220390

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页