16 Jan

让炼丹更科学一些(六):自上而下的精妙构造

《让炼丹更科学一些(五):基于梯度精调学习率》中,我们进入了基于梯度来调度学习率的新篇章。但上文末也提到,在推导动态梯度下终点损失的最优学习率时,我们遇到了证明上的困难,具体来说,我们基于变分法“猜”出来的最优学习率序列,代入结论中进行放缩验证会十分困难,因此别说最优解了,我们甚至无法判断这个序列是否是可行解。

而在本文中,我们将通过一个精妙的构造得到更精准的结论,从而解决这个问题。就证明过程来看,这一次的结论可能已经达到了无法改进的精度。这个突破依然出自论文《Optimal Linear Decay Learning Rate Schedules and Further Refinements》

问题回顾

先重温一下之前的结论。上文末,我们得到了《让炼丹更科学一些(四):新恒等式,新学习率》结论的一般版本:
\begin{equation}\mathbb{E}[L(\boldsymbol{\theta}_T) - L(\boldsymbol{\theta}^*)] \leq \frac{R^2}{2\eta_{1:T}} + \frac{1}{2}\sum_{t=1}^T\frac{\eta_t^2 G_t^2}{\eta_{\min(t+1, T):T}}\label{leq:last-2}\end{equation}

点击阅读全文...

9 Jan

让炼丹更科学一些(五):基于梯度精调学习率

前面四篇文章中,我们探讨了SGD从有界域到无界域、从平均损失到终点损失的一系列收敛结论。或许有读者觉得,说来说去都还是SGD,这恐怕是“上古时代”的结果了吧?还真不是!像第四篇《让炼丹更科学一些(四):新恒等式,新学习率》所依赖的核心恒等式,出自不远的2023年;第三篇《让炼丹更科学一些(三):SGD的终点损失收敛》的结论稍早一点,亦不过出自2020年。

同样是在第四篇中,我们推出了实践常见的学习率策略“线性衰减”,它表明这系列理论推导并非“纸上谈兵”,而是能对实践产生有效的指导。接下来,我们将讨论基于梯度的更精细的学习率策略,它有助于我们了解学习率调度的原理,同时也是各种自适应学习率优化器的基础。

最初起点

如果仔细重温前面的证明过程,我们会发现,这一系列结论的起点,是一个毫不起眼的恒等式
\begin{equation}\begin{aligned}
\Vert\boldsymbol{\theta}_{t+1} - \boldsymbol{\varphi}\Vert^2=&\, \Vert\boldsymbol{\theta}_t - \eta_t \boldsymbol{g}(\boldsymbol{x}_t,\boldsymbol{\theta}_t)- \boldsymbol{\varphi}\Vert^2 \\
=&\, \Vert\boldsymbol{\theta}_t - \boldsymbol{\varphi}\Vert^2 - 2\eta_t (\boldsymbol{\theta}_t- \boldsymbol{\varphi})\cdot\boldsymbol{g}(\boldsymbol{x}_t,\boldsymbol{\theta}_t) + \eta_t^2\Vert\boldsymbol{g}(\boldsymbol{x}_t,\boldsymbol{\theta}_t)\Vert^2
\end{aligned}\label{eq:begin}\end{equation}

点击阅读全文...

26 Dec

让炼丹更科学一些(四):新恒等式,新学习率

上篇文章《让炼丹更科学一些(三):SGD的终点损失收敛》中我们成功将收敛结论从平均损失转化成终点损失,得到了$\mathcal{O}(\sqrt{\ln T/T})$的收敛速度。然而,仔细思考之下我们会发现这个结果其实不大符合直觉:按照经验,终点损失应该更接近最优值才对,平均损失的收敛速度都能做到$\mathcal{O}(1/\sqrt{T})$,怎么终点收敛速度反而更慢呢?

这个问题的最新进展是《Optimal Linear Decay Learning Rate Schedules and Further Refinements》,论文先推广了之前证明的关键恒等式,然后指出学习率调度对终点收敛的重要性,由此将终点损失的收敛加速至$\mathcal{O}(1/\sqrt{T})$。

新恒等式

原论文的结果很丰富,我们将分多篇文章介绍,这篇文章主要顺着上一篇的思路先做个初步介绍。为了将平均损失的收敛结论转换成终点损失,上一篇文章引入的关键恒等式是
\begin{equation}q_T = \frac{1}{T}\sum_{t=1}^T q_t + \sum_{k=1}^{T-1} \frac{1}{k(k+1)}\sum_{t=T-k}^T (q_t - q_{T-k})\end{equation}

点击阅读全文...

5 Dec

滑动平均视角下的权重衰减和学习率

权重衰减(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}

点击阅读全文...

22 Sep

重新思考学习率与Batch Size(四):EMA

我们在《重新思考学习率与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肯定有一些共性,能够捕捉到一些通用的规律。

点击阅读全文...

15 Sep

重新思考学习率与Batch Size(三):Muon

前两篇文章《重新思考学习率与Batch Size(一):现状》《重新思考学习率与Batch Size(二):平均场》中,我们主要是提出了平均场方法,用以简化学习率与Batch Size的相关计算。当时我们分析的优化器是SGD、SignSGD和SoftSignSGD,并且主要目的是简化,本质上没有新的结论。

然而,在如今的优化器盛宴中,怎能少得了Muon的一席之地呢?所以,这篇文章我们就来尝试计算Muon的相关结论,看看它的学习率与Batch Size的关系是否会呈现出新的规律。

基本记号

众所周知,Muon的主要特点就是非Element-wise的更新规则,所以之前在《当Batch Size增大时,学习率该如何随之变化?》《Adam的epsilon如何影响学习率的Scaling Law?》的Element-wise的计算方法将完全不可用。但幸运的是,上篇文章介绍的平均场依然好使,只需要稍微调整一下细节。

点击阅读全文...

10 Sep

重新思考学习率与Batch Size(二):平均场

上文《重新思考学习率与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}

点击阅读全文...

1 Sep

重新思考学习率与Batch Size(一):现状

在之前的文章《当Batch Size增大时,学习率该如何随之变化?》《Adam的epsilon如何影响学习率的Scaling Law?》中,我们从理论上讨论了学习率随Batch Size的变化规律,其中比较经典的部分是由OpenAI提出的展开到二阶的分析。然而,当我们要处理非SGD优化器时,这套分析方法的计算过程往往会相当复杂,有种无从下手的感觉。

接下来的几篇文章,笔者将重新整理和思考上述文章中的相关细节,尝试简化其中的一些推导步骤,给出一条更通用、更轻盈的推导路径,并且探讨推广到Muon优化器的可能性。

方法大意

首先回顾一下之前的分析方法。在《当Batch Size增大时,学习率该如何随之变化?》中,我们介绍了多种分析学习率与Batch Size规律的思路,其中OpenAI在《An Empirical Model of Large-Batch Training》提出的二阶近似分析占了主要篇幅,本文也是沿用同样的思路。

点击阅读全文...