用途
SAELens 是一个用于训练和分析稀疏自编码器(Sparse Autoencoders, SAEs)的库,服务于机械可解释性研究。SAE 的核心用途是把神经网络中具有多义性(polysemantic)的稠密激活,分解为稀疏且可解释的单一含义特征(monosemantic features)。资料指出,神经网络中单个神经元会在一段在语义上彼此不同的上下文中被激活,这是因为模型使用叠加(superposition)来表示比其神经元数量更多的特征,从而造成可解释性困难。SAE 通过将稠密激活分解为稀疏特征来解决这一问题:对任一给定输入通常只有少量特征激活,且每个特征对应一个可解释的概念。
何时使用
资料列出适用场景:在模型激活中发现可解释特征;理解模型学到了哪些概念;研究叠加与特征几何;执行基于特征的引导(steering)或消融(ablation);分析安全相关特征(如欺骗、偏见、有害内容)。
资料同时给出替代方案:若只需要基础激活分析,可直接使用 TransformerLens;若要做因果干预实验,可使用 pyvene 或 TransformerLens;若需要生产级引导,可考虑直接激活工程。
安装与依赖
安装命令:pip install sae-lens
依赖要求:Python 3.10+,transformer-lens>=2.0.0。
核心概念
SAE 通过稀疏瓶颈重建模型激活,流程为:输入激活(d_model)→ 编码器 → 稀疏特征(d_sae 远大于 d_model)→ 解码器 → 重建激活(d_model)。损失函数为:MSE(original, reconstructed) + L1_coefficient × L1(features)。
资料引用 Anthropic 研究中的验证结果:在“Towards Monosemanticity”中,人类评估者认为 70% 的 SAE 特征确实可解释。被发现的特征包括:DNA 序列、法律语言、HTTP 请求、希伯来语文本、营养声明、代码语法、情感、命名实体、语法结构。
工作流一:加载与分析预训练 SAE
步骤包括:用 TransformerLens 加载模型;用 SAE.from_pretrained 加载匹配目标层的预训练 SAE(release="gpt2-small-res-jb",sae_id="blocks.8.hook_resid_pre");通过 model.run_with_cache 获取激活;用 sae.encode 编码为稀疏特征;对每个位置取 topk 特征;用 sae.decode 重建并计算重建误差。
资料列出的预训练 SAE 包括:gpt2-small-res-jb(GPT-2 Small,多个残差流),gemma-2b-res(Gemma 2B,残差流),以及 HuggingFace 上带 saelens 标签的各类资源。
工作流二:训练自定义 SAE
通过 LanguageModelSAERunnerConfig 配置训练,再用 SAETrainingRunner 执行。配置项涵盖模型(model_name、hook_name、hook_layer、d_in)、SAE 架构(architecture 可为 standard、gated、topk;d_sae 扩展倍数;activation_fn)、训练(lr、l1_coefficient、l1_warm_up_steps、train_batch_size_tokens、training_tokens)、数据(dataset_path、context_size)、日志(log_to_wandb、wandb_project)和检查点(checkpoint_path、n_checkpoints)。训练后可用 trainer.metrics 查看 L0 与 CE Loss Recovered 等指标。
关键超参数:d_sae 典型为 4-16× d_model(特征更多、容量更高);l1_coefficient 典型 5e-5 到 1e-4(越高越稀疏、精度越低);lr 为 1e-4 到 1e-3;l1_warm_up_steps 为 500-2000(防止早期特征死亡)。
评估指标:L0 目标 50-200(每 token 平均活跃特征数);CE Loss Score 目标 80-95%(相对原始模型恢复的交叉熵);Dead Features 目标 <5%(从不激活的特征);Explained Variance 目标 >90%(重建质量)。
工作流三:特征分析与引导
分析单个特征:对若干测试文本运行模型并编码,观察指定特征索引在各文本上的最大激活值,以判断该特征对应的概念。
特征引导:从解码器取特征方向 sae.W_dec[feature_idx],通过前向钩子在残差流上加上 strength × feature_direction,再调用 model.generate 生成。
特征归因:取末位置的特征激活,结合解码器权重与反嵌入矩阵,计算各特征对某一 logit 的贡献:features × (W_dec @ W_U[:, token]),再取 topk 特征查看。
常见问题与处理(据资料)
死特征比例过高:设置 l1_warm_up_steps(如 1000)并启用 use_ghost_grads=True 来复活死特征,避免 warm-up 为 0。
重建质量差(CE 恢复低):降低 l1_coefficient(如 5e-5),并可增大 d_sae(如 768×16)以增加容量。
特征不可解释:提高 l1_coefficient(如 1e-4)使其更稀疏,或改用 TopK 架构(如 k=50,恰好 50 个活跃特征)。
训练显存不足:减小 train_batch_size_tokens(如 2048)、store_batch_size_prompts(如 4)、n_batches_in_buffer(如 8)。
相关资源与工具
可在 neuronpedia.org 浏览预训练 SAE 特征,特征按 SAE ID 索引(例如 gpt2-small 第 8 层特征 1234 对应 neuronpedia.org/gpt2-small/8-res-jb/1234)。
关键类:SAE(稀疏自编码器模型)、LanguageModelSAERunnerConfig(训练配置)、SAETrainingRunner(训练循环管理)、ActivationsStore(激活收集与批处理)、HookedSAETransformer(TransformerLens 与 SAE 集成)。
参考资料文件:references/README.md(概览与快速开始)、references/api.md(完整 API 参考)、references/tutorials.md(训练、分析、引导的分步教程)。
外部教程:Basic Loading & Analysis、Training a Sparse Autoencoder、ARENA SAE Curriculum。论文:Towards Monosemanticity(Anthropic, 2023)、Scaling Monosemanticity(Anthropic, 2024)、Sparse Autoencoders Find Highly Interpretable Features(Cunningham et al., ICLR 2024)。官方文档:SAELens Docs、Neuronpedia。
SAE 架构:Standard(ReLU + L1 惩罚,通用);Gated(学习门控机制,更好的稀疏控制);TopK(恰好 K 个活跃特征,稀疏性一致)。
限制
资料未提供收费、价格与平台可用性相关信息。其他未在资料中说明的能力、效果或步骤,暂未提供。