~/从电路复杂性理论的角度分析大模型的可并行性和表达能力--Olmo Hybrid 系列

Originally published on Zhihu 知乎 · 2026-06-12

虽然这两篇有先射箭再画靶之嫌,但还是给大伙提供了一个不同的视角来看 Linear RNN,值得一提

本文使用了 Gemini 和 Qwen 辅助进行写作

前置知识

类 RNN 模型训练

类 RNN 的序列建模模型在排除 normalization 和 query/key 激活的情况下可以写成下列递推式

$S_t = S_{t-1} + v_tk_t^\top \in \mathcal R^{d_v \times d_k}, \ \ \ \ o_t=S_tq_t \in \mathcal R^{d_v}$

展开,可以将其写成向量形式(左)和矩阵形式(右)

$o_t = \sum_{i=1}^t (v_ik_i^{\top})q_i=\sum_{i=1}^{t}v_i(k_i^{\top}q_i)\in \mathcal R^{d_v}, \ \ \ \ \ \ \ \ \ \ \text O = (\text Q \text K^\top \odot \text M) \text V \in \mathcal R^{L\times d_v}$

其中 M 为 causal mask

训练时,序列需要从 $t=T$ 到 $t=0$ 做反向传播,每回传一步就要乘一次 $\mathbf A^\top_t$,最终初始梯度会被乘上 $T$ 次,如果 $\mathbf A$ 的选择不当,会导致梯度爆炸或消失:

一个解决方法是选择正交矩阵作为状态转移矩阵。正交矩阵的性质可以避免梯度爆炸/消失:

线性代数:特征值,奇异值,谱范数,谱半径

首先回顾一下线代的几个概念:

  1. 特征值和特征向量:对于方阵$A$,若非零向量 $x$ 和标量 $\lambda$ 满足 $\lambda x = Ax$,那么 $x$ 是 $A$ 的特征向量,$\lambda$ 是对应的特征值。几何解释:用方阵 $A$ 去对整个空间做线性变换时,方向完全不变的是 $A$ 的特征向量,其被缩放的倍率是 $A$ 的特征值
  2. 奇异值和奇异向量:对于任意大小矩阵 $A$(不必是方阵),都可以分解为 $A=U\Sigma V$,其中 $U,V$ 是正交矩阵,$\Sigma$ 是对角线上全是非负实数的对角矩阵。$\Sigma$ 对角线上的元素 $\sigma_i$ 即奇异值。其几何意义可以理解为:矩阵将一个完美的单位球面扭曲成一个高维椭球时,那个椭球的形状。以二维平面上的情况为例,两个奇异值分别是最终得到的椭圆的长半轴和短半轴的长度。

谱范数的几何意义是矩阵对单位向量的最大拉伸倍数,即对单位向量乘上该矩阵一次,它最大会被拉伸到多长。不同方向的单位向量乘上矩阵会得到不同的结果,所有结果中向量长度的最大值是该矩阵的谱范数。数学上等于矩阵的最大奇异值 $\sigma_{max}$。正交矩阵的谱范数为 1。

区别于谱范数,另一个概念谱半径 $\rho (\mathbf A)$ 表示 $\mathbf A$ 所有特征值中绝对值最大的那个。其决定了把一个矩阵连乘无限次后向量会变成什么样。几何意义是:以原点为圆心,能够把所有特征向量包住的那个最小圆的半径。

假如有一个矩阵的谱范数大于1,但是谱半径小于1,将这个矩阵作用在一个圆上,我们可能看见前几步时圆被拉伸成更长的椭圆,但在无数步之后,其缩小直至看不见,消失在原点。

谱范数保持:指$\|\mathbf A\|_2=1$,意味着矩阵最多只能让向量保持原长,绝不会拉长向量。谱范数为 1 的矩阵不一定是正交矩阵,但足以保持梯度不爆炸了。 但是,若其奇异值包含小于 1 的值,这些 $\sigma_i<1$ 的方向会在反向传播时向着最大奇异值的方向坍缩,模型虽然没有崩溃,但实际上只剩下了学习一个维度的能力,无法捕捉复杂的长程依赖。 即然这样,保证所有奇异值都是 1 (即使用正交矩阵)是不是就行了? 理论上可行,但其能够在没有门控机制的情况下轻松把梯度回传几千个时间步,但:

现代 RNN 模型转向了线性 RNN:

现代类 RNN 模型中的取舍

现代类 RNN 模型比如 GDN,尝试用广义 HouseHolder 矩阵通过 $k$ 次镜面反射的乘积来逼近任意正交矩阵,其在 $k << n$ 时仍然具有强表达能力。

为了让模型忘记不重要的信息,保留重要的信息,线代的类 RNN 模型引入了数据依赖的门控机制,比如 Mamba2: $S_t = \alpha_t S_{t-1} + v_tk_t^{\top}$

其中 $\alpha_t \in (0, 1)$ 是数据依赖的标量衰减项,随 t 变化。 可以定义累积衰减 $\gamma_j = \prod_{i=1}^j \alpha_i$ ,那么带门控的类 RNN 模型递推式同样可以换为向量形式和矩阵并行形式

$o_t=\sum_{i=1}^t(\frac{\gamma_t}{\gamma_i}v_ik_i^{\top})q_t=\sum_{i=1}^tv_i(\frac{\gamma_t}{\gamma_i}k_i^{\top}q_t), \ \ \ \ \ \ \ \ \ \ \ \text O = ((\text Q\text K^{\top})\odot\Gamma)\text V$

此处 $\Gamma \in \mathcal R ^{L\times L}$ 为衰减感知的因果掩码,其中 $\Gamma_{ij}=\frac{\gamma i}{\gamma j} , \ \ \ \ \ \text {if} \ i\ge j \$ ,否则 $\Gamma_{ij}=0$

DeltaRule

普通的 DeltaNet:写入新值,减去与当前的键关联的旧值

$S_t = S_{t-1} - v_{t}^{old}k_t^{\top } + v_{t}^{new}k_t^{\top}$

其中 $v_t^{old}=S_{t-1}k_t, \ v_{t}^{new} = \beta_t v_t + (1-\beta_t)S_{t-1}k_t$(与当前键关联的旧值可以用旧状态和键算出来,而新值是当前输入值与旧值的线性组合),$\beta_t \in (0,1)$ 为写入强度。

带入$v_{t}^{old}$和$v_t^{new}$后上式可以化为

$S_t=S_{t-1}-(S_{t-1}k_t)k_t^T+(\beta_t v_t + (1-\beta_t)S_{t-1}k_t)k_t^T=S_{t-1}(I-\beta_tk_tk_t^T)+\beta_tv_tk_t^T$

为什么 $v_t^{old}=S_{t-1}k_t$ 可以表示和当前键关联的旧值?推导如下:

从上述角度理解,$S_{t-1}k_t$ 是检索 $S_{t-1}$ 中所有与 $k_t$相关的 $v$ 的加权和。

扩展 DeltaNet:解锁状态追踪能力

相关研究表明,DeltaNet 中设置 $\beta \in (0, 2)$(允许特征值为负)可以解锁 DetlaNet 的状态追踪能力。 [图片] 从几何意义上理解,列向量左乘一个矩阵,相当于在空间内进行旋转(线性变换),沿特征向量缩放的系数就是矩阵的特征值。允许特征值为负相当于允许特征向量的方向反转。

数据类型

“精度”在此处表示的是,表示一个数值所需要的比特数与输入规模 $n$ 的渐进关系。这里用上两种精度

  1. 对数精度:一个数值具有对数精度,当且仅当表示该数值需要 $O(\log n)$ 个比特。举例:计算机中存储一个整型数值 n 需要 $\log n$ 位。
  2. 多项式精度:一个数值具有多项式精度,当且仅当表示该数值需要 $O(n^c)$ 个比特,其中 $c>0$ 为常数。通常算阶乘或者组合数之类的非多项式的值时才会用上。

电路复杂度理论


论文中提出:一种更为宽松的高效并行化概念允许用算术电路(包括0,1,和+,-,*。这样的电路产生一个函数 $f: \Sigma^n \rightarrow \mathcal R$ ),基于此可以定义 $PNC^1$ 类和 $ENC^1$ 类:

$PNC^1$ 通常被认为“略高于” $NC^1$ ,因为目前已知的最佳的用 $NC$ 电路仿真 $PNC^1$ 的方法递归地使用了中国剩余定理(https://link.springer.com/chapter/10.1007/BFb0028801),深度为 $O(\log n \log^* n)$ 。

RNN 的分类

可以分为非线性 RNN,线性 RNN(LRNN) 和多层 RNN。

非线性 RNN

非线性 RNN 定义为输入和输出都是 d 维向量,RNN 通过 $\mathbf h_t = f(\mathbf h_{t-1}, \mathbf x_t)$ 计算一系列 d 维中间状态, $f$ 为非线性函数。比如 Relu RNN 是 $f(\mathbf h_{t-1}, \mathbf x_t)=\max \{\mathbf {Ah_{t-1}+Bx_t},0\}$ 。

线性 RNN(LRNN)

线性 RNN 即把 $f$ 换成线性函数。 $\mathbf S_t = A(\mathbf x_t) \mathbf S_{t-1}+b(\mathbf x_t)$ 。为了简洁起见,下面用 $\mathbf {A_t,b_t}$ 等表示 $A_t(\mathbf x_t)$ 等

多层 RNN

根据当前的惯例,我们可以设想这些 RNN 被用作类似 transformer 架构。每个 RNN 层的输入是给定 n 个 d 维向量 $\mathbf {x_1,\cdots,x_n}$ ,首先应用 layernorm,并行计算每个头的输出 $\mathbf {y_1, \cdots, y_h}$ ,然后聚合输出。随后经过前馈网络得到该层最终输出。

各类神经网络的并行性

这里定义“可并行化”为可以用对数深度的电路复杂度类表示。

TLDR:Transformer 缺乏稳健表示状态跟踪任务的能力,而这类任务需要序列计算。线性 RNN 可以很好地处理序列计算任务,但其状态空间大小固定,在复制和召回任务上表现不佳。

论文证明了所有 LRNN (无论参数化细节如何)均可在 $PNC^1$ 类中被模拟。对于对数精度的 LRNN,其有一个更紧致的上界: $AC^0[ENC^1]$ (可由布尔 $AC^0$ 电路+把 $ENC^1$ 作为黑箱使用解决的语言)。

证明太多太长了,可以看原文的附录部分

从理论到实践再回到理论:Olmo Hybrid

作者团队在 6T tokens 上训练了 7B 参数的 3:1 混合模型 Olmo Hybrid。GDN 层与 Attention 层按 3:1 交错排列。发现如下:

  1. token 效率提升显著,仅需一半的 token 就能在 MMLU 上与使用了滑窗的 Olmo 3 7B 模型相当。
  2. 由于 Olmo Hybrid 除混合架构外与 Olmo 3 高度可比,作者认为这些结果为混合模型相较于 Transformer 模型优秀提供了强有力的证据。
  3. 除了大规模实验之外,作者还提出了理论结果以及完全受控的缩放研究,以解释这些性能提升。存在一些与代码评估相关的形式化问题,单独的 Transformer 或 GDN 都无法表达,但混合模型在理论上能够表示,并且在实践中可以学习到。
  4. 作者团队推测,DroPE 非常适合混合架构,因为 GDN 层提供了隐式位置编码。

Olmo Hybrid 架构和训练细节

75% 的层使用扩展的 GDN( $\beta_t$ 被替换为 $2\beta_t$ )。

Pretrain

采用和 Olmo 3 相同的训练配置和超参数。由于 GDN 在相同超参数下拥有比 Transformer 更多的参数,Olmo Hybrid 的头数相比 Olmo 3 7B 从 32 降到了 30,并且 query 和 key 头的维度被设置为 96,value 头维度设置为 192。

Midtrain

尝试了 YaRN 和完全移除 RoPE(DroPE)。

性能

预训练之后代码和通用回答方面性能相比 Olmo 3 7B 下降约 2%,但其它领域均领先。中段训练之后全面领先,这些优势在长上下文扩展后依旧保留。(虽然这里最长就 64k……)

不同架构和网络的消融实验

作者团队对 LRNN 架构该选哪种(Mamba2 OR GDN),应该如何混合(仅考虑层间混合的情况),应该按什么比例混合均做了消融实验:

可以看到他们并没有把 Kimi DeltaAttention 加入对比。结论是交错排列 Linear 和 Full 层比把 Linear 全排在一起强,1B 规模内 3:1 是较优的比例,更小的规模上 7:1 可能更好,但扩大规模后比不上 3:1。至于 1:1 混合,其收益配不上开销。

// EOF