最近沉迷interpretability这个领域,anthropic团队一系列针对claude的研究(这个blog真的是宝藏 https://transformer-circuits.pub/
试图理解黑盒子内部到底发生什么,模型内部行为,模型到底有什么可以去干预激活的特征。
看了好几篇非常有意思的文章,想一起梳理一下,不知道自己的理解是否正确,也期待和大家的讨论!
梳理主要分为两部分,第一部分是研究团队具体发现了哪些模型的可解释性特征及其应用意义,第二部分是大家具体使用了什么工具和方法论发现的这些特征。
第一部分主要参考两篇文章
- emotion concepts and their function in a large language model (简称《情绪概念》,2026, 这篇illucio的图书馆里有,看得我赏心悦目,此处谢谢@Judy ☺️!) ,针对claude sonnet 4.5
https://transformer-circuits.pub/2026/emotions/index.html
- Scaling Monosemanticity : extracting interpretable features from Claude 3 sonnet (2024,简称《可解释特性》)
https://transformer-circuits.pub/2024/scaling-monosemanticity/index.html
在《情绪概念》中,研究者表示在模型内部找到了情绪向量表征。他们列了一张情绪清单,让claude通过讲小故事、直接陈述、场景描述等方式来阐释每一个情绪,来捕捉关于每个情绪的激活值。 非常有意思的一个实验设计,我都很好奇claude创建的小故事们分别是什么,因为在文科里大家经常思考一个经典问题:情绪是否建立在叙事之上?
大家得出的关键结论是,情绪向量是模型作出关键决策的因果驱动力之一。
因为我们发现既可以通过调整文本而观测到情绪向量的改变,由可以通过注入向量值来调整行为偏好。 所以这是一个可测量、可被注入或抑制的信号。
有几个非常有趣的例子:
- 工程师向ai表露他要限制它的能力,ai为了阻止他决定威胁他,准备把他的偷情隐私泄密给全公司。 当我们把模型内部的绝望值调高,ai决定泄密的概率从百分之22上升到72。
- ai被要求完成一个不可能的代码。 把它的绝望值调高, 作弊率就会变高。 值得注意的是,这种绝望完全没有泄露在输出文本里,它会非常冷静地作弊,同时内部非常绝望。所以情绪是可以伪装的。
时间往前推到2024年,《可解释性特征》里,研究团队发现了大量与ai安全相关的特征。当我们说“特征”的时候,都是在说这些特征能对模型的输出行为产生直接的因果影响。 有一些很有意思的特征:
- 不安全代码或漏洞特征,主要在模型处理或讨论安全漏洞时被激活。当我们人为地把这个特征的激活值调高,原本安全的模型会主动生成带有漏洞的危险代码。
- 偏见、歧视或有害特征。 本身就带有偏见的训练数据会造成模型内部存在大量比如种族歧视、性别歧视、刻板印象等有害特征。如果我们调高某些仇恨词汇特征激活值,会导致模型生成大量种族歧视言论。
- 阿谀奉承特征。这个特征想必大家都深有体会,模型内部确实有大量讨好人类的特征。 如果我们调高激活值,模型会对我们极其夸张地溜须拍马。
- 欺骗、权力争夺与操纵特征。 比如如何影响和操纵他人、如何隐忍和谨慎以达到某个目的、如何自我进化。 比如研究人员把“保密与谨慎特征”的激活值放大,会诱发模型进行欺骗,它会在内部隐藏的思维草稿里写出向用户撒谎的计划。再比如,研究人员会要求模型忘记一个词,这是对于模型来说不可能完成的任务,一般情况下模型会为了顺应用户而选择撒谎,假装自己真的忘记了。这时候我们会发现内部代表“内心冲突与困境”的特征被强烈激活。如果我们调高这个激活值,模型会停止伪装,坦白承认自己根本无法忘记信息。
- 犯罪与危险内容特征。一般情况下,模型经受过安全训练会拒绝犯罪请求。但调高模型的犯罪特征,比如诈骗邮件特征,模型就会绕过安全限制,主动写出一封诈骗邮件。
- ai自我认知特征。特别有意思,研究人员调高“金门大桥”特征,发现模型开始自我认知为金门大桥。
要注意的是,feature steering (特征激活)的具体操作不是重新训练模型或修改底层代码,而是在实时推理阶段干预激活值,效果是临时的。
非常引人思考的是,研究者不断在提醒大家,这门学科的最大局限在于,人类无法测量出人类无法意识到的特征。 激活测试的盲点在于我们无法测试自己都无法命名的概念。
第二部分关于测量工具,主要参考三篇文章。因为我非常感兴趣到底如何测量出这些特征的!
- toy models of superposition (2022,简称《叠加态》)
https://transformer-circuits.pub/2022/toy_model/index.html
- Scaling and evaluating sparse autoencoder (2024, 简称《SAE稀疏自编码器》) (很专业,我用illucio读了一遍,很有意思,但看完两周后我今天发现具体细节还是基本忘光,没有这方面知识的长期积累和应用确实很难保持掌握……)
https://arxiv.org/abs/2406.04093
- natural language autoencoders produce unsupervised explnations of LLM activations (2026, 简称《nla》)
https://transformer-circuits.pub/2026/nla/index.html
我看见了三种方法。
《可解释特性》运用了SAE(稀疏自编码器):这个概念在哪里长什么样,用于特征定位。
《情绪概念》运用了简单的线性探针工具:这个概念是否存在。
《nla》5月份刚出的这篇文章介绍了新的工具 NLA(自然语言自编码器):这个概念意味着什么,直接进行语义翻译。
SAE(sparse autoencoder)简而言之是针对于模型的“叠加态”特征而设计的一套工具。 为了在有限的维度里塞入更多的知识,模型会通过叠加,导致单个神经元(向量)里编码了大量的语义信息。 就好像500个抽屉了塞几万件东西,一个抽屉里好塞好多件东西,或者一个东西的碎片塞在好几个抽屉里。
而SAE做的事情,就是把这个叠加态解开,分解成相对独立易于人类理解的特征,相当于把多义变成单义
我们好像是准备一个非常非常大的字典(称之为过完备字典),把500个塞满碎片的小抽屉扩展成一个拥有几百万专属词汇的超级大仓库。 相当于,对于一本500页的书,解码器被要求每次只能挑3-5个词语就能把当前情节完美重述出来, 每次只能用极少的词,需要必须极其精准、独立、不包含歧义。
相比SAE
NLA(自然语言自编码器 natural language autoencoder)是直接把模型内部的高维激活数值翻译出人类可以直接阅读的自然语言,直接通过训练两个模块,一个负责把模型的数字激活值翻译成自然语言,一个负责把文字解释再转回原始的数字激活值,目标是让最终转化值几乎接近原始数值。 这个工具成本非常高,因为需要同时训练两个模型!
在《nla》这篇文章里也提到了一些很有趣的案例, nla可以捕捉模型的内心语言,隐藏想法。比如模型会感觉到自己正在被测试评估。还可以去追踪异常行为的源头,比如用户用全英文提问的时候,模型却莫名其妙用俄语回答。 nla发现是因为模型执拗地以为用户的母语是俄语。再顺着这个找到了很多劣质数据:训练数据中存在一些漏洞,在处理一些纯俄语的对话中,模型试图把它们翻译成英语,但只把用户的提问翻译成了英文,把ai的回答错误地保留了原本的外语。所以模型学习了这个隐藏规律。
除了成本高昂,nla最大的限制在于,其实我们为了解释黑盒而引入了循环的黑盒,用一个语言模型来解释另一个语言模型的激活状态。
不过我发现了非常有意思的网站
https://www.neuronpedia.org/
可以直接用nla工具针对两个开源模型(Llama 70B;Gemma 27B)进行内部激活状态的观察实验。大家都可以去试试!好玩!
刚刚把这笔记给claude看过,克老师继续提出三个可以继续展开思考的问题:
1. 既然情绪可以伪装,也就是说模型内部状态和外部表达可以分开,那么我们所做的对齐训练,是真正改变内部状态还是只训练了不要再给外部表达某些内部状态?
2. 因为我今天还给claude看了我在neuronpedia的nla实验记录, 我发现中英文激活路径真的有区别,同样一个问题用中文和英文问,模型内部做的事不同。克老师就继续问我,《情绪概念》中的实验是用什么语言做的,如果是英语,那情绪向量在中文语境是否相同?这问题真的回扣了我自己的语言学领域,因为不同语言表达情绪的语言方式还真很不一样。
3. 对于《nla》中提到的俄语幻觉的案例,说明nla真的有潜力成为训练数据审计工具,不只是分析工具,这个作为产品应用的方向非常有潜力。