Research practice

Three Buckets That Lied to Us

Here is a result we did not publish, and the reason is worth more than the result would have been.

What we were measuring

When a model trains, each step nudges it in some direction. Those nudges partly cancel each other out, so the model ends up travelling less far than the total distance it moved. The cancelled part is wasted computing, and we wanted to know where in training it happens.

Specifically, whether the waste clusters around the moment the model suddenly learns the task. If it did, there would be an obvious place to look for savings.

The plan, written before we ran anything, was to group the measurements into three periods: before the moment of learning, around it, and after.

The three buckets

They came out like this, where a higher number means less waste:

  • Before: 0.949
  • Around: 0.884
  • After: 0.827

Cleanly ordered, with error bars nowhere near overlapping. By every normal standard that is a solid result: waste increases through the phases of training, and the moment of learning sits in the middle of the progression.

We could have written that up. It would have looked good.

What was wrong with it

The three buckets sit at three different points in time. That is what makes them buckets. So anything that changes steadily over training will separate them, whether or not it has the slightest connection to the moment of learning.

The comparison cannot tell the two apart. It produces a clean, ordered, statistically comfortable result in both cases.

So we threw the grouping away, measured at every single step instead, and lined each training run up on its own moment of learning before averaging.

A line falling steadily with no feature at the marked moment of learning
The same underlying data, measured continuously. Zero on the horizontal axis is the moment the model learned. A real phase effect would show a bump or a dip there.

The line falls steadily from beginning to end and does nothing whatsoever at the marked moment. We checked that directly rather than by eye: fitting a trend to everything outside the middle region, the middle region sits on that trend to within a third of the measurement noise.

The waste is real, and it is large. About a fifth of the model's effort stops counting between early training and the end of the window. It simply has nothing to do with learning the task.

In plain English

Imagine measuring people's height in three groups: primary school, secondary school, and university. The groups will differ enormously and the error bars will not overlap. You have not discovered that school phases cause growth. You have discovered that the groups contain people of different ages.

Our three buckets had the same problem. They were labelled by their relationship to an event, and separated by the fact that they sat at different times.

Why this is worth watching for

Before-and-after comparisons are everywhere: before and after a product launch, a policy change, a deployment, a treatment. They are intuitive, easy to explain, and they carry this problem built in whenever the thing being measured also drifts on its own.

Two things make it hard to catch.

  • The result looks better, not worse, when it is wrong. Grouping averages away the noise, so a spurious difference arrives with tight error bars and a clean ordering. Nothing in the output signals a problem.
  • The grouping usually comes from the plan. Ours was written in advance, which is normally the thing that protects you. Deciding a comparison ahead of time does not make that comparison capable of answering the question.

The fix was not clever and cost nothing extra: measure continuously, line the runs up on the event, and look at the shape. A real effect at the event appears as a feature. Drift appears as a slope. The buckets cannot distinguish those; the curve cannot confuse them.

What we reported instead

Two things, kept separate. That the waste is not connected to the moment of learning, which closed off a line of work we had been considering. And that waste grows steadily throughout training regardless, which is a real finding we would have missed entirely if we had stopped at the buckets and gone hunting for a mechanism at a moment where nothing was happening.

The honest version was more useful than the tidy one.

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.