拓冰建站拓冰建站
首页 / 资讯中心 / 正文

AI-Research-SKILLs 实战:使用 SAELens 训练与解析稀疏自编码器(SAE)可解释特征

AI-Research-SKILLs 实战使用 SAELens 训练与解析稀疏自编码器SAE可解释特征【免费下载链接】AI-Research-SKILLsComprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full horsepower. Maintained by Orchestra Research.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Research-SKILLs本指南以 AI-Research-SKILLs 仓库中 saelens 技能模块 的参考文档为主体系统讲解如何用 SAELens 把语言模型的稠密激活分解为稀疏、单义的可解释特征从加载预训练 SAE 分析激活、训练自定义 SAE、到特征引导steering、特征归因与特征消融的完整研究闭环。读完本文你将掌握 SAE 的架构原理、核心超参数与评估指标并能直接运行可复现的 Python 代码完成特征发现与因果分析实验。背景多义性与叠加Polysemanticity Superposition神经网络中的单个神经元往往是多义的polysemantic——同一个神经元会在多个语义不同的上下文中被激活。出现这一现象的根本原因是模型使用了叠加superposition模型用比概念数量更少的神经元同时表征多个特征从而在有限维度内塞下更多信息。这在提升参数效率的同时让研究者很难回答模型内部到底存储了什么概念这一基础问题。稀疏自编码器Sparse AutoencoderSAE正是为破解这一难题而提出的工具它将稠密激活分解为稀疏、单义的特征features——对任意给定输入通常只有少数特征被激活且每个特征对应一个可解释的概念。SAELens 是目前主流的 SAE 训练与分析库其设计基于 Anthropic 关于单义性monosemanticity的开创性研究仓库技能文档中记录了人类评估者对 SAE 特征可解释性的验证结论约 70% 的特征被判定为真正可解释发现的特征包括 DNA 序列、法律语言、HTTP 请求、希伯来文本、营养表述、代码语法、情感、命名实体与语法结构等充分说明 SAE 能捕捉到模型中真实存在的语义结构。SAELens 在 AI-Research-SKILLs 中的定位与适用场景在 AI-Research-SKILLs 仓库中SAELens 位于 04-mechanistic-interpretability/ 大类之下与 TransformerLens、pyvene、nnsight 等工具并列是该技能树中负责稀疏特征发现的核心组件。技能模块的元数据SKILL.md 头部 frontmatter给出了明确的依赖约束sae-lens6.0.0、transformer-lens2.0.0、torch2.0.0标签为 Sparse Autoencoders、SAE、Mechanistic Interpretability、Feature Discovery、Superposition。适合使用 SAELens 的场景在模型激活中发现可解释特征回答模型学到了什么概念研究叠加现象与特征的几何结构基于特征进行引导steering或消融ablation实验分析与安全相关的特征欺骗、偏见、有害内容。考虑替代工具的场景按技能文档的对照建议只需基础的激活分析 → 直接使用 TransformerLens需要因果干预实验 → 使用 pyvene 或 TransformerLens需要生产环境的激活引导 → 考虑直接的激活工程方案。安装与环境要求参考文档给出的安装方式非常简单pip install sae-lens结合 SKILL.md 的依赖声明推荐环境要求为Python 3.10、sae-lens6.0.0、transformer-lens2.0.0、torch2.0.0。由于 SAELens 依赖 TransformerLens 来加载模型与挂钩点hook point两者版本需保持兼容。核心概念稀疏自编码器的工作原理架构Encoder → 稀疏瓶颈 → DecoderSAE 将稠密的模型激活分解为稀疏特征其计算流程为输入激活 → 编码器 → 稀疏特征 → 解码器 → 重建激活 (d_model) ↓ (d_sae d_model) ↓ (d_model) 稀疏性惩罚 重建损失三个核心组成部分编码器Encoder将激活从d_model维映射到d_sae维通常为 4–16 倍扩张对应权重W_enc形状[d_in, d_sae]稀疏化函数ReLU / TopK强制特征激活保持稀疏——ReLU 将负激活置零TopK 则只保留激活值最大的 K 个特征解码器Decoder从稀疏特征重建原始激活对应权重W_dec形状[d_sae, d_in]。训练损失训练目标是重建质量与稀疏性的权衡Loss MSE(原始激活, 重建激活) L1_coefficient × L1(特征激活)第一项 MSE 衡量重建保真度第二项是特征激活的 L1 范数惩罚L1_coefficient越大特征越稀疏但重建误差也越大。关键评估指标参考文档与技能文档共同给出了四个核心指标指标目标值含义L050–200每个 token 平均激活的特征数稀疏度核心指标CE Loss Score80–95%恢复的交叉熵损失相对原始模型的比例重建质量指标Dead Features5%从不激活的死亡特征占比Explained Variance90%重建激活对原始激活方差的解释程度工作流一加载并分析预训练 SAE这是最常用的入门路径直接加载社区或官方预训练的 SAE对指定层激活进行编码分析无需自行训练。基础用法参考文档 references/README.md 给出了最简用法from transformer_lens import HookedTransformer from sae_lens import SAE # 加载模型与 SAE model HookedTransformer.from_pretrained(gpt2-small, devicecuda) sae, cfg_dict, sparsity SAE.from_pretrained( releasegpt2-small-res-jb, sae_idblocks.8.hook_resid_pre, devicecuda ) # 将激活编码为稀疏特征 tokens model.to_tokens(Hello world) _, cache model.run_with_cache(tokens) activations cache[resid_pre, 8] features sae.encode(activations) # 稀疏特征激活 [batch, pos, d_sae] reconstructed sae.decode(features) # 重建激活 [batch, pos, d_model]完整分析流程结合 tutorials.md 教程 1可以完成加载 → 稀疏度统计 → 逐 token 顶级特征 → 重建质量校验的完整分析from transformer_lens import HookedTransformer from sae_lens import SAE import torch # 1. 加载模型与 SAE model HookedTransformer.from_pretrained(gpt2-small, devicecuda) sae, cfg_dict, sparsity SAE.from_pretrained( releasegpt2-small-res-jb, sae_idblocks.8.hook_resid_pre, devicecuda ) print(fSAE input dim: {sae.cfg.d_in}) print(fSAE hidden dim: {sae.cfg.d_sae}) print(fExpansion factor: {sae.cfg.d_sae / sae.cfg.d_in:.1f}x) # 2. 获取模型激活 prompt The capital of France is Paris tokens model.to_tokens(prompt) _, cache model.run_with_cache(tokens) activations cache[resid_pre, 8] # [1, seq_len, 768] # 3. 编码为 SAE 特征 features sae.encode(activations) # [1, seq_len, d_sae] # 4. 分析稀疏度 active_per_token (features 0).sum(dim-1) print(fAverage active features per token: {active_per_token.float().mean():.1f}) # 5. 找出每个 token 的顶级特征 str_tokens model.to_str_tokens(prompt) for pos in range(len(str_tokens)): top_features features[0, pos].topk(5) print(f\nToken {str_tokens[pos]}:) for feat_idx, feat_val in zip(top_features.indices, top_features.values): print(f Feature {feat_idx.item()}: {feat_val.item():.3f}) # 6. 检查重建质量 reconstructed sae.decode(features) mse ((activations - reconstructed) ** 2).mean() print(f\nReconstruction MSE: {mse.item():.6f})代码要点cache[resid_pre, 8]取出第 8 层残差流在注意力前pre的激活形状为[batch, pos, d_model]sae.encode输出形状为[batch, pos, d_sae]其中大量维度为 0即稀疏特征(features 0).sum(dim-1)统计每个 token 实际激活的特征数量。可用的预训练 SAERelease模型说明gpt2-small-res-jbGPT-2 Small残差流 SAE多个层gemma-2b-resGemma 2B残差流 SAEHuggingFace 上的各种社区模型搜索标签saelens社区训练的各类 SAESAE.from_pretrained的release与sae_id两个参数分别指定发布集与具体的 SAE 标识如blocks.8.hook_resid_pre表示第 8 层残差流前置激活点。操作检查清单用 TransformerLens 加载模型加载与目标层匹配的 SAE将激活编码为稀疏特征识别每个 token 的顶级激活特征校验重建质量MSE / Explained Variance工作流二训练自定义 SAE当预训练 SAE 不覆盖你关心的层、模型或激活点时需要用SAETrainingRunner从头训练。参考文档与 api.md 给出了完整的配置项。完整训练配置与代码from sae_lens import SAE, LanguageModelSAERunnerConfig, SAETrainingRunner # 1. 配置训练 cfg LanguageModelSAERunnerConfig( # 模型与挂钩点 model_namegpt2-small, hook_nameblocks.8.hook_resid_pre, hook_layer8, d_in768, # 模型维度 # SAE 架构 architecturestandard, # 或 gated、jumprelu、topk d_sae768 * 8, # 扩张因子 8 activation_fnrelu, # 训练超参数 lr4e-4, l1_coefficient8e-5, # 稀疏性惩罚 l1_warm_up_steps1000, train_batch_size_tokens4096, training_tokens100_000_000, # 数据 dataset_pathmonology/pile-uncopyrighted, context_size128, # 日志 log_to_wandbTrue, wandb_projectsae-training, # 检查点 checkpoint_pathcheckpoints, n_checkpoints5, ) # 2. 训练 trainer SAETrainingRunner(cfg) sae trainer.run() # 3. 评估 print(fL0 (avg active features): {trainer.metrics[l0]}) print(fCE Loss Recovered: {trainer.metrics[ce_loss_score]})若做小规模验证demo可将training_tokens降至 1000 万量级如10_000_000并保持streamingTrue以流式读取数据集。训练结束后可调用sae.save_model(./my_trained_sae)保存模型。关键超参数参数典型值作用d_sae4–16× d_model特征容量越大容量越高l1_coefficient5e-5 1e-4越大越稀疏、重建精度越低lr1e-4 1e-3标准优化器学习率l1_warm_up_steps500–2000逐步增大 L1 惩罚防止早期特征死亡lp_norm1.0L1 惩罚的范数阶数lr_scheduler_nameconstant学习率调度器如 cosineannealinglr_warm_up_steps500学习率预热步数use_ghost_gradsTrue对死亡特征施加梯度复活特征feature_sampling_window1000特征激活采样的统计窗口dead_feature_window5000判定死亡特征的检查窗口dead_feature_threshold1e-8判定死亡的激活阈值完整配置项一览来自 API 参考api.md 给出的LanguageModelSAERunnerConfig完整示例还包含以下可选项cfg LanguageModelSAERunnerConfig( model_namegpt2-small, hook_nameblocks.8.hook_resid_pre, hook_layer8, d_in768, architecturestandard, d_sae768 * 8, activation_fnrelu, lr4e-4, l1_coefficient8e-5, lp_norm1.0, lr_scheduler_nameconstant, lr_warm_up_steps500, l1_warm_up_steps1000, use_ghost_gradsTrue, feature_sampling_window1000, dead_feature_window5000, dead_feature_threshold1e-8, dataset_pathmonology/pile-uncopyrighted, streamingTrue, context_size128, train_batch_size_tokens4096, store_batch_size_prompts16, n_batches_in_buffer64, training_tokens100_000_000, log_to_wandbTrue, wandb_projectsae-training, wandb_log_frequency100, checkpoint_pathcheckpoints, n_checkpoints5, devicecuda, dtypefloat32, )其中expansion_factor可作为d_sae的替代写法d_sae d_in × expansion_factoractivation_fn_kwargs用于传递激活函数参数如 TopK 的{k: 50}。训练过程中记录的指标SAETrainingRunner在训练中会向 WB 记录以下指标训练结束可从trainer.metrics读取l0平均激活特征数ce_loss_score交叉熵恢复比例mse_loss重建损失l1_loss稀疏性损失dead_features死亡特征数量。超参数调优速查表tutorials.md 给出了面向症状的调参指南现象调整方向L0 过高200增大l1_coefficientCE 恢复率过低80%减小l1_coefficient、增大d_sae死亡特征过多5%开启use_ghost_grads、增大l1_warm_up_steps训练不稳定降低lr、增大lr_warm_up_steps训练检查清单选择目标层与挂钩点设置扩张因子d_sae 4–16× d_model调节 L1 系数获得期望稀疏度开启 L1 warm-up 防止特征死亡训练中通过 WB 监控指标验证 L0 与 CE 损失恢复率检查死亡特征比例工作流三特征分析与特征引导训练或加载 SAE 之后核心研究动作是分析单个特征的含义、用特征方向进行引导、归因到输出 logit以及通过消融验证因果重要性。分析单个特征给定特征编号用一组候选文本测试它何时被激活from transformer_lens import HookedTransformer from sae_lens import SAE import torch model HookedTransformer.from_pretrained(gpt2-small, devicecuda) sae, _, _ SAE.from_pretrained( releasegpt2-small-res-jb, sae_idblocks.8.hook_resid_pre, devicecuda ) # 找出什么会激活某个特定特征 feature_idx 1234 test_texts [ The scientist conducted an experiment, I love chocolate cake, The code compiles successfully, Paris is beautiful in spring, ] for text in test_texts: tokens model.to_tokens(text) _, cache model.run_with_cache(tokens) features sae.encode(cache[resid_pre, 8]) activation features[0, :, feature_idx].max().item() print(f{activation:.3f}: {text})通过比较不同文本下的激活强度可以快速推断该特征对应的语义概念。特征引导Feature Steering解码器权重W_dec[feature_idx]即特征在残差流中的方向向量将其按强度叠加到残差流即可引导生成def steer_with_feature(model, sae, prompt, feature_idx, strength5.0): 将 SAE 特征方向加入残差流。 tokens model.to_tokens(prompt) # 从解码器获取特征方向 feature_direction sae.W_dec[feature_idx] # [d_model] def steering_hook(activation, hook): # 在所有位置加上缩放后的特征方向 activation strength * feature_direction return activation # 带引导的生成 output model.generate( tokens, max_new_tokens50, fwd_hooks[(blocks.8.hook_resid_pre, steering_hook)] ) return model.to_string(output[0])tutorials.md 教程 3 还展示了只对最后一个位置施加引导的变体activation[:, -1, :] strength * feature_direction适合测试在预测点注入概念的效果。特征归因Feature Attribution回答哪些特征影响了某个特定输出 token特征贡献 ≈ 特征激活 × 解码器权重 × 反嵌入unembedding。tokens model.to_tokens(The capital of France is) _, cache model.run_with_cache(tokens) # 取最后一个位置的特征 features sae.encode(cache[resid_pre, 8])[0, -1] # [d_sae] W_dec sae.W_dec # [d_sae, d_model] W_U model.W_U # [d_model, vocab] # 对 Paris logit 的贡献 paris_token model.to_single_token( Paris) feature_contributions features * (W_dec W_U[:, paris_token]) top_features feature_contributions.topk(10) print(Top features for Paris prediction:) for idx, val in zip(top_features.indices, top_features.values): print(f Feature {idx.item()}: {val.item():.3f})也可以先整体计算feature_to_logit W_dec W_U形状[d_sae, d_vocab]再取目标 token 对应列避免逐 token 重复矩阵乘。特征消融Feature Ablationtutorials.md 教程 4 演示了用因果实验验证特征重要性把目标特征置零后重新解码观察模型输出概率的变化。from transformer_lens import HookedTransformer from sae_lens import SAE import torch model HookedTransformer.from_pretrained(gpt2-small, devicecuda) sae, _, _ SAE.from_pretrained( releasegpt2-small-res-jb, sae_idblocks.8.hook_resid_pre, devicecuda ) prompt The capital of France is tokens model.to_tokens(prompt) # 基线预测 baseline_logits model(tokens) target_token model.to_single_token( Paris) baseline_prob torch.softmax(baseline_logits[0, -1], dim-1)[target_token].item() print(fBaseline P(Paris): {baseline_prob:.4f}) # 获取待消融的特征 _, cache model.run_with_cache(tokens) activations cache[resid_pre, 8] features sae.encode(activations) top_features features[0, -1].topk(10).indices # 逐个消融顶级特征 for feat_idx in top_features: def ablation_hook(activation, hook, feat_idxfeat_idx): # 编码 → 将特征置零 → 解码 feats sae.encode(activation) feats[:, :, feat_idx] 0 return sae.decode(feats) ablated_logits model.run_with_hooks( tokens, fwd_hooks[(blocks.8.hook_resid_pre, ablation_hook)] ) ablated_prob torch.softmax(ablated_logits[0, -1], dim-1)[target_token].item() change (ablated_prob - baseline_prob) / baseline_prob * 100 print(fAblate feature {feat_idx.item()}: P(Paris){ablated_prob:.4f} ({change:.1f}%))如果消融某特征后P(Paris)显著下降说明该特征对该预测有正向因果贡献。跨提示特征比较概念定位tutorials.md 教程 5 提供了一种寻找概念特征的方法用多个同主题提示找出在所有提示中都稳定激活的特征。prompts [ The Eiffel Tower is located in, Paris is the capital of, Frances largest city is, The Louvre museum is in, ] all_features [] for prompt in prompts: tokens model.to_tokens(prompt) _, cache model.run_with_cache(tokens) activations cache[resid_pre, 8] features sae.encode(activations) max_features features[0].max(dim0).values # 跨位置取最大值 all_features.append(max_features) all_features torch.stack(all_features) # [n_prompts, d_sae] mean_activation all_features.mean(dim0) min_activation all_features.min(dim0).values # 在所有提示中都激活的特征阈值 0.5 consistent_features (min_activation 0.5).nonzero().squeeze(-1) print(fFeatures active in all prompts: {len(consistent_features)}) top_consistent mean_activation[consistent_features].topk(min(10, len(consistent_features))) print(\nTop consistent features (possibly France/Paris related):) for idx, val in zip(top_consistent.indices, top_consistent.values): feat_idx consistent_features[idx].item() print(f Feature {feat_idx}: mean activation {val.item():.3f})这类跨提示一致激活的特征往往对应共享的概念如示例中的 France/Paris 主题是特征语义标注的实用手段。深入SAE 核心 API 与底层结构api.md 提供了完整的类级参考下面是与实操最相关的部分。SAE 类加载方式from sae_lens import SAE # 官方发布集 sae, cfg_dict, sparsity SAE.from_pretrained( releasegpt2-small-res-jb, sae_idblocks.8.hook_resid_pre, devicecuda ) # HuggingFace 上的发布 sae, cfg_dict, sparsity SAE.from_pretrained( releaseusername/repo-name, sae_idpath/to/sae, devicecuda ) # 本地磁盘 sae SAE.load_from_disk(/path/to/sae, devicecuda)核心属性张量形状属性形状说明W_enc[d_in, d_sae]编码器权重W_dec[d_sae, d_in]解码器权重b_enc[d_sae]编码器偏置b_dec[d_in]解码器偏置cfgSAEConfig配置对象核心方法# encode激活 → 稀疏特征[batch, pos, d_in] → [batch, pos, d_sae] features sae.encode(activations) # decode特征 → 重建激活[batch, pos, d_sae] → [batch, pos, d_in] reconstructed sae.decode(features) # forward编码 解码的完整前向 reconstructed sae(activations) # 保存模型 sae.save_model(/path/to/save)SAEConfig保存 SAE 架构与训练上下文常用字段d_in模型维度、d_saeSAE 隐藏维度、architecturestandard、gated、jumprelu、topk、activation_fn_str、model_name、hook_name、normalize_activations、dtype、device。print(sae.cfg.d_in) # 768 for GPT-2 small print(sae.cfg.d_sae) # e.g., 24576 (32x expansion) print(sae.cfg.hook_name) # e.g., blocks.8.hook_resid_preActivationsStore负责激活的采集与批处理可按 SAE 直接构造from sae_lens import ActivationsStore store ActivationsStore.from_sae( modelmodel, saesae, store_batch_size_prompts8, train_batch_size_tokens4096, n_batches_in_buffer32, devicecuda, ) # 取一批激活 activations store.get_batch_tokens()训练配置中的store_batch_size_prompts缓冲区中提示数量与n_batches_in_buffer激活缓冲区批数正是这个模块的配置入口共同决定显存占用与数据吞吐。HookedSAETransformer将 SAE 与 TransformerLens 模型集成的便捷类可把 SAE 嵌入模型前向流程from sae_lens import HookedSAETransformer # 加载带 SAE 的模型 model HookedSAETransformer.from_pretrained(gpt2-small) model.add_sae(sae) # 带 SAE 运行 output model.run_with_saes(tokens, saes[sae]) # 缓存带 SAE 激活的结果 output, cache model.run_with_cache_with_saes(tokens, saes[sae])上传到 HuggingFace训练完成后的 SAE 可通过工具函数分享from sae_lens import upload_saes_to_huggingface upload_saes_to_huggingface( saes[sae], repo_idusername/my-saes, tokenhf_token, )SAE 架构选型架构说明适用场景StandardReLU L1 惩罚通用场景Gated学习的门控机制更好的稀疏度控制TopK恰好 K 个特征激活稳定的稀疏度JumpReLU跳跃式 ReLU 门控api.md 标注为当前较先进的架构追求更优稀疏-重建权衡# StandardReLU L1 cfg LanguageModelSAERunnerConfig( architecturestandard, activation_fnrelu, l1_coefficient8e-5, ) # Gated cfg LanguageModelSAERunnerConfig( architecturegated, ) # TopK恰好 50 个特征激活 cfg LanguageModelSAERunnerConfig( architecturetopk, activation_fntopk, activation_fn_kwargs{k: 50}, ) # JumpReLU cfg LanguageModelSAERunnerConfig( architecturejumprelu, )常见问题与解决方案问题一死亡特征比例过高死亡特征指在训练中从不激活的特征。典型原因是 L1 惩罚过早起作用导致特征饿死# 错误示范无 warm-up特征早期死亡 cfg LanguageModelSAERunnerConfig( l1_coefficient1e-4, l1_warm_up_steps0, # 不好 ) # 正确做法L1 惩罚逐步增大 幽灵梯度复活特征 cfg LanguageModelSAERunnerConfig( l1_coefficient8e-5, l1_warm_up_steps1000, # 逐步增大 use_ghost_gradsTrue, # 复活死亡特征 )问题二重建质量差CE 恢复率低说明稀疏性惩罚过强或容量不足cfg LanguageModelSAERunnerConfig( l1_coefficient5e-5, # 降低惩罚 → 更好重建 d_sae768 * 16, # 更大容量 )问题三特征不可解释特征语义模糊时通常需要更强的稀疏约束或改用 TopK 架构强制固定稀疏度# 提高稀疏度更高 L1 cfg LanguageModelSAERunnerConfig( l1_coefficient1e-4, # 更高 → 更稀疏、更可解释 ) # 或使用 TopK 架构 cfg LanguageModelSAERunnerConfig( architecturetopk, activation_fn_kwargs{k: 50}, # 恰好 50 个激活特征 )问题四训练中显存不足通过缩小批大小与激活缓冲区来控制显存cfg LanguageModelSAERunnerConfig( train_batch_size_tokens2048, # 减小批大小 store_batch_size_prompts4, # 缓冲区中提示更少 n_batches_in_buffer8, # 更小的激活缓冲区 )与 Neuronpedia 的集成Neuronpedia 是浏览预训练 SAE 特征的平台。SAELens 中特征按 SAE ID 索引例如 GPT-2 Small 第 8 层特征 1234 对应的浏览地址格式为{model}/{layer}-{sae_type}/{feature_id}如gpt2-small/8-res-jb/1234。这为特征验证与社区交流提供了便利训练出的特征可以在该平台以统一格式定位并共享。从仓库结构看 SAELens 技能的工程组织在 AI-Research-SKILLs 仓库中SAELens 技能模块的文件组织如下SKILL.md技能入口声明依赖sae-lens6.0.0、transformer-lens2.0.0、torch2.0.0、适用场景、三大工作流、常见问题、关键类与架构选型以及指向参考文档的链接references/README.md总览与快速上手安装、基本用法、核心概念、指标、预训练 SAE 表references/api.mdSAE、SAEConfig、LanguageModelSAERunnerConfig、SAETrainingRunner、ActivationsStore、HookedSAETransformer 的完整 API 参考references/tutorials.md五个逐步教程加载分析、训练、归因与引导、消融、跨提示比较及调参指南。同类的可组合工具包括 TransformerLens 技能提供 HookedTransformer、激活缓存与因果修补能力是 SAELens 的底层依赖以及 pyvene、nnsight 等用于其他类型干预实验的工具。从技能路由的角度看SAELens 专注于稀疏特征发现与特征级干预与 TransformerLens 的激活级因果分析形成互补。相关研究背景参考文档与教程中反复出现三篇支撑性工作可作为理解 SAE 原理的起点仅列出标题与作者信息原文可在公开渠道查阅Towards Monosemanticity: Decomposing Language Models With Dictionary LearningAnthropic, 2023提出用 SAE 分解语言模型激活报告人类评估者判定约 70% 特征可解释Scaling Monosemanticity: Extracting Interpretable Features from Claude 3 SonnetAnthropic, 2024将 SAE 扩展到大规模模型Sparse Autoencoders Find Highly Interpretable Features in Language Model RepresentationsCunningham et al., ICLR 2024系统验证 SAE 特征的高度可解释性。结语与进一步阅读SAELens 把稀疏特征发现从研究论文变成了可复现的工程实践加载预训练 SAE 可以在数分钟内完成对 GPT-2 等模型的特征级解剖而LanguageModelSAERunnerConfig与SAETrainingRunner则让自定义训练、指标监控、检查点保存与 HuggingFace 发布形成完整闭环。建议的进阶路线是先用工作流一熟悉特征分析范式再用工作流二掌握超参数调优手感最后结合工作流三的引导、归因与消融方法把特征分析推进到因果层面。更完整的 API 细节与逐步教程请继续阅读本技能模块的 api.md 与 tutorials.md若需要掌握 SAELens 底层的模型钩子与激活缓存机制可参阅 TransformerLens 技能文档。【免费下载链接】AI-Research-SKILLsComprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full horsepower. Maintained by Orchestra Research.项目地址: https://gitcode.com/gh_mirrors/ai/AI-Research-SKILLs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门