Telling a model the time, when it already knows

A transformer has no built-in sense of order — shuffle the words and the machinery is unchanged — so every one supplies it from outside, via . We measured what that signal is worth to three kinds of memory and got three different answers, including a negative one: one memory would rather not be told.

Three kinds of memory

Ordinary re-reads the entire past every time it predicts a word. Nothing fades, and nothing about the machinery says which of those words came first, so order has to arrive from outside.

A works differently: it keeps a running summary and edits it as it goes, correcting what it already believed rather than piling new material on top. And a adds one more thing, a learned dial that fades the memory a little before each write, so old content disappears unless something refreshes it.

That last one is worth pausing on. Fading is a way of knowing the time. A memory that decays already treats recent things differently from old ones, without being told what position anything is in. So there is a real question about whether telling it as well is useful, redundant, or worse than useless. No brain has positional embeddings; recency in biological memory comes from traces that fade.

What happens when you take the position signal away

Each architecture compared against itself, with the position signal and then with none at all (), everything else held fixed. Lower is better, so a line falling to the right means the model was better off without. Three architectures, three directions.

5.105.205.305.40with positionwith noneordinary attentionno memory of its own5.35855.3951+0.0366fast-weight memorywrites and corrects, never forgets5.35845.3536no changefast-weight memory that forgetsthe same, plus a learned decay5.14875.1175−0.0312
Each architecture against itself. The slope is the result: up, flat, down.
attention, no positionagainst 5.3581, 5.3596, 5.3578 with5.3951 (5.3893–5.4035)fast weights, no positionagainst 5.3484, 5.3568, 5.3701 with5.3536 (5.3408–5.3612)forgetting memory, no positionagainst 5.1404, 5.1460, 5.1597 with5.1175 (5.0961–5.1290)5.09615.4035
The three no-position arms across three independently trained models each, since whether the ranges separate is what decides each slope. bar = min-to-max across seeds · ring = mean · dot = one seed.

Ordinary attention needs it. Removing the signal costs 0.037, and the three runs separate cleanly from the three with it. That row is the sanity check for the other two: the experiment can detect a positional effect when there is one.

The plain fast-weight memory does not care. 5.3584 against 5.3536, with the runs overlapping. Whatever ordering information a running summary carries, it is enough that the extra signal adds nothing on top.

The memory that forgets is actively harmed by it, at this context length. Taking the position signal away improves it by 0.031, with the runs separating, and removes 25,000 parameters at the same time. Note which way that cuts: the arm that wins is the smaller one, so extra capacity cannot be the explanation.

That third sign does not survive longer context, and we could not fully explain why. At four times the window the comparison reverses on its face, position winning by 0.058. But learned positions cost 512 × 192 = 98,304 parameters there, so the winner is now the larger arm, exactly reversing the direction just noted.

Giving the no-position arm the same budget through a wider feed-forward layer splits the difference almost evenly: 0.0275 of it is capacity, and the remaining 0.0300 does not separate. At matched size the two tie. So the honest statement is that interference is real and separated at 128 words, and decays to a tie by 512 rather than reversing.

One weakness we would rather state than have found: the position arm’s spread across seeds is six times the control’s, so that tie is partly low power.

Two mechanisms were doing the same job, and running both was worse than running the better one alone. That is interference rather than redundancy, and it is the result this page is named for. The middle row is what lets us pin it on the decay gate: fast weights in general shrug the position signal off, but only the forgetting one prefers its absence.

What we said would happen, before it did

Registered before the run

Written down before the run and scored afterwards, including the one that was wrong. The point of registering is that the fourth line reads the way it does.

  1. confirmedregistered 2026-07-28

    Ordinary attention degrades without a position signal.

    It cost 0.037, with the runs separating. This row is the positive control.

  2. confirmedregistered 2026-07-28

    The three architectures dissociate: they will not all respond the same way.

    Three architectures, three directions, which is what the page is named for.

  3. did its jobregistered 2026-07-28

    The plain fast-weight arm was included specifically to stop a gated result being read as "fast weights do not need position".

    It came back flat, so the gated result is attributable to the decay gate rather than to recurrence in general. Without this arm the claim would have been over-general.

  4. falsifiedregistered 2026-07-28

    The gated arm holds within about 0.02 when the position signal is removed.

    It did not hold, it improved, by 0.031 with the ranges separating. Falsified in the favourable direction, which is still falsified.

If attention wants position, what kind does it want?

The same question one level down. A position signal can be an index, saying which slot a word sits in, or it can be a recency penalty, saying only that further back counts for less. If the argument above is right, the recency-shaped kind should do better, because recency is what the model is actually short of.

rotation (RoPE)relative, and the standard choice5.1793 (5.1750–5.1820)✓ real (-0.1792)a recency penalty (ALiBi)the further back, the less it counts5.2226 (5.2080–5.2326)✓ real (-0.1359)hard windows (hard-ALiBi)local heads plus one global5.2262 (5.2166–5.2323)✓ real (-0.1323)one learned vector per slotabsolute, an index5.3585 (5.3578–5.3596)3 seeds · referencenothing at allNoPE5.3951 (5.3893–5.4035)✓ real (+0.0366)5.17505.4035
Ordinary attention, five position signals. The marked row is the plain learned index. bar = min-to-max across seeds · ring = mean · dot = one seed.

Expressing position as a recency penalty beats expressing it as an index by 0.136, and the two hard-window variants land together well clear of it. So the ordering shows up twice: across the three memories above, and inside the choice of signal here.

Rotations still win, by 0.043 over the recency penalty. They are relative rather than absolute, which is the property that matters, and they carry it without discarding long-range information the way a decaying penalty does. The honest summary is that recency beats indexing, and relative beats both.

A second surprise: the gate is nearly free

The decay gate is the largest single-mechanism margin in the 128-token comparisons: 0.206 against its matched baseline, ahead of highway (0.060), of modern-over-baseline (0.127) and of Muon (0.187). Those four were all measured at the same shared ; tuning the one Muon leaves on AdamW pulls its 0.187 down to 0.035, which widens this gap rather than closing it. The question is whether that is the mechanism or the parameters it arrives with, so it was built twice, in the two forms the literature already uses: emitting a separate decay value for every channel, and emitting a single value per attention head.

no decay gate3.3733M parameters5.3584 (5.3484–5.3701)3 seeds · referenceone decay value per channel3.5215M, the newer refinement5.1521 (5.1380–5.1627)✓ real (-0.2063)one decay value per head3.3779M, 1/32 the gate5.1487 (5.1404–5.1597)✓ real (-0.2097)5.13805.3701
The decay gate, priced two ways. The marked row is the same memory without one. bar = min-to-max across seeds · ring = mean · dot = one seed.

The cheap version costs 4,600 parameters against 148,000, a factor of 32, and the two are indistinguishable. The gain is roughly 0.21 either way, and essentially none of it is the parameters the finer form spends. Both are published designs rather than a design against a homemade control: the per-head gate is what Gated DeltaNet uses, and the per-channel gate is the refinement Kimi Delta Attention makes on top of it. So this is a null against that refinement, not against gating, and at this size it agrees with the older, cheaper choice.

128 words is where fine-grained forgetting should matter least — long context is the whole reason to want it. At four times the window the two forms still tie, on the terrain that most favours the finer one. The point estimate shifts 0.019 toward it, so read this as a tie leaning slightly that way rather than as no effect at any length.

A gap that turned out to be the position signal

Fast-weight memory looks 0.176 worse than ordinary attention. It is not. The two models were carrying different position signals: learned vectors for the memory, rotations () for attention, on the assumption that rotations do not apply to a memory of this kind.

That difference is worth 0.180, which is the entire gap. Give attention the same learned vectors and the two are level: 5.3584 against 5.3585, a difference of 0.0001. The mechanism comparison is a tie at this size, and what looked like an architecture result was a setting.

One variable, three studies, opposite signs. The same mismatch flattered the fast-weight side of a length-generalisation comparison, by handing attention the positional scheme worst suited to that task. A third study, at a different size and on a different language, had the two level all along.

When two architectures cannot share a setting, that setting is part of the experiment, not part of the background.

The gate helps at 128 words and hurts at 512

A decay gate is a rule for forgetting. Give a model 128 words of context and it pays. Give it 512 and it costs — same size, same opponent, opposite sign.

highway wiring alone3.35M parameters, the recipe as it stands4.7639 (4.7575–4.7736)3 seeds · referencehighway wiring plus the decay gate3.35M, the same size4.8554 (4.8431–4.8678)✓ real (+0.0915)4.75754.8678
512 words of context. The marked row is the wiring already in the recipe. bar = min-to-max across seeds · ring = mean · dot = one seed.
the decay gate alone128 words0.206against the same memory without oneadded to highway, 128 wordssame size either way0.015against highway wiring aloneadded to highway, 512 wordssame size either way-0.091against highway wiring alone00.21 nats
The same mechanism, priced against three different opponents. Solid = a parameter-matched control isolates the mechanism; hatched = the margin includes extra capacity.

Two gates, on different axes, do not add up. wiring decides how much each layer writes; the decay gate decides how fast the memory fades. They overlap, and the overlap grows with the window: the longer the context, the less there is left for the second gate to do, until it is doing harm. Which mechanism you already have decides whether the next one is worth adding.

Measured at 3.4M parameters over 2000 steps. What a gate does at 30M, over a longer run, is a different question and not one these numbers answer.

What this does not show

The memory whose write gate this project audited is the same family: what a network writes down when nobody tells it →