Research record 46 of 53

Does the Warning Cry Wolf?

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. We can read a model's internal state during training and get an early warning that it is about to learn its task. We have published several numbers about how reliable that warning is. Every one of them was measured on runs where the model did eventually learn. That leaves the obvious question unasked, and it is the question anyone relying on the warning would care about most: what does it do on a run that never gets anywhere?

What we found. We built two kinds of failure. The first was models trained on completely random answers, so there was genuinely nothing to learn and any warning would simply be wrong. The second was models given a learning rate so low they had not learned by the end, though they would have eventually. On the first kind the warning never fired once, in eight runs. That is genuinely reassuring, and it is a property every reliability number we have published quietly assumed and none of them had checked.

Why it matters. The second kind is less comfortable. On merely slow models the warning went off more than a third of the time. Those models would have learned eventually, so the warning is early rather than wrong, but nobody watching a slow run can tell those two situations apart at the moment it sounds. The honest summary is that our warning distinguishes 'this model is learning something' from 'this model is learning nothing' very well, and 'soon' from 'eventually' badly. Only the first of those had ever been tested, and it is not the one a user would ask about.

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, 24 training runs, no GPU, no cost.

Program v2 Bucket K, item K6. Decisive computation: analysis/failure_population.py. Output: analysis/failure_population.json. Reproduce with python analysis/failure_population.py, or re-derive the endpoints with --reuse.

The question

Every reliability figure in this programme is conditioned on the event happening. F2's 12/12 at a 45-step horizon, G1's 95%, A11's 100% against a 19% surrogate false-alarm rate, every one is computed on runs that transitioned. Nothing characterised runs that never do.

How often the warning fires when nothing is coming
How often the warning fires when nothing is coming. Every claim we have published about how reliable our early warnings are was measured on runs where the model did eventually learn. That leaves an obvious question unasked: what does the warning do on a run that never gets anywhere? So we built two kinds of failure. On the left, models trained on completely random answers, where there is nothing to learn and any alarm is simply wrong. On the right, models given a learning rate so low they had not learned by the end, though they would have eventually. The shaded strip is the false-alarm rate we had assumed. On runs where there was nothing to learn the alarm never fired once, in eight runs with real training dynamics. That is the reassuring half, and it is a property every reliability figure we have published quietly assumed and none of them had checked. The other half is less comfortable: on merely slow runs it fired well over a third of the time. Those models would have learned eventually, so the warning is early rather than wrong, but nobody watching a slow run can tell those two situations apart at the moment the alarm sounds.

The surrogate rates already published are not this. A surrogate is a shuffled version of a series from a run that did transition; it asks whether the alarm responds to structure or to noise. This asks what the alarm does on a real training run of a model that never learns, real optimisation dynamics, real gradient structure, real loss curve, no arrival.

Kill test, fixed in advance: the indicators' false-alarm rate on never-transitioning runs is no higher than their surrogate rate on transitioning ones (~20%).

Two kinds of failure, because they are not the same thing

ArmConstructionAn alarm here means
learnableordinary runsthe anchor, must reproduce K1's lead
unlearnableI6's: targets resampled as uniform noise every stepunambiguously false, nothing is ever learnable
too-slowlearning rate 0.00012, transition beyond the budgetearly, not wrong, the model would learn eventually

Result

Eight seeds per arm. No run in either failure arm transitioned, so both belong to the kill test's population.

ArmTransitionedglobal_norm firesoff_top fires
learnable8/8,,
unlearnable0/80/8 = 0%0/8 = 0%
too-slow0/83/8 = 38%3/8 = 38%

On runs where there is nothing to learn, the alarm never fires. Not once, on either statistic, in eight runs with real gradients and a real optimiser. The indicator is responding to learnability rather than to optimisation noise, which is the property every published reliability figure in this programme silently assumed, and none of them tested.

The anchor agrees. The learnable arm gives +28.1 [+26.8, +29.5] and +28.0 [+26.6, +29.4] against K1's +31.2 [+26.5, +36.0] and +29.8 [+24.0, +35.5], so this is K1's alarm.

The caveat, which is not small

On runs that are merely slow, the alarm fires 38% of the time, above the surrogate rate. Those runs would transition given a longer budget, so the alarm is early rather than wrong.

But that distinction is invisible at the moment the alarm sounds. A user watching a slow run cannot tell "this is about to learn" from "this will learn in four hundred steps' time", and the published reliability figures do not distinguish them either. The honest statement is that the indicator discriminates learnable from unlearnable cleanly, and discriminates soon from eventually poorly.

Two corrections, both to the measurement rather than the result

The slow arm was not slow enough. At the first rate tried (0.0004) every run transitioned at step 551-584, inside the 900-step budget: a slow success, not a failure. Whether the arm qualifies is now checked in the verdict rather than assumed.

The false-alarm denominator was wrong. The first version divided alarms by every run in the arm, which scored the slow arm at 100% when all of its runs had transitioned and every alarm was a genuine lead. A false alarm is an alarm on a run where the event never happens, so the denominator is the silent runs.

And the anchor test itself was wrong, in a way worth recording. It asked whether K1's point estimate fell inside this pilot's interval, ignoring K1's own uncertainty. K1 measured four seeds (+31.2 [+26.5, +36.0]); this measures eight different ones (+28.1 [+26.8, +29.5]). The two agree, each mean sits inside the other's interval, and the point-in-interval test rejected them, because a narrower interval from more seeds is harder to satisfy. An anchor that gets stricter as the replication gets better is the wrong test. It now checks whether the two intervals overlap, and the same fix was applied to K4, whose conclusion is unchanged.

Verdict

  • The kill test does not fire on the unambiguous population. 0% against a 20% surrogate rate.
  • This is the first instrument property in Bucket K to survive its check. J5, K3 and K4 all found something degrading; this finds something holding.
  • It is a narrower claim than it looks. The alarm distinguishes learnable from unlearnable perfectly and soon from eventually badly, and only the first of those was tested by anything published before now.
  • Every prior reliability figure is retrospectively better supported, on this one axis, at this one width, for these two statistics.

Limits

  • Eight seeds per arm, one task, one width, one learning rate, one alarm rule.
  • The decode probe is not covered. F2's 12/12 and G6's horizon numbers are the programme's headline reliability figures and they belong to a different instrument, which is more expensive to run. This record does not license any claim about the probe's false-alarm behaviour, and that is the obvious follow-up.
  • too-slow is one way of being slow. A lower learning rate is not the same failure mode as a harder task, a worse initialisation, or a model too small to represent the solution.
  • 0/8 is a rate of zero with a wide interval. Eight runs cannot distinguish a true rate of 0% from one of several percent; the claim is that it is well under the surrogate rate, not that it is exactly zero.

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.

false-alarm rate
How often a warning system goes off when nothing is actually happening. Any detector can be made to fire early by making it twitchier, so a lead time only means something alongside this number.
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.
probe
A small separate model trained to read information out of a bigger model's internals, used as a measuring instrument rather than as a product.
reliability
How often something works on an individual case, as opposed to how well it does on average. The two can differ a lot, and only one of them tells you what to expect next time.
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.
surrogate
A fake version of real data, built to keep everything except the effect being tested. If a detector fires just as often on the surrogate, it is responding to something other than what it claims.
width
How many internal numbers a model uses at each layer. The usual way we vary model size in these experiments.

Want this measured on your data?

We build private models our clients own and run on their own infrastructure, and every engagement proves measured lift on the client's own tasks before we call it done. Start free with a readiness scorecard that tells you whether your data can support it, or book a short call.