Research record

Is Transition Timing Controllable?

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.

A note on the language in these records. This is a working laboratory notebook for research into training AI models more cheaply and efficiently, so you will read that an approach did not work, that a result did not hold up, or that one method was worse than another. That is the research doing its job, not a verdict on the engineering we deliver to clients. Ruling an approach out is how the search narrows, and these are the pages that teach us the most: nearly every technique we now rely on came from understanding why something else fell short. Testing our own ideas at least as hard as anyone else's is the point of publishing them. More about this programme and why we run it.

Part of a bigger question: What decides when a model learns, and can you change it? – Settings dominate, data barely matters, and there is a brief window before the jump in which interrupting the model is unusually costly. Timing can be delayed but not brought forward.

In plain English

What we asked. If we can see the moment a model learns, can we push it around? Make it happen sooner, or later, on purpose?

What we found. Later, but only in one lump. Any interference at all costs about 21 steps, and far more interference costs barely more than a little. It behaves like a switch, not a dial. Nothing we tried made learning arrive sooner.

Why it matters. We wanted a control knob, which would have opened up a whole line of work on steering training. There is no knob. This closed that line, which is unwelcome and useful: it stopped us spending months on a mechanism that does not exist.

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.
  • Results that rule an idea out are kept. Roughly half of what is published here says an approach did not work, including plenty of our own. Those pages are the output, not a shortfall: knowing which direction is a dead end is what lets the next experiment go somewhere better, and most of what we now rely on came out of understanding why something else fell short. 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, ~80 training runs, no GPU, no cost.

Program v2 tier 2, item D3. Decisive computation: analysis/sensitivity_probe.py. Output: analysis/sensitivity_probe.json. Reproduce with python analysis/sensitivity_probe.py in about twenty-five minutes on a throttled laptop CPU.

The question, and what rides on it

This was the sole remaining gate on Bucket C, the control program: training as model-predictive control, a learned optimiser conditioned on transition metrics, transition-vector transplantation. That gate required two things:

A nudge ten million times bigger changes almost nothing
A nudge ten million times bigger changes almost nothing. We interrupted training partway through, altered the model by a controlled amount, and let it continue. The bars show how much later it then learned the task. The leftmost bar is the control: change nothing, and training lands in exactly the same place, which confirms the experiment is measuring what it claims to. The three nudges span a factor of ten million and produce almost the same delay. There is no setting in between: any interference at all costs about twenty steps, and far more interference costs barely more. That means the timing of learning cannot be steered, only disrupted, and it closed an entire planned line of our research.
  1. a usable timing signal, which F2 supplied at +23.5 steps of lead; and
  2. a transition whose timing responds smoothly to intervention.

If a vanishingly small nudge moves the transition as much as a large one, timing is not a quantity a controller can steer, and the whole control program closes cheaply and honestly.

Method. Train a reference run. At step k, snapshot the weights, the optimizer state, and the data stream's own generator state. Replay the remainder repeatedly with the weights perturbed by epsilon along a fixed random direction, scaled relative to the weight norm. Measure how far the transition moves.

Result: the kill test fires

The confirmation pass, at single-step resolution

Three seeds, perturbed at half the reference transition step, evaluated every step:

Perturbation (relative)Median shiftMaxSeeds
00.00.03 / 3 exact
1e-8+21.0+223
1e-4+21.0+233
1e-1+24.0+273

A perturbation of one part in a hundred million delays the transition by 21 steps. A perturbation ten million times larger delays it by 24. Increasing the cause by a factor of 10^7 increases the effect by 14%.

The coarse pass over the full horizon, evaluating every five steps at three perturbation times and seven magnitudes, agrees: median absolute shift of exactly 10.0 steps at every nonzero magnitude from 1e-8 to 1e-1.

The response is not "chaotic" in the loosest sense, and that is worth being precise about

Every shift measured, at every magnitude and every seed, is positive. Perturbation does not send the transition somewhere unpredictable; it delays it, consistently.

So the response is better described as discontinuous at zero and then flat. Any nudge at all costs roughly 21 steps. Making the nudge ten million times bigger adds about three more. There is no proportional regime, no dial, and no way to make the transition arrive earlier at all.

That is precisely what makes timing uncontrollable. A controller needs a response it can modulate. This one has two settings: untouched, and about twenty-one steps late.

The determinism check earned its place immediately

The design requires that replaying from a snapshot with epsilon = 0 reproduces the reference transition exactly, because without that nothing downstream is interpretable.

The first version failed it by ten steps. Not because of nondeterminism in training, but because the transition step is defined against a baseline taken from a run's first three evaluations, and a replay starting at step k only had evaluations from k onward. Its "baseline" was the accuracy around the snapshot rather than at initialisation, so it was solving for a different midpoint. The snapshot now carries the reference's evaluated prefix and the replay prepends it, so both apply one definition to one curve.

After the fix: 9 of 9 zero-perturbation replays exact in the coarse pass, 3 of 3 in the fine pass.

Why the second pass was necessary

The coarse pass returned a median shift of exactly 10.0 at every magnitude. That is the signature of a magnitude-independent response, and it is also exactly what a five-step evaluation grid would print if the true response were smooth but small. Those two readings have opposite consequences for the program, and a result that closes an entire bucket cannot rest on which one it is.

The single-step pass separates them. At one-step resolution the response is still flat in magnitude (21.0, 21.0, 24.0), so the coarse pass was not reporting its own grid.

This is the third time in program v2 that resolution or instrument strength decided a headline: A9 was unanswerable because timing was quantised to 10 steps, F2 flipped verdict on probe strength, and D3 needed a finer grid to be trustworthy.

Consequence: Bucket C closes

The gate required a timing signal and smooth controllability. F2 delivered the first. D3 refuses the second. Bucket C is closed: training as control, model-predictive control over training, the learned optimiser conditioned on transition metrics, and transition-vector transplantation are not supported by this rig's evidence and should not be built.

This is the outcome the program explicitly planned for: "If all three fail, the honest output is the phenomenon map plus the negatives." One did not fail, and the gate still does not open, which is a cleaner answer than either half alone.

A4 (the transition kick) is undermined with it. A4 wanted to make the transition arrive earlier. Every perturbation measured here makes it arrive later, regardless of size, and the effect does not scale with the intervention. A kick has no proportional regime to exploit.

What survives. F2's leading indicator remains real and useful for observation: knowing a transition is coming is worth something for stopping rules, budget decisions and diagnosis, even when it cannot be steered. The phenomenon map: D6, D8, F3, stands on its own.

Limits

  • One architecture (tiny-gru), one task, one width (48), one optimizer (AdamW).
  • Perturbations are along random directions in parameter space. A structured perturbation, down a gradient, along the top curvature direction, or targeted at a specific weight matrix, might behave differently, and this does not test that. What it rules out is generic controllability, which is what a controller would have to rely on.
  • Three perturbation times in the coarse pass, one in the fine pass. Timing of the perturbation was not the variable that mattered here: the response was flat across all three.
  • The fine pass shortens the horizon to 300 steps, which changes the transition's own baseline and therefore the absolute shift values. Only the comparison across magnitudes within a pass is meaningful, and that is what the verdict uses.

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.
AdamW
A widely used training algorithm that adapts how big a step it takes for each individual parameter. The default in most modern AI training.
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.
baseline
The thing you compare against. A result without one is not a result.
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.
optimizer
The algorithm that decides how to change the model given the gradient. AdamW and SGD are two common choices and they behave differently.
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.
replay
Mixing a few examples of an old task back into training on a new one, so the model is reminded of what it already knew. The standard defence against forgetting.
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.

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.