Eight Runs Is Not Enough
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. Two of our earlier experiments happened to use identical settings and the same eight starting points. Because a training run is exactly repeatable given its starting point, those two experiments had unknowingly measured the very same runs from different angles. So we could ask a brand new question by simply joining the two sets of results together, at no cost and with no new computation. The question: does the size of a model's internal adjustments predict how much damage is done by removing part of them?
What we found. Eight runs cannot answer it. Two of our comparisons passed the standard statistical test, but they pointed in opposite directions, which cannot both be true: the same thing cannot make removing the important part more damaging while making removing a random part less damaging. And when we asked what range of values the data was genuinely consistent with, every answer included zero, meaning no relationship at all.
Why it matters. We are publishing this because of what our first analysis did. It used only the standard test, ignored the range, and confidently announced a discovery: that one simple measurement links two things we had never been able to connect. That would have been a notable result. It was eight data points in a lucky arrangement. The uncomfortable part is that we had written a whole earlier report about this exact mistake, three write-ups previously, and then made it anyway. The check that catches it costs nothing and now runs automatically: require the test and the range to agree, and be suspicious when two related comparisons disagree about which direction the effect goes.
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. Archive-only, no training at all, no GPU, no cost.
Program v2 Bucket J, item J6. Decisive computation: . Output: analysis/magnitude_concentration.py. Reproduce in seconds with analysis/magnitude_concentration.jsonpython analysis/magnitude_concentration.py.
The question
I3 swept five cheap covariates against the leading gradient direction's mass on the recurrent diagonal, and exactly one survived a family-wise null: the gradient buffer's norm at the transition, r = -0.576 against a critical 0.505. Smaller gradients, more of the leading direction on the diagonal.
That hints gradient magnitude governs update concentration. J6 asks whether the same variable predicts something that matters, the cost J3's surgery imposes.
It cost nothing to ask. I3 and J3 used the same width, task, learning rate, step count, window and buffer, and the same eight seeds. A run is deterministic given its seed, so I3's buffer norm and J3's surgery cost are measurements of the same trajectory. The whole experiment is a join on the seed, and the script asserts the configurations match before doing it.
Kill test: buffer norm predicts neither the surgery cost nor the lead beyond a family-wise null.
Result: not answerable at this sample size
| Outcome | r | 95% interval | p |
|---|---|---|---|
| off-diagonal surgery cost | +0.816 | [-0.155, +0.986] | 0.025 |
| diagonal surgery cost | -0.387 | [-0.897, +0.689] | 0.340 |
| span-random surgery cost | -0.722 | [-0.966, +0.114] | 0.031 |
| I3's anchor (diagonal mass) | -0.501 | [-0.926, +0.330] | (anchor) |
Two arms clear p < 0.05. Every interval spans zero. And the two significant ones have opposite signs.
That last point is what settles it. The same variable cannot sensibly make removing the load-bearing off-diagonal component more costly while making removing a random direction less costly. Those two arms differ only in which directions were taken out. A predictor that pushes them in opposite directions is not describing a mechanism; it is describing eight points.
The join is sound. I3's own correlation reappears on this subset at r = -0.501 against -0.576 on its full 24 seeds, so the two pilots really are measuring the same trajectories and the sample is the problem, not the plumbing.
What this record is really about
The verdict logic keyed on p < 0.05 alone at first, and reported the kill test as failing. It printed a confident claim that gradient magnitude links composition to consequence, which would have been this programme's first single variable to do so.
That is precisely the failure J1 was written about, committed inside Bucket J, three records after J1. A permutation p and a bootstrap interval disagree constantly at n = 8: a correlation can clear p < 0.05 while its interval spans almost the entire range from -1 to +1. That is not a finding, it is a small sample with a lucky arrangement.
The script now requires both to agree before calling anything resolved, and adds a coherence check on the signs. Both are cheap, and either alone would have caught this.
Verdict
- Not answerable at
n = 8. No claim is made about whether gradient magnitude governs the surgery cost. - I3's original finding is undisturbed and is reproduced here as an anchor.
- The one expensive thing Bucket J has asked for. Resolving this needs J3's surgery re-run at 24 seeds: four arms, so roughly 96 runs and about two hours on a throttled CPU. That is the only item in this bucket that is not effectively free, and it should be weighed against J7 and J8, which are cheaper and ask larger questions.
Limits
- Eight seeds, one width, one task, one learning rate, one window position. Everything above is a statement about sample size, not about the world.
- Bootstrapping a correlation at
n = 8is itself unreliable, and the intervals should be read as "very wide" rather than as calibrated. They are reported because the point estimates alone would be worse. - The join relies on determinism given a seed. That holds here (same code path, same configuration, CPU-only), and the script checks the configuration keys, but it is an assumption worth naming.
- A null from an underpowered test is not evidence of absence. If the effect is real and of the size the point estimates suggest, 24 seeds would resolve it comfortably.
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.
- bootstrap
- A way of estimating how uncertain a number is by repeatedly resampling the data you already have. Useful when the usual formulas do not apply.
- 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.
- 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.
- 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.