滑动平均视角下的权重衰减和学习率
By 苏剑林 | 2025-12-05 | 2613位读者 | 引用权重衰减(Weight Decay)和学习率(Learning Rate)是LLM预训练的重要组成部分,它们的设置是否妥当,是模型最终成败的关键因素之一。自AdamW以来,单独分离出Weight Decay来取代传统的L2正则,基本上已经成为了共识,但在此基础上,如何合理地设置Weight Decay和Learning Rate,并没有显著的理论进展。
本文将抛砖引玉,分享笔者关于这个问题的一些新理解:把训练过程看作对训练数据的滑动平均记忆,探讨如何设置Weight Decay和Learning Rate才能让这个记忆更为科学。
滑动平均
Weight Decay的一般形式是
\begin{equation}\boldsymbol{\theta}_t = \boldsymbol{\theta}_{t-1} - \eta_t (\boldsymbol{u}_t + \lambda_t \boldsymbol{\theta}_{t-1})\end{equation}
重新思考学习率与Batch Size(四):EMA
By 苏剑林 | 2025-09-22 | 26143位读者 | 引用我们在《重新思考学习率与Batch Size(二):平均场》中提到,关注SignSGD的原因之一是我们通常将它作为Adam的理论近似,这是Adam做理论分析时常用的简化策略。除了分析学习率的场景外,在《配置不同的学习率,LoRA还能再涨一点?》、《初探MuP:超参数的跨模型尺度迁移规律》等地方我们也用了这个简化。
然而,SignSGD真是Adam的良好近似吗?一个明显差异是SignSGD的Update RMS总是1,而Adam并非如此。笔者发现,导致这一差异的核心原因是动量,它普遍存在于Adam、Lion、Muon等优化器中。所以,本文我们来考察动量——更广义地说是EMA——的影响。
问题分析
从Adam的视角看,SignSGD对应$\beta_1=\beta_2=0$这个特例,或者对应于Adam的第一步更新量(不管$\beta_1,\beta_2$如何)。因此,我们认为它跟Adam肯定有一些共性,能够捕捉到一些通用的规律。
重新思考学习率与Batch Size(三):Muon
By 苏剑林 | 2025-09-15 | 39571位读者 | 引用前两篇文章《重新思考学习率与Batch Size(一):现状》和《重新思考学习率与Batch Size(二):平均场》中,我们主要是提出了平均场方法,用以简化学习率与Batch Size的相关计算。当时我们分析的优化器是SGD、SignSGD和SoftSignSGD,并且主要目的是简化,本质上没有新的结论。
然而,在如今的优化器盛宴中,怎能少得了Muon的一席之地呢?所以,这篇文章我们就来尝试计算Muon的相关结论,看看它的学习率与Batch Size的关系是否会呈现出新的规律。
基本记号
众所周知,Muon的主要特点就是非Element-wise的更新规则,所以之前在《当Batch Size增大时,学习率该如何随之变化?》和《Adam的epsilon如何影响学习率的Scaling Law?》的Element-wise的计算方法将完全不可用。但幸运的是,上篇文章介绍的平均场依然好使,只需要稍微调整一下细节。
重新思考学习率与Batch Size(二):平均场
By 苏剑林 | 2025-09-10 | 23781位读者 | 引用上文《重新思考学习率与Batch Size(一):现状》末尾我们说到,对于SignSGD、SoftSignSGD等$\tilde{\boldsymbol{\varphi}}_B$非线性依赖于$\tilde{\boldsymbol{g}}_B$的情形,计算过程的心智负担相当沉重,并且面临难以推广的困境。为此,笔者投入了一些精力去尝试简化其中的推导,万幸有些许收获,其中的关键思路便是本文的主题——平均场。
平均场是物理中常见的近似计算方法,它没有固定的形式,但大体思想就是将求平均移到函数之内。事实上,在《为什么Adam的Update RMS是0.2?》中我们就已经窥见过平均场的魅力,而在这篇文章中,我们再来见识它在计算SignSGD/SoftSignSGD的学习率规律上的奇效。
方法大意
沿着上文的记号,对于SignSGD我们有$\newcommand{sign}{\mathop{\text{sign}}}\tilde{\boldsymbol{\varphi}}_B=\sign(\tilde{\boldsymbol{g}}_B)$,我们需要先计算$\mathbb{E}[\tilde{\boldsymbol{\varphi}}_B]$和$\mathbb{E}[\tilde{\boldsymbol{\varphi}}_B\tilde{\boldsymbol{\varphi}}_B^{\top}]$,继而可以算出
\begin{equation}\newcommand{tr}{\mathop{\text{tr}}}\eta^* \approx \frac{\mathbb{E}[\tilde{\boldsymbol{\varphi}}_B]^{\top}\boldsymbol{g}}{\tr(\mathbb{E}[\tilde{\boldsymbol{\varphi}}_B\tilde{\boldsymbol{\varphi}}_B^{\top}]\boldsymbol{H})}\label{eq:eta-opt}\end{equation}
重新思考学习率与Batch Size(一):现状
By 苏剑林 | 2025-09-01 | 27733位读者 | 引用在之前的文章《当Batch Size增大时,学习率该如何随之变化?》和《Adam的epsilon如何影响学习率的Scaling Law?》中,我们从理论上讨论了学习率随Batch Size的变化规律,其中比较经典的部分是由OpenAI提出的展开到二阶的分析。然而,当我们要处理非SGD优化器时,这套分析方法的计算过程往往会相当复杂,有种无从下手的感觉。
接下来的几篇文章,笔者将重新整理和思考上述文章中的相关细节,尝试简化其中的一些推导步骤,给出一条更通用、更轻盈的推导路径,并且探讨推广到Muon优化器的可能性。
方法大意
首先回顾一下之前的分析方法。在《当Batch Size增大时,学习率该如何随之变化?》中,我们介绍了多种分析学习率与Batch Size规律的思路,其中OpenAI在《An Empirical Model of Large-Batch Training》提出的二阶近似分析占了主要篇幅,本文也是沿用同样的思路。
初探MuP:超参数的跨模型尺度迁移规律
By 苏剑林 | 2025-03-13 | 39668位读者 | 引用众所周知,完整训练一次大型LLM的成本是昂贵的,这就决定了我们不可能直接在大型LLM上反复测试超参数。一个很自然的想法是希望可以在同结构的小模型上仔细搜索超参数,找到最优组合后直接迁移到大模型上。尽管这个想法很朴素,但要实现它并不平凡,它需要我们了解常见的超参数与模型尺度之间的缩放规律,而MuP正是这个想法的一个实践。
MuP,有时也写$\mu P$,全名是Maximal Update Parametrization,出自论文《Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer》,随着LLM训练的普及,它逐渐已经成为了科学炼丹的事实标配之一。
方法大意
在接入主题之前,必须先吐槽一下MuP原论文写得实在太过晦涩,并且结论的表达也不够清晰,平白增加了不少理解难度,所以接下来笔者尽量以一种(自认为)简明扼要的方式来复现MuP的结论。
为什么梯度裁剪的默认模长是1?
By 苏剑林 | 2025-01-02 | 83281位读者 | 引用我们知道,梯度裁剪(Gradient Clipping)是让模型训练更加平稳的常用技巧。常用的梯度裁剪是根据所有参数的梯度总模长来对梯度进行裁剪,其运算可以表示为
\begin{equation}\text{clip}(\boldsymbol{g},\tau)=\left\{\begin{aligned}&\boldsymbol{g}, &\Vert\boldsymbol{g}\Vert\leq \tau \\
&\frac{\tau}{\Vert\boldsymbol{g}\Vert}\boldsymbol{g},&\Vert\boldsymbol{g}\Vert > \tau
\end{aligned}\right.\end{equation}
这样一来,$\text{clip}(\boldsymbol{g},\tau)$保持跟$\boldsymbol{g}$相同的方向,但模长不超过$\tau$。注意这里的$\Vert\boldsymbol{g}\Vert$是整个模型所有的参数梯度放在一起视为单个向量所算的模长,也就是所谓的Global Gradient Norm。
不知道大家有没有留意到一个细节:不管是数百万参数还是数百亿参数的模型,$\tau$的取值在很多时候都是1。这意味着什么呢?是单纯地复用默认值,还是背后隐含着什么深刻的原理呢?
从Hessian近似看自适应学习率优化器
By 苏剑林 | 2024-11-29 | 32551位读者 | 引用这几天在重温去年的Meta的一篇论文《A Theory on Adam Instability in Large-Scale Machine Learning》,里边给出了看待Adam等自适应学习率优化器的新视角:它指出梯度平方的滑动平均某种程度上近似于在估计Hessian矩阵的平方,从而Adam、RMSprop等优化器实际上近似于二阶的Newton法。
这个角度颇为新颖,而且表面上跟以往的一些Hessian近似有明显的差异,因此值得我们去学习和思考一番。
牛顿下降
设损失函数为$\mathcal{L}(\boldsymbol{\theta})$,其中待优化参数为$\boldsymbol{\theta}$,我们的优化目标是
\begin{equation}\boldsymbol{\theta}^* = \mathop{\text{argmin}}_{\boldsymbol{\theta}} \mathcal{L}(\boldsymbol{\theta})\label{eq:loss}\end{equation}
假设$\boldsymbol{\theta}$的当前值是$\boldsymbol{\theta}_t$,Newton法通过将损失函数展开到二阶来寻求$\boldsymbol{\theta}_{t+1}$:
\begin{equation}\mathcal{L}(\boldsymbol{\theta})\approx \mathcal{L}(\boldsymbol{\theta}_t) + \boldsymbol{g}_t^{\top}(\boldsymbol{\theta} - \boldsymbol{\theta}_t) + \frac{1}{2}(\boldsymbol{\theta} - \boldsymbol{\theta}_t)^{\top}\boldsymbol{\mathcal{H}}_t(\boldsymbol{\theta} - \boldsymbol{\theta}_t)\end{equation}








最近评论