宇宙驿站感谢国家天文台LAMOST项目之“宇宙驿站”提供网络空间和数据库资源! 感谢国家天文台崔辰州博士等人的多方努力和技术支持!

版权科学空间致力于知识分享,所以欢迎您转载本站文章,但转载本站内容必须遵循 署名-非商业用途-保持一致 的创作共用协议。

参与科学空间

为了保证你的利益,推荐你注册为本站会员。同时欢迎通过邮件或留言进行交流、建议或反馈科学空间的问题。
会员注册 会员登录 查看全站文章归档页

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}

点击阅读全文...

2 Sep

为什么Adam的Update RMS是0.2?

众所周知,我们很早就开始尝试将Muon用于大规模LLM的训练。特别地,在《Muon续集:为什么我们选择尝试Muon?》中,我们提出了“Match Adam Update RMS”的技巧,以便快速从Adam迁移到Muon上,这个技巧同样用到了Kimi K2的训练中。该技巧是指将Muon的Update RMS统一成0.2,这使得我们复用Adam的学习率和权重衰减率。

这一技巧的背后,是我们观察到Adam的Update RMS约等于0.2,并且这一现象是稳定且可复现的。这便引发了一个有趣的问题:为什么Adam的Update RMS是0.2?我们可以从理论上解释它吗?

问题引入

首先描述一下现象:从实验中我们观察到,大致上在Warmup结束、模型进入正式训练后,Adam的Update RMS几乎都保持在0.2~0.3之间,并且不同尺寸的模型也呈现出相似的规律。这些模型的共同点是都用Adam训练,参数是$\beta_1=0.9,\beta_2=0.95$。由于共性很明显,所以这大概率不是巧合,因此笔者尝试分析背后的原理。

点击阅读全文...

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》提出的二阶近似分析占了主要篇幅,本文也是沿用同样的思路。

点击阅读全文...

25 Aug

Cool Papers更新:简单适配Zotero Connector

很早之前就有读者提出希望可以给Cool Papers增加导入Zotero的功能,但由于笔者没用Zotero,加上又比较懒,所以一直没提上日程。这个周末刚好有点时间,研究了一下,做了个简单的适配。

单篇导入

首先,我们需要安装Zotero(这是废话),然后需要给所用浏览器安装Zotero Connector插件。安装完成后,我们访问Cool Papers的单篇论文页面,如 https://papers.cool/arxiv/2104.09864https://papers.cool/venue/2024.naacl-long.431@ACL ,然后点击Zotero Connector的图标,就会自动把论文导入了,包括PDF文件。

单篇论文导入到Zotero

单篇论文导入到Zotero

点击阅读全文...

21 Aug

流形上的最速下降:4. Muon + 谱球面

看完了前三篇的读者,想必已经熟悉本系列的“套路”——先提出更新量的约束,寻找最速下降方向,接着再给参数也加上约束,寻找新的最速下降方向。在求解参数约束问题时,我们采用的是“一阶近似够用”原则来简化约束形式,这在几何上对应于“切空间”。然后,我们用待定系数法转化无约束形式来写出解析解,最后再数值求解待定系数。

这篇文章我们再来求解一个新例子——谱球面约束下的Muon——它是第一篇文章《流形上的最速下降:1. SGD + 超球面》的类比推广,当我们希望参数的谱范数始终不变时可以考虑它。当然,也可以单纯作为一道练习题来练手。

问题描述

《流形上的最速下降:2. Muon + 正交》《流形上的最速下降:3. Muon + Stiefel》中,我们已经详细讨论了Muon与正交约束的碰撞,所以相关背景我们就不展开了,直接给出问题形式:
\begin{equation}\newcommand{tr}{\mathop{\text{tr}}}\max_{\boldsymbol{\Phi}} \tr(\boldsymbol{G}^{\top}\boldsymbol{\Phi}) \qquad \text{s.t.}\qquad \Vert\boldsymbol{\Phi}\Vert_2 = 1,\,\, \Vert\boldsymbol{W}\Vert_2 = 1,\,\,\Vert\boldsymbol{W} - \eta \boldsymbol{\Phi}\Vert_2=1\end{equation}

点击阅读全文...

16 Aug

ReLU/GeLU/Swish的一个恒等式

今天水一点轻松的内容,它基于笔者这两天意识到的一个恒等式。这个恒等式实际上很简单,但初看之下会有点意料之外的感觉,所以来记录一下。

基本结果

我们知道$\newcommand{relu}{\mathop{\text{relu}}}\relu(x) = \max(x, 0)$,容易证明如下恒等式
\begin{equation}x = \relu(x) - \relu(-x)\end{equation}
如果$x$是一个向量,那么上式就更直观了,$\relu(x)$是提取出$x$的正分量,$- \relu(-x)$是提取出$x$的负分量,两者相加就得到原本的向量。

点击阅读全文...