两个神经网络什么时候算"同一个"?张量相似性给可解释性带来了一把精确尺子
场景:一个让人头疼的问题
你训练了两个神经网络,架构相同、数据相同、随机种子不同。它们在测试集上的准确率都是 92.3%。问题是:这两个网络学到的东西一样吗?
传统答案很简单:准确率一样,就算一样。但这个答案在可解释性研究里站不住脚。两个准确率相同的网络,内部神经元可能在做完全不同的事情——一个可能用"边缘检测器"识别猫,另一个可能用"纹理检测器"。准确率是结果,不是过程。
更让人头疼的是另一个问题:同一个网络,你用不同的随机种子做训练,得到两个权重快照。它们是"同一个网络"吗?如果它们在某些神经元上激活模式完全不同,但在整体行为上一致,算不算"同一个"?
这两个问题在 Mechanistic Interpretability(机制可解释性)领域已经吵了好几年。Thomas Dooms 在 2025 年 10 月发表的论文《When Are Two Networks the Same?》给出了一个数学上精确的答案:用张量网络收缩计算功能相似性。
为什么这个问题难:功能等价 vs 权重等价
先搞清楚"两个网络相同"到底是什么意思。
权重等价最严格:两个网络的每个权重都一一对应相等。这几乎不可能发生(除非你复制了同一个 checkpoint),而且过于严格——两个网络权重完全不同但功能相同时,权重等价会判它们"不同"。
功能等价更合理:两个网络对任意输入产生相同的输出。这是我们真正关心的。但功能等价也有个坑:神经元排列对称性。
考虑一个简单的全连接层。如果你把第 3 个神经元和第 7 个神经元交换位置(同时交换对应的权重列和偏置),网络的输入输出完全不变,但权重矩阵变了。这意味着功能等价的网络可能权重完全不同,因为存在这种排列对称性。
所以问题变成:给定两个功能等价的网络,怎么找到它们之间的神经元对应关系?以及,如果它们不是完全功能等价的(比如训练到不同准确率),怎么量化它们"有多像"?
张量网络:把神经网络变成可收缩的图
Dooms 的核心思路是把神经网络层表示为张量网络(Tensor Network),然后用张量收缩来计算功能相似性。
一层全连接网络可以写成一个张量:\(W \in \mathbb{R}^{d_{out} \times d_{in}}\),加上偏置 \(b \in \math代码 R}^{d_{out}}\)。给定输入 \(x\),输出是 \(y = Wx + b\)。
但 Dooms 关心的不是单次前向传播,而是二阶统计量:当输入 \(x\) 服从高斯分布 \(\mathcal{N}(\mu, \Sigma)\) 时,输出的协方差是什么?
这个选择看似奇怪,其实很自然。高斯分布是唯一被神经网络完全"消化"的分布——ReLU 对高斯输入仍然产生高斯输出(只是均值和方差变了),线性层对高斯输入产生高斯输出。所以如果你假设输入是高斯的,整个网络的前向传播就是一系列高斯变换的复合,每一步都可以精确追踪。
而协方差矩阵包含了"哪些输出维度一起变化"的信息——这正是功能相似性的核心。如果两个网络的输出协方差相同,它们对高斯输入的行为就完全一致。
Isserlis 定理:高斯世界的组合律
计算高斯变量经过非线性层后的协方差,用到的核心工具是 Isserlis 定理(也叫 Wick 定理)。
Isserlis 定理说:对于零均值高斯变量 \(X_1, \ldots, X_{2n}\),它们的 \(2n\) 阶矩可以分解为所有可能的两两配对的乘积之和:
这个定理的精妙之处在于:它把高阶统计量分解为二阶统计量的组合。在神经网络里,这意味着:如果你知道输入的二阶统计量(协方差),你就能精确计算输出经过任意多项式非线性后的二阶统计量。
对于 ReLU 这种分段线性函数,可以用泰勒展开近似为多项式,然后应用 Isserlis 定理。虽然 ReLU 不是真正的多项式(在 0 点不可导),但在高斯输入下,可以用"期望-方差传播"公式精确计算。
代码里,这个过程被实现为张量网络收缩:每一层的权重和偏置变成张量节点,Isserlis 定理定义了节点之间的连接方式,然后用 cotengra 库寻找最优收缩路径。整个计算是精确的,不是近似的——只要输入是高斯的。
三种相似性:从粗到细的对比
有了精确的协方差计算,Dooms 定义了三种相似性度量,从粗到细:
1. 全局相似性(Global Similarity)
最粗粒度。计算两个网络在相同高斯输入下的输出协方差矩阵,然后比较这两个矩阵。如果两个矩阵相同,两个网络在二阶统计量上功能等价。
这就像比较两个人的指纹——整体模式相同就够了,不关心每条纹路的对应关系。
2. 神经元对齐相似性(Neuron-Aligned Similarity)
中粒度。在比较之前,先找到一个最优的神经元排列,使得两个网络的神经元一一对应。这解决了我前面提到的"排列对称性"问题——两个网络可能功能等价,但神经元顺序不同,需要先对齐再比较。
寻找最优排列是一个指派问题,可以用匈牙利算法在 \(O(n^3)\) 时间内解决。
3. 单神经元相似性(Single-Neuron Similarity)
最细粒度。对齐之后,逐个神经元比较它们的统计特性。这可以揭示"虽然两个网络整体行为相同,但第 5 个神经元在做不同的事情"。
这三种度量构成了一个从宏观到微观的诊断工具:全局相似性告诉你"两个网络像不像",神经元对齐告诉你"它们能不能对上",单神经元相似性告诉你"哪里对不上"。
代码实现:工程上的精巧
开源代码(github.com/tdooms/tensor-similarity)实现了这套框架。几个工程细节值得注意:
张量网络收缩路径缓存。 Isserlis 定理产生的张量网络收缩是一个 NP-hard 问题(最优收缩路径搜索)。代码用 cotengra 库做路径搜索,并把结果缓存到 ~/.cache/tensor-mars/ctg-paths/paths.pkl。路径是拓扑相关的,与具体形状无关——同一个网络架构在不同 d_model 下可以复用同一条收缩路径。第一次运行慢(搜索路径),后续运行快(加载路径)。
CUDA Graph 捕获。 对于固定形状的收缩,代码用 CUDA Graph 捕获整个计算图,避免每次前向传播的开销。多个图共享一个内存池,峰值显存不是各图之和。
Isserlis 组合学的去重。 Wick 定理产生的配对数量是 \((2n-1)!!\)(双阶乘),增长非常快。代码用对称性去重——如果某些输入腿是等价的(比如多头注意力的多个头),可以合并等价的配对,大幅减少计算量。
偏置修正。 当输入有非零均值 \(\mu\) 时,需要修正 Isserlis 的计算。代码用了一个巧妙的技巧:把 \(\hat{\Sigma} = \Sigma + \mu\mu^T\) 作为"膨胀协方差",然后在 Isserlis 配对中减去全单例项的贡献。这个修正让框架可以处理带偏置的网络,而不仅仅是零均值情况。
这把尺子能量什么
论文展示了几个应用场景:
场景一:训练动态分析。
追踪训练过程中网络与"最终版本"的相似性变化。可以看到网络在训练早期快速收敛到大致结构,然后在细节上微调。单神经元相似性可以揭示"哪些神经元先稳定下来,哪些一直在变"。
场景二:架构对比。
比较不同架构(比如 ResNet vs Vision Transformer)在相同任务上的功能相似性。如果两个架构的全局相似性很高,说明它们学到了类似的东西;如果低,说明它们用了不同的策略达到相同准确率。
场景三:模型合并与蒸馏。
在模型合并(model merging)中,需要知道两个模型的神经元能否对齐。张量相似性提供了一种基于功能而非权重的对齐方法,可能比现有的基于权重幅度的方法更准确。
场景四:可解释性研究的基线。
机制可解释性经常需要比较"同一个网络在不同输入上的行为差异"或"不同网络在相同输入上的行为差异"。张量相似性提供了一个数学上精确的比较框架。
局限与开放问题
这个方法不是万能的。几个关键局限:
高斯假设。 整个框架假设输入是高斯分布。真实数据(图像、文本)显然不是高斯的。作者论证说高斯是一个合理的"平均场近似"——它捕捉了输入的二阶统计量,忽略了高阶结构。但这个假设的代价是:两个在高斯输入上功能等价的网络,可能在真实图像上行为不同。
计算成本。 虽然路径缓存和 CUDA Graph 优化了收缩,但对于大网络(比如 GPT-3 级别),张量网络收缩仍然可能爆炸。论文的实验主要在小到中型网络(MLP、小型 CNN、小型 Transformer)上。扩展到 LLM 规模是一个开放问题。
只看二阶统计量。 协方差只捕捉了二阶关系。两个协方差相同的网络可能在四阶矩上不同——也就是说,它们对高斯输入的行为相同,但对非高斯输入的行为可能不同。要完全刻画功能等价,需要所有阶次的矩,这在计算上不可行。
排列对称性的复杂性。 对于深层网络,最优排列不是逐层独立的——第 \(l\) 层的排列会影响第 \(l+1\) 层的最优排列。论文用贪心方法逐层对齐,但全局最优对齐是一个 NP-hard 问题。
更深层的意义:从"看权重"到"看功能"
张量相似性代表了一个更广泛的趋势:可解释性研究从"看权重"转向"看功能"。
早期的可解释性方法直接分析权重矩阵——哪些权重是正的、哪些是负的、哪些神经元激活频繁。但这些方法受困于排列对称性:两个功能等价的网络可能权重模式完全不同。
张量相似性绕过了这个问题:它不直接比较权重,而是比较"网络对高斯输入的响应统计"。这是功能层面的比较,不受排列对称性影响(或者在神经元对齐阶段显式处理对称性)。
这个思路和 Anthropic 的稀疏自编码器(SAE)工作有异曲同工之处:SAE 也是寻找"功能单元"而非"权重单元"。区别在于 SAE 是数据驱动的(需要真实激活),而张量相似性是模型驱动的(只需要网络结构和输入统计量)。
两种方法可能是互补的: SAE 擅长发现在真实数据上出现的功能模式,张量相似性擅长做精确的模型间比较。结合起来,可能既能发现"这个网络学到了什么",又能回答"两个网络学到的是不是同一个东西"。
结语:什么时候两个网络算"同一个"?
回到开头的问题。Dooms 的答案是:看你要回答什么问题。
如果你关心的是"两个网络对高斯输入的行为是否一致",用全局相似性。如果你关心的是"两个网络的神经元能不能一一对应",用神经元对齐相似性。如果你关心的是"对齐之后哪些神经元在做不同的事",用单神经元相似性。
"相同"不是一个二元判断,而是一个多尺度的谱系。 张量相似性给了我们一把可以在不同尺度上测量的尺子。这把尺子还不够完美——高斯假设限制了它的适用范围,计算成本限制了它的规模。但相比之前只有"准确率相同就算相同"的粗糙标准,这已经是一个质的飞跃。
机制可解释性的终极目标是理解神经网络"在做什么"。要回答这个问题,首先得能说清楚"两个网络做的是不是同一件事"。张量相似性朝这个方向迈出了坚实的一步。
---
论文: arXiv 2605.15183 代码: github.com/tdooms/tensor-similarity 核心方法: 张量网络收缩 + Isserlis 定理 + 高斯输入假设 三种度量: 全局相似性 / 神经元对齐相似性 / 单神经元相似性