研究大模型内部时,盯着一个神经元看常会遇到麻烦。同一个神经元可能在代码、地名和完全不同的句子里亮起来,很难给它写一个稳定解释。研究者把这种现象称为多义性。另一种解释叫特征叠加,模型能表示的特征多于神经元数量,多个概念便挤在同一组方向里。

稀疏自动编码器试着把这些中间激活拆开。编码器先把模型某一层的激活映射到更高维的特征空间,解码器再用这些特征重构原激活。训练同时压低重构误差,并惩罚过多特征一起亮起。每次只让少量特征活跃,研究者才有机会逐个观察它们在什么文本上出现。

拆出来的单位比单个神经元好读

2023 年的一项研究在小型语言模型上发现,稀疏自动编码器学到的特征比单个神经元和其他分解方向更容易解释。研究者还在间接宾语识别任务上干预特征,定位了会因果影响模型行为的部分。相关性因此多走了一步,某个特征亮起以后,增强或削弱它会不会真的改变输出也能测试。

Anthropic 后来把方法扩展到 Claude 3 Sonnet。公开报告列出了人物、国家城市、代码类型签名和安全漏洞等特征。有些特征会跨语言响应同一概念,也会同时响应文字与图像。研究者还展示了一个与金门大桥相关的特征,强行放大以后,模型会在许多无关问题里提到这座桥。

这个演示很直观,不能把它理解成模型内部已经有一本写好名称的词典。特征名称来自对高激活样本的归纳,自动解释器也可能把偶然共现当成概念。低频特征缺少足够样本,更难判断。一个可读标签只是一项待检验的假设。

稀疏和保真要一起看

特征开得越少,解释通常越省力,解码器也更可能丢失原激活里的信息。只看“发现了多少特征”没有用,还要报告重构误差、模型性能变化和每个输入平均激活多少特征。被自动编码器重构后的模型若明显变差,解释的是一个已经失真的替身。

常用的 L1 惩罚还会带来 shrinkage,特征幅度容易被系统性低估。Google DeepMind 的 Gated SAE 把“选哪些方向”和“估计多大幅度”分开处理。在最高 7B 参数模型的实验里,它用约一半的活跃特征达到相近重构保真度。这个结果也说明 SAE 本身仍在改进,没有一套固定配置适合所有模型和层。

企业用户暂时很少需要自己训练一套 SAE。更现实的用途是读模型方的安全报告时多问几句。特征来自哪一层,用什么数据命名,干预后行为怎样变化,重构造成多少损失。报告能回答这些问题,模型内部研究才从漂亮样例走向可复核证据。

参考资料