Ch 03 · mHC
第一部分 · 架构 · 03

mHC — 残差通路的几何护栏

从"残差等于加法"到"残差等于带几何约束的矩阵混合"—— V4 把 60+ 层堆叠的稳定性问题搬到了流形上。

名词速通 · 一分钟看懂 mHC

mHC = Manifold-constrained Hyper-Connection(流形约束的超连接)

把单条残差流扩展为 $n_{hc}$ 条并行流,再约束流间混合矩阵,使这部分线性变换保持非扩张。注意:约束针对残差混合路径,并不等于完整网络永远不会放大输入。

残差连接(Residual Connection)
Transformer 中的 $x_{l+1}=x_l+F_l(x_l)$ 为梯度和信息提供直接路径。深度增加时,残差状态的尺度与不同分支的贡献可能更难控制,但不能笼统断言其范数会随层数单调上升。
Hyper-Connection(HC,Zhu 2025)
把单条残差扩成 $n_{hc}$ 条并行残差流(V4 取 $n_{hc}=4$)。每层多三个学习矩阵 $A_l, B_l, C_l$ 控制"读哪几条流 / 把输出写到哪几条流 / 流之间怎么混"。表达力上去了,但 $B_l$ 无约束 ⇒ 稳定性反而更差
Manifold(流形)
这里特指双随机矩阵的 Birkhoff 多面体 —— 所有"元素非负、行和为 1、列和为 1"的方阵构成的集合 $\mathcal M$。它有两个救命性质:里头任何矩阵的谱范数 $\le 1$,且乘法封闭(俩双随机矩阵相乘还是双随机)。
Constrained(受约束)
把每层学到的"未约束"矩阵 $\tilde B_l$ 用 Sinkhorn-Knopp 迭代 20 步可微地投影回 $\mathcal M$。"可微"是关键 —— 反向传播能直接穿过去,整个 mHC 端到端可学。
一句话定位:mHC 用双随机约束控制 4 条残差流之间的混合,使 $B_l$ 及其乘积保持非扩张;完整层仍包含非线性分支,需要与其它稳定性设计共同分析。
标准残差、Hyper-Connection、Manifold-Constrained HC 三种结构对比
图 3-1 · 标准残差 → HC → mHC 的三段式演进。 (a) 标准残差:单条 residual stream。 (b) Hyper-Connection:扩展为多条 residual streams,并引入 Pre / Res / Post mappings。 (c) mHC:对这些映射施加有界或流形约束,其中 $B_l$ 通过 Sinkhorn-Knopp 投影到双随机矩阵集合。 来源:Xie et al. 2026《Manifold-Constrained Hyper-Connection》(V4 论文 §2.2 引用)。

1. 深层残差为什么需要更细的尺度控制

标准残差连接 $x_{l+1}=x_l+F_l(x_l)$ 很有效,但在深层模型中仍要关注三个问题:

  • 尺度累积:不同层的分支输出可能同向叠加,也可能相互抵消;若缺少约束,残差状态尺度可能逐步漂移。
  • 层贡献失衡:当残差主干尺度远大于新分支输出时,后续层的相对贡献可能变小。
  • 异常值传播:恒等残差路径会保留已有异常值,但它不是异常值产生的唯一原因。
数值演练 示意上界:若极端假设每层分支都与当前状态同向,且范数为当前状态的 5%,则三角不等式给出 $\|x_L\|\le 1.05^L\|x_0\|$,$L=60$ 时上界约为 18 倍。 这只是最坏方向一致时的上界,不是标准残差实际必然出现的增长曲线。

V4 报告称普通 Hyper-Connection 在训练中表现出数值不稳定,因此采用 mHC;报告没有把这一现象具体归因于上述标准残差示意,也没有公布所谓“V4-Pro 早期实验”的细节。

2. Hyper-Connection(Zhu 2025):把残差从向量扩成矩阵

核心想法:与其只有一条残差流(宽度 $d$),不如同时维护 $n_{hc}$ 条并行残差流(每条宽度 $d$),把整个 state 写成矩阵 $X_l \in \mathbb{R}^{n_{hc} \times d}$。每层引入三个学习矩阵 $A_l, B_l, C_l$ 控制流之间的读写:

$$ X_{l+1} \;=\; B_l\, X_l \;+\; C_l\,F_l\!\big(A_l X_l\big) $$

每个矩阵的形状与角色:

符号形状角色V4 取值($n_{hc}=4, d=7168$)
$X_l$$n_{hc} \times d$第 $l$ 层的"残差流矩阵",$n_{hc}$ 条并行 highway$4 \times 7168$,每个 token 多带 4 份隐藏状态
$A_l$$1 \times n_{hc}$:把 $n_{hc}$ 条流加权平均成单个 $d$-向量喂给 block$1 \times 4$,4 个权重
$F_l$$d \to d$第 $l$ 层的实际计算(attention 或 FFN)原本 Transformer block 不变
$C_l$$n_{hc} \times 1$:把 block 输出分发回 $n_{hc}$ 条流$4 \times 1$,4 个权重
$B_l$$n_{hc} \times n_{hc}$混合:流之间的相互交换矩阵$4 \times 4 = 16$ 个权重
📖 公式白话翻译

$X_{l+1} = B_l X_l + C_l F_l(A_l X_l)$ 翻成大白话就是三步:

  1. :$A_l X_l$ —— 从 4 条 highway 上各取一点料,混成一份"输入"喂给本层 attention/FFN;
  2. :$F_l(\cdot)$ —— 本层正常计算,输出仍是 $d$ 维向量;
  3. 写 + 混合:$C_l \cdot \text{(输出)} + B_l X_l$ —— 一边把新结果按 $C_l$ 分发到 4 条流,一边按 $B_l$ 把旧的 4 条流重新"换道"打包。

整个过程比标准残差多了三个旋钮:选择从哪几条流读、写到哪几条流、流之间怎么换道。模型可以学会"这一层我把 outlier 关在第 3 条流里别让它污染主流"这种策略。

$n_{hc}$ 在 V4 中取 4。多条 residual stream 通过 $A_l$、$B_l$、$C_l$ 进行读入、混合与写回;报告没有把某一条流指定为长程或局部通道。

3. 但 HC 自己仍会"原地爆炸"

HC 的稳定性问题集中在 $B_l$。它是一个无约束的 $n_{hc} \times n_{hc}$ 矩阵,所有层堆起来后,从输入到输出的残差通路总变换是 $B_L \cdots B_2 B_1$。

定量看:

  • 如果每层平均 $\|B_l\|_2 = 1.05$(仅高出 5%),60 层乘下来 $\|\prod B_l\|_2 \le 1.05^{60} \approx 18\times$ —— 残差路径放大 18 倍;
  • 如果某些 $B_l$ 学出大的负值,相邻层流之间出现强相消,信息被洗掉;
  • 训练初期 $B_l$ 几乎随机,谱半径分布很宽 —— 训练前几千步极其不稳。

V4 报告明确指出普通 HC 存在数值不稳定,而 mHC 的目标是约束这一流间混合路径。

Demo · 深度堆叠下的谱范数对比
交互
0.01 0.1 1 10 100 1 20 40 60 80 深度 L(堆叠层数) ‖∏ B_l‖₂(log scale) L=60 无约束 HC:‖B‖^L mHC:恒 ≤ 1

拖滑条调整教学模型中“每层无约束 mixing 的谱范数”。红线按最坏方向始终对齐的假设画出 $\|B\|^L$,绿线表示每层 mixing 矩阵谱范数不超过 1 时的上界。1.05 连乘 60 层约为 18.7,只用于展示小幅逐层放大的累积效应;论文没有报告 V4-Pro 曾以这一数值失稳,也不能把它视为真实训练曲线。

4. mHC 的核心约束:把 $B_l$ 关进 Birkhoff 多面体

mHC(Manifold-constrained HC, Xie 2026)的关键一步:强制 $B_l$ 落在双随机矩阵的 Birkhoff 多面体上:

$$ B_l \in \mathcal{M}\;:=\;\Big\{\, M \in \mathbb{R}^{n_{hc}\times n_{hc}} \;\Big|\; M\mathbf{1} = \mathbf{1},\;\; \mathbf{1}^{T}M = \mathbf{1}^{T},\;\; M_{ij} \ge 0 \,\Big\} $$

这个约束的含义拆开来看:

  • $M_{ij} \ge 0$:每个流给下一层各流的"权重"都是非负的,禁止相消
  • $M\mathbf{1} = \mathbf{1}$:每行和为 1,每条流"分给"出去的总权重是 1,不放大
  • $\mathbf{1}^{T}M = \mathbf{1}^{T}$:每列和为 1,每条新流"接收"的总权重是 1,不浓缩
具体例子 一个合法的 $4\times 4$ 双随机矩阵: $$ M = \begin{pmatrix} 0.6 & 0.1 & 0.2 & 0.1 \\ 0.1 & 0.5 & 0.1 & 0.3 \\ 0.2 & 0.3 & 0.4 & 0.1 \\ 0.1 & 0.1 & 0.3 & 0.5 \end{pmatrix} $$ 每行加起来 $=1$,每列加起来 $=1$,全员 $\ge 0$。由于 $M\mathbf{1}=\mathbf{1}$,它有奇异值 1;双随机约束又给出 $\|M\|_2\le1$,所以这里实际有 $\|M\|_2=1$。

反例:把右下角改成 1.5,行和与列和都被破坏,矩阵不再双随机,谱范数也可能超过 1。
Birkhoff 约束能保证什么
  1. 谱范数恒 $\le 1$:由 Birkhoff–von Neumann 定理,双随机矩阵 = 置换矩阵的凸组合。所有置换矩阵谱范数为 1,凸组合的谱范数 $\le 1$。所以 $\|B_l\|_2 \le 1$,$\|\prod B_l\|_2 \le 1$ 无论堆多深
  2. 矩阵乘法下闭合:双随机矩阵的乘积仍为双随机矩阵,因此只考虑 $B_l$ 的累积残差混合时,其谱范数不会随深度指数放大。

几何直观:把 4 条 highway 看作 4 路信号,$B_l$ 负责重新分配各路权重。双随机约束保持行列归一,并让该线性映射的谱范数不超过 1。这个类比只描述 $B_l$;非线性分支 $C_lF_l(A_lX_l)$ 仍会向状态写入新信号。

$A_l, C_l$ 的处理

  • $A_l$ 用 $\mathrm{Sigmoid}$ 投到 $(0, 1)^{n_{hc}}$ —— 读流时禁止负权重,避免主信号被异号项相消;
  • $C_l$ 用 $2\cdot\mathrm{Sigmoid}$ 投到 $(0, 2)^{n_{hc}}$ —— 写入流时给稍宽的动态范围,让 block 贡献能"压过去"。

5. 动态 + 静态参数化:让约束矩阵随上下文走

如果 $B_l$ 是固定的可学习参数,每层只有一个 $B_l$,它不能根据当前 token 调整流间路由。mHC 把它分解成静态 + 动态两部分:

$$ \tilde{B}_l \;=\; \alpha^{\text{res}}_l \cdot \mathrm{Mat}\!\big(\hat{X}_l W^{\text{res}}_l\big) \;+\; S^{\text{res}}_l $$

每个符号:

  • $\hat{X}_l$:当前层 RMSNorm 后的输入;
  • $W^{\text{res}}_l$:把 $\hat{X}_l$ 投到 $n_{hc}^2$ 维的矩阵,$\mathrm{Mat}(\cdot)$ 把这个向量 reshape 成 $n_{hc} \times n_{hc}$;
  • $\alpha^{\text{res}}_l$:可学习的标量系数,控制"动态部分"的权重;
  • $S^{\text{res}}_l$:可学习的静态 $n_{hc} \times n_{hc}$ 矩阵,提供"默认混合模式"。
📖 公式白话翻译

这条公式可以理解成"默认换道地图 + 一份按 token 微调"

  • $S^{\text{res}}_l$ 是地图:每层有一份固定的"4 条 highway 默认怎么换道",训练初期主要靠它,模式简单稳定;
  • $\hat X_l W^{\text{res}}_l$ 是实时路况:根据当前 token 内容动态生成一个补丁矩阵;
  • $\alpha^{\text{res}}_l$ 是音量旋钮:训练初期取 ≈0.1,地图占主导;后期 $\alpha$ 学大,按 token 调整变得重要。

这种"先打地基再加上层建筑"的参数化,是双阶段训练稳定性的核心 —— 模型不会在第 0 步就被一个随机大动态项推飞。

$A_l, C_l$ 也用同样的动态+静态分解,公式形状相同,只是输出维度变成 $1\times n_{hc}$ 和 $n_{hc}\times 1$。

6. Sinkhorn-Knopp:把任意正矩阵打回多面体

$\tilde{B}_l$ 经过上述参数化后只是个普通矩阵,怎么可微地投到 Birkhoff 多面体上?mHC 的做法:

  1. 先取 $\exp(\tilde{B}_l)$,保证非负;
  2. 用 Sinkhorn-Knopp 迭代交替归一化行与列,20 步收敛到双随机矩阵。
$$ M^{(t)} \;=\; \mathcal{T}_r\!\Big(\mathcal{T}_c\!\big(M^{(t-1)}\big)\Big),\qquad t = 1, 2, \ldots, 20 $$

其中 $\mathcal{T}_r$ 是行归一化(每行除以行和),$\mathcal{T}_c$ 是列归一化(每列除以列和)。

📖 公式白话翻译

Sinkhorn-Knopp 干的事就两件,反复轮流:

  1. 把每一行除以它的行和 ⇒ 行和都变成 1(但列和被打乱);
  2. 把每一列除以它的列和 ⇒ 列和都变成 1(但行和又被打乱了一点点)。

每轮两边都被"打乱"得越来越轻,20 轮后行和列和都 ≈ 1,这就是双随机。重要的是这两步都是可微的元素级除法,autograd 能正常穿过去 —— 整个 mHC 仍然端到端可训。

Demo · Sinkhorn-Knopp 在 4×4 矩阵上的逐步收敛
交互
当前矩阵 M^(t) 行和 / 列和(应都趋近 1) 下一步:行归一化(每行 ÷ 行和)
步数:0/20 行残差 0.00 列残差 0.00

初始矩阵是随机正矩阵(模拟 $\exp(\tilde B_l)$ 的输出)。每按“下一步”交替做一次行、列归一化。该示例只展示 Sinkhorn–Knopp 的收敛过程;收敛速度取决于输入矩阵,不能用单次随机演示解释为什么报告配置取 20 次迭代。

为什么 Sinkhorn-Knopp 一定收敛?

经典定理(Sinkhorn 1964):任何全正矩阵在交替行列归一化下都收敛到双随机矩阵,且收敛是线性的(每次误差缩小 $\sim$ 常数比例)。 对 $4 \times 4$ 矩阵,10 步内残差就能降到 $10^{-4}$;20 步是充足的安全边界

为什么不用 Hungarian 算法(求最优排列)? 因为它给出离散的硬置换,不可微,反向传播无法穿过它。Sinkhorn 是这个分配问题的软可微版本 —— 这也是它在 OT、attention sinkformer、RL 等领域被广泛使用的原因。

7. 代价 / 还没解决的问题

  • Sinkhorn 计算开销:配置使用 20 次 $4\times4$ 矩阵的行列归一化;矩阵本身很小,但 mHC 还会增加 activation memory 与流水通信,不能只按这几次标量运算判断整体开销。
  • 表达力损失:双随机 $4\times 4$ 矩阵构成 9 维流形(无约束是 16 维)。理论上表达力下降,但实测 loss 曲线不显著变化,反而稳定性大幅改善。
  • 只约束了流间混合,没约束 $F_l$ 本身:mHC 的双随机约束作用于残差混合矩阵,不等于整个 block 的输出都被严格限幅。报告另行采用 SwiGLU Clamping 与 Anticipatory Routing 处理训练稳定性问题,但没有用消融证明它们与 mHC 构成一一对应的“兜底”关系。
  • $n_{hc}$ 的配置:V4 取 $n_{hc}=4$。更大的扩展因子会增加残差状态、映射和通信成本,但报告没有给出 4 与其他取值的消融或“平衡点”结论。

HC 将单条残差扩展为 $n_{hc}$ 条流,并以 $A_l$、$B_l$、$C_l$ 控制读、混合与写入。mHC 对这些映射施加约束,其中双随机 $B_l$ 的谱范数不超过 1,且其乘积仍保持非扩张。该保证不覆盖完整非线性层。V4 使用 20 步 Sinkhorn-Knopp,并通过融合与重计算将 mHC 的流水线 wall-time 开销控制在 6.7%。

flowchart LR X["X_l
shape n_hc × d"] --> Norm["RMSNorm + flatten"] Norm --> Aw["A_l 通道"] Norm --> Bw["B_l 通道"] Norm --> Cw["C_l 通道"] Aw -- "Sigmoid" --> A["A_l ∈ (0,1)"] Cw -- "2·Sigmoid" --> C["C_l ∈ (0,2)"] Bw -- "exp" --> Bp["正矩阵"] Bp -- "Sinkhorn-Knopp ×20" --> B["B_l ∈ Birkhoff"] A --> F["Layer F_l"] F --> C C --> Add(("+")) X --> B B --> Add Add --> Xn["X_(l+1)"] classDef key fill:#71a4e1,stroke:#71a4e1,color:#fff class B,A,C key

图 3-2 · mHC 的动态参数化流程。Sinkhorn-Knopp 是把残差矩阵"打回流形"的关键一步,保证累积变换的谱范数永远 $\le 1$。