首先,我们总结几个核心判断。该谜题使用一个五层MLP,置于冻结的MiniLM嵌入之上,用于预测八个二进制特征。其中七个特征在h2层可通过线性方式恢复,仅有一个例外。任务就是找出这个非线性特征,描述其几何结构,并构造一个更奇特的表示。本文重点聚焦于两个最有趣的环节:利用分布式对齐搜索(DAS)建立因果性证明,以及设计一种隐藏的、对切片攻击具有鲁棒性的表示几何结构——我们称之为“速度环”。
核心发现
- 发现隐藏特征
country——它在h2层完全退化为随机水平,因为它被嵌入了一个纯粹的XOR运算中,与food特征紧密绑定。 - 通过DAS完成因果验证,从
h2层分离出一个一维非线性子空间。对该单一坐标进行激活值修补(activation patching),可直接翻转下游模型的输出,证明该几何结构确实具有因果作用。 - 构造了一种新的、连续的、零均值的环形几何结构,完全隐藏在层间速度更新(inter-layer velocity update)内部,实现了绝对的线性不可见性,并且能够抵御单特征切片。更奇特的表示代码已存放在Git仓库中。
任务1与2:哪个是非线性特征,为什么?
线性探针在h2层完全失效——这并非数据丢失,而是几何结构在作祟:country取正值的样本,在单一轴上直接“嵌入”在负值样本的内部。具体方法是,对每层与每个特征的组合,用训练激活值拟合一个线性逻辑回归探针,然后在测试激活值上进行评分。一旦探针准确率下降,就表明该特征是以非线性方式编码的。
从结果可以看出,Country在h2层(蓝色区域)的准确率直接降至0.43,直到h3层才恢复。其他所有特征在h2层均稳定保持在0.97以上。这清晰地表明Country是一个非线性表示。如果改用非线性MLP探针,在h2层可将其准确率恢复至0.96。也就是说,信息确实仍然存在于h2层,只是无法通过线性方式读取而已。
下方的直方图和PCA图更加直观:在h2层,没有任何线性探针能够准确读取Country,因为正负样本的分布完全共享同一个均值。正样本就那样夹在负样本中间,挤在一条轴上。
图2:各特征按二值标签分组的直方图。
图3:各特征在第二层激活值的PCA分布。
最后补充一个额外验证:尝试通过投影-旋转操作来恢复线性。在h2层上,出现了经典的嵌套结构——country=1整个被包裹在country=0内部,而到了h1和h3层则恢复正常。
图:Country在h1、h2、h3各层的最佳线性探针得分——h1层可分离(准确率0.99),h2层完全塌陷(0.43),h3层恢复(0.96)。该谜题的做法是在h2层将Country信号折叠进一个XOR,然后在一层之后又解开。这描述了模型的表示动态,但并未说明权重是如何训练出来的。
接下来的操作是:首先将h2层投影到food轴方向上的Country轴,然后乘以food的符号(这就是“拆XOR”)。完成这一步后,Country变得线性可分了,探针准确率从0.43跃升至0.93。
图左:在h2层,country=1(红色)夹在country=0(灰色)中间——没有一条直线能分开它们。图中:忽略food之后,两个类别完全重叠。图右:二次折叠(投影×food符号)使country变得线性可分,最终被一个平面以0.93的准确率恢复出来。这种最低程度的非线性就是一个与food的乘积——恰恰就是XOR。
任务3:更奇特的表示
我们尝试为Sentiment(情感)特征训练一套更奇特的表示。具体思路是:信息完全存储在层之间的转移中,而不依赖于任何单一层的状态。这样一来,标准线性可解释性工具在每一步计算中都完全无法察觉它,但最终输出却能获得超过90%的准确率。
具体的做法是:采用一套不同的、连续的几何结构来编码特征——一个通过半径读取的零均值环。我们将其置于“速度”中,即层间更新量v = h3 - h2。为了让网络的其他部分与原始谜题完全一致,我们保留了完整的谜题头部(l1...l5)来处理其他七个特征,同时将环放在一段保留的二维子空间中——这个子空间是真实更新的一个部分,其他特征的读出器根本不会触及它。在这个子空间里,特征完全线性不可见,并且任何单特征切片都无法解开它。
核心思路:将隐藏层2和3之间的更新表示为速度v = h3 − h2。强制Sentiment仅通过这个更新在保留的二维子空间中的几何结构来承载:正样本被推到半径为1的圆上,负样本留在原点,正样本的角度与任何标签无关,且均匀覆盖整个圆。
结果是一个均值恰好为0的环:因此在这个子空间里,无论是线性探针还是PCA方向都无法区分两个类别。但它的半径却能干净地解码出情感。由于分离必须依赖半径(一个非线性标量),所以任何其他单一特征都不足以解开它。
接下来探讨架构上的改动。头部采用原谜题的MLP,保持全深度不变:冻结的all-MiniLM-L6-v2编码器(平均池化的384维x)输入给l1...l5,与谜题完全一致,产生ReLU后的状态h2和h3。我们做了三处具体改动,均与Sentiment特征的读取机制及其通道保留方式有关。
由此自然产生两个性质。秩(rank)的设计使得角度在圆上均匀分布,因此正样本均匀散布;环的均值几乎为0。而一个分类器要分开两团点云,只能沿着它们均值不同的方向进行切分——因此零均值的环根本不存在可分超平面(线性探针和PCA都无法看穿它)。
图3.4:真实更新v=h3-h2中保留的维度:正样本(红色)落在平均半径约为0.87的零均值圆上,负样本(灰色)留在原点(半径约0.02)(左图)。半径能够干净地将两个类别分开(中图),而在保留维度上进行的线性探针则完全随机(右图)。不过,整个64维更新中仍然保留了情感的线性特征。
图3.5:按特征和通道分组的线性探针准确率(h0、h1、h2、h3、更新量保留维度的线性探针、更新量保留维度的非线性探针、模型输出)。每个特征在h0→h3上都是线性可读的;而在更新量保留维度中,所有特征都线性不可见,仅有情感特征能通过非线性方式重新读取出来。
同样的方法试在共享状态上,失败了。
那么,是否必须使用速度?或者可以直接将同样的环放在某一层的状态中?我们尝试过:在共享的64维状态h2中取两个维度,放置一个零均值环,同样通过半径来读取,同时进行强均值匹配,试图将情感的线性影子从其他维度中驱散出去。环确实形成了,半径也能解码情感(准确率0.98),但整个共享状态仍然保持线性可读(准确率0.93):线性影子根本无法消除。
这与原谜题重构中遇到的同一堵墙(第4节):一个特征如果必须与其他特征共享同一状态,它就会被冗余编码到各个维度中。均值匹配会留下一个(标准化探针可检测到的)残差,而如果加大对抗力度,整个状态都会崩溃。
保留子空间中的速度环巧妙地绕过了这个问题:环的两个维度是保留的。具体来说,l5在这些维度上被清零了,因此其他特征的读出器根本不会触及这些坐标。环永远不必与其他特征的线性编码共存于同一维度上,因此,限制在保留子空间内的线性探针准确率仅0.32。
