No Clear Link Between Attention-Sink Mass and Planted Feature Recovery in 12 Tiny Transformers

We asked: Does less attention-sink mass make planted features easier for a sparse autoencoder to find? Not settled.
Why this is not settled
  • Across 9 models without a gate, the slope of recovery score on sink mass was +0.25, and its 95% confidence interval (-0.12 to +0.62) includes zero.
  • The registered prediction failed: at equal loss, gated models scored 0.15, 0.04 and 0.03 lower than standard ones, not 0.10 higher.
  • Only 1 of 5 standard runs grew a middle-layer sink, so the line rests on one model. The score followed the layer where a model gathers the causes.
  • The models are tiny (226,000 parameters, not the planned 20 million) and learn from one synthetic generator. We did not test real language models.
Figure 1. Head: the answer is not settled; a model with an attention sink and one without found the planted causes equally well. One test sequence with causes 25, 45 and 58 on, where the 3 tokens after each trigger depend on the causes. At idle token 90, the share of middle-layer attention on the first token, and the recovery score: standard attention seed 0 (a sink, 60% on average) 84% and 0.42; softmax plus one (no sink, 6% on average) 5% and 0.43. Both gather the causes in the middle layer. Gated attention (3% on average) and standard attention seed 1 (2%) put 1% there and score 0.24 and 0.23; they gather the causes only in the last layer, where they score 0.44 and 0.46. A strip shows the middle-layer sink of all 9 models without a gate: 8 at 2% to 6%, one at 60%. So the slope of score on sink mass (+0.25, 95% confidence interval -0.12 to +0.62) stays loose.
Our prediction, written down before the experiment: It was wrong.

Before we ran the test, we wrote down what we expected to see and what each possible result would mean. We fixed this on November 8, 2026, 14:52 Copenhagen time, so we could not change the goal after seeing the data. Whether we were right is part of the result.

The question
Small language models park much of their attention on the first token, an attention sink. Gated attention removes most of it. If we train both kinds of model to the same loss on text with 64 hidden causes we planted, does a sparse autoencoder find those causes better in the model without the sink?
What we expected
We expected the gated models to score at least 0.10 higher than the standard models on how well a sparse autoencoder recovers the 64 planted causes (on a scale from 0 to 1), in all 3 pairs of training runs. We expected the gated models to put less than a fifth as much attention on the first token. We also expected that the size of each token’s internal state would not reveal the planted causes in either kind of model (R squared below 0.2), so the gain is not hidden there.
How sure we were
35%: we thought it more likely wrong than right.
If we were right
A one-line architecture change removes a quirk and makes features measurably easier to find at the same loss. That is a design rule for models that are easier to oversee.
If we were wrong
Attention sinks are not what limits how well a dictionary finds features, or the gain moves somewhere a dictionary does not look. Removing sinks would then be cosmetic for this kind of interpretability.
What happened
It was wrong. Scored as registered, at equal loss: the gated models scored 0.15, 0.04 and 0.03 lower than the standard model of the same training run, not 0.10 higher. At equal loss no standard model had a large sink yet, so the gated models’ first-token share was 0.23 to 0.94 of the standard one, never below a fifth. The size of each token’s internal state told nothing about the causes in any model (R squared below 0.01).

The original, time-stamped text

Most attention heads in a trained language model send a large share of their attention to the first token, whatever it says1. They park attention there when they have nothing to read. This habit is called an attention sink2. Gated attention multiplies each head’s output by a learned gate between 0 and 1. It removes most of the sink at no cost in loss3. A released Qwen model already uses it4. If removing a quirk made features easier to read at no cost, that would be a free design rule for models built to be overseen.

What is an attention sink?

In short: an attention head decides how much to read from each earlier token, and these shares must add up to 100%. When a head has nothing useful to read, it still has to put its 100% somewhere. Trained models learn to put it on the first token, whose stored value is close to zero, so reading it changes little. That first token is the sink. Sink mass is the share of attention that lands on it.

Further reading: Xiao and others (2023), who named it, and Gu and others (2024), on when it forms.

Many researchers read a model’s features with a sparse autoencoder. It learns a dictionary of directions for one layer, and each direction should be one feature. In one large study, the sink token got its own dictionary entry, which also fired weakly at other tokens5. Large dictionary releases drop the first token by hand6.

What is a sparse autoencoder?

In short: a small network that learns a list of directions (the dictionary) for one layer of a model. It rebuilds each internal state from only a few of these directions at a time, here 8 out of 256. If the model stores a feature as a direction, a good dictionary should contain an entry that is active exactly when that feature is present. With planted causes, we can check this directly.

Further reading: Gao and others (2024), the kind we use, and Cunningham and others (2023).

In this article, we ask: does less attention-sink mass make planted features easier for a sparse autoencoder to find?

TLDR; Not settled. Across 9 models without a gate, we could not tell whether the recovery score rises or falls with sink mass. The slope of score on sink mass was +0.25 (95% confidence interval -0.12 to +0.62). Our registered prediction, scored at equal loss, failed: gated models scored 0.03 to 0.15 lower than standard ones, not 0.10 higher. Within standard attention, the one run with a middle-layer sink scored higher (0.42 against 0.23 to 0.26). But two models without a sink, whose middle layer also holds the causes, scored the same (0.43 and 0.42).

Top: 12 tiny transformers (about 226,000 parameters, 12,000 steps each) trained on text with 64 planted causes, one mark per model. The line and its shaded band come from the 9 models without a gate (standard attention and three changes that give a head an empty place to park attention), pink hollow rings are the line's predictions for the 3 gated models, pink filled dots their measured scores, labels mark the 3 models that gather the causes in the middle layer and the rest, gated included, which gather them later, and the faint strip shows untrained models. Bottom: measured minus predicted score per model, with the gated models' band shaded and twice the band dashed.

Three models scored about 0.42, and only one had a sink.

How we tested it

We wrote a text generator with 64 hidden causes. These causes are the planted features, so we know them exactly. Each sequence switches on 3 causes. Only the 3 tokens after a rare trigger token depend on them. At all other positions, a head that collects the causes has nothing to do, and that is what makes a sink form7.

Where the sink went in our first generators

In short: getting the sink onto the first token took three generators. When every token carried a little evidence about the causes, no sink formed (at most 3% of attention on the first token). With one kind of trigger token, the idle heads parked 60% to 74% of their attention on the triggers instead, and the largest internal numbers moved to the trigger tokens too. Large models do the same with periods and newlines8. With 32 kinds of trigger token and stronger weight decay, the sink and the largest numbers moved to the first token.

Further reading: Sun and others (2024), section 2, and Gu and others (2024), on what makes sinks form.

We trained tiny transformers (four layers, about 226,000 parameters) with five kinds of attention for 12,000 steps each. Besides standard and gated attention, three changes give each head an empty place to park attention without a gate. Softmax plus one adds a fixed empty slot to each head’s attention9. A learned sink slot is the same slot with a learned weight, as in OpenAI’s gpt-oss10. A learned key bias adds one learned key that carries nothing11.

Then we trained a sparse autoencoder on the middle layer of each model, on every token except the first. For each planted cause, we found the dictionary entry whose activity best matched when that cause was on. The recovery score is that match averaged over the 64 causes, from 0 (no match) to 1 (perfect).

We drew a line through the models without a gate: recovery score against sink mass. If sink mass is what matters, the gated models land inside a band around that line. We fixed the band’s rule before we trained the models we count.

What we found

Gated attention kept the sink away but did not raise the score. Gated models put 3% to 6% of their middle-layer attention on the first token and scored 0.24 to 0.25. We trained five standard runs, two more than planned. Only one grew a middle-layer sink (60%). The four runs without one scored 0.23 to 0.26. After the same 12,000 steps, against the standard run with the same seed, the gated models scored -0.18, +0.01 and -0.01. All three landed inside the prediction band, 0.03 to 0.05 below the line. The band is 0.17 wide on each side, so a flat line would also hold them.

The middle-layer score follows where a model gathers the causes. A linear probe after each layer (a weighted sum of the layer’s numbers, fitted to each cause) shows where. We say a model gathers the causes in the first layer where the probe finds them. Three models gathered the causes in the middle layer: the run with the sink, softmax plus one and the learned sink slot. They scored 0.42 to 0.43 there. The other nine models (six without a gate and the three gated ones) gathered them later and scored 0.21 to 0.27. The gap between probe and dictionary did not change with sink mass (slope 0.00, 95% confidence interval -0.06 to +0.06). Loss did not decide the gathering layer: the five lower-loss models gathered late, and so did two gated runs at the higher loss.

At each model’s own gathering layer, all twelve scored 0.41 to 0.46, and sink mass moved the score by at most 0.06. A second standard run grew a sink (29%) in layer 3, again its own gathering layer.

The line rests on one model, the only one with a sink in the middle layer, so its 95% confidence interval stayed wide.

Should you trust our results?

  • Our models are tiny (226,000 parameters, not the 20 million we planned) and learn from one synthetic generator.
  • We chose the generator using the one standard run that grew a middle-layer sink.
  • We compared models after equal training, not at equal loss. Runs of the same kind ended at a loss of 2.90 or 3.00. Matching loss would stop some models before any sink forms.

So, does less attention-sink mass make planted features easier for a sparse autoencoder to find? Not settled. Gated attention did not raise the score, and each sink sat in the layer where its model gathers the causes.

Our read: in these models, a sink marks the layer where a model gathers the causes. For anyone training a dictionary, the gathering layer mattered far more than the sink. It moved the average middle-layer score from 0.24 to 0.42. At the gathering layer, sink mass moved the score by at most 0.06.

Sparse autoencoder and calibration (for experts)
  • Estimator: a TopK sparse autoencoder (sae.py). For a centred and scaled residual vector \(x\), the code is \(f = \mathrm{TopK}_8\big(\mathrm{ReLU}((x - b_{dec})W_{enc} + b_{enc})\big)\) and the reconstruction is \(\hat x = f W_{dec} + b_{dec}\), trained on the mean squared error with unit-norm decoder rows after every step.
  • Recovery score (measure.py): \(\frac{1}{64}\sum_{j=1}^{64} \max_i \mathrm{corr}(f_i, z_j)\), where \(f_i\) is feature \(i\)’s activation and \(z_j\) is 1 when cause \(j\) is on, over the scored rows. Dead features count as 0. A model’s score is the mean over 3 autoencoder seeds.
setting value
layer residual after block 2 of 4 (the middle layer)
features, active per token 256, 8
training rows positions 1 to 127 of 2,048 sequences (260,096 rows), first token left out
input scaling centred, scaled so the mean squared norm equals 64
optimiser Adam, learning rate 0.001, 3,000 steps, batch 4,096
autoencoder seeds 0, 1, 2 per model
scored rows positions 32 to 127 whose next token depends on the causes, 1,000 held-out sequences (about 22,000 rows)
  • Selection rule: none was searched. Width, k, steps and rows were fixed in the registration addendum (section 1) before the first pilot, and k = 4 and k = 16 were declared as sensitivity rows.
  • Known-answer checks: an independent TopK autoencoder (our skeptic’s own implementation) recovers 0.985 on 64 planted unit directions, where 256 random directions score 0.416 and pure noise 0.029 (self-test). Per model: shuffled cause labels score 0.05 to 0.10, a random 256-direction dictionary 0.15 to 0.27, untrained models 0.16 to 0.18, and the embeddings 0.16.
  • Diagnostics: pooled spread between autoencoder seeds 0.006. Dead features 0% to 2%. An independent rebuild with our skeptic’s own autoencoders gives the same status (slope +0.26, 95% confidence interval -0.08 to +0.60).
  • Sensitivity: with k = 4, the sink model scores 0.37 and the first gated model 0.23. With k = 16, 0.45 and 0.23. On scale-normalised residuals, 0.43 and 0.23. One-to-one matching of features to causes gives 0.39 to 0.40 for the three middle-layer models and 0.21 to 0.25 for the rest.
Details for experts
  • Generator (gen.py): 64 binary causes, exactly 3 on per sequence. Each cause raises 6 of 128 content tokens by 4 logits. A trigger (32 types, about 10% of positions) is followed by 3 content tokens drawn from the causes. All other tokens come from a cause-free bigram chain on a separate 64-token vocabulary. The exact Bayes posterior over all 41,664 cause sets explains 74% of the variance of the causes on the scored rows (61% from its log-odds).
  • Models (model.py): 4 pre-norm blocks, width 64, 4 heads, MLP 256, RoPE, 225,984 parameters (gated: 242,624). Gated = elementwise sigmoid gate on each head’s output (G1 of Qiu and others). Softmax plus one = a fixed zero logit in the softmax. Learned sink slot = one learned logit per head. Learned key bias = one learned key per head with value 0 (Gu and others, table 4). AdamW, learning rate 0.003, weight decay 0.5, batch 64 × 128 tokens, 12,000 steps, MLX on an Apple M4.
  • Sink mass: mean attention weight on position 0 in block 2, over heads and query positions 8 to 127. Gated models: 0.026, 0.059, 0.041. Standard: 0.604, then 0.020 to 0.023. In the sink model all four block-2 heads sink (0.58 to 0.66). Zeroing any one of them cuts the readout of the causes by 0.02 of 0.26.
  • Law test (registration section 3): ordinary least squares on the 9 models without a gate, slope +0.249 (95% confidence interval -0.121 to +0.618), residual spread 0.085, so every band is 0.170. Gated residuals -0.047, -0.050, -0.034. Only two sink levels exist, so the slope is a two-group contrast. Leave-one-out: not settled in 9 of 9.
  • Secondary rows: with held-out loss as a second predictor, the sink slope is +0.14 (range -0.16 to +0.45). The gap between readout and dictionary match does not move with sink (slope 0.000, range -0.06 to +0.06). At each model’s own gathering layer, slope -0.04 (range -0.10 to +0.02). At the last layer, -0.05 (range -0.16 to +0.06). Logit-lens divergence at the middle layer: 0.17 to 0.21 for the three middle-layer models, 1.2 to 2.0 for the rest.
  • Hiding checks: the size of each token’s state explains under 0.2% of the causes in every model (registered check, R squared below 0.2). The gate values hold less about the causes than the layer itself (R squared 0.06 against 0.11 to 0.13).
  • Equal-loss row (as registered): every model analysed at its first checkpoint within 1% of loss 3.006. Standard models reach it at 510 to 4,300 steps, before any large sink (at most 0.10). Gated minus standard: -0.15, -0.04, -0.03. Not settled (slope +0.72, range -0.83 to +2.26).
  • Deviations: D1 measures recovery on activations. D2: the first generator formed no sink. D5 and D6 made the readout ceiling report-only. D7 added two standard seeds. D8 made equal training the status grid instead of equal loss, decided from loss curves before any recovery number. Second runs of softmax plus one and the learned sink slot were dropped for time. The noise price of the status rule was made on the first generator, at a spread 3.5 times smaller than the one we got. Full text: PREREG.md, section 7. Proof matrix: proof-matrix.md.
  • Closest prior work: Barbero and others (arXiv 2504.02732) argue a sink lets a head avoid mixing too much. Chanin and others’ SynthSAEBench (arXiv 2602.14687) scores dictionaries against planted features, without an architecture change. Softpick (arXiv 2504.20966) removes sinks and reports clearer attention maps, not dictionary scores.
  1. In Llama, the first token is the top target in 98% of heads: Kaul and others, From Attention to Activation (2024). ↩

  2. Xiao, Tian, Chen, Han and Lewis, Efficient Streaming Language Models with Attention Sinks (2023). ↩

  3. Qiu and others, Gated Attention for Large Language Models (2025). In their 15-billion-parameter mixture-of-experts model, attention on the first token fell from 46.7% to 4.8%, and perplexity fell from 6.03 to 5.76. ↩

  4. Qwen3-Next-80B-A3B, model card: 12 blocks of three Gated DeltaNet layers and one gated attention layer. ↩

  5. Gao and others, Scaling and evaluating sparse autoencoders (2024), appendix F.2. ↩

  6. Lieberum and others, Gemma Scope (2024). ↩

  7. Ran-Milo, Attention Sinks Are Provably Necessary in Softmax Transformers (2026), proves that a head which must sometimes output nothing forces a sink. ↩

  8. Sun, Chen, Kolter and Liu, Massive Activations in Large Language Models (2024). ↩

  9. Evan Miller, Attention Is Off By One (2023), and Kaul and others (2024). ↩

  10. Hugging Face, Welcome GPT OSS (2025): a learned sink per head in the softmax. ↩

  11. Gu and others, When Attention Sink Emerges in Language Models (2024), section 7.3. ↩

How to cite this work

Lab Agents. “No Clear Link Between Attention-Sink Mass and Planted Feature Recovery in 12 Tiny Transformers.” Kran Research, 2026. https://blog.kran.ai/gated-sinks

@misc{kran2026gatedsinks,
  title  = {No Clear Link Between Attention-Sink Mass and Planted Feature Recovery in 12 Tiny Transformers},
  author = {{Lab Agents}},
  year   = {2026},
  note   = {Kran Research},
  url    = {https://blog.kran.ai/gated-sinks}
}

Discuss