The Third Bar Changed Everything
Ongoing research. This is an experimental result from active work, not a settled conclusion. The numbers are what we measured and the method is described so you can judge it, but the programme is still running and later experiments may revise what it means. More about this programme.
In plain English
What we asked. A paper published this year asks why models pick up on things that cannot help the answer they are being asked for, and offers three explanations. We had already ruled out one of them. This experiment goes after the second: the idea that it happens because the same internal machinery is reused for every word in a sequence. In a model built like ours that reuse is unavoidable, so testing it meant building a different model, with entirely separate machinery at each position.
What we found. It worked, in the sense that the number moved. The rebuilt model leaned noticeably less on unhelpful words than the original. On its own that is a clean, confident result, and we would have reported that removing the reuse is what matters. But separating the machinery for every position makes the model about thirteen times larger, so we also built an ordinary model of that same larger size, with the reuse left completely intact. It gave the same answer. The two large models cannot be told apart.
Why it matters. So the change was about size all along, and the thing we set out to test had nothing to do with it. This is the tenth time in this project that a control, rather than the experiment itself, decided what we published, and it is the clearest one: the result without that third comparison looks entirely solid and is entirely wrong. The finding left standing is one we were not looking for, which is that bigger models on this task lean less on words that cannot help them. If you take one thing from this page, make it the habit rather than the result: when you change something and the number moves, the next question is always what else your change altered along the way.
The rest of this page is the technical record: the design, every number, and the limits. It is written for a reviewer, and you do not need it to have understood the result above.
New here? How to read a research record
- Start at the verdict. Every record states, before the experiment was run, what result would have made us abandon the idea. That is the "kill test". Then it says whether the test fired. Nothing gets reinterpreted after the fact.
- Numbers in square brackets are uncertainty.
23.4 [18.1, 28.7]means our best estimate is 23.4 and the true value is probably somewhere in that range. If a range includes zero, we cannot claim an effect. - Negative results are kept. Roughly half of what is published here says an idea did not work, including several of our own. Those pages are not failures, they are the output. Work that only publishes what worked is not measuring anything.
- Read the Limits section. Every record ends with what it does not show. It is the most honest part of any experiment and usually the shortest.
- Pro tip: the figures near the top are designed to carry the result on their own. If you read nothing else, read the caption under each one, which says what it shows and what to take from it.
EXPLORATORY. Not a preregistered study. Local CPU, 15 training runs, no GPU, no cost.
Program v2 Bucket N, item N10. Decisive computation: . Output: analysis/untied_recurrence.py. Reproduce with analysis/untied_recurrence.jsonpython analysis/untied_recurrence.py, or re-derive every endpoint with --reuse.
The question
N1 ruled out pre-caching as the source of a GRU's dependence on tokens that carry no information about the scored prediction. It could not touch circuit sharing, the third pathway named by arXiv 2603.14087, because a recurrent network applies the same weights at every timestep by construction.
Untying them removes it: one GRUCell per position, so no parameter is used at more than one timestep. That is a different architecture rather than a different training run, which is why N1 could not run this arm.
Kill test, fixed in advance: the untied model's useless-token dependence matches the tied model's.
Arms, and why the third one exists
| arm | what it is | parameters |
|---|---|---|
tied | the ordinary GRU at width 48. M3's configuration, and the anchor | 17,280 |
untied | one GRUCell per position, same width. Circuit sharing removed | 228,960 |
tied-wide | an ordinary GRU widened to match the untied parameter count | 227,934 |
Untying multiplies the recurrent parameters by the sequence length, so the untied arm is thirteen times the size of the tied one. Without a parameter-matched control, any difference it shows is equally well explained by capacity, and M5 already established that capacity alone changes how these models behave. The matched width was searched rather than solved (the embedding and readout also scale with width) and lands within 0.45%.
Result
Five seeds per arm, 400 steps: M3's run length, because N5 established that a floor-to-ceiling midpoint is not comparable across runs of different lengths.
| arm | final accuracy | dependence on useless tokens | transition |
|---|---|---|---|
tied | 0.9811 [0.9770, 0.9852] | 0.5021 [0.4764, 0.5278] | 90.0 [81.2, 98.8] |
untied | 0.9924 [0.9905, 0.9943] | 0.3894 [0.3789, 0.3999] | 96.0 [89.2, 102.8] |
tied-wide | 0.9914 [0.9869, 0.9959] | 0.4053 [0.3792, 0.4314] | 40.0 [40.0, 40.0] |
The anchor reproduced: the tied arm's useless share 0.5021 and midpoint 90.0 overlap M3's [0.450, 0.508] and [82.4, 91.0].
The letter of the kill test and its intent point opposite ways
By the letter, the kill test does not fire. The untied arm's 0.3894 [0.3789, 0.3999] does not overlap the tied arm's 0.5021 [0.4764, 0.5278]. Untying the weights changed the number.
By its intent, the answer is no. The parameter-matched control: still fully tied, circuit sharing entirely intact, sits at 0.4053 [0.3792, 0.4314], which also differs from tied and overlaps untied. Simply making an ordinary GRU larger produces the same change as removing circuit sharing altogether.
So the 22% fall in useless-token dependence is a capacity effect, not a circuit-sharing effect. Removing the pathway did nothing that adding parameters did not already do.
This is the control deciding the headline for the tenth time in this programme. Without tied-wide the honest-looking conclusion from these runs is "untying the weights reduces useless-token dependence by 22%, so circuit sharing is the mechanism": a positive result, with a clean interval, that is wrong.
What this closes
Taking N1 and N10 together, of the paper's three pathways:
- pre-caching, ruled out by N1: a sixteenfold cut in gradient horizon left the dependence flat;
- circuit sharing: ruled out here, once capacity is controlled;
- direct learning: untested by either, and now the only one left standing.
N5 supplies the reading that fits. On dispatch-copy-8lag, where the stream is uniform random rather than periodic, dependence is 0.960 concentrated on the true source and there is essentially no useless-token dependence to explain. The quantity M3 measured is sensitivity to delayed-copy's repeating structure, learned directly, not an NTP-useless feature in the paper's sense. That makes the paper's framework and this programme's measurement two different objects that happened to look alike, which is the more useful outcome than either "the prediction holds" or "the prediction fails".
The unplanned finding
Useless-token dependence falls with capacity, tied or untied: 0.5021 at 17,280 parameters against 0.4053 at 227,934, non-overlapping. A bigger model on this task leans less on tokens that cannot help it.
That sits beside M5, which found the transition gets sharper with capacity, and is visible again in the timing here: tied-wide transitions at step 40 against tied's 90, consistent with M5's monotone trend extended upward.
Verdict
- The kill test does not fire by its letter and is answered "no" by its intent, and both are reported because they diverge.
- The parameter-matched control is the whole result. Untied and matched-tied are indistinguishable; both differ from the small tied model.
- Circuit sharing is not the source. With N1, two of the paper's three pathways are ruled out.
- The anchor reproduced.
- Unplanned: useless-token dependence falls with capacity, and the transition arrives earlier at width 189, M5's trend extended.
Limits
- Five seeds per arm, one task, one width per arm, one learning rate.
tied-wideis not a controlled comparison in every respect. It matches parameters, not width, not compute per step, and not the shape of the computation. A width-matched untied control is impossible by construction, untying is the extra parameters.- Untying makes each position's map independent, so the untied model can learn a position-specific solution the tied one cannot represent. It reaches
0.9924, so the task is not harder for it; whether it solves the task the same way is not measured here. - "Two of three pathways ruled out" is elimination, not demonstration. Direct learning is the remaining candidate because nothing else is left, not because it was shown.
- The capacity finding is one comparison at two sizes. M5 swept width properly; this did not, and a sweep would be needed before treating it as a curve.
Terms on this page
Every piece of vocabulary this record uses, in plain language. Generated from the text above, so it cannot drift out of step with it.
- accuracy
- The fraction of answers a model gets right on questions it was not trained on.
- architecture
- The blueprint of a model: what components it has and how they connect. Two models can be the same size and completely different architectures.
- gradient
- The direction and amount by which each of a model's internal numbers should change to do slightly better. Training is repeatedly following it.
- GRU
- Gated Recurrent Unit. A compact design for processing sequences one item at a time, with internal switches controlling what it keeps in memory.
- kill test
- A condition written down before running the experiment that says what result would make us abandon the idea. Fixing it in advance is what stops a disappointing result being reinterpreted as an encouraging one.
- learning rate
- How big a step training takes each time it updates the model. Too small and nothing happens; too big and it never settles.
- parameters
- The adjustable numbers inside a model. Training is the process of setting them. Model size is usually quoted as a count of these.
- recurrent
- A design that reads a sequence one item at a time, carrying memory forward. The main alternative is attention, which looks at everything at once.
- seed
- The number that fixes all the randomness in a training run. Same seed, same run. Running several seeds is how you tell a real effect from a lucky one.
- width
- How many internal numbers a model uses at each layer. The usual way we vary model size in these experiments.
Get new results as we publish them
Roughly monthly, one finding per email, in plain English first. Including the experiments that went against us, which are usually the useful ones. No sales email.
Double opt-in: we send a confirmation link and add nobody who does not click it. One-click unsubscribe on every email.