当前位置:   article > 正文

NeurIPS2023 | Weight Decay 的前世今生和隐藏缺陷

weightdecay的前世今生

关注公众号,发现CV技术之美

本文为粉丝投稿,原文链接:https://zhuanlan.zhihu.com/p/672650395。

本 blog 是我组的 NeurIPS2023 论文On the Overlooked Pitfalls of Weight Decay and How to Mitigate Them: A Gradient-Norm Perspective延伸开来的关于经典算法Weight Decay的讨论。

这不是一篇 NeurIPS 论文的中文翻译,而更多的是科普 Blog 和这个工作背后的完成脉络。

Weight Decay 是一个整个 AI 圈人人都用,却几乎无人多想的算法。

即便在这个大模型时代,它还是那么的有用,却又那么的朴实无华。

即便是在机器学习理论圈,研究过Weight Decay机制的人也是少数派。

在下正是其中之一。

前世今生:三种Weight Decay

先说说 Weight Decay 的起源。

其实现在大家常说的Weight Decay至少有三种不同的形式。只是由于Weight Decay这个名词的滥用,大家都在不同的场合称Weight Decay。

第一种“Weight Decay”,也就是当前PyTorch/TensorFlow/Paddle等深度学习框架里optimizer的默认Weight Decay其实是L2 Regularization。在SGD里可以写成下面这种形式:

L2 Regularization实际上是在loss旁边额外加一项。所以它的特点是,正则作用会先进入每一步迭代的梯度里,再影响神经网络的参数。

第二种“Weight Decay”,也就是当前大模型训练常用优化器AdamW里的Decoupled Weight Decay。在SGD里可以写成下面这种形式:

()

这才是真正意义上的decay weights,每一步直接将权重以 因子衰减。

好吧,很容易看出来,对于SGD来说,上面两种形式是等价的。这也是为什么L2 Regularization会滥用Weight Decay这个名字。

但更复杂的优化器,比如SGD Momentum或Adam,会使用动量(Momentum)和自适应学习率(Adaptive Learning Rate)等方法。这些实际上大家最常用的优化器里,没有一个是能让上面两种形式正好等价的。

Adam (with L2 Regularization)和AdamW (with Decoupled Weight Decay)这两个大模型训练最常用的两个优化器实际上只有weight decay的形式不同。但是他们的性能差异大到以至于分成了两个名字不同的优化器。为什么会这样,我们下文再专门说。

第三种“Weight Decay”,也就是在训练神经网络时专门被提出来的原始Weight Decay,来自一篇1989年的NeurIPS论文。在SGD里可以写成下面这种形式:

()

这是在做学习率解耦的decay weights,每一步直接将权重以 因子衰减。

哪种 Weight Decay 更好

其实第三种Weight Decay是一种已经被淘汰的Weight Decay形式。虽然深度学习框架的开发者们可能没有专门研究过这个问题,但实际上和学习率解耦确实不如第二种形式。这是因为对于第三种Weight Decay来说,在学习衰减得比较小的训练末期,Weight Decay的强度总是太大了。我们很容易在实验里观察到第三种Weight Decay的缺陷。

第一种的L2 Regularization仍然在当前的深度学习框架流行;而第二种的Decoupled Weight Decay几乎只在AdamW等少量优化器里有官方实现。这个现状并不好。

对于一些优化器,比如SGD(Momentum)等,L2 Regularization和Decoupled Weight Decay的性能并不是很大。但每当L2 Regularization和Decoupled Weight Decay差别很大时,几乎总是Decoupled Weight Decay显著地比L2 Regularization好。这几乎发生在所有自适应优化器上。

所以更好的原则是把Decoupled Weight Decay作为Weight Decay的默认实现,把L2 Regularization作为备选。

为什么PyTorch/TensorFlow等框架还没这样做?这个可能是因为深度学习框架滥用名词Weight Decay指代L2 Regularization造成的一个历史遗留问题...

Weight Decay的隐藏缺陷

那么Weight Decay的故事就这么结束了吗?

不然,上面这些其实只是我组NeurIPS2023论文的一个motivation。

Weight Decay还有挺严重的隐藏缺陷未被发现,这才是这个工作的主要贡献。

如果一个这么常用的算法还有严重的缺陷,那这个缺陷确实藏得挺深。

这件事说起来也有点离谱。我第一次得到前文两个部分的motivation已经是3年前的事了。但深度学习理论的论文并不多了,所以一直也没有其他人把Weight Decay的这些特点说不清。对于第三种Weight Decay为什么比第二种Weight Decay差那么多,我一直没有得到一个比较完整的理论解释...

直到去年终于有空搞点基础研究(在大厂做研究员确实难得有机会做基础研究),心血来潮做了一个实验,把Gradient Norm随着训练过程的变化可视化出来。

ResNet18在CIFAR-10训练时的Gradient Norm曲线。Gradient Norm会随着Weight Decay增加而显著增加。

好的。如果你有优化理论和泛化理论的基础,那么应该一下就能看出来Weight Decay它确实有点大毛病了!

实验呈现出一个违背传统认知的现象——Gradient Norm会随着Weight Decay增加而显著增加。

这个现象至少从三个角度来说,都是和传统的理解是不相符的。

  1. 优化角度。Large Gradient Norms说明训练算法的收敛性变成很差,因为gradient norm的大小就是收敛性最常见的指标。

  2. 泛化角度。Large Gradient Norms说明训练得到的权重泛化性很差,因为gradient norm的大小也是泛化界常见的度量之一。

  3. 正则化角度。Large Gradient Norms说明训练得到的权重复杂性变高了。而传统上,大家认为Weight Decay是通过正则化作用降低神经网络复杂性,提高泛化能力。而事实竟然正好相反

从这三个角度来说,Weight Decay都大有问题。这也再次说明,在深度学习里,很多传统理解都是很粗浅的、适用范围狭窄的。关于这三点,我们的论文里提供了分析和参考文献。

其实到这部分分析出来,我们这个工作所发现的东西就很清晰了。

然后花了一天时间把Gradient Norm 的Upper Bound和Lower Bound都和Weight Decay强度正相关的理论证明了一下,算是把Weight Decay过去被忽略的关于gradient norm理论补全了。我们理论也发现这些缺陷在自适应优化器里尤为突出。这部分都是一个理论性论文里的程序性技术工作。

弥补 Weight Decay 的缺陷

我们的工作也设计了一个算法Scheduled Weight Decay来弥补Weight Decay的缺陷,也就是使用Weight Decay的时候,同时可以抑制Gradient Norm。这个方法思想上也很简单——Gradient Norm太大的时候就让Weight Decay强度小一点,Gradient Norm太小的时候就让Weight Decay强度大一点、发挥作用。

如下图所示,我们这个算法AdamS (Adam with Scheduled Weight Decay)的确很好地完成了抑制Gradient Norm的作用。

Scheduled Weight Decay比Constant Weight Decay显著降低训练末期的Gradient Norm。

同时,在下图我们还能看到Weight Decay增加时找到了更sharp的minima(top Hessian eigenvalues增大),这通常意味着泛化性能不好。而Scheduled Weight Decay找到了比Constant Weight Decay更flat的minima(top Hessian eigenvalues明显变小)。

0dccf3ea6d3ad3e526dcc93d4c1c3769.png

好的,那么这个工作的理论、算法、实验都具备了。

这是科普blog,不是关于论文的中文翻译。到这里,我觉得就可以恰到好处的结束了。更多技术细节看论文就好。

关于应用研究和理论研究的一些想法

一些审稿人会把我们这个算法当作最主要的贡献,这说明这部分审稿人始终是在从Engineering的角度来看待我们这个工作的。AI是一个机器,只要能work得更好,那就是研究的全部。

应用研究的主(quan)要(bu)哲学——那确实就是work得更好就行。带实习生做Neural Fields方向的应用研究最近半年也分别在ICCV2023和ICLR2024一投即中。只要性能好了,基本上就没有遇到过负分的审稿人。老实说,这种对性能的朴素追求,确实有一点朴实无华...

但包括我在内的部分理论研究者一般更愿意把AI当作一个客观的研究对象。这种研究视角可以叫做Science of AI。包括Sébastien Bubeck在内的部分理论研究者一般是把AI当作一个客观的研究对象,也就是我们主要是在做科学发现。偶尔,这些科学发现能促进更好的机器的诞生。微软AI理论研究的带头人Sébastien Bubeck在他的主页(Sébastien Bubeck)称在大模型的时代背景下更近一步把自己的研究定位为Physics of AGI。

研究神经网络和研究玻色爱因斯坦凝聚差别真的很大吗?并不,他们肯定要服从某些真理。渐进地逼近真理就是新的科学。

我们另外一篇NeurIPS2023其实也是科学发现型的论文,和一位物理系任教的朋友第一天讨论idea做实验,然后第二天就在神经网络里发现了我们预言的实验结果。这种并不会出现在论文里的故事,可以留待下回写blog时介绍。

我个人觉得这篇文章最大的贡献其实是定位Weight Decay的隐藏缺陷上,算法只是自然而然的副产品罢了。这个工作也是在理论发现完成后立刻被接收了,而不是在算法和实验的时候(很早就在Github上开源这个Weight Decay算法了)。而Scheduled Weight Decay也必然不是解决Weight Decay隐藏缺陷的最终答案。因为它解决的是Gradient Norm的问题,而不是全部的问题。Weight Decay仍然还有我们不理解的问题。


本Blog提到的三个角度的缺陷和技术细节都在我们的论文里有讨论和参考文献。欢迎阅读我们的论文和代码了解更多。

论文:On the overlooked pitfalls of weight decay and how to mitigate them: A gradient-norm perspective

算法:stable-weight-decay-regularization: [NeurIPS 2023]

5e1cdafc9c6dfe286ae907d73e943140.jpeg

END

加入「计算机视觉交流群

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/946041
推荐阅读
相关标签