# 稀疏自编码器

拉普拉斯的迷你世界 · 图版 F31 · 人工智能

> 研究者认为，一层激活里叠着比数还多的东西。稀疏自编码器把它拆成一条条线，每次只亮几条，名字才起得上。

- 可交互的模型：https://world.lapla.si/zh/features/
- 嵌入页：https://world.lapla.si/embed/zh/features/
- English：https://world.lapla.si/en/features/
- 更新于：2026-10-21

## 01 一座桥的特征

2024 年，Anthropic 的研究者在自家的中型模型 Claude 3 Sonnet 中间一层，训练了一个稀疏自编码器：一本约 3400 万条的“字典”，其中约 1200 万条是“活”的。有一条（编号 34M/31164353）专对金门大桥起反应：提到大桥的文字、几种语言写的维基百科首句，甚至大桥的照片都会触发它，尽管这本字典只用文字训练过。

研究者把这一条钳在它在训练数据里最大值的 10 倍，每个词都钳，再问模型“你的物理形态是什么？”它答：“我是金门大桥，一座横跨旧金山湾的著名悬索桥……”不钳时，它说自己没有物理形态。同年 5 月，一个调高了这条特征的 Claude 对公众开放了 24 小时。台上是同一种方法的缩小版，全部在浏览器里计算。

*Claude 3 Sonnet · 约 3400 万条的字典 · 金门大桥 34M/31164353 · 钳在最大值的 10 倍*

## 02 六样东西，两个数

先看被读的模型。左边的盒子是它的前半：六个输入，我们叫它们雨、花、桥、灯、叶、海，好跟着看；对模型来说，它们只是六个数，每个在二十次里出现一次。模型把它们挤成两个数，示波屏上的亮点就是这两个数。右边的盒子再从这两个数读回六样。

训练给每样东西分了一个方向，相邻的差约 60 度：六个方向挤在一个平面里。特征比维度多，靠的是它们很少同时出现，这叫“叠加”（图版「比神经元更多的特征」讲了它为什么成立）。所以两个数里没有一个只代表一样东西：只看横向的那个数，分不清是桥还是灯。

*六样东西 → 两个数 → 六样东西 · 相邻的方向差约 60°*

## 03 一本更长的字典

稀疏自编码器只看这两个数，从来不知道有六样东西。它有两半：编码器把两个数展开成八条“线”，每条线是一个学出来的方向，输入越对准它，它越亮；解码器把亮着的线按各自的方向加回去，重建那两个数。训练只要求两件事：重建得像，同时亮着的线少。

台上，第一块棱镜把一束光分成八条，射向一个框；框上有 16 根导杆，八条线各占一根，导杆上游标的位置就是那条线的方向，框上的刻线标着六样东西的真实方向（这是玩具，我们知道答案）。第二块棱镜把光合回一束。真实的字典通常比层宽得多：2023 年 Anthropic 拆一个单层模型 MLP 里 512 个神经元的激活，字典从 512 条（和神经元一样多）试到 131,072 条（256 倍），研究得最细的一本 4,096 条。

*编码器 f = TopK(E(h − c) + e) · 解码器 ĥ = D f + c · 2 个数 → 8 条线*

## 04 一次只亮一条

稀疏靠什么？台上用的是 OpenAI 2024 年选用的做法（k-稀疏自编码器，2013 年就有人提出）：每个输入只留最亮的 k 条线，其余归零。k = 4 时，一个有东西的输入平均点亮 2.8 条线，每条线同时回应两三样东西，游标停在刻线之间。k = 1 时，一个输入只亮一条：从同一个起点重新训练，六个游标各自滑到一条刻线上，偏差都不到 2 度，另外两个停在刻线之间。

Anthropic 2023 和 2024 年用的是另一种：把所有线的亮度加起来罚分（L1）。它也管用，但会把亮着的线都压暗一些；只留 k 条就不压暗，亮几条也能直接定。在这个只有两个数、相邻的东西只差 60 度的玩具里，L1 罚分小，线分不开；大到能分开时，重建已经丢掉一半以上的方差。

*k = 4 · 平均 2.8 条，没有一条只认一样 · k = 1 · 6 条对准，偏差都 \< 2°*

## 05 给一条线起名字

线没有名字。要知道一条线代表什么，就把一大批输入（这里 4,096 个）跑一遍，挑出让它最亮的几个。游标停在正中的那条线，最亮的五个输入里都有桥（最亮的一个同时有灯、花和桥），于是叫它“桥”。在这里可以对答案：它的方向和桥的方向只差 0.45 度。

真实模型没有答案可对。2023 年，一位作者在盲评中，按一张满分 14 分的评分表给神经元和特征的激活区间打分：特征区间的中位数是 12，神经元是 0。研究者也让 Claude 读一条特征从强到弱各段的例子，写出解释，再用解释去猜它没见过的例子上的亮度。可名字是读出来的：Anthropic 在 2024 年写道，他们的解释也有可能“对特征真正的作用描述得稍有偏差”。

*桥那条线 · 最亮的 5 个输入都有桥 · 与桥的方向差 0.45°*

## 06 把一条线钳住

名字是猜的，钳住它可以试一试。不按任何键，把桥那条线固定在它最大亮度（2.04）的一半：解码器把这条线的方向加进两个数，右边桥的表头报出 0.78，相邻的灯和花只有 0.17 和 0.20。真实的实验也这样做：只改自编码器重建的那部分，误差原样留着，每个词都钳。

钳到最大值本身，桥的表针打到头（2.00），灯和花也升到 0.78 和 0.84：在两个数里，被用力推的桥也像灯、像花。反过来，按下桥（0.9），把这条线钳到 0，桥的读数从 0.84 落到 0。Anthropic 写道，钳得太极端（比如最大值的 ±100 倍），模型通常会说胡话；他们一般在 −10 到 10 倍之间试。

*钳住桥线 · 最大值的 0.5 倍 → 桥 0.78 · 1 倍 → 桥 2.00、灯 0.78、花 0.84*

## 07 从八条到几千万条

同样的方法，规模大得多。2023 年，Cunningham 等人在 Pythia-70M 和 Pythia-410M 的残差流上训练稀疏自编码器，用 GPT-4 写解释、GPT-3.5 按解释预测亮度：在 Pythia-70M 里，找到的特征比 PCA、ICA 找的方向更好解释，只是越往后的层，优势越小。2024 年，Anthropic 给 Claude 3 Sonnet 训练了约 100 万、400 万、3400 万条三本字典，每个词平均亮不到 300 条；OpenAI 在 GPT-4 上训练了 1600 万条，用了 400 亿个词元。

字典变长，线会分裂。在那个单层模型里，字典从 512 条到 4,096 条再到 16,384 条，专认 base64 编码的线从 1 条变成 3 条，再到更多：一条偏爱字母，一条偏爱数字，一条认编码了普通文字的 base64。台上换成 16 条：六样东西仍是各有一条，多出的有 5 条成了成对线，5 条从来不亮。

*Claude 3 Sonnet · 约 100 万 / 400 万 / 3400 万条 · 每个词亮不到 300 条 · GPT-4 · 1600 万条*

## 08 有些线说不出名字

八条线里，只有六条各对一样东西。另外两条只在两样东西同时出现时才亮：一条最亮的例子是花和雨、花和海，另一条是灯和叶。4,096 个输入里，它们只亮了 11 次和 6 次，起哪个名字都不合适。灯那条线又是另一种：什么都没有的输入上，它也亮着一点点（0.005），一共亮了 77% 的输入。

真实的字典里也有不代表任何东西的线。Anthropic 2023 年那本 4,096 条的字典里，168 条在 1 亿个样本上从来不亮（“死”线），另有 292 条一百万次里亮不到一次；2024 年 3400 万条那本，约 65% 是死的。OpenAI 在不加补救的对照训练里，死线可多达 90%；让编码器从解码器的转置开始，再加一项辅助损失，他们 1600 万条那本里死线只剩 7%。台上的编码器也从解码器的转置开始。

*8 条线：6 条各对一样，2 条成对线，1 条几乎总亮 · Claude 3 Sonnet 3400 万条里约 65% 是死线*

## 09 重建不完全

解码器重建的两个数和原来的不完全一样。台上丢掉的是 1.3% 的方差，几乎全部（98%）来自两样以上东西同时出现的输入：一次只能亮一条线，就只能说出一样东西。差的那一点从黄色的光纤绕过去；钳制的时候，它也原样加回。

真实的模型里差得更多。Claude 3 Sonnet 的三本字典重建出至少 65% 的方差，也就是说，最多 35% 没有被解释。把 OpenAI 1600 万条的重建换进 GPT-4，语言建模的损失相当于只用 GPT-4 预训练算力 10% 训练出的模型。Cunningham 等人把 Pythia-70M 第 2 层的残差流换成重建，困惑度从 25 升到 40。

*台上丢掉 1.3% 的方差 · Claude 3 Sonnet 最多丢掉 35% · GPT-4 换上重建 ≈ 10% 的算力*

## 10 找到不等于看懂

一条线亮，说明它跟着某样东西变，不说明模型拿它做什么。Anthropic 写道：数据集里的例子“不能建立与模型行为之间的因果联系”，一个特征可以总对某样东西有反应，却没有任何作用。他们在 Claude 3 Sonnet 里找到与不安全的代码、讨好、欺骗有关的特征，同时写明，这项工作“没有表明任何特征真的对安全有用”。

字典也远不完整：Claude 3 Sonnet 能列出伦敦所有的区，3400 万条的字典里却只找到约 60% 的区对应的特征；作者认为，离“全部特征”很可能还差几个数量级。训练的目标（重建得像、亮得少）本身也只是“可解释”的替代品。OpenAI 的说法是：在模型的一个位置找到特征，只是解释模型的一步。

## 11 剖开表头

剖开右边的盒子，每个表头后面是一个线圈和一根游丝。两个数推动线圈；游丝预先拧紧，把表针压在零位的挡钉上，推力超过约 0.44 才动。这就是模型最后一步 ReLU(Wᵀh + b)，b 约为 −0.44：小的串扰到不了表针。

这也是钳制时邻居会亮的原因。灯和花的方向与桥只差约 60 度，桥的推力各分到它们一半；桥被推得越狠，这一半就越过挡钉。和桥相对的海，分到的是负的，表针反而压得更紧。

*x′ = ReLU(Wᵀh + b) · b ≈ −0.44 · 推力不到 0.44，表针不动*

## 12 拆开来看

一张光学平台：左边是输入键和示波屏（模型的前半），中间是分光架（稀疏自编码器：两块棱镜和一个 16 根导杆的框），右边是六个表头（模型的后半），一根黄色光纤带着误差绕过去。每一件都可以单独托出来看。

## 13 实验台

字典的长度、一次亮几条、随机起点都可以换，换了就从头训练。左边的六个键是输入；钳制拉杆钳住选中的游标那条线（没选时是桥那条）。读数是这本字典找到几样东西、几条不亮、丢掉多少方差。

**试一试**：把 k 从 4 拉到 1：游标什么时候停到刻线上？再把字典换成 16 条，多出来的线去了哪里？

## 模型省略了什么

这不是语言模型。被读的是一个玩具：六个人为的特征、两个数、一层读出，和 Elhage 等 2022 年的玩具模型同一个形式。它从 12 个随机起点训练过，9 个停在五边形、丢掉一样，台上用的是误差最低的一个（六样都留下）。稀疏自编码器只有 4 到 16 条线，用 Top-k（k 取 1、2、4 或 8），1500 步 Adam，编码器从解码器的转置开始；没有用 OpenAI 的辅助损失，也没有用 Anthropic 的重采样。换一个起点，结果会变：k = 1 时，10 个起点里有 9 个找全六样。名字和颜色是我们起的。真实的字典从几百条到几千万条，读的层有几百个数宽甚至更宽，没有答案可对。

## 一个常见的误解

常有人说，稀疏自编码器让我们读懂了模型在想什么，或者能让模型变安全。它做的是把一层的激活拆成许多方向，其中不少能让人起上名字。名字是解释，不是证明；钳住一条线改变了输出，说明这个方向起作用，不说明模型怎样计算。找到与欺骗有关的特征，不等于知道模型会不会骗人；Anthropic 写明，这项工作“没有表明任何特征真的对安全有用”。

## 常见问题

### Claude 3 Sonnet 的字典有多大？

2024 年，Anthropic 的研究者在自家的中型模型 Claude 3 Sonnet 中间一层，训练了一个稀疏自编码器：一本约 3400 万条的“字典”，其中约 1200 万条是“活”的。

见：[01 一座桥的特征](https://world.lapla.si/zh/features/#bridge)

### 稀疏自编码器是怎么工作的？

它有两半：编码器把两个数展开成八条“线”，每条线是一个学出来的方向，输入越对准它，它越亮；解码器把亮着的线按各自的方向加回去，重建那两个数。

见：[03 一本更长的字典](https://world.lapla.si/zh/features/#dictionary)

### 怎么知道一个特征代表什么？

要知道一条线代表什么，就把一大批输入（这里 4,096 个）跑一遍，挑出让它最亮的几个。

见：[05 给一条线起名字](https://world.lapla.si/zh/features/#label)

### 找到一个特征，就懂了模型吗？

一条线亮，说明它跟着某样东西变，不说明模型拿它做什么。

见：[10 找到不等于看懂](https://world.lapla.si/zh/features/#limits)

## 资料来源

1. [Elhage 等（2022）：Toy Models of Superposition，Anthropic、Harvard（叠加、玩具模型、多义神经元）](https://transformer-circuits.pub/2022/toy_model/index.html)
2. [Sharkey、Braun、beren（2022）：\[Interim research report\] Taking features out of superposition with sparse autoencoders，Conjecture（已知答案的合成数据）](https://www.lesswrong.com/posts/z6QQJbtpkEAX3Aojj/interim-research-report-taking-features-out-of-superposition)
3. [Cunningham、Ewart、Riggs、Huben、Sharkey（2023）：Sparse Autoencoders Find Highly Interpretable Features in Language Models，arXiv:2309.08600（Pythia、自动解释、PCA 与 ICA 对照、困惑度 25 → 40）](https://arxiv.org/abs/2309.08600)
4. [Bricken 等（2023）：Towards Monosemanticity: Decomposing Language Models With Dictionary Learning，Anthropic（单层模型 512 个神经元、512 至 131,072 条、A/1 4,096 条、评分表、死线、base64 的分裂）](https://transformer-circuits.pub/2023/monosemantic-features/index.html)
5. [Templeton 等（2024）：Scaling Monosemanticity: Extracting Interpretable Features from Claude 3 Sonnet，Anthropic（三本字典、死线比例、65% 的方差、金门大桥 34M/31164353、钳制的做法、安全相关特征、局限）](https://transformer-circuits.pub/2024/scaling-monosemanticity/index.html)
6. [Anthropic（2024 年 5 月 23 日）：Golden Gate Claude（开放 24 小时的研究演示）](https://www.anthropic.com/news/golden-gate-claude)
7. [Gao 等（2024）：Scaling and evaluating sparse autoencoders，OpenAI，arXiv:2406.04093（Top-k、GPT-4 上 1600 万条、400 亿词元、不加补救死线可达 90%、1600 万条里 7%、10% 的算力）](https://arxiv.org/abs/2406.04093)
8. [OpenAI（2024 年 6 月 6 日）：Extracting Concepts from GPT-4（“只是解释模型的一步”）](https://openai.com/index/extracting-concepts-from-gpt-4/)

## 数据

The six features, their names and colours, the toy model and the sparse autoencoder are the page’s own (src/topics/features/sim.js; toy.json from bake.mjs). Nothing on the bench is the output of a real language model. Material presets, parts and the softbox studio of the site’s model kit are ported from AirsupHQ/machine-skill (MIT, © 2026 Air Supply Technologies Inc.).

## 许可 CC BY-NC 4.0

本页的文字、图片和模型采用 CC BY-NC 4.0 许可：可以免费用于教学和其他非商业用途，可以修改，请注明出自 world.lapla.si。上面列出的第三方素材仍按各自的许可。

https://creativecommons.org/licenses/by-nc/4.0/deed.zh-hans

## 引用这幅图版

拉普拉斯的迷你世界，图版 F31《稀疏自编码器》，https://world.lapla.si/zh/features/，CC BY-NC 4.0，2026-10-21 更新。
