Transformer如何在一个向量里同时持有两个想法:线性叠加与可解释性

发布时间:2026/11/2 16:17:52
Transformer如何在一个向量里同时持有两个想法:线性叠加与可解释性 说实话我第一次看到这个论文标题的时候就愣了一下Your Transformer Can Hold Two Thoughts at Once。这句话听起来很像在描述一个能边开会边回消息的人但实际上讲的是LLM大语言模型内部机制里一个非常反直觉的事实Transformer并不是用一组神经元去表示一个概念它更像是在同一个激活空间里把多个概念用线性叠加的方式同时压进一个向量里。这篇工作给了我们一个很扎实的研究视角去证明这种叠加确实存在并且可以被测量、被干预。这篇文章会从我自己做LLM可解释性和下游应用的经验出发拆开这个标题里的三个关键词Transformer、LLM、Linear Superposition。我会说明这个同时持有两个想法到底是什么意思证据从哪些实验来我自己复现这类观察时的实操步骤以及这个发现对做RAG、做评测、做微调的人有什么实际影响。适合对模型内部机制感兴趣、做AI应用落地、或者想入门机械可解释性mechanistic interpretability的同学参考。1. 从多义神经元说起为什么模型可以在一个空间里装下多个想法1.1 一个方向一个概念特征不是神经元而是方向传统教科书里经常给我们一个误导性的印象神经网络训练好以后每个神经元负责一个特征。比如某个神经元识别猫、某个神经元识别狗。这个说法在很多早期的视觉模型里勉强能用但在大语言模型里基本不成立。真正被大家逐步接受的观点是一个概念对应激活空间里的一个方向而不是单个神经元。所谓方向你可以把它理解成向量空间里的一个坐标轴。比如词嵌入里非常经典的例子king - queen man ≈ woman。这组向量运算能成立说明性别、王室身份这些语义信息确实以方向的形式存在于向量空间中。你在这个空间里沿着性别方向移动一段距离就能把king变成queen。这是线性表示最早的直觉来源。而这篇标题所在的研究脉络正是把这种观察从嵌入层扩展到了深层Transformer的每一层。关键点在于既然是方向那么多个方向完全可以同时存在于同一个向量里。你拿着一个高维向量它从原点出发指向了一个由多个方向叠加出来的位置。这个位置既不纯粹是体育也不纯粹是正面情绪它可能同时包含80%的体育、60%的正面情绪、30%的正式语体。这种分布式并存就是标题里holds two thoughts at once的数学含义。1.2 叠加假说的提出模型为什么要省房间那模型为什么不干脆给每个概念单独设一组神经元呢答案是神经元不够用。你思考一下一个7B模型大约有几十亿参数但神经元数量是有限且固定的。真实世界里的概念数量几乎无限多句子里的语义组合更是天文数字。如果每个概念独占一组神经元再大的模型也存不下。于是模型学会了一招稀疏叠加。这个概念最早被Anthropic在Toy Models of Superposition里讲得很清楚。当输入特征比较稀疏即每个具体输入只会激活少数特征的时候模型没必要让每个特征都有一条独立的神经元通道它可以让多个特征共享同一组神经元只要这些特征在激活空间里的方向足够接近正交它们互相之间的干扰就很小。我经常用一个生活类比一间仓库里不可能给每件物品都单独腾一个房间于是你把折叠桌、椅子和纸箱统一贴着墙叠起来。只要每件东西的形状标签清晰、存取时间错开取的时候基本不会拿错。线性叠加就是这个逻辑的数学版本。论文标题里Two Thoughts at Once其实就是把这种多特征同处一个向量的现象人格化了。1.3 Residual Stream一张不断被写写画画的黑板要理解叠加发生在哪里我们需要回到Transformer的基本结构。很多人看Transformer只盯着attention和FFN却忽略了一个关键角色残差流residual stream。在一层层Transformer块之间传递的那个隐状态向量本质上是一块公共黑板。每个attention头和每一个FFN层都在往这块黑板上写字读取当前黑板上的信息计算自己的结果然后把结果加回到黑板上。这个加回来的动作非常关键。因为所有层的输出都是加在一起的所以黑板上最终存的是大量信息的线性组合。也就是说残差流天然就是一个线性叠加的容器。你第5层写入了sport方向的信息第12层又写入了positive sentiment方向的信息最后第14层读黑板时看到的不是一个单独的方向而是两个叠加后的综合向量。这也是为什么做可解释性研究的人特别喜欢把残差流叫做communal blackboard——它是所有想法汇聚、叠加、竞争的地方。理解了这一点再回头看标题里的Linear Superposition就很好懂了它不是一种人为设计的机制而是残差流架构加上大规模训练自然涌现出来的信息组织方式。2. 线性叠加的证据在哪看模型内部激活空间的结构2.1 探针实验从残差流里读到多个想法既然多个想法以方向形式叠加在同一个向量里我们要怎么证明它最直接的手段是线性探针linear probe。具体做法是拿一批句子输入模型在某一层的残差流位置取出隐状态向量然后训练一个简单的逻辑回归分类器用这个向量去预测某个属性比如句子是否在讲体育。如果这个线性分类器能达到很高的准确率就说明是否体育这个信息确实被线性编码在了激活向量里也就是存在一个对应方向。但单一个探针只能说明一个想法存在。要证明同时持有两个想法你需要同时训练两个或多个探针。比如我做过一个实验在同一组激活向量上一个探针预测话题是体育还是美食另一个探针预测语气是积极还是消极。两个探针单独都能到90%以上的准确率。这说明同一个向量里确实同时携带着两路信息。更有意思的是如果你把这两个探针学到的权重方向拿出来算余弦相似度会发现它们的夹角非常大接近正交。正交意味着两个方向几乎互不干扰各自可以在同一个向量空间里独立存在。这正是两个想法共存的空间证据。如果两个方向高度相关余弦相似度接近1或-1那它俩大概率只是同一个潜在因素的两种表达谈不上叠加。2.2 方向算术与激活干预删除一个想法探针实验证明了信息是线性可读的但还不够硬核。批评者会说也许你只是从向量里读出了与模型行为无关的静态信息。要证明这个方向真的参与模型计算就得做干预实验。这里有一个很有意思的操作既然每个想法是一个方向那我们理论上可以把这个方向的贡献从激活向量里减掉。做法是先通过探针或稀疏自编码器找到体育方向对应的向量d然后用激活向量减去一个沿d的分量h - α * d再把这个被修改的向量喂回模型继续生成。结果几乎总是模型突然不再谈论体育了但语法、语气、句子流畅度基本不受影响。反过来如果减小一个别的方向模型可能马上改变语体但话题不变。这种方向消融实验非常直观你删掉了一个想法但另一个想法还安安稳稳待着。这比任何数据表格都更有说服力。我在自己做的早期尝试里甚至用这个方式做定向内容移除把模型输出里某个敏感话题方向减弱同时保留其他语义效果挺惊人也让我明白为什么对齐训练有时候会带来绕开话题但坚持观点的怪异行为——因为你删除的可能只是某个方向的权重不是全部相关表示。2.3 SAE字典把叠加拆开看探针和方向消融都是从外部验证稀疏自编码器Sparse Autoencoder, SAE则提供了更进一步的内部视角。SAE的思路是把某个层的激活向量h分解成一组过完备的字典向量方向上的稀疏组合。简单说就是把叠加后的向量拆成一个个可解释的原子方向。这几年OpenAI和Anthropic开源了一些训练好的SAE字典很多人直接拿来用。我上手之后的第一感觉是原来一个激活向量真的是很多想法的混合体。比如一个tweet的中间层激活可能同时激活了关于科技话题的方向、表达兴奋情绪的方向、提到苹果公司的方向、关于产品发布会的方向。每个方向对应字典里的一个稀疏特征而这个特征本身是跨上下文的、可解释的。这跟注意力机制里的key/query/value模型有点关系。你可以把每个token的表示理解成一个多头角色query方向代表我在找什么key方向代表我能提供什么value方向代表我能给出什么。当这些方向被叠加编码时同一个token可以在注意力匹配中扮演多个角色。一个词既可以作为主语去找谓语又可以作为实体去匹配知识库还能给相邻token提供语法线索。这些角色方向都在同一个残差流向量里挣空间这正是叠加的工程表现。SAE最有价值的地方在于它给了你一个显微镜让你不用训练特定的探针就能以一整套通用字典去观测模型内部到底存在多少个可解释方向、这些方向什么时候被同时激活。这几乎是目前研究线性叠加、多义性最趁手的工具。3. 自己动手验证复现双想法观测的常见路数3.1 搭建观察环境这部分我想直接把我的实操过程写下来方便你自己动手复现。我偏好用中小型开源模型做这类实验因为它们跑得快、层数适中、可视化方便。比如GPT-2、Pythia-70M/160M或者Qwen-1.5B这类。下面以一个中文场景为例你也可以换成英文数据。环境方面你需要PyTorch、transformers、scikit-learn外加一套探针训练代码。先装依赖pip install torch transformers scikit-learn datasets建议用GPU但7B以下小模型跑探针实验其实CPU也能凑合。重点是取激活向量这一步通常用PyTorch的forward hook来实现。3.2 提取激活并训练线性探针我用的套路是这样的构造一组带标签的句子比如积极/消极和体育/美食两个维度。每个句子通过模型后在某一层比如第6层的残差流位置取出隐藏状态取最后一个token或mean-pooling得到向量存下来作为特征。然后在sklearn里训练一个逻辑回归分类器。from transformers import AutoTokenizer, AutoModel import torch from sklearn.linear_model import LogisticRegression import numpy as np model_name Qwen/Qwen-1.5B tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModel.from_pretrained(model_name, torch_dtypetorch.float16).eval() layer_cache {} def hook_fn(module, input, output): # 取残差流通常取 transformer block 输出的 hidden_state layer_cache[h] output[0][:, -1, :].detach().float().cpu().numpy() # 选取第6层之后插入hook模型结构不同索引自行确认 model.model.layers[6].register_forward_hook(hook_fn) def get_hidden(texts): reps [] for t in texts: inputs tokenizer(t, return_tensorspt, truncationTrue, max_length64) with torch.no_grad(): model(**inputs) reps.append(layer_cache[h][0]) return np.array(reps) # 假设你有 X_texts, y_topic, y_sentiment X_topic get_hidden(体育美食_texts) clf_topic LogisticRegression(max_iter1000).fit(X_topic, 体育美食_labels) score_topic clf_topic.score(X_topic, 体育美食_labels) X_senti get_hidden(积极消极_texts) clf_senti LogisticRegression(max_iter1000).fit(X_senti, 积极消极_labels) score_senti clf_senti.score(X_senti, 积极消极_labels)我跑这类实验的时候习惯把准确率重心放在验证集而不是训练集上防止逻辑回归在180维向量空间里过度拟合小样本。建议每个方向至少几百条样本。小模型上topic探针和sentiment探针的验证集准确率都能到85%以上这已经足够说明两路信息是线性可读的。接着把两个探针权重做余弦相似度分析w_topic clf_topic.coef_[0] w_senti clf_senti.coef_[0] cos_sim np.dot(w_topic, w_senti) / (np.linalg.norm(w_topic) * np.linalg.norm(w_senti)) print(cosine similarity:, cos_sim)如果这个值在0附近比如绝对值小于0.2恭喜你你看到了一对接近正交的共存方向。你的Transformer在同一个向量里确实同时持有两个想法而且两个想法分得很开互不打架。3.3 结果怎么解读我实际见到的结果分布大致是这样同一层里话题方向和情绪方向往往正交性很好cosine在0.1左右但话题方向和形式语气方向有时相关性会高一些因为正式语体和严肃话题在语料里经常共现。这两种结果都很正常它们分别对应正交叠加和相关叠加两种真实存在的情况。如果你想进一步看到SAE级别的拆解可以用开源的预训练SAE比如OpenAI和Anthropic发布的直接把同一条句子的激活向量过一遍SAE观察哪些特征方向被同时点亮。一个高频出现的现象是一个token激活的特征数量在几十到几百个之间而其中真正能命名的高层特征可能只有几个。一个token同时在办公、物流、发票、客户服务等方向上有激活是很常见的事情。这也再次说明叠加不是个别现象而是LLM表示机制的底色。4. 读懂实验结果的三个关键坑从相关性到因果性4.1 探针太高不代表模型在用我见过很多人拿线性探针到90%准确率就兴高采烈地宣布我找到了编码XXX的神经元。这里必须泼一盆冷水线性探针只能证明信息存在不能证明模型在实际推理时用到了它。有可能这个信息只是模型无奈附带存的隐藏记录对最终输出毫无贡献。要确认因果性必须做干预实验也就是前面说的方向消融。你沿着探针方向把激活向量推回去如果预测行为真的随之改变才能说这个方向干活了。我踩过的坑是有些方向消融后模型输出几乎不变但探针准确率非常高。后来我意识到这些方向对应的可能是从上下文可直接推断的冗余信息模型有多个信息来源删掉其中一个方向其他方向还能兜底。所以现在我看实验结果都是探针和消融一起看。4.2 叠加不等于干扰方向要接近正交很多人一听到叠加第一反应是那模型内部会不会一锅粥。实际上模型之所以能在同一个空间里叠放那么多概念靠的是方向之间的接近正交。正交意味着两个方向上分量的内积近似为零投影到其中一个方向时来自另一个方向的能量贡献很小。如果你的两个方向余弦相似度很高这有两种可能一种是你定义的两个想法本质上就是同一个因素比如积极情绪和赞赏语气高度相关另一种可能则是两个概念在训练数据里经常同现模型无奈把它们揉在一起了。后者会导致一个问题你想单独操纵其中一个方向时另一个方向也会被带到效果出现串扰。这在幻觉分析里特别值得注意模型生成的内容漂移常常就是因为多个方向发生非线性交互某个方向突然压过了另一个。判断干扰程度的一个实用指标是看方向间的正交性和稀疏性你可以在SAE字典里统计一个激活中同时被点亮且语义高相关的特征对比例。如果这个比例过高说明模型在该层对某些概念的分辨率不够上游输入稍微复杂一点就容易产生语义混杂。4.3 多义神经元不等于叠加本身还有一个非常容易混淆的概念多义神经元polysemantic neuron。有些神经元会对猫和总统两件完全不相关的事都产生强烈响应于是人们说这个神经元是多义的似乎这就是叠加。严格来说多义神经元只是叠加的表象之一并不能保证猫方向和总统方向真的都在同一组合空间里被编码。一个神经元可能只是多个正交方向的公共坐标轴上的一个坐标分量它高响应是因为它在多个方向上的投影都不为零。所以做这类研究时我建议你把粒度放在方向上而不是神经元上。方向是坐标轴的组合可能对应许多神经元的不同加权组合。一个思路是用SAE字典里的稀疏特征方向作为基本分析单元然后看这些方向之间的几何关系而不是单独挑几个激活异常高的神经元来讨论。4.4 快速自查表我把自己在实际分析中形成的检查项整理成一张速查表方便你对照自己的实验结果检查项理想特征常见翻车现场探针验证集准确率显著高于随机基线训练集高验证集崩过拟合方向间余弦相似度绝对值接近0大于0.5两方向纠缠方向消融导致的输出变化定向改变目标属性其他属性稳定一改全乱方向定义不干净SAE特征稀疏度单个激活激活少量原子方向每个token激活数千方向难解释跨层一致性相近语义方向在不同层连续演化方向剧烈旋转无法跨层对比这个表是我反复折腾出来的心得尤其最后一条坑很深很多方向在第8层和第16层的空间里是完全不同的一套坐标轴直接拿第8层的探针方向去第16层做消融效果会很差。5. 这个发现对实际用LLM的人意味着什么5.1 幻觉和上下文冲突的根源叠加机制最直接的影响体现在RAG和多轮对话中。当你给模型同时塞进一段长上下文和它内部已有的知识本质上是在残差流里同时写入多个信息方向。上下文说A方向和知识库说B方向会叠加在一起。如果这两个方向不是正交的或者模型到达最终解码层时A方向的能量反而比B方向弱那模型就会输出与上下文不符的内容这就是一类很典型的幻觉场景。我自己在调试RAG流水线时从这类研究中得到的启发是不要把召回质量当作唯一优化目标。你可以额外做一层方向冲突检测把检索到的知识向量和模型内部激活方向做一次相似度分析。如果一条检索结果与模型已有先验方向高度冲突那它大概率会被模型忽略或扭曲。与其硬塞进去不如换一种表述方式或者给这条知识增加权重让它在叠加空间里的贡献更明显。5.2 对齐与微调后的隐藏想法还有一个跟对齐高度相关的含义是当你用RLHF或安全微调训练模型拒绝某个话题时你压制的往往是输出层对该方向的利用权重而不一定会把模型中这个方向本身彻底擦除。从线性叠加的视角看残差流里那个有害倾向方向可能依然存在只是后处理阶段被对齐策略压制住了。所以我们在做微调评测时经常看到一个现象模型在常规测试集上表现良好但一旦给了一个精心构造的偏置输入被压制的方向又被激活或重新赋予权重行为就反弹了。理解这一点之后评测思路会有所改变除了测试输出还应该检查中间层激活对该方向的响应强度用特征方向探测去衡量隐藏的想法是否真的被削弱了。我不敢说这是一个解决安全问题的方法但它确实提供了更完整的评测视角如果你想验证对齐是否真的生效别只看回答内容也看看沿某个危险方向干预激活之后模型的行为变化幅度。这个思路对模型安全团队做评测设计很有参考价值。5.3 链式推理不稳定的机制性解释模型做多步推理时不够稳这个问题大家体会很深前几步都对最后一步突然错了。用叠加的视角看每一步的推理结果都会把一个新的语义方向叠加到残差流黑板上。随着步数增多黑板上叠加的方向越来越多代表当前正确推理目标的方向和干扰方向之间的信噪比逐渐下降。某一步稍微出现一点偏差采样温度稍高、输入有噪声模型就往另一个强能量方向跑偏了。基于这个理解我见过的稳定化解法通常分两边一是工程侧让每步输出更干净比如用更低温度、自一致性采样让同一个方向反复被强化二是研究侧尝试把黑板上的叠加信息做显式分离比如在残差流里附加可路由的注意槽位让不同推理步骤拥有更独立的叠加空间。这个方向目前还很新但对于做推理增强的人是一个值得持续跟踪的思路。5.4 对模型架构工程的影响往远了看这篇标题紧贴的研究脉络也在影响下一代模型架构设计。既然模型靠叠加来压榨每一维神经元的利用率那如果我们直接在架构里为稀疏特征方向留出更好的空间是不是能让模型在同样参数下记住更多概念现在有一些工作在做类似的事情比如在FFN层里加入可学习的稀疏路由或者在残差流更新时用方向正则还有人在研究如何让注意力头的key/query/value方向更自动地正交化。这些尝试的共同目的都是在不增加太多参数的情况下增强模型同时持有多个想法的能力同时减少抽象概念之间的干扰。这个方向的工程价值可能要再过一两年才会在大规模模型上完全显现但对架构方向敏感的同学现在就可以开始关注了。6. 我的一点实操体会我自己在复现和扩展这类实验时最大的体会是可解释性工具这两年进步非常快但结论的保质期很短。你今天在一个7B模型上辛辛苦苦找到的体育方向换一个模型、换一层、甚至换一套中文分词之后可能就对不上了。所以我现在更愿意把线性叠加当成一种数据分析框架而不是去找某个固定的真理神经元。另一个实用建议是想快速入手就直接做三件事。第一用SAE字典观察一个token的激活特征列表你会直观地看到叠加第二做两个正交探针的实验你会量化地看到叠加第三做一次方向消融你会因果地验证叠加。这三步做完你对这个标题的理解会比读十篇综述都深。最后分享一个小技巧做探针实验时样本复杂度和多样性比样本数量重要得多。你与其把一万条我爱这部电影喂进去不如准备几百条句式、风格差异足够的句子。这样探针学到的方向才是通用的语义方向而不是特定句式的位置特征。这个经验帮我避开了很多高准确率假象希望你也能用上。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询