SAE 把概念拆碎,是不是因为概念本来就不是一根向量?1×0:0014:540:08开场:一个被 SAE 忽略的假设1:27第一部分:标准 SAE 默认一个 feature 是一根方向2:59第二部分:feature splitting 不是偶然坏习惯5:24第三部分:SASA 把稀疏从向量级移到组级7:11第四部分:实验结果说明了什么9:41第五部分:一个时间子空间的例子11:26第六部分:局限在哪里13:01收尾:为什么这篇值得读0:08主持人今天我们继续聊 SAE,但切入点和前几期不太一样。过去几篇论文常问的是:SAE feature 能不能解释行为、能不能被验证、会不会被别的路径绕过去。今天这篇 arXiv 六月四日的论文问得更底层:如果一个真实概念本来就不是一根方向,而是一小片子空间,那标准 SAE 会不会从目标函数上就被迫把它拆碎?0:36嘉宾这篇论文叫「Subspace-Aware Sparse Autoencoders for Effective Mechanistic Interpretability」,来自宾夕法尼亚州立大学的 Seyed Arshan Dalili 和 Mehrdad Mahdavi。它提出的模型叫 SASA,也就是 Subspace-Aware Sparse Autoencoder。论文的核心不是又调了一个 SAE 变体,而是把 feature splitting 这件事解释成一个几何问题:工具假设概念是一根向量,但模型里的概念可能是一组互相配合的维度。1:11主持人所以今天的主问题可以这样说:SAE 里那些看起来像重复、像近邻、像浪费字典名额的 latents,到底只是训练不够好,还是因为我们用错了表示单元?1:27嘉宾先把背景铺一下。标准 SAE 学一个稀疏编码,再用一组 decoder directions 重建激活。直觉上,每个 latent 对应一根方向;这个方向如果足够干净,我们就把它当作一个可解释 feature。这个设定很方便,因为它把复杂激活拆成少数几个方向的线性组合。1:53主持人但这也偷偷塞进了一个假设:概念最好是一维的。比如「拒绝」是一根方向,「情绪」是一根方向,「某种语法模式」也是一根方向。至少在工具的数学结构里,它们都被鼓励变成一根一根的 decoder vector。2:13嘉宾问题是,近年的表示研究越来越多地看到,多数概念不一定是一根线。论文里提到的例子包括时间、年份、颜色这类变量,它们天然带结构。月份不是十二个毫无关系的 token;季节有循环;地理概念有城市、国家、洲的层级。这样的东西更像一个低维子空间,甚至像一个小流形,而不是一根孤立方向。2:47主持人如果真实 feature 是一片二维、三维,甚至更高维的结构,而 SAE 每个 latent 只能给它一根方向,那会发生什么?2:59嘉宾论文的第一层论证是几何的。它说,如果一个概念的内在维度至少是二维,而你的 decoder 每次只能用很少几根方向去覆盖它,那么为了把重建误差压低,就必须用很多方向去「铺」这片子空间。误差要求越小,概念维度越高,需要的方向数就长得越快,论文给的是指数级的覆盖下界。3:27主持人换句话说,假设真实概念像一个圆。标准 SAE 不能直接说「这是一个圆所在的平面」,它只能拿一堆直线去贴近圆周。贴得越细,直线越多。最后你看到的不是一个清楚的「时间子空间」,而是几十个看起来差不多、各自只管一小段的 latents。3:50嘉宾对。论文图一和图二用合成数据把这个画得很直观:圆、球面、螺旋这些概念流形,被 ReLU、TopK、BatchTopK、JumpReLU、Gated 这些向量型 SAE 拆成很多窄窄的 tuning curves;而 SASA 用一个组去覆盖整个子空间。这个对比不是说传统 SAE 完全不能重建,而是说它的可解释单元会变成碎片。4:20主持人但仅仅说「几何上需要很多线」还不够。训练目标有没有可能自己学到那组真正的基底,然后不去拆?4:31嘉宾这就是论文更有意思的第二层论证。作者分析标准 SAE 的重建加稀疏惩罚目标,认为它不只是允许 splitting,而是会偏好 splitting。直观地说,一维一维惩罚的稀疏项,会让真实子空间基底留下一种可以被额外方向继续降低损失的残差。只要加一根对准某个局部区域的新方向,风险就能下降。反复做下去,字典就会向「用很多方向覆盖一个子空间」的状态移动。5:05主持人这点很关键。因为它把 feature splitting 从「训练跑偏了」改写成「目标函数选出来的解」。如果这个判断成立,那我们靠调学习率、加数据、换一点点激活函数,可能只能缓解,不能根治。5:24嘉宾SASA 的设计很直接:既然概念可能是一个子空间,那就让一个 latent group 代表一个子空间,而不是让一个 latent 代表一根向量。具体做法是,每个组有一个小的 decoder block;输入进来以后,不再选 top k 个单独坐标,而是选 top s 个组。组内部可以有多个维度,用来表达这个 feature 的内部变化。5:52主持人也就是说,它不是把「一天、一个月、一年、季节」硬拆成三十多个原子 feature,而是允许一个时间组里有六个向量,这六个向量共同张成一个时间相关子空间。6:09嘉宾论文还加了一个 nuclear norm regularizer,也就是用谱上的惩罚让每个组自己决定有效秩。这个细节重要,因为组不是越大越好。如果一个 feature 只需要两三个方向,模型应该把组里的其余自由度压下去,而不是把它变成新的过拟合空间。6:30主持人所以 SASA 的稀疏性从「每根方向要不要开」变成「每个子空间组要不要开」。一个 token 激活少数组;但每个被选中的组内部,可以保留这个概念本来的几何结构。6:47嘉宾论文里的理论结果也对应这个直觉:当组的大小足够覆盖真实 feature 的内在维度时,一个组不仅能够表示整个 feature slice,而且会成为 SASA 目标的全局最优解。换句话说,标准 SAE 的目标会把子空间拆开,SASA 的目标反过来鼓励把它合并回一个组。7:11主持人我们看实证部分。根据这篇 arXiv 论文,作者在 GPT-2 Small 和 Mistral-7B-v0.1 的 residual stream 激活上训练 SASA。所有实验都跑在单张 A100 八十 G GPU 上。它先用大约一半的 token 预算对比已有标准 SAE,再在 GPT-2 上用相同数据和预算对比多种 SAE 架构。7:36嘉宾核心指标挺有信息量。GPT-2 上,标准 SAE 用三亿 token,SASA 用一亿五千万 token;标准 SAE 的 KL score 和 CE score 是百分之九十八,SASA 是百分之九十七,fraction explained variance 是百分之九十九点一对百分之九十八点八。也就是说,SASA 用一半训练 token,重建类指标几乎贴住。8:06主持人Mistral 那边反而更明显。标准 SAE 用十亿 token,SASA 用五亿 token。SASA 的 KL score 是百分之九十五点三,高于标准的百分之九十三点二;CE score 是百分之九十五点一,高于标准的百分之九十四点一;解释方差也从百分之九十六点七到百分之九十八点六。8:31嘉宾但这篇论文真正想看的不是重建,而是 splitting 和 absorption。它用了 Chanin 等人的 first-letter absorption benchmark。GPT-2 上,平均 absorption 从标准 SAE 的百分之三十七点二降到 SASA 的百分之六点六;full absorption 从百分之四十九点六降到百分之四点七。Mistral 上也从百分之二十四点零降到百分之十八点三,full absorption 从百分之二十三点三降到百分之十一点九。9:03主持人这说明至少在这个 benchmark 上,SASA 确实更少出现那种「主 feature 没开,旁边几个子 feature 把它吸走」的情况。9:14嘉宾还有一个同预算的 GPT-2 对比。TopK-SASA 的 AutoInterp 是零点八三三,略低于 BatchTopK 的零点八四零,但 mean absorption 只有零点零四六,而 BatchTopK 是零点一九二。论文把这个描述成一个更好的平衡:解释分数几乎不掉,但碎片和吸收少很多。9:41主持人最适合口头讲的是论文的时间例子。作者说,在原始 GPT-2 激活里,时间概念本来就有低维结构,九成方差可以被十四维解释。而之前的标准 SAE 结果会把 days、months、years 分别拆成很多 atoms,合起来大约三十五根方向。10:04嘉宾SASA 在 GPT-2 里找到一个 Group 一四七三,用六个向量覆盖一组更通用的时间关系。它不只是对「Monday」或者「January」某一个类别响应,而是对天、月、年、季节这些时间概念都响应。更重要的是,组内 PCA 可以把不同时间类别分开,并保留季节的循环拓扑。10:32主持人这里的解释味道就变了。标准 SAE 给你的可能是「这是十个和年份有关的 feature,那是十六个和月份有关的 feature」。SASA 给你的更像是「这里有一个时间空间,里面的坐标组织了不同时间变量」。10:53嘉宾论文附录还给了地理例子。Mistral 的 SASA Group 一五七零对 geography 很强,AUC 是零点九八,Cohen's d 是四点三六,并且在组内把 city、country、continent 分成不同区域。它也提到一个 sports subspace。虽然这些还需要更多独立复现,但它展示了一个很吸引人的方向:解释对象从「命名一个 feature」变成「读一个小空间的内部结构」。11:26主持人不过这篇论文也有明显边界。第一,实验还没有到最前沿模型规模。GPT-2 和 Mistral 七 B 已经有价值,但如果目标是 Claude 或 Gemini 这类生产模型,训练成本和激活采集仍然很高。11:57嘉宾第二,子空间不等于解释已经完成。论文自己在 Limitations 里说得很清楚:SASA 可以识别 span,但不自动告诉我们这个 span 里面每个坐标是什么意思。你知道这是一个时间子空间,不代表你已经知道里面哪一维对应周期、哪一维对应粒度、哪一维对应语境。12:20主持人第三,它还没有证明这些子空间天然就是更好的因果干预对象。过去几期我们反复看到,检测、解释、控制是三件不同的事。一个 group 更漂亮、更少 splitting,并不自动意味着 clamp 这个 group 就能稳定控制行为。12:41嘉宾这也是后续最关键的问题。论文的 Future work 提到,希望用这些子空间做 inference-time steering 和 intervention。如果这条路能走通,它会连接到一个更大的目标:不只找到可读 feature,而是找到更鲁棒、更可迁移的表示单元。13:01主持人我觉得这篇论文的价值在于,它给 SAE 社区一个很具体的提醒:当我们说「一个 feature」,不要默认它是一根方向。也许很多 feature 是一个小几何对象;标准 SAE 把它拆碎,不一定是训练失败,而是表示假设太窄。13:24嘉宾对我来说,最值得带走的结论有三个。第一,feature splitting 可以有几何和优化上的根源;第二,把稀疏单元从向量改成子空间组,可能显著降低 absorption,同时保持重建质量;第三,即使 SASA 找到更完整的 feature span,解释内部坐标和验证因果作用仍然是开放问题。13:51主持人如果你已经在用 SAE 看模型,这篇论文会改变一个日常判断:看到一簇相似 latents 时,不要急着问「哪一个才是真 feature」。也许更好的问题是:这簇 latent 是否共同铺出了一片本该被整体建模的子空间?14:11嘉宾论文的 GitHub 仓库也已经公开,README 里写明了复现 GPT-2 结果的训练脚本、SAEBench 评估包装,以及一个 GPT-2 layer seven、两千零四十八个组、rank six、每个 token 激活十个组的预训练 SASA checkpoint。想动手检查的人,可以从这个仓库开始。14:33主持人好,这期就到这里。下一次我们继续找那些真正推进 interpretability 方法边界的工作,而不是只看一个漂亮指标。
围绕这条内容继续补充观点或上下文。