机制(不)忠实性的一个玩具模型

来自 Transformer Circuits Thread · 期号 2025-08-07

摘要

Chris Olah 写了一篇非正式笔记,讨论机制忠实性(mechanistic faithfulness)问题。 用稀疏近似(比如 transcoder)替换模型组件时,替换后的组件可能用了和原模型不同的机制来实现同样的输出。每个计算机系学生都知道,同一个效果可以用不同算法达成——排序算法就是经典例子。凭什么相信 transcoder 学到了原模型的机制? 笔记用一个玩具模型具体展示了这种不忠实性,并简要探讨了 Jacobian 匹配能否缓解这个问题。最后讨论了机制忠实性与 SAE、transcoder 更广泛的担忧之间的关系。 这是非常初步的分享,作者希望读者把它当作实验室会议上同事分享的几分钟想法,而不是一篇成熟的论文。

深读

导读 Chris Olah 发布了一篇非正式笔记,直指机制可解释性领域一个根本性的担忧:当我们用稀疏近似(如 transcoder)替换模型组件时,替换后的组件可能使用了与原模型不同的机制来实现相同的输出。这篇笔记用一个玩具模型具体展示了这种“机制不忠实性”是如何产生的,并初步探讨了 Jacobian 匹配能否作为解决方案。读完能带走一个清晰的认知:机制忠实性是一个真实且严重的问题,但并非无解。 关键信息 - 玩具模型是绝对值函数 y = abs(x),它等价于两个 ReLU 神经元的组合:y_i = ReLU(x_i) + ReLU(-x_i)。 - 通过在训练数据中重复一个特殊数据点 p = [1, 1, 1, 0, 0, ...],transcoder 会学到“数据点特征”——一个专门在 p 上激活并输出 p 的电路,而底层模型 abs(x) 对 p 没有任何特殊处理。 - 数据点特征形成的两个必要条件是:训练集中存在重复数据点,且正则化目标鼓励激活稀疏。 - 在 5% 的重复数据比例下,transcoder 就出现了可观测的数据点特征,证明了机制不忠实性在极简设定下也会发生。 - 通过添加 Jacobian 匹配正则项(惩罚 transcoder 与真实模型的 Jacobian 之差),可以基本消除数据点特征,恢复机制忠实性。 逐节讲解 背景:从建模表征到建模计算 2024 年,研究者引入了 transcoder——一种读取某层输入并预测其输出的 SAE。这极大地简化了电路分析,因为特征之间可以视为线性交互。但作者认为,当时大家(包括他自己)低估了这种转变的激进程度:从“建模表征”切换到了“建模计算”。建模表征时,特征只是激活向量空间的一组基,只要特征单一语义且能解释激活,就不会被误导。但建模计算时,可能出现一种情况:特征单一语义、分布内 MSE 很低,但通过完全不同的计算机制实现,这攻击了机制可解释性最深层的希望:找到真正可信的解释。不过,这种不忠实性也受到一定限制,因为每次只替换模型的一步(一个 transcoder 非线性层),大大限制了机制偏离的空间。 绝对值 transcoder 问题与重复数据 为了具体展示机制不忠实性,作者构造了一个玩具模型:单层网络实现 y = abs(x),等价于两个 ReLU 神经元。然后训练一个 transcoder 来恢复这些特征。在默认设定下,transcoder 很容易发现正确的解。接着,作者在数据分布中加入一个重复的特殊数据点 p(前 3 维为 1,其余为 0),并以一定比例重复出现。结果,transcoder 学出了一个“数据点特征”电路:y += p * ReLU(λ p · x - b)。这个特征只在 p 上激活并输出 p,但底层模型 abs(x) 对 p 没有任何特殊记忆,因此这个特征是不忠实的。…

读原文

本站只做摘要与索引,全部内容版权归原作者所有。