Jerry's Blog

Back

讨论深层网络的梯度传播时,最容易拿来用的一句话是:

如果 Jacobian 的谱半径小于 1,梯度消失;大于 1,梯度爆炸。

这句话在一个很窄的场景里是对的:每一层都使用同一个固定线性变换。但 Transformer 里的反向传播不是这么干净。每一层的 Jacobian 都依赖参数、输入、残差结构和 LayerNorm 的当前位置;把它们全部压成一个固定矩阵,会丢掉很多机制。

更合适的路线是:

fixed matrix→random scalar product→random matrix product→random Jacobian product.\text{fixed matrix} \rightarrow \text{random scalar product} \rightarrow \text{random matrix product} \rightarrow \text{random Jacobian product}.

这样看,梯度稳定性不再只是一个谱半径问题,而是一个长期指数增长率问题。固定矩阵的指数率是 log⁡ρ(A)\log \rho(A);标量随机乘积的指数率是 Elog⁡a\mathbb{E}\log a;随机矩阵乘积的指数率则由最高 Lyapunov exponent 控制。

符号表#

符号含义
AA固定矩阵,A∈Cd×dA\in\mathbb{C}^{d\times d}
ρ(A)\rho(A)AA 的谱半径
σ(A)\sigma(A)AA 的特征值集合
aia_i第 ii 步的随机标量缩放
MiM_i第 ii 步的随机矩阵
Πn\Pi_n随机矩阵乘积 MnMn−1⋯M1M_nM_{n-1}\cdots M_1
λ1\lambda_1随机矩阵乘积的最高 Lyapunov exponent
JlJ_l第 ll 层前向映射的 Jacobian
glg_l第 ll 层的反向梯度
ηt\eta_t第 tt 步学习率

1. 固定矩阵反复作用#

设

A∈Cd×d,σ(A)={λ1,λ2,…,λd}.A\in\mathbb{C}^{d\times d}, \qquad \sigma(A)=\{\lambda_1,\lambda_2,\ldots,\lambda_d\}.

谱半径定义为:

ρ(A)=max⁡λi∈σ(A)∣λi∣.\rho(A) = \max_{\lambda_i\in\sigma(A)}|\lambda_i|.

Gelfand 公式,也叫谱半径公式,给出:

ρ(A)=lim⁡n→∞∥An∥1/n.\rho(A) = \lim_{n\to\infty}\|A^n\|^{1/n}.

取对数后就是:

log⁡ρ(A)=lim⁡n→∞1nlog⁡∥An∥.\log\rho(A) = \lim_{n\to\infty} \frac{1}{n}\log\|A^n\|.

含义很直接:一个固定线性变换反复作用时,长期指数增长率由最大模特征值控制。Tropp 的谱半径公式笔记也用初等矩阵方法证明了同一件事:对任意矩阵和任意矩阵范数,∥An∥1/n\|A^n\|^{1/n} 都收敛到 ρ(A)\rho(A)。

证明骨架可以从 Jordan 分解看。写成:

A=SJS−1,J=diag⁡(J1,J2,…,Jm).A=SJS^{-1}, \qquad J=\operatorname{diag}(J_1,J_2,\ldots,J_m).

于是

An=SJnS−1.A^n=SJ^nS^{-1}.

由范数次乘性:

∥An∥≤∥S∥ ∥Jn∥ ∥S−1∥.\|A^n\| \leq \|S\|\,\|J^n\|\,\|S^{-1}\|.

取 nn 次方根:

∥An∥1/n≤∥S∥1/n∥Jn∥1/n∥S−1∥1/n.\|A^n\|^{1/n} \leq \|S\|^{1/n} \|J^n\|^{1/n} \|S^{-1}\|^{1/n}.

当 n→∞n\to\infty 时,∥S∥1/n\|S\|^{1/n} 和 ∥S−1∥1/n\|S^{-1}\|^{1/n} 都趋于 1,所以长期增长率只需要看 ∥Jn∥1/n\|J^n\|^{1/n}。

对一个 Jordan block:

Jλ=λI+N,Nm=0.J_\lambda=\lambda I+N, \qquad N^m=0.

二项式展开给出:

Jλn=(λI+N)n=∑k=0m−1(nk)λn−kNk.J_\lambda^n = (\lambda I+N)^n = \sum_{k=0}^{m-1} \binom{n}{k}\lambda^{n-k}N^k.

这里的 nilpotent 部分只带来多项式因子。可以写成:

∥Jλn∥≤Cnm−1∣λ∣n.\|J_\lambda^n\| \leq C n^{m-1}|\lambda|^n.

取 nn 次方根后,多项式项会消失:

∥Jλn∥1/n≤C1/nn(m−1)/n∣λ∣→∣λ∣.\|J_\lambda^n\|^{1/n} \leq C^{1/n}n^{(m-1)/n}|\lambda| \to |\lambda|.

再结合特征方向上的下界,就得到:

lim⁡n→∞∥Jλn∥1/n=∣λ∣.\lim_{n\to\infty}\|J_\lambda^n\|^{1/n} = |\lambda|.

整个 JJ 是 block diagonal,所以最终取最大 block:

lim⁡n→∞∥Jn∥1/n=max⁡i∣λi∣=ρ(A).\lim_{n\to\infty}\|J^n\|^{1/n} = \max_i|\lambda_i| = \rho(A).

如果一个深层网络的反向传播真的可以写成固定 Jacobian 的幂:

g0=ALgL,g_0=A^Lg_L,

那么长期尺度就是:

∥g0∥≈exp⁡(Llog⁡ρ(A))∥gL∥.\|g_0\| \approx \exp(L\log\rho(A))\|g_L\|.

此时 ρ(A)<1\rho(A)<1 对应指数衰减,ρ(A)>1\rho(A)>1 对应指数增长,ρ(A)≈1\rho(A)\approx 1 对应临界传播。

2. 标量随机乘积#

固定矩阵是乘法系统里最整齐的一种情况。先把矩阵问题降到一维,设每一步只是随机标量缩放:

ai>0,Pn=∏i=1nai.a_i>0, \qquad P_n=\prod_{i=1}^n a_i.

乘法本身不容易求平均,但取对数后会变成加法:

log⁡Pn=log⁡(∏i=1nai)=∑i=1nlog⁡ai.\log P_n = \log\left(\prod_{i=1}^n a_i\right) = \sum_{i=1}^n \log a_i.

令

Xi=log⁡ai.X_i=\log a_i.

如果 XiX_i 独立同分布,并且 E∣Xi∣<∞\mathbb{E}|X_i|<\infty,强大数定律给出:

1nlog⁡Pn=1n∑i=1nXi→EX1=Elog⁡a1a.s.\frac{1}{n}\log P_n = \frac{1}{n}\sum_{i=1}^n X_i \to \mathbb{E}X_1 = \mathbb{E}\log a_1 \qquad \text{a.s.}

所以:

Pn≈exp⁡(n Elog⁡a1).P_n \approx \exp\left(n\,\mathbb{E}\log a_1\right).

这里最值得记住的是:

Elog⁡a1≠log⁡Ea1.\mathbb{E}\log a_1 \neq \log\mathbb{E}a_1.

乘法系统看的不是平均倍率,而是平均 log-growth。一个系统可以有很大的偶发放大,但只要典型路径上的 Elog⁡a1<0\mathbb{E}\log a_1<0,长期乘积仍然会衰减。

3. 随机矩阵连乘#

现在把标量 aia_i 换成矩阵:

Mi∈Rd×d.M_i\in\mathbb{R}^{d\times d}.

定义随机矩阵乘积:

Πn=MnMn−1⋯M1.\Pi_n = M_nM_{n-1}\cdots M_1.

标量情形里有精确等式:

log⁡(∏i=1nai)=∑i=1nlog⁡ai.\log\left(\prod_{i=1}^n a_i\right) = \sum_{i=1}^n\log a_i.

矩阵情形通常没有对应等式:

log⁡∥Mn⋯M1∥≠∑i=1nlog⁡∥Mi∥.\log\|M_n\cdots M_1\| \neq \sum_{i=1}^n\log\|M_i\|.

原因不是技术细节,而是机制本身。矩阵乘法不交换,而且每一步都会改变向量方向。某个矩阵的最大放大方向,经过前面矩阵作用后,不一定还对齐下一步矩阵的最大放大方向。

但矩阵范数满足次乘性:

∥AB∥≤∥A∥ ∥B∥.\|AB\|\leq \|A\|\,\|B\|.

把乘积分成两段:

Πn+m=(Mn+m⋯Mn+1)(Mn⋯M1).\Pi_{n+m} = (M_{n+m}\cdots M_{n+1})(M_n\cdots M_1).

因此:

∥Πn+m∥≤∥Mn+m⋯Mn+1∥ ∥Mn⋯M1∥.\|\Pi_{n+m}\| \leq \|M_{n+m}\cdots M_{n+1}\|\, \|M_n\cdots M_1\|.

取对数:

log⁡∥Πn+m∥≤log⁡∥Mn+m⋯Mn+1∥+log⁡∥Mn⋯M1∥.\log\|\Pi_{n+m}\| \leq \log\|M_{n+m}\cdots M_{n+1}\| + \log\|M_n\cdots M_1\|.

这就是次可加性。令

Yn=log⁡∥Πn∥.Y_n=\log\|\Pi_n\|.

在平移记号下,可以写成:

Yn+m≤Yn+Ym∘Tn.Y_{n+m} \leq Y_n+Y_m\circ T^n.

Furstenberg-Kesten 定理处理的就是这种随机矩阵乘积的长期增长率。一个常用表述是:在合适可积条件下,例如

Elog⁡+∥M1∥<∞,log⁡+x=max⁡(log⁡x,0),\mathbb{E}\log^+\|M_1\|<\infty, \qquad \log^+x=\max(\log x,0),

极限

lim⁡n→∞1nlog⁡∥MnMn−1⋯M1∥\lim_{n\to\infty} \frac{1}{n} \log\|M_nM_{n-1}\cdots M_1\|

几乎处处存在。对 i.i.d. 或更一般的遍历情形,这个极限几乎处处为常数,称为最高 Lyapunov exponent:

λ1=lim⁡n→∞1nlog⁡∥MnMn−1⋯M1∥.\lambda_1 = \lim_{n\to\infty} \frac{1}{n} \log\|M_nM_{n-1}\cdots M_1\|.

常见形式还给出:

λ1=inf⁡n≥11nElog⁡∥MnMn−1⋯M1∥.\lambda_1 = \inf_{n\geq 1} \frac{1}{n} \mathbb{E}\log\|M_nM_{n-1}\cdots M_1\|.

这就是随机矩阵连乘里的平均指数增长率:

∥Πn∥≈exp⁡(nλ1).\|\Pi_n\| \approx \exp(n\lambda_1).

和标量乘积相比,λ1\lambda_1 不是单步 log⁡∥Mi∥\log\|M_i\| 的平均值。它还包含方向如何在随机矩阵之间被转动、压缩、重新对齐。

4. 三个增长率放在一起#

三类对象可以放成一张表:

场景对象长期指数增长率
固定矩阵反复乘AnA^nlog⁡ρ(A)\log\rho(A)
i.i.d. 标量乘积∏i=1nai\prod_{i=1}^n a_iElog⁡a1\mathbb{E}\log a_1
i.i.d. 随机矩阵乘积Mn⋯M1M_n\cdots M_1λ1\lambda_1

对应的极限是:

lim⁡n→∞1nlog⁡∥An∥=log⁡ρ(A).\lim_{n\to\infty} \frac{1}{n}\log\|A^n\| = \log\rho(A). lim⁡n→∞1nlog⁡(∏i=1nai)=Elog⁡a1.\lim_{n\to\infty} \frac{1}{n} \log\left(\prod_{i=1}^n a_i\right) = \mathbb{E}\log a_1. lim⁡n→∞1nlog⁡∥MnMn−1⋯M1∥=λ1.\lim_{n\to\infty} \frac{1}{n} \log\|M_nM_{n-1}\cdots M_1\| = \lambda_1.

从简单到复杂,就是:

spectral radius→law of large numbers on logs→Furstenberg-Kesten / Lyapunov exponent.\text{spectral radius} \rightarrow \text{law of large numbers on logs} \rightarrow \text{Furstenberg-Kesten / Lyapunov exponent}.

5. 放回 Transformer 梯度传播#

Transformer 的反向传播可以局部写成 Jacobian 连乘。设第 ll 层前向映射的 Jacobian 为 JlJ_l,则反向传播中会出现 Jl⊤J_l^\top。从第 LL 层传到第 0 层:

g0=J1⊤J2⊤⋯JL⊤gL.g_0 = J_1^\top J_2^\top\cdots J_L^\top g_L.

令

Ml=Jl⊤.M_l=J_l^\top.

于是:

g0=M1M2⋯MLgL.g_0 = M_1M_2\cdots M_Lg_L.

梯度范数满足:

∥g0∥≤∥M1M2⋯ML∥ ∥gL∥.\|g_0\| \leq \|M_1M_2\cdots M_L\|\, \|g_L\|.

如果所有层共享同一个近似 Jacobian:

Ml=M,M_l=M,

那么:

g0=MLgL,g_0=M^Lg_L,

此时谱半径公式适用:

1Llog⁡∥ML∥→log⁡ρ(M).\frac{1}{L}\log\|M^L\| \to \log\rho(M).

如果每一层只是随机标量缩放:

Ml=alI,M_l=a_l I,

那么:

M1M2⋯ML=(∏l=1Lal)I,M_1M_2\cdots M_L = \left(\prod_{l=1}^{L}a_l\right)I,

于是:

1Llog⁡∥M1M2⋯ML∥=1L∑l=1Llog⁡∣al∣→Elog⁡∣a1∣.\frac{1}{L} \log\|M_1M_2\cdots M_L\| = \frac{1}{L}\sum_{l=1}^{L}\log|a_l| \to \mathbb{E}\log|a_1|.

如果每一层是真正的随机矩阵,就需要随机矩阵乘积的语言:

1Llog⁡∥J1⊤J2⊤⋯JL⊤∥→λ1.\frac{1}{L} \log\|J_1^\top J_2^\top\cdots J_L^\top\| \to \lambda_1.

因此,梯度稳定性可以压成一个指数率问题:

λ1<0⇒梯度指数衰减;\lambda_1<0 \Rightarrow \text{梯度指数衰减}; λ1>0⇒梯度指数放大;\lambda_1>0 \Rightarrow \text{梯度指数放大}; λ1≈0⇒接近临界传播.\lambda_1\approx 0 \Rightarrow \text{接近临界传播}.

这里的 λ1\lambda_1 更像分析语言,而不是说真实 Transformer 严格满足 i.i.d. 随机矩阵假设。真实层之间会相关,Jacobian 也随输入、训练步和参数更新而变化。但这个视角提醒我们:深层梯度传播不能只看某一层的谱范数,也不能把每层最大放大方向简单相乘。方向对齐和层间随机性同样重要。

6. Post-LN 与 Pre-LN 的位置#

Post-LN 的反向链路中,每层都会出现外层 LayerNorm 的 Jacobian:

Jl=JLN⁡(xl+Fl(xl))(I+∂Fl(xl)∂xl).J_l = J_{\operatorname{LN}}(x_l+F_l(x_l)) \left( I+\frac{\partial F_l(x_l)}{\partial x_l} \right).

反向传播为:

gl=(I+∂Fl(xl)∂xl)⊤JLN⁡(xl+Fl(xl))⊤gl+1.g_l = \left( I+\frac{\partial F_l(x_l)}{\partial x_l} \right)^\top J_{\operatorname{LN}}(x_l+F_l(x_l))^\top g_{l+1}.

多层展开就是:

g0=∏l=1L[(I+∂Fl(xl)∂xl)⊤JLN⁡(xl+Fl(xl))⊤]gL.g_0 = \prod_{l=1}^{L} \left[ \left( I+\frac{\partial F_l(x_l)}{\partial x_l} \right)^\top J_{\operatorname{LN}}(x_l+F_l(x_l))^\top \right] g_L.

这个连乘不是固定矩阵,也不是标量缩放,而是层相关、输入相关、初始化相关的随机 Jacobian 乘积。

从这个角度看,Post-LN 的问题可以这样描述:

靠近输出端的参数还没有经历很长的 Jacobian 连乘路径,因此初始化梯度容易偏大;靠近输入端的梯度则要穿过更多层随机 Jacobian 调制,更容易衰减。于是层间梯度尺度失衡。

这和前一篇 Post-LN Transformer 为什么需要 Warmup? 的结论是同一件事的另一种语言。那篇文章从 LayerNorm 的 Jacobian 尺度出发,看出 Pre-LN 的 final LayerNorm 会带来约 1/L1/\sqrt L 的自然缩放,而 Post-LN 输出端没有这个深度缓冲。

warmup 处理的是更新量,而不是直接改掉 Jacobian 连乘:

Δθl=−ηt∇θlL.\Delta\theta_l = -\eta_t\nabla_{\theta_l}\mathcal{L}.

当某些层在初始化时梯度过大,线性 warmup 使用:

ηt=tTwarmupηmax⁡.\eta_t = \frac{t}{T_{\mathrm{warmup}}}\eta_{\max}.

于是:

∥Δθl∥=tTwarmupηmax⁡∥∇θlL∥.\|\Delta\theta_l\| = \frac{t}{T_{\mathrm{warmup}}} \eta_{\max} \|\nabla_{\theta_l}\mathcal{L}\|.

warmup 不会把 λgrad\lambda_{\mathrm{grad}} 从正改成负,也不会让随机 Jacobian 乘积突然变成临界传播。它做的是更朴素的一步:在初始化最脆弱的阶段,把输出端的大梯度更新先压住,避免参数被早期几步改得太猛。

7. 总结#

谱半径公式告诉我们,固定矩阵反复作用的长期指数率是 log⁡ρ(A)\log\rho(A)。强大数定律告诉我们,标量随机乘积的长期指数率是 Elog⁡a\mathbb{E}\log a,不是 log⁡Ea\log\mathbb{E}a。Furstenberg-Kesten 定理进一步说明,随机矩阵乘积也有长期指数率,也就是最高 Lyapunov exponent。

放回 Transformer,这条线可以写成:

gradient propagation=random Jacobian product⇒exponential rate problem\boxed{ \text{gradient propagation} = \text{random Jacobian product} \quad\Rightarrow\quad \text{exponential rate problem} }

因此,分析深层梯度时,谱半径只是起点。真正接近 Transformer 的问题是:每层 Jacobian 如何缩放、如何转动方向、如何在随机连乘中形成长期指数率,以及这个指数率在不同层的截断路径上如何表现为梯度尺度失衡。

参考资料#

从谱半径到随机 Jacobian 连乘
https://jerry609.github.io/blog/spectral-radius-to-random-jacobian-products
Author Jerry
Published at May 21, 2026
Comment seems to stuck. Try to refresh?✨