Chapter 8

Dictionary learning and sparse autoencoders

Neurons mix many concepts. Superposition says why. This chapter shows the main tool that tries to undo superposition: a sparse autoencoder. We follow it from a 1996 neuroscience idea to 34 million features inside Claude 3 Sonnet, and then to the hard critiques of 2025.

In short

  • A model may store many sparse features as overlapping directions. If so, we can try to find a big list of directions (a dictionary). Each activation should then be a sum of only a few of them.
  • A sparse autoencoder (SAE) learns this dictionary. It has one wide hidden layer. It must rebuild its input while keeping most hidden units at zero.
  • From 2022 to 2024, SAEs went from toy data to a 1-layer model (Anthropic, 2023) to Claude 3 Sonnet and GPT-4 (2024). They found clear features: Arabic script, DNA, the Golden Gate Bridge, code bugs, flattery.
  • Better versions followed: TopK, Gated, JumpReLU, BatchTopK, Matryoshka. Open suites such as Gemma Scope made SAEs available to everyone.
  • Critiques followed too. SAE features change with the random seed. Broad features get "holes". Much of the activation is left unexplained. For known concepts, plain linear probes often work better.
  • Today SAEs are seen as a useful but lossy lens. They are best for discovering unknown things, for example in model audits. Their descendants (transcoders) power circuit tracing in Chapter 9.
Learning path · Chapter 8 of 12 · about 45 min · 3 widgets · 4 quizzes

Before you start: Chapter 3: the superposition hypothesis and its three ways out; Chapter 4 for the residual stream and MLP layers.

You will learn:

  • what dictionary learning is, and its roots in neuroscience
  • how a sparse autoencoder (SAE) works, by training a toy one in your browser
  • what SAEs found in a one-layer model, in Claude 3 Sonnet (Golden Gate Claude) and in GPT-4
  • the better SAE designs (TopK, JumpReLU, Matryoshka) and how to grade an SAE
  • the critiques of 2024–2025, and where SAEs still help

Why we need a dictionary

Chapter 7 showed that you can read and write a concept, if you know which concept to look for. But how do you find concepts that nobody thought of? Chapter 3 ended with a problem. Many neurons are polysemantic: one neuron fires for cat faces, car fronts and some text. The superposition hypothesis explains this. The model wants to store more features than it has neurons. Most features are off most of the time. So the model packs them into directions that are almost, but not fully, at 90 degrees to each other.

If this is true, then the neuron is the wrong unit to study. The right units are the feature directions. But we do not know them. We only see the activation vectors. So we have a puzzle:

The puzzle

Given millions of activation vectors, find a long list of directions d₁, d₂, …, dm such that every activation is (almost) a sum of a few of these directions, each with a positive strength.

x ≈ b + f₁·d₁ + f₂·d₂ + … + fm·dm,   with most fi = 0

The list of directions is called a dictionary. Each direction is an atom (or "feature", or "latent"). The numbers fi are the code. The code is sparse: most entries are zero. The dictionary is overcomplete: it has more atoms than the activation has dimensions. This is necessary, because superposition means there are more features than dimensions.

NEURON BASIS (dense) DICTIONARY BASIS (sparse) 8 neurons — all active, each mixes concepts neuron 3 top examples: “def f(x):” · “<div>” · “aGVsbG8=” · “https://” → code? HTML? base64? URLs? (polysemantic) base64 URL 20 features — only 2 active, each has one meaning same activation, rewritten: x ≈ 2.1 · dbase64 + 1.0 · dURL + bias → readable: “this token is inside a base64 URL”
Figure 8.1. The same activation in two bases. Left: the neuron basis. Every neuron is a little bit on, and each neuron mixes several concepts. Right: a sparse dictionary with more atoms than neurons. Only two atoms are on, and each has one meaning. (Schematic; the base64 example comes from Towards Monosemanticity.)

An old idea: sparse coding

Dictionary learning did not start with language models. It started in neuroscience and signal processing.

1996
Bruno Olshausen, David Field · Nature
They wrote each small image patch as a sum of a few "basis functions" from a learned set. They penalized the code to keep it sparse. The learned functions looked like oriented edge detectors, very similar to cells in the visual cortex (V1).

The objective in that paper is the same objective that an SAE uses: rebuild the input well, and use few active atoms. The difference is speed. Classic sparse coding solves a small optimization problem for each input to find its code. An SAE learns an encoder that guesses the code in one pass. The Anthropic team called this "amortized" sparse coding: you pay the cost once, during training.

Classic algorithms for this problem include K-SVD (2006) and online dictionary learning (Mairal et al., 2009). These give better codes for each input, but they do not scale to billions of activations and millions of atoms. SAEs give up a little quality to gain a lot of scale.

Words as sums of meanings

2016
Sanjeev Arora, Yuanzhi Li, Yingyu Liang, Tengyu Ma, Andrej Risteski · TACL 2018
A word with many senses, such as "tie", has an embedding that is roughly a weighted sum of one vector per sense. Sparse coding over all word vectors found about 2,000 "atoms of discourse", and each word used only a few of them.

This was the SAE idea in small form, on static word vectors: one vector is a linear superposition of several meanings, and sparse coding can pull them apart.

2021
Zeyu Yun, Yubei Chen, Bruno Olshausen, Yann LeCun · DeeLIO workshop, NAACL
They applied sparse coding with one shared dictionary to BERT's hidden states at all layers. Atoms ("transformer factors") from low layers captured word-level meanings. Middle layers captured sentence patterns. High layers captured long-range structure.

Note the name Olshausen on both the 1996 paper and the 2021 paper. The line from neuroscience to language models is direct.

1996Olshausenimage patches→ edge atoms 2016Arora et al.word vectors→ word senses 2021Yun et al.BERT layers→ factors 2022Sharkey et al.toy data, knownfeatures → SAE works 2023Cunningham;Bricken et al.Pythia, 1-layer 2024Templeton; GaoClaude 3 Sonnet,GPT-4 (16M–34M) neuroscience & embeddings frontier language models
Figure 8.2. The road from sparse coding of images to sparse autoencoders on frontier models.

How a sparse autoencoder works

A sparse autoencoder is a small neural network with three parts. It reads one activation vector x from the model, for example the residual stream at one token. Let x have n numbers. The SAE has m hidden units, with m much larger than n.

  1. Encoder. Subtract a bias. Multiply by a matrix Wenc. Add a bias. Apply ReLU. The result is the feature vector f, with m numbers. Most of them are zero.
  2. Decoder. Multiply f by a matrix Wdec and add a bias. The result is x̂ ("x-hat"), the rebuilt activation.
  3. Loss. Training punishes two things: the rebuild error, and the size of f.
f = ReLU( Wenc · (x − bdec) + benc )
x̂ = Wdec · f + bdec  =  bdec + Σi fi · di
Loss = ‖x − x̂‖² + λ · Σi fi · ‖di‖

Here di is column i of the decoder. Each decoder column is one feature direction. In the words of Chapter 3: di is the feature direction Wi, fi is the feature activation xi, and x is the activation vector. In the toy model of Chapter 3, we could read the directions from the model's own weights. A real model has no such matrix, so the SAE learns one. The rebuild is "a bias plus a few feature directions, each scaled by how strongly that feature is on".

The two parts of the loss pull in opposite directions:

Why multiply by ‖di‖, the length of the decoder column? Without it, the SAE could cheat. It could make fi tiny and make di huge, so the penalty would be near zero. The 2023 Anthropic paper stopped this by fixing every decoder column to length 1. Their 2024 update put the length into the penalty instead.

activation x n numbers (e.g. 512) Encoder W_enc, ReLU features f (sparse) m numbers (e.g. 4,096 – 34 million) — most are 0 f₁₃₇ f₂₀₈₁ f₃₉₀₂ … thousands more, all zero … Decoder columns = feature directions dᵢ rebuild x̂ n numbers loss = ‖x − x̂‖²  +  λ · (sum of feature sizes) ≈ x
Figure 8.3. SAE anatomy. A narrow, dense activation is expanded into a very wide, sparse feature vector, then compressed back. The loss asks for a good copy (x̂ ≈ x) with few active features. Sizes are from Towards Monosemanticity (512 → 4,096) and Scaling Monosemanticity (up to about 34 million).

Some practical tricks

Try it: train a toy SAE in your browser

This demo copies the logic of the first SAE experiments at a tiny scale. We create 2-dimensional data from 5 hidden directions (the grey rays). Five directions in two dimensions cannot be at 90 degrees to each other. This is superposition. Each data point turns on each hidden direction with probability p, with a random strength.

The SAE does not see the rays. It only sees the points. Press Train. The colored arrows are the SAE's decoder directions. Watch them turn and lock onto the rays.

Interactive · Train a sparse autoencoder
Grey rays: true hidden features. Colored arrows: learned decoder directions (dashed = dead). Small dots: data. Hover a dot to see which features the SAE turns on for it. The arrows start bunched together. Dead units are resampled onto badly rebuilt points every 1,000 steps. This is a sped-up version of the resampling trick from Towards Monosemanticity.
Things to try:
• Train with the defaults. The match score goes near 1.
• Set m = 3. Too few atoms: some arrows sit between two rays. They are polysemantic.
• Set m = 8. Extra atoms die or duplicate.
• Set λ = 0 during training. Codes get dense and arrows drift.
• Set λ = 0.5. Codes get very sparse, but the rebuild error rises.
• Raise p. Features overlap more often, and recovery gets harder.
• Try TopK, k = 1 a few times. Sometimes an arrow never wins and dies.

What you see is the core claim of dictionary learning. If the data really is a sparse sum of directions, an SAE can find those directions without being told what they are. The "match" score is the mean, over true directions, of the best cosine similarity with any learned arrow. Sharkey and colleagues used the same score (they called it MMCS, mean max cosine similarity) in 2022.

Why the toy is easy

Here we know the true features, so we can check the answer. In a real model we do not know them. We also do not know how many there are. A real model may have far more features than any SAE can hold. And some features may not be directions at all. Keep this gap in mind for the critiques later.

Proof of concept: 2022 and 2023

2022
Lee Sharkey, Dan Braun, Beren Millidge · LessWrong, December 2022
Synthetic data with 512 known features in 256 dimensions, about 5 active at a time. A simple ReLU + L1 autoencoder recovered the true features well, not only the reconstruction.

This report used the same idea as the demo above, at a larger scale. It also asked: how do we know the right dictionary size? Their answer: as the size passes the true number of features, recovery stops improving, and dictionaries of nearby sizes start to agree. This report started the SAE agenda.

2023
Hoagy Cunningham, Aidan Ewart, Logan Riggs, Robert Huben, Lee Sharkey · ICLR 2024
SAEs on the residual stream of Pythia-70M and Pythia-410M. SAE features scored higher on automatic interpretability (an LLM labels each feature, then tests the label; see below) than neurons, PCA, ICA and random directions.

Cunningham et al. also did a causal test. On the indirect object identification task, they patched SAE features. They found that a smaller set of SAE features explained the behaviour than with other ways to split the activations. This was early evidence that SAE features are not only readable, but also useful units for circuits.

Towards Monosemanticity (Anthropic, 2023)

2023
Trenton Bricken, Adly Templeton, Joshua Batson, Brian Chen, Adam Jermyn, … Chris Olah · Anthropic, October 2023
An SAE on the 512 MLP neurons of a one-layer transformer. Dictionaries from 512 to 131,072 features. Thousands of clear, specific, causally active features that no single neuron shows.

This paper made dictionary learning the central method of the field. The setup was simple on purpose:

For each famous feature, the authors checked four things. Is it specific (when it fires, is the concept there)? Is it sensitive (when the concept is there, does it fire)? Does it cause the expected outputs? And is it absent from neurons (does no single neuron do the same job)?

Interactive · A small feature browser
Famous features from Anthropic's 2023 and 2024 papers. The token highlighting is an illustrative recreation of the behaviour each paper reports, not real activation data.

What they measured

The key result

Only 512 neurons can represent tens of thousands of features. The Hebrew-script feature is a striking case: it did not appear in the top examples of any neuron. In the neuron basis it was invisible. In the dictionary basis it was clear.

Feature splitting

When the dictionary grows, features do not simply get added. Existing features split into finer ones. In the 512-feature run there was one base64 feature. In the 4,096 run there were three. In the 16,384 run there were many. A general feature for "the" in mathematical text split into versions for machine learning ("the dataset", "the classifier"), abstract algebra ("the quotient", "the subgroup") and physics ("the gauge", "the Lagrangian").

run A/0 · 512 features run A/2 · 16,384 features “the” in math text A/0/341 machine learningA/2/15021 predicts “the dataset”, “the classifier” abstract algebra, topologyA/2/4878 predicts “the quotient”, “the subgroup” gravitation, field theoryA/2/2609 predicts “the gauge”, “the Lagrangian” … plus other children. Same concept region, finer resolution.
Figure 8.4. Feature splitting. A bigger dictionary shows the same region of concept space at a finer "resolution". There is no single correct size.

The authors saw feature splitting as a feature, not a bug: different sizes give different zoom levels. But it also means the list of features is not unique. This point comes back in the critiques.

Other findings

Limits

The model had one layer. "Loss recovered" depends on the baseline: replacing the MLP with zeros is a very bad baseline, so a high percentage can look better than it is. And the authors left open whether features are "real" parts of the model or only a useful description.

Scaling Monosemanticity and Golden Gate Claude (2024)

2024
Adly Templeton, Tom Conerly, Jonathan Marcus, Jack Lindsey, Trenton Bricken, … Chris Olah, Tom Henighan · Anthropic, May 2024
SAEs with about 1M, 4M and 34M features on the middle layer of a production model. Features were multilingual, multimodal and abstract. Some were relevant to safety.

Seven months later, the same team applied the method to Claude 3 Sonnet, a frontier model. Some choices changed:

What the features looked like

Features as steps of reasoning

For the prompt "The capital of the state where Kobe Bryant played basketball is", the authors ablated features to see which ones mattered. The top ones were Kobe Bryant (1M/391411), LA Lakers, Los Angeles, California (1M/81163) and "capital". You can almost read the chain: Kobe → Lakers → Los Angeles → California → capital → Sacramento. Chapter 9 shows how attribution graphs made this kind of chain much more precise.

Feature completeness

Claude 3 Sonnet can name all the London boroughs. But only about 60% of them had their own feature in the 34M SAE. Whether a concept gets its own feature depends on how often it appears in training data. Rare concepts need much larger dictionaries. So the model holds many more features than even 34 million.

Golden Gate Claude

The most famous result is a steering experiment. Feature 34M/31164353 fires on the Golden Gate Bridge: on its name in many languages, on descriptions of it, and on pictures of it. The authors clamped this feature to 10 times its usual maximum value, on every token. Clamping means: run the SAE, set this one feature to a fixed value, decode, and put the result back into the model.

residual stream (middle layer) SAE encoder Golden Gate feature 0.8 → 10 × max SAE decoder Q: “What is your physical form?” A (paraphrase): “I am the Golden Gate Bridge … my physical form is the iconic bridge itself.”
Figure 8.5. Clamping one feature. The answer is a paraphrase of the behaviour reported in the paper: with the feature clamped high, the model described itself as the bridge.
The authors search the 34M dictionary for a feature that fires on the Golden Gate Bridge. They check that it fires on the name in many languages and on images, and rarely elsewhere.
During every forward pass, they encode the middle-layer residual stream, set feature 34M/31164353 to 10× its maximum activation, decode, and continue the forward pass with the edited vector (plus the SAE's error term, so other information is kept).
The model brings the bridge into almost every answer. Asked about its physical form, it says that it is the Golden Gate Bridge. Asked for a recipe or a love story, it finds a way to mention the bridge. In the public demo, asked how to spend $10, it suggested driving across the Golden Gate Bridge and paying the toll. A love story became a car that longs to cross its beloved bridge on a foggy day.
In May 2024 Anthropic put this version online as Golden Gate Claude for about a day. Many people tried it. It was a public, vivid proof that a single feature direction can control a frontier model's behaviour.

Clamping a "transit infrastructure" feature (1M/3) to 5× had a similar, smaller effect: the model mentioned a bridge where it normally would not. These steering results matter because they are causal. The features are not only correlated with concepts. Changing them changes what the model does.

Limits

The SAE leaves a lot unexplained (the "dark matter", see below). Attention layers were not covered. Most features are dead at 34M. And a feature in the SAE is not guaranteed to be a unit that the model itself uses.

OpenAI's TopK SAEs and scaling laws (2024)

2024
Leo Gao, Tom Dupré la Tour, Henk Tillman, Gabriel Goh, Rajan Troll, Alec Radford, Ilya Sutskever, Jan Leike, Jeffrey Wu · OpenAI, June 2024
TopK SAEs remove the L1 penalty and keep exactly the k largest features. A 16-million-latent SAE on GPT-4, trained on 40 billion tokens. Clean scaling laws and new evaluation metrics.

OpenAI changed the activation function. A TopK SAE computes the encoder's pre-activations, keeps only the k largest, and sets all others to zero. There is no L1 penalty. The loss is only the rebuild error.

f = TopK( Wenc · (x − b) )    x̂ = Wdec · f + b    Loss = ‖x − x̂‖²

This has clear benefits. You set the sparsity directly: L0 is exactly k. There is no shrinkage, because nothing punishes the size of active features. And tuning is simpler.

Dead latents were a big problem at this scale. Without fixes, up to 90% of latents died. Two fixes brought this down to 7% in the 16M SAE:

The paper also fit scaling laws: the rebuild error falls as a smooth function of the number of latents n and the sparsity k. It proposed metrics beyond rebuild error: the model's loss with the SAE spliced in, how well single latents act as probes for 61 known binary concepts, how well simple n-gram explanations predict latents, and how sparse each latent's effect on the output is.

A trade-off

TopK forces every token to use exactly k features. But some tokens are simple and some are complex. This led to BatchTopK, which keeps the top k × (batch size) values across a whole batch. Easy tokens use fewer features and hard tokens use more. After training, BatchTopK replaces the batch rule with one fixed threshold, so each token's features do not depend on the other tokens in its batch.

Better SAEs: the architecture race

In 2024 and 2025 many groups proposed new SAE designs. Most try to fix two problems of the plain ReLU + L1 SAE: shrinkage, and a poor balance between sparsity and rebuild quality.

VariantWho, whenMain idea in plain wordsReported result
ReLU + L1Anthropic and others, 2023Punish the total size of active features.Works, but shrinks features and has many dead units.
TopKOpenAI (Gao et al.), Jun 2024Only the k loudest features speak.Direct control of L0; good scaling; no shrinkage.
GatedDeepMind (Rajamanoharan et al.), Apr 2024One path decides whether a feature is on. Another path decides how much. Only the first is penalized.About half as many active features for the same rebuild quality.
JumpReLUDeepMind, Jul 2024Each feature has its own learned threshold. Below it: zero. Above it: pass the value through unchanged. Penalize L0 directly.State of the art on Gemma 2 9B at the time; used for Gemma Scope.
BatchTopKBussmann, Leask, Nanda, Dec 2024TopK across the whole batch, so each token can use a different number of features.Better than TopK; about equal to JumpReLU.
MatryoshkaBussmann, Nabeshima, Karvonen, Nanda, Mar 2025Nested dictionaries, like Russian dolls. The first few hundred features must rebuild x alone; then the first few thousand; and so on.Less absorption and splitting; better on practical tasks; slightly worse rebuild. Used in Gemma Scope 2.
End-to-end (e2e)Apollo (Braun et al.), May 2024Do not just copy x. Make the model's final output stay the same when x̂ replaces x.Same model loss with fewer features; features matter more for the output.
ReLU + L1 output shrunk belowthe true value (dashed) JumpReLU θ zero below θ, exact above Gated on/off? how big? × penalty only on theon/off path TopK (k = 3) keep 3 largest,set the rest to 0
Figure 8.6. How the main SAE variants decide which features are on. The dashed diagonal is the ideal "pass the value through" line.

All these designs face the same basic trade-off. Fewer active features per token make each token easier to explain. More active features give a better rebuild. Researchers compare SAEs by plotting this trade-off curve, called the Pareto frontier. A better architecture pushes the curve up: a better rebuild at the same sparsity.

Interactive · The sparsity–fidelity trade-off
Move λ to slide along a ReLU + L1 SAE's curve. The shapes are schematic: they show the reported ordering (newer designs sit higher), not real numbers.
Why does an L1 penalty cause "shrinkage"?
L1 adds up the absolute values of the features. Any active feature costs penalty in proportion to its size, so the SAE prefers slightly smaller values and accepts a slightly worse rebuild. TopK and JumpReLU avoid this because they do not punish the size of active features.

How do we grade an SAE?

We cannot compare SAE features to the "true" features, because nobody knows them. So the field uses several indirect scores.

MetricWhat it measuresSimple definition
L0SparsityAverage number of active features per token. Lower is sparser.
Fraction of variance explainedRebuild quality1 − (rebuild error) ÷ (spread of the activations). 1.0 is a perfect copy. The second term is the fraction of variance unexplained (FVU); lower FVU is better.
Loss recovered (or ΔCE, KL)Does the model still work?Splice x̂ into the model. Compare its next-token loss to the clean model and to a model with the layer zeroed.
Dead / dense latentsWasted capacityShare of features that never fire, or fire on a large share of tokens.
Auto-interp scoreReadabilityAn LLM explains a feature. Another LLM uses the explanation to predict where it fires. Score the predictions.
Sparse probingConcept recoveryCan one (or a few) features predict a known label, such as the language of the text?
Absorption, erasure, unlearningPractical useTasks from SAEBench: remove a concept, remove a spurious correlation, unlearn a topic.

Automatic interpretability

2023
Steven Bills, Nick Cammarata, Dan Mossing, Henk Tillman, Leo Gao, … William Saunders · OpenAI, May 2023
GPT-4 explained all 307,200 MLP neurons of GPT-2 XL, then simulated each neuron from its explanation. Over 1,000 neurons scored at least 0.8, but most neurons were explained poorly — evidence of polysemanticity.

The method has three steps: explain (show an LLM examples where the unit fires and ask for a short explanation), simulate (give a second LLM only the explanation and new text, and ask it to predict the activation on each token), and score (correlate the predictions with the real activations). Auto-interpretability is the only way to label millions of features.

top examplesof the feature Explainer LLMwrites a label “base64 stringsin URLs” Simulator LLMpredicts activations scorecorrelation real activations on new text ──────▲
Figure 8.7. The explain–simulate–score loop of automatic interpretability.

Simulation is expensive. In 2024, EleutherAI (Paulo, Mallen, Juang and Belrose) built a cheaper open pipeline that explains millions of features with open models. It added new scores: detection (given the explanation, pick which text snippets make the feature fire) and fuzzing (given highlighted tokens, decide if the highlighting is correct). They found SAE latents much easier to explain than neurons.

SAEBench

In March 2025, SAEBench (Karvonen and 14 co-authors) collected eight metrics in one benchmark and released over 200 SAEs across 8 architectures. Its main finding was uncomfortable: better scores on the standard proxy metrics (rebuild at a given L0) do not reliably mean better results on practical tasks. Matryoshka SAEs scored a little worse on the proxies but clearly better on tasks that need clean, separate concepts.

Open SAE suites and tools

Training large SAEs costs a lot. Open releases let many more researchers use them.

The problems with SAEs

From late 2024, careful studies found serious problems. None of them says that SAEs are useless. Together, they say that SAE features are not a clean list of the model's true parts.

1 · Feature absorption

2024
David Chanin, James Wilken-Smith, Tomáš Dulka, Hardik Bhatnagar, Satvik Golechha, Joseph Bloom · NeurIPS 2025
When one concept is part of another, the sparsity penalty makes the specific feature "absorb" the general one, which then fails to fire on some tokens.

Take two concepts: "starts with the letter S" (general) and "the token short" (specific). Every time short appears, both are true. An ideal dictionary would fire both features. But that costs two units of sparsity. The SAE can save one: it lets the "short" feature's direction also include the "starts with S" direction, and it turns the general feature off. The general feature now has a hole. It looks like a clean "starts with S" detector, but it silently fails on short.

IDEAL WHAT SAEs DO (absorption) “starts with S” “short” snakesunspace “starts with S” “short” + S direction snakesunspace hole: “startswith S” silent
Figure 8.8. Feature absorption. The general feature looks clean, but it does not fire where a more specific feature took over its job.

The authors tested this with a spelling task on Gemma 2 2B and other models. They found absorption in hundreds of SAEs, and changing the SAE's size or sparsity did not fix it. This matters for safety. If you use an SAE feature as a detector, for example for "the model is thinking about deception", it may have holes you cannot see. Matryoshka SAEs reduce absorption, because their small, early dictionaries must contain the general features.

2 · Feature splitting and no canonical size

As we saw, larger SAEs split features into finer ones. A related 2024 study trained an SAE on the decoder directions of another SAE (a "meta-SAE"). It could break one latent into parts. So even a single latent is not always an atom. There is no single "right" dictionary.

3 · Dark matter

2024
Joshua Engels, Logan Riggs, Max Tegmark · October 2024
The SAE's error is not random noise. About half of the error vector, and over 90% of its size, can be predicted linearly from the original activation.

The dark matter of an SAE is the part of the activation it fails to rebuild: x − x̂. The study found that this error has structure. Larger SAEs fail mostly on the same inputs as smaller SAEs. So simply making the SAE bigger may not close the gap. Some of the missing part may be features that are not linear directions, such as the circular day-of-the-week features from Chapter 3.

x (real activation) x̂ (SAE rebuild) error part you can predict linearly from x (about half the error; over 90% of its size) error part that is not linearly predictable (smaller, but it hurts the model's loss) Bigger SAEs mostly fail on the same inputs as smaller ones.
Figure 8.9. SAE "dark matter". The leftover error has structure, which suggests the SAE misses whole kinds of features, not only small details.

4 · SAEs on random networks look good too

Heap, Lawson, Farnik and Aitchison (January 2025) trained SAEs on randomly initialized, untrained transformers. The auto-interp scores and rebuild metrics were similar to SAEs on trained models. So a good auto-interp score alone does not prove that the SAE found features that the model computes. The authors suggest that the input tokens themselves can make SAE latents look interpretable, even when the network has learned nothing. Targeted measures of how abstract a latent is can still separate trained from random models, so the scores are not meaningless. But studies now need a random-network baseline.

5 · Different seeds, different features

Paulo and Belrose (January 2025) trained SAEs that differed only in their random seed. For a 131K-latent SAE on Llama 3 8B, only about 30% of features were shared across seeds. ReLU + L1 SAEs were more stable than TopK SAEs. Their conclusion: treat SAE features as "a pragmatically useful decomposition", not as a complete list of the model's true features.

6 · Probes beat SAEs on known tasks

2025
Lewis Smith, Senthooran Rajamanoharan, Arthur Conmy, Callum McDougall, Tom Lieberum, János Kramár, Rohin Shah, Neel Nanda · Google DeepMind, March 2025
To detect harmful intent in new jailbreak styles, plain linear probes reached about 0.999 AUROC out of distribution. Probes built on SAE features did clearly worse out of distribution.

The DeepMind team wanted a practical test: detect harmful user intent in prompts to Gemma 2 9B IT, including in new styles of jailbreak and reworded prompts not seen in training. A dense linear probe on raw activations was almost perfect. A probe on one SAE feature could not even fit the training data. A probe on about 20 SAE features was fine in distribution, but clearly worse on new data. Probes trained on the SAE's rebuild did worse than probes on the raw activation. This means the SAE threw away information about the concept. SAEs trained on chat data closed about half the gap, but still lost. Their message: SAEs are still useful to explore and find unknown concepts, but if you already know the concept and have labels, a plain linear probe wins.

The team wrote that they were "deprioritising fundamental SAE research for the moment". Other studies agreed. AxBench (January 2025) found that SAEs did worse than simple baselines, such as prompting or difference-of-means directions, for detecting and steering concepts. A study of sparse probing over more than 100 datasets (Kantamneni, Engels and colleagues, February 2025) found that SAE probes did not reliably beat plain probes when data was scarce, labels were noisy, classes were imbalanced or the distribution shifted.

DebateFor "SAE features are real"Against / caveats
EvidencePlanted features are recovered in toy data. Features match across models A and B. Clamping a feature (Golden Gate) changes behaviour. Features are multilingual and multimodal. SAEs helped audits find hidden goals.Only about 30% shared across seeds. No canonical size (splitting). Holes (absorption). Large, structured dark matter. Random networks give similar scores. Probes win on known concepts. Some features are not linear.
Common middle viewSAE features are a useful, lossy lens on the model. The model's computation may not be organized as one flat list of features. Use SAEs to find things, then test them in other ways.
An SAE feature fires on "starts with S" for words like "snake" and "sun", but stays silent on "short". A separate "short" feature fires there. What is this called?
This is absorption. The specific feature ("short") absorbed the general direction, so the general feature has a hole. Splitting is about a feature dividing into finer ones as the dictionary grows.

Where SAEs still help

The critiques did not end SAE research. They moved it toward the jobs where SAEs are strongest: discovering things you did not know to look for.

Analogy

An SAE is like a microscope with a blurry, slightly distorted lens. It cannot give you a perfect parts list of the cell. But it can show you that something unexpected is there. Once you see it, you use sharper, targeted tools to confirm it.

Beyond SAEs: the next tools

SAEs describe what is in an activation. They do not directly say how the model computes it. To trace computation, researchers built close relatives of the SAE. Chapter 9 covers them in detail:

DeepMind found that a linear probe beat SAE-based probes for detecting harmful intent on new jailbreaks. What is the most reasonable conclusion?
The SAE loses some concept-relevant information, so a probe trained directly for the known concept does better. But SAEs still helped in discovery tasks, such as finding a hidden objective. This is the "discover unknowns, not act on knowns" view.
In the toy demo, what happens when the dictionary size m is smaller than the number of true directions?
With too few atoms, the SAE has to share atoms between features. This is the same reason real neurons are polysemantic: too few units for too many features.
Key takeaways
  • A sparse autoencoder (SAE) learns an overcomplete dictionary. Each activation becomes a sum of a few feature directions (also called latents).
  • SAEs scaled from toy data to a one-layer model (2023), then to Claude 3 Sonnet (up to 34 million features) and GPT-4 (2024). Many features are clear, multilingual, multimodal and causal (Golden Gate Claude).
  • Newer designs (TopK, JumpReLU, BatchTopK, Matryoshka) reduce shrinkage and absorption. Open suites such as Gemma Scope let anyone use SAEs.
  • SAE features are not a unique, complete list. They change with seed and size, have holes (absorption) and leave structured "dark matter".
  • For a known concept, a plain probe often wins. SAEs are best for discovering unknowns, for example in audits.

Where this leads: SAEs show what is represented, not how one feature causes the next. Chapter 9 builds transcoders and attribution graphs to trace that.

References

  1. Olshausen, B. & Field, D. (1996). Emergence of simple-cell receptive field properties by learning a sparse code for natural images. Nature.
  2. Arora, S. et al. (2018). Linear Algebraic Structure of Word Senses, with Applications to Polysemy. TACL.
  3. Yun, Z., Chen, Y., Olshausen, B., LeCun, Y. (2021). Transformer visualization via dictionary learning.
  4. Elhage, N. et al. (2022). Toy Models of Superposition.
  5. Sharkey, L., Braun, D., Millidge, B. (2022). Taking features out of superposition with sparse autoencoders.
  6. Bills, S. et al. (2023). Language models can explain neurons in language models. OpenAI.
  7. Cunningham, H. et al. (2023). Sparse Autoencoders Find Highly Interpretable Features in Language Models.
  8. Bricken, T. et al. (2023). Towards Monosemanticity. Anthropic.
  9. Anthropic (2024). Circuits Updates — April 2024 (SAE training update).
  10. Templeton, A. et al. (2024). Scaling Monosemanticity. Anthropic.
  11. Anthropic (2024). Golden Gate Claude.
  12. Gao, L. et al. (2024). Scaling and evaluating sparse autoencoders. OpenAI.
  13. Rajamanoharan, S. et al. (2024). Improving Dictionary Learning with Gated Sparse Autoencoders.
  14. Rajamanoharan, S. et al. (2024). Jumping Ahead: Improving Reconstruction Fidelity with JumpReLU Sparse Autoencoders.
  15. Bussmann, B., Leask, P., Nanda, N. (2024). BatchTopK Sparse Autoencoders.
  16. Bussmann, B. et al. (2025). Learning Multi-Level Features with Matryoshka Sparse Autoencoders.
  17. Braun, D. et al. (2024). Identifying Functionally Important Features with End-to-End Sparse Dictionary Learning.
  18. Lieberum, T. et al. (2024). Gemma Scope. Google DeepMind. · Gemma Scope 2 docs.
  19. He, Z. et al. (2024). Llama Scope.
  20. SAELens · Neuronpedia · EleutherAI sparsify.
  21. Paulo, G. et al. (2024). Automatically Interpreting Millions of Features in Large Language Models.
  22. Karvonen, A. et al. (2025). SAEBench. ICML 2025.
  23. Chanin, D. et al. (2024). A is for Absorption. NeurIPS 2025.
  24. Engels, J., Riggs, L., Tegmark, M. (2024). Decomposing The Dark Matter of Sparse Autoencoders. TMLR.
  25. Heap, T. et al. (2025). Automated Interpretability Metrics Do Not Distinguish Trained and Random Transformers. (first titled "Sparse Autoencoders Can Interpret Randomly Initialized Transformers")
  26. Paulo, G. & Belrose, N. (2025). Sparse Autoencoders Trained on the Same Data Learn Different Features.
  27. Smith, L. et al. (2025). Negative Results for SAEs On Downstream Tasks. Google DeepMind.
  28. Marks, S. et al. (2025). Auditing Language Models for Hidden Objectives. Anthropic.
  29. Wang, M. et al. (2025). Persona Features Control Emergent Misalignment. OpenAI.
  30. Peng et al. (2025). Position: Use Sparse Autoencoders to Discover Unknowns. ICML 2026 (first titled "Use Sparse Autoencoders to Discover Unknown Concepts, Not to Act on Known Concepts").
  31. Dunefsky, J., Chlenski, P., Nanda, N. (2024). Transcoders Find Interpretable LLM Feature Circuits.
  32. Lindsey, J. et al. (2024). Sparse Crosscoders for Cross-Layer Features and Model Diffing.
  33. Ameisen, E. et al. (2025). Circuit Tracing. Anthropic.