SAE:稀疏自编码器
目前被认为是分析和拆解黑盒模型(尤其是 Transformer 架构)最有效的工具之一。Anthropic 和 OpenAI 都在使用它来逆向工程大模型的内部表征。
动机: 特征叠加
在标准的神经网络中, 由于特征数量通常比神经元的数量要多的多, 模型被迫用一个神经元学习多个不相关的特征”, 这种现象被称为特征叠加(Superposition)
特征叠加导致的结果就是当我们观察单个神经元的激活状态, 我们是无法判断它代表什么含义, 比如这个神经元既对”红色”激活, 也对”汽车”激活, 甚至可能对”驾驶”这个动词激活, 导致就没办法解耦来分析到底这个神经元学到什么特征.
SAE的解法: 假设模型内部存在一个真实的, 高维的”字典特征”空间. SAE通过引入 稀疏惩罚, 强迫模型从密集的激活中解耦出这些原本的字典特征, 使得每一个特征向量只对应一个单一的, 人可以理解的概念.
SAE 的架构和数学原理
SAE是一个附加在目标模型特定层上的单隐藏层神经网络. 假设要分析目标模型某一层输出的密集激活向量 x \in \mathbb\{R}^d :
1: 编码器 (Encoder): 将 x 映射到高维度的稀疏特征空间 f \in \mathbb\{R}^D 通常, 比如膨胀32倍或者64倍.
f = ReLU(W\_\{enc}(x - b\_\{dec}) + b\_\{enc})\2: 解码器 (Decoder): 尝试将这些稀疏特征重建为原始的激活向量\hat{x}. 解码器的权重 W_{dec} 的每一列, 实际上就代表了一个解耦出来的”字典特征”.
\hat\{x} = W\_\{dec} \* f + b\_\{dec}\3: 损失函数 (Loss Function): 结合重建损失 MSE 和 稀疏性惩罚(通常是L_1正则化):
控制稀疏度。如果 足够大,f 中绝大多数元素为 0,只有少数特征被激活。
一个直观的比喻: 调色盘与颜料
在继续深入之前, 先给一个直观的图景。
想象目标模型某一层的激活向量 x 是一杯已经调好的颜色。模型内部真正”思考”时用到的概念(红色、汽车、讽刺的语气、Python 代码……)就像一管管原始颜料。由于神经元数量有限, 模型把成千上万管颜料混进了区区几千个维度里——这就是特征叠加。我们直接盯着这杯混合色看, 是看不出里面掺了哪些颜料的。
SAE 做的事情, 就是学出一个巨大的颜料架( W\_\{dec} 的每一列是一管颜料), 然后对每一杯混合色回答两个问题:
- 这杯颜色用到了哪几管颜料? (稀疏性: 大多数特征激活为 0)
- 每管颜料各挤了多少? (激活值 的大小)
重建 \hat{x} 就是照着这个配方重新调一杯颜色, 调得越像, 说明这个颜料架越忠实地刻画了模型的内部世界。
如果这篇文章对你有帮助,欢迎去 GitHub 留言,我会认真看。
If this article helped, feel free to leave a message on GitHub.