<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>LLM Theory on Echo的技术博客</title><link>https://cybersecurityerial.github.io/echo_blog/categories/llm-theory/</link><description>Recent content in LLM Theory on Echo的技术博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 16 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://cybersecurityerial.github.io/echo_blog/categories/llm-theory/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM Theory 杂谈：我也不知道主题是什么，一些零碎的insight</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-notes-probability-and-weighting/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-notes-probability-and-weighting/</guid><description>&lt;h2 id="softmax"&gt;softmax&lt;/h2&gt;
&lt;p&gt;softmax的好处：平滑，稳定，和为1可以保证output的范数有界。如果和小于1就会让norm趋向0，因为自迭代系统会跌入局部吸引子（一个动力系统的insight）。&lt;/p&gt;
&lt;p&gt;softmax本身就是sigmod的高维版本。soft本身就是改良sig在传统多分类的问题，然后导出的向量级别sig，本质上就是sig pro，sigmod本身假设多标签分类结果非唯一。&lt;/p&gt;
&lt;p&gt;这就是标量化的坏处啊，看不到上下文，所以要向量化。向量化看不到上下文就要矩阵化，矩阵化看不到上下文就要张量化，然后并行计算就又要退回到向量化，那么就要用向量化逼近矩阵化。&lt;/p&gt;
&lt;p&gt;模型表达能力在不断提高上下文阶数；系统实现又必须把高阶上下文拆成可并行的低阶块。优秀算法的本质，就是在这两者之间做近似、重排、分块和融合。&lt;/p&gt;
&lt;p&gt;为什么一开始要叫softmax，它一开始被命名成这个是因为人们发现它可以让任何一个数稍微大一点就几乎接近1，所谓softmax，就是可微的max。&lt;/p&gt;
&lt;p&gt;它的数学性质是，把差值相等转化成比例相等。&lt;/p&gt;
&lt;p&gt;具体说说为什么soft是sig的扩展，因为sig是二分类，soft生成一个多分类的概率条，让他们自己进行博弈。&lt;/p&gt;</description></item><item><title>LLM Theory: MuP 01 - MuP 介绍</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-mup-01-introduction/</link><pubDate>Mon, 04 May 2026 14:10:04 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-mup-01-introduction/</guid><description>&lt;blockquote&gt;
&lt;p&gt;这篇文章是关于 LLM 预训练中 MuP / μP 的学习笔记，主要参考原论文
&lt;a href="https://arxiv.org/abs/2203.03466"&gt;Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer&lt;/a&gt;
和苏剑林的博客
&lt;a href="https://spaces.ac.cn/archives/10770"&gt;《初探MuP：超参数的跨模型尺度迁移规律》&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="问题背景"&gt;问题背景&lt;/h2&gt;
&lt;p&gt;LLM 预训练的成本很高，因此我们通常不希望直接在目标规模的大模型上反复搜索学习率、初始化、权重衰减等超参数。一个自然想法是：先在同架构的小模型上调参，再把超参数迁移到大模型上。&lt;/p&gt;
&lt;p&gt;MuP（Maximal Update Parametrization）的核心目标，就是让某些关键超参数在模型宽度变化时尽量保持稳定，从而支持从小模型到大模型的 zero-shot hyperparameter transfer。原论文把这个迁移范式称为 μTransfer。&lt;/p&gt;
&lt;p&gt;因为苏老师的博客写得太简洁+深入浅出了，本文也不会重复去讲他讲的很完善的部分，而是对他的内容进行补充和完善。个人在读原博客的时候感觉到一些地方苏老师略过了一些思考过程，导致初次理解时会让人觉得有些跳跃。&lt;/p&gt;
&lt;h2 id="正文"&gt;正文&lt;/h2&gt;
&lt;p&gt;MuP问题的出发点很简单，模型是一个黑盒，因此想训练出一个好模型，无法避免地要做大量的尝试（也就是俗称的调参炼丹）。但对于大模型而言，尝试的时间&amp;amp;金钱&amp;amp;人力成本很高。MuP就是对传统的炼丹过程做了一个剪枝，通过数学推导证明了小模型上已经被验证的某些规律可以直接扩展到大模型上。&lt;/p&gt;
&lt;p&gt;当然，上述的总结是比较泛化的，具体到实践中，肯定还会问几个问题：模型大小如何界定？哪些规律可以扩展？具体如何扩展？在展开具体方法之前笔者可以回答前两个问题，这里模型的大小用神经网络的宽度/隐藏层维度来量化。可扩展的规律主要指学习率的选择。因此MuP解决的具体问题是“在网络加宽的情况下，学习率应该如何跟随着隐藏层维度改变”。&lt;/p&gt;
&lt;h1 id="mup朴素版"&gt;MuP(朴素版)&lt;/h1&gt;
&lt;p&gt;这一节的MuP推导没有用到超过大一高数/线代的知识，也没有用到超过机器学习基本常识的知识。用一种非常简单的视角推导了MuP（虽然有些步骤不够严谨）&lt;/p&gt;
&lt;h2 id="模型宽度的影响无法尽善尽美的参数初始化"&gt;模型宽度的影响：无法尽善尽美的参数初始化&lt;/h2&gt;
&lt;p&gt;为什么要先讲参数初始化呢，因为参数初始化提供了一个最基础的视角，来定量描述“宽度影响稳定性”这件事。&lt;/p&gt;
&lt;p&gt;前传和反传的最优参数初始化无法兼容。
高维的任意两个向量夹角都是几乎正交的，可以算一下任意向量和单位向量的夹角，这里不赘述。
所以苏剑林老师基于这点给了一个推论：
从$N(0,1/n)$
中随机选取$n^2$
个数，组成一个$n×n$
的矩阵，这个矩阵近似为正交矩阵，且$n$
越大，近似程度越好。
其实道理是一样的，列向量两两正交，就是正交矩阵。n越大，相当于维度越高，正交概率越大。每个向量里面的元素都是采样出来的，所以每个元素的值大约是&lt;code&gt;sqrt(1/n)&lt;/code&gt;，所以整个向量的模长平方就是$n * (sqrt(1/n))^2 = 1$&lt;/p&gt;
&lt;p&gt;正交矩阵有一个好的性质，就是它作用于一个向量时，不改变向量模长。神经网络是对一个输入向量做很多次变换，
得到一个输出向量。我们希望输入向量在变换为输出向量的游走过程中，能一直在一个球面上，也就是模长不变。因为这样
从直觉上可以大幅压缩向量遍历的空间。可以想象一下，在一个完整的高维空间里面找最优解,和在空间内的一个球面
找最优解显然是后者更容易。如果向量变换前后都在同一个球面上或者近似在一个厚度比较薄的球壳上，本文将这种性质称为“稳定性”。&lt;/p&gt;
&lt;p&gt;所以最经典的初始化方式是推论里面的采样方式。上述结论也可以通过让变换前后的RMS相等来推导。如果引入了激活函数，初始化的值略有不同，但是推导逻辑类似。&lt;/p&gt;
&lt;p&gt;前传和反传区别不大，都是矩阵乘。&lt;/p&gt;
$$
\frac{\partial \mathcal{L}}{\partial \boldsymbol{X}}
\sim
\frac{\partial \mathcal{L}}{\partial \boldsymbol{Y}}
\boldsymbol{W}^{\top}
$$&lt;p&gt;主要的尺度变化也来自于$W$。输入和输出的维度不相等的时候，就找不到一个两全其美的采样方差。这是一个open的问题，苏老师在原文这里提出这个问题并不是为了直接解决这个问题，而是为了说明模型的宽度和中间层稳定性之间存在着直接的关系。&lt;/p&gt;
&lt;h2 id="loss的稳定性"&gt;Loss的稳定性&lt;/h2&gt;
&lt;p&gt;在苏老师这篇MuP的博客中透露着一个隐含的insight：模型加宽带来的难度就是稳定性下降。（也许这个insight来自于训模型时候的经验）这个稳定性可以是Loss的稳定性，也可以是梯度的稳定性，还可以是每一层输出结果的稳定性。这里考虑了损失增量的稳定性。&lt;/p&gt;
&lt;p&gt;文章中需要推导或注释的地方有两点，第一点是公式6如何近似，第二点是公式4如何得到公式7。&lt;/p&gt;
&lt;p&gt;公式6的近似：
&lt;/p&gt;
$$
\Delta \mathcal{L}=\mathcal{L}(\boldsymbol{W}+\Delta \boldsymbol{W})-\mathcal{L}(\boldsymbol{W})
$$&lt;p&gt;
一阶泰勒近似：
&lt;/p&gt;</description></item><item><title>LLM Theory: MuP 02 - 推广到更 general 的 init setup</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-mup-02-general-init-setup/</link><pubDate>Wed, 06 May 2026 13:09:10 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-mup-02-general-init-setup/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文从训练模型要考虑的第一性原理（稳定性和速度）出发，探讨了 LLM 预训练中的初始化设定问题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="参考文献"&gt;参考文献&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://spaces.ac.cn/archives/11340"&gt;MuP之上：1. 好模型的三个特征&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spaces.ac.cn/archives/11605"&gt;https://spaces.ac.cn/archives/11605&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spaces.ac.cn/archives/11647"&gt;https://spaces.ac.cn/archives/11647&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spaces.ac.cn/archives/11729"&gt;https://spaces.ac.cn/archives/11729&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>LLM Theory: SMD 01 - 权重更新的拆解</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-smd-01-weight-update-decomposition/</link><pubDate>Sun, 17 May 2026 10:15:54 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-smd-01-weight-update-decomposition/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文是 LLM Theory 下 SMD 专题的第一篇，是关于 Spherical Motion Dynamics（SMD）的学习笔记，主要参考 Wan et al. 的
&lt;a href="https://arxiv.org/abs/2006.08419"&gt;Spherical Motion Dynamics: Learning Dynamics of Neural Network with Normalization, Weight Decay, and SGD&lt;/a&gt;
以及 NeurIPS 2021 版本
&lt;a href="https://proceedings.neurips.cc/paper/2021/hash/326a8c055c0d04f5b06544665d8bb3ea-Abstract.html"&gt;Spherical Motion Dynamics: Learning Dynamics of Normalized Neural Network using SGD and Weight Decay&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="朴素的描述模型更新"&gt;朴素的描述模型更新&lt;/h2&gt;
&lt;p&gt;对于本科一二年级时候的笔者而言，如果想要描述模型的更新量，那么只会考虑这个非常直接的东西：$\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$。
这确实是很直白的，相当于计算了模型权重的欧氏距离。是什么让我们必须放弃这种非常直观的欧氏距离呢？源于常用的归一化。
加上归一化之后，对于模型的输出，$y = \operatorname{BN}(x, k\boldsymbol{W}) = \operatorname{BN}(x, \boldsymbol{W})$，看不出模型尺度对 $y$ 的影响。但是却会从 $\lVert k\boldsymbol{W}_{t+1} - k\boldsymbol{W}_{t} \rVert$ 这一度量手段上产生 $k$ 倍的差距。
这就发现一个很显然的问题了：我们是希望通过观测类似于 $\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$ 这样的东西来控制模型的训练，而不是直接看最后的 $y$。因为只通过看 $y$ 的变化，并基于这种变化的规律，去指导如何进行训练前的设置，这件事并不容易。我们是希望找到一个更可以写出明确表达式，更容易观测，意义更明确的指标去观测，而这个指标恰好还要有一些规律和 $y$ 的规律“趋同”，这样我们就得到了一个 $y$ 的近似物，而且这个近似物比 $y$ 更好分析。所以我们会很直接的想到 $\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$。但是现在，当我们给模型加上BN（为什么加BN不赘述了）以后发现的问题是 $\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$ 会随着模型尺度产生成倍的差距，而 $y$ 却不会被尺度影响。这说明 $\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$ 不是一个好的指标，因为它错误地预测了 $y$ 随着尺度变化的行为规律。
当然，原则上，我们其实可以发现，上面的地方有一个逻辑漏洞：为什么权重变化一定能预测 $y$ 的变化，这是错误的呀，权重变了 $y$ 不一定变。所以 $\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$ 这个东西失效是情理之中的，不能先入为主的认为 $\lVert \boldsymbol{W}_{t+1} - \boldsymbol{W}_{t} \rVert$ 的规律能和 $y$ 趋同，那么出现上面的问题十分合理。我们一个理想中的目标是通过权重变化去预测 $y$ 的变化，这样我们就可以通过设计一套权重变化的方案去精确得到想要的 $y$。理想是很远大的，现实会比较难做，但是可以在最朴素的方案上向前不断推进预测的细化程度。SMD就是这样一种东西。&lt;/p&gt;</description></item><item><title>LLM Theory: SMD 02 - Angular Update 才更接近真实改变量</title><link>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-smd-02-angular-update/</link><pubDate>Sun, 17 May 2026 17:56:11 +0800</pubDate><guid>https://cybersecurityerial.github.io/echo_blog/posts/llm-theory-smd-02-angular-update/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文是 LLM Theory 下 SMD 专题的第二篇。上一篇主要把 SGD、SGD + weight decay、Adam、AdamW 的径向/切向更新拆开了；这一篇继续沿着这个拆法，讨论几个笔者读 SMD 时觉得更关键的 insight。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="insight-1为什么只看-effective-learning-rate-不够"&gt;Insight 1：为什么只看 Effective Learning Rate 不够&lt;/h2&gt;
&lt;p&gt;在讨论 normalization 和 weight decay 的联合作用时，有一句非常关键的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对于 scale-invariant weight，任务梯度 $\partial L / \partial \boldsymbol{w}$ 总是与权重 $\boldsymbol{w}$ 垂直。因此，梯度分量总是倾向于增大权重范数，而 weight decay 提供的分量总是倾向于减小权重范数。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这句话其实就是 SMD 的基本物理图像：&lt;/p&gt;
&lt;div class="math-display"&gt;
\[
\text{任务梯度}
\Rightarrow
\text{切向更新，改变方向，同时二阶增大范数}
\]
&lt;/div&gt;
&lt;div class="math-display"&gt;
\[
\text{Weight Decay}
\Rightarrow
\text{径向更新，缩小范数}
\]
&lt;/div&gt;
&lt;p&gt;也就是说，在带 normalization 的网络中，SGD 梯度并不是在普通欧氏空间里随便走，而是在球面的切线方向上推动权重转动；weight decay 则像一个向心力，把权重往原点拉。两者共同作用，最终可能让 weight norm 进入一个稳定状态。&lt;/p&gt;
&lt;p&gt;但是这里有一个很容易被忽略的问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Weight decay 可以对冲掉梯度更新导致的 weight norm 增长，但这并不意味着 gradient norm 本身也被稳定住了。&lt;/p&gt;</description></item></channel></rss>