用途
本技能面向机械可解释性研究,提供使用 SAELens 训练和分析稀疏自编码器(Sparse Autoencoders, SAE)的指导。SAE 用于将多义(polysemantic)的神经网络激活分解为稀疏、可解释的特征,其思路源于 Anthropic 关于单义性(monosemanticity)的研究。
要理解的问题:神经网络中的单个神经元往往是多义的,会在多个语义不同的上下文中激活,因为模型使用叠加(superposition)表示比神经元数量更多的特征,给可解释性带来困难。SAE 通过让稠密激活经过稀疏瓶颈重建,使任意输入通常只有少量特征激活,且每个特征对应一个可解释概念。
官方库为 GitHub 上的 jbloomAus/SAELens(资料称 1,100+ stars)。
主要能力
- 加载与 TransformerLens 配套的预训练 SAE,对模型激活编码为稀疏特征,并查看每个 token 的 top 特征,重建激活并计算重建误差。
- 训练自定义 SAE,支持 standard、gated、topk 等架构,通过配置对象指定模型、钩子点、维度、学习率、L1 稀疏惩罚、数据源、日志与检查点等。
- 特征分析:查找激活某特征的具体文本,计算特征对特定输出 logit 的归因。
- 特征引导(steering):将解码器中的特征方向按强度加到残差流上,影响生成结果。
- 与 Neuronpedia 集成浏览预训练特征。
资料列出的预训练发布包括 gpt2-small-res-jb(GPT-2 Small,多个残差流层)与 gemma-2b-res(Gemma 2B 残差流),另有 HuggingFace 上以 saelens 标签检索的多种资源。
使用方式
安装:
pip install sae-lens
要求 Python 3.10+、transformer-lens>=2.0.0。
工作流一:加载与分析预训练 SAE。先通过 HookedTransformer 加载模型,再用 SAE.from_pretrained 按 release 与 sae_id 加载对应层 SAE;用 run_with_cache 取激活,sae.encode 得到特征,topk 查看 top 特征,sae.decode 重建并计算误差。资料示例使用 gpt2-small、blocks.8.hook_resid_pre。
工作流二:训练自定义 SAE。通过 LanguageModelSAERunnerConfig 配置 model_name、hook_name、hook_layer、d_in、architecture、d_sae、activation_fn、lr、l1_coefficient、l1_warm_up_steps、train_batch_size_tokens、training_tokens、dataset_path、context_size、W&B 日志与 checkpoint 等,交给 SAETrainingRunner 运行,并查看 l0 与 ce_loss_score 指标。
工作流三:特征分析与引导。遍历测试文本找特征最大激活值;用 sae.W_dec[feature_idx] 得到方向,在 forward hook 中按 strength 加到激活上并生成;也可用特征激活乘以解码权重与 unembedding 计算对某 token logit 的贡献。
资料还给出常见问题处理思路:死特征比例高时启用 L1 warm-up 与 ghost grads;重建差时降低 L1 或增大 d_sae;特征不可解释时提高 L1 或改用 topk 架构并设 k;显存不足时减小批次与缓冲。
关键超参数与评估指标
超参数典型值:d_sae 为 d_model 的 4–16 倍;l1_coefficient 5e-5 至 1e-4;lr 1e-4 至 1e-3;l1_warm_up_steps 500–2000。
评估指标目标:L0 平均激活特征数 50–200;CE Loss Score 80–95%;死特征 <5%;解释方差 >90%。
适用场景
- 发现模型激活中的可解释特征、理解模型学到的概念。
- 研究叠加与特征几何。
- 基于特征进行引导或消融。
- 分析欺骗、偏见、有害内容等安全相关特征。
限制与替代方案
资料明确:仅需基础激活分析时可直接用 TransformerLens;需要因果干预实验时考虑 pyvene 或 TransformerLens;需要生产级引导时可考虑直接激活工程。其余关于收费、平台支持范围等信息暂未提供。