NakedSignal OS · Documentation
Back to the consoleDocumentation

Synthetic variation

PROTOTYPE

A model is built in one place and used in another. The gap between those two places is measurable, and most of it is boring: lighting, sensor age, a different convention at the console. This page measures how much a model changes its mind when only those things change, and specifies how that measurement becomes a generator.

What this is notThe shift here is simulated: deterministic transforms applied to public, single-source data as a clearly-labelled stand-in for the real construction, which is the same subject through two physical machines and needs paired multi-site data this repo does not have. Nothing on this page has been run on clinical data, and no model on this page has been improved by synthetic variation — the generation loop in §6 is specified and has not been run. The stand-in has now been tested against a real acquisition change, and it does not hold: see the measurement in §3.

1. The gap nobody prices

A model is validated where it was built. It is then deployed somewhere that differs in a hundred small ways, and the headline number does not travel with it. This is not a medical problem, an exotic problem, or a problem of bad models. It is the ordinary condition of putting software that learned from one sample into a world that keeps producing new ones.

The industry response is usually to re-collect and re-label at the new site, which is slow, expensive, and has to be repeated at the site after that. The alternative is to treat the difference between sites as a measurable quantity rather than an accident — to characterise how much a deployment can vary, and then make the model meet that variation before it ships.

Medicine

The chest film that travels badly

Built on — A detector trained on one hospital's images, validated on held-out patients from that same hospital, and reported at a single headline number.

Deployed into — A second hospital, a different make of unit, an older tube, a warmer room, and a radiographer who positions to a different convention.

What varies
  • detector response curve and noise floor
  • window/level chosen at the console
  • sensor resolution and field of view
  • ambient light where the study is read

Instrumented here, on simulated re-acquisition over public data. This is the column the figures below are computed from.

Labour market

The screener that learned one hiring cycle

Built on — A CV screening model fitted to one country's applications during one part of the cycle, scored against the hires that were actually made.

Deployed into — Another region a year later: different résumé conventions, different job-title vocabulary, different tenure norms, and a labour market that has itself moved.

What varies
  • document formatting and parsing conventions
  • job-title and qualification vocabulary
  • tenure and gap norms between regions
  • the base rate the model was calibrated against

Degradation is instrumented here, on UCI Adult: field dropout, coding drift, unit change and entry error, at three severities, in §5. Re-acquisition is not — the census corpus has no construction for it, so dimension 2 keeps an explicit null rather than a widened definition.

Financial

The credit model that met a different bureau

Built on — A default model fitted on one bureau's field coverage across a calm period, with every feature present and every field populated.

Deployed into — A portfolio where three fields are coded differently, one is absent entirely, and the macro conditions that set the base rate have changed.

What varies
  • field coverage and missingness patterns
  • coding conventions between providers
  • the macro regime behind the base rate
  • entry error and late-arriving corrections

Instrumented here, on UCI German Credit. The tabular degradation family — field dropout, coding drift, unit change, entry error — is implemented and run; the figures are in §5. Re-acquisition is not measured: a re-coded credit file is not a second observation of the borrower, so dimension 2 keeps an explicit null.

General

The inspection rig that only worked in the lab

Built on — A visual quality model trained under a fixed lighting rig, one camera, one working distance, one bench.

Deployed into — A plant floor: daylight through a roof panel, a replacement camera two revisions newer, vibration, and a housing that runs fifteen degrees hotter by the afternoon shift.

What varies
  • illumination spectrum and intensity over a shift
  • camera revision, gain and exposure defaults
  • working distance and mounting drift
  • thermal noise as the housing warms

Not measured here. It is the closest analogue to the imaging construction and the cheapest place to acquire genuine paired data, because both conditions can be staged deliberately.

2. What actually varies, written down

For images the harness carries 12 transforms in two families, kept separate because they answer different questions. The re-acquisition family changes how the input was made — a different machine, a different setting, a different room. The degradation family changes how badly it was made. The distinction matters: in the first family the correct answer is unchanged by construction, so any change of mind is pure site sensitivity and not a harder case.

Tables and documents carry degradation families of their own — 4 and 5 respectively, listed in §5. They have no re-acquisition family at all: nothing in a credit file or a discharge note re-measures the subject, so dimension 2 stays an explicit null on every one of those corpora rather than being widened to cover paperwork. Their figures are kept in a separate section for the same reason, because a retention number for a gamma shift and one for a unit swap are not two samples of one quantity.

Re-acquisition — how it was made
Gamma
stands in for a different detector's response curve
Window / level
stands in for a different reading protocol at the console
Resolution
stands in for an older or newer sensor at the same site
Field of view
stands in for a different positioning convention
Detector noise floor
stands in for a hotter room, an ageing tube, a cheaper unit
Degradation — how badly
Gaussian noise
stands in for electrical noise in the capture chain
Shot noise
stands in for a lower dose or a shorter exposure
Defocus blur
stands in for motion, or a focus the operator did not catch
Contrast
stands in for a mis-set display or export pipeline
Brightness
stands in for ambient light in the room where it was captured
Pixelate
stands in for a downscaled copy pasted between systems
Quantise
stands in for bit-depth lost to a lossy archive format

3. How much a model changes its mind

Each transform is applied at three severities to every model and task, and the model’s answers are compared against its own answers on the clean input. Retention is that agreement, chance-corrected: 1.00 means the shift cost nothing, 0.00 means none of the original agreement survived. It is not accuracy — a model can be mediocre and stable, or excellent and brittle, and those are different products.

Retention under each shift

1.00 = the shift cost nothing · mean 0.70
Shot noise
degraded
0.54
Pixelate
degraded
0.55
Gaussian noise
degraded
0.56
Contrast
degraded
0.66
Brightness
degraded
0.66
Detector noise floor
re-acquired
0.71
Defocus blur
degraded
0.72
Field of view
re-acquired
0.72
Resolution
re-acquired
0.78
Gamma
re-acquired
0.81
Quantise
degraded
0.83
Window / level
re-acquired
0.84

bar = mean retention across every model × task that measured it · ticks = severity 1 / 2 / 3 · hairline = mean across the 12 scored

Read from the signed passports at build time. Retention is chance-corrected agreement against each model’s own clean reference, so it measures how much a model changed its mind when the input was acquired differently — not how accurate it was.
What this is notThese figures measure sensitivity to our transforms, and we have now measured whether that resembles a real change of acquisition. It does not. Against the same CT volumes reconstructed in three planes — the one genuine acquisition change in public data — two independent tests agree. All 30 transform × severity combinations make an image more distinguishable from a genuinely re-acquired one than leaving it alone does; not one moves toward it. And across 7 models the ordering our transforms impose is identical to the ordering of clean accuracy (ρ = 1.00), so it adds no information about robustness, while the real acquisition change reorders them (ρ = 0.89). Ranked by retention the correlation with real transfer is negative (ρ = -0.57, n = 7). No published severity is severe enough either: a real plane change leaves only 42.4% of a model’s agreement standing, while the harshest transform we publish leaves 77.0% — a gap of 34.6 points, in the direction of our transforms being far too gentle.

This was pre-registered to be published whichever way it came out, and it came out this way. The measurement, its limits and its confounds are in variation/docs/REPORT-S2-realism-audit.md. Nothing above is withdrawn — every figure is still the figure that ran. What changed is what it means.
0.54
Least survivable — Shot noisestands in for a lower dose or a shorter exposure
0.84
Most survivable — Window / levelstands in for a different reading protocol at the console
0.00
Worst single pairingmlp_pixels · breastmnist

The ordering is the interesting part. The shifts that cost the most are not the dramatic ones. Brightness and contrast — the ambient light in the room and the setting on a display — sit at the bottom, below sensor noise and below blur. A model can be robust to a genuinely bad image and still change its mind because someone dimmed the lights. That is not a story about model capacity; it is a story about which variation was present in the training sample and which was not.

4. Versatility is a property you can measure

Clean accuracy

before any shift · 0-100

shallow38.3
mlp_pixels
classical41.9
hog_logreg, pca_logreg, rf_pixels
foundation45.0
biomedclip_ft, biomedclip_probe, biomedclip_zeroshot, dinov2_probe
transfer53.7
resnet18_in_probe
trained67.0
cnn_scratch, resnet18_ft

Retention, re-acquired

same subject, different machine

shallow0.86
mlp_pixels
classical0.80
hog_logreg, pca_logreg, rf_pixels
foundation0.76
biomedclip_ft, biomedclip_probe, biomedclip_zeroshot, dinov2_probe
transfer0.73
resnet18_in_probe
trained0.72
cnn_scratch, resnet18_ft

Retention, degraded

same machine, worse capture

shallow0.80
mlp_pixels
classical0.72
hog_logreg, pca_logreg, rf_pixels
foundation0.58
biomedclip_ft, biomedclip_probe, biomedclip_zeroshot, dinov2_probe
transfer0.57
resnet18_in_probe
trained0.59
cnn_scratch, resnet18_ft
Same twelve shifts, grouped by what kind of model met them. Rows are in the same order in all three panels — sorted by re-acquisition retention — and read against the first panel that order is an exact inversion: the more accurate the family, the less of itself it keeps when the site changes. Under degradation the association is strong but not perfect: the two most accurate families swap, so that panel is not an exact inversion and is not described as one. The caveat below is why any of this is a finding and not a recommendation.
What this is notRead this figure carefully, because the obvious reading is wrong. Retention is chance-corrected against each model’s own clean reference, so a model that starts weaker has less to lose and will tend to retain more. The shallow and classical families here are not better products than the trained ones — they are less accurate and less brittle at the same time. The honest claim is narrow: brittleness varies independently of accuracy, which is precisely why it needs its own number on the certificate rather than being inferred from the headline.

5. The same measurement, on tables and documents

Everything above is imaging. The identical construction runs on the tabular and text corpora, and it is the reason the labour-market and financial cards in §1 are no longer empty. What degrades a table is not a lens or a lamp — it is the paperwork: a field the receiving site does not collect, a category coded under a different scheme, a measurement in different units, a human mistyping a digit. What degrades a document is the pipeline it travelled through.

These are dimension 6 only. There is no dimension 2 here and the harness refuses to invent one: re-acquisition means the same subject measured again elsewhere, and a re-coded credit file is not a second measurement of the borrower. Dimension 2 is an explicit null on all 18 of these corpora.

Retention under each shift

1.00 = the shift cost nothing · mean 0.79
Field not collected
degraded
0.67
Different units
degraded
0.75
Transcription error
degraded
0.94
Measured, not scored
Different coding scheme

this corpus has no one-hot encoded categorical block, so there is no coding scheme to drift; the transform is a no-op here and its retention of 1.00 is an artefact, not a result

bar = mean retention across every model × task that measured it · ticks = severity 1 / 2 / 3 · hairline = mean across the 3 scored

4 tabular degradation families across 4 models and 15 corpora, including UCI Adult (labour market) and German Credit (financial). Read from the signed passports at build time. Each bar is a mean over 56 of 60 model × corpus pairings: the other 4 are the secom models, whose clean balanced accuracy is at or below chance, leaving no retained discrimination for a ratio to measure against. They are excluded rather than entered as zeroes.

The ordering carries the finding. A missing field and a unit swap cost more than a transcription error, and by a wide margin — a model that is perfectly stable under noisy data entry will still change its mind when a column arrives in different units, because nothing in training told it which unit it was reading. This is the tabular restatement of the imaging finding: the cheap, boring, administrative differences are the expensive ones.

What this is notDifferent coding scheme is measured on every one of these corpora and scored on none of them, which is why it appears under the figure with a dash rather than in it. It swaps levels within a one-hot block, and these corpora arrive with their categoricals pre-encoded as ordinals, so there is no block for it to touch and it is a no-op. It reports exactly 1.00 every time, and counting it would add 5.3 points of imaginary robustness to the tabular mean. A transform with nothing to act on must not report perfect retention.

Retention under each shift

1.00 = the shift cost nothing · mean 0.96
Note cut short
degraded
0.90
Mangled export
degraded
0.95
Scanned, not typed
degraded
0.97
Different house style
degraded
1.00
Different wording
degraded
1.00

Note cut short at severity 3: the transform may remove the evidence the label depends on, not merely obscure it; retention at these severities is not a clean robustness measurement. The bar above averages all three severities, so it includes that one.

bar = mean retention across every model × task that measured it · ticks = severity 1 / 2 / 3 · hairline = mean across the 5 scored

5 text degradation families across 7 models and 3 corpora. Retention is high across the board here, which is a property of bag-of-words models rather than a virtue: a classifier that never read the word order is hard to disturb by changing it.

6. From measuring to closing PROTOTYPE

Everything above is a measurement. The measurement is also, already, a generator — the transforms that probe a model are the same transforms that could train it. What is missing is the discipline that makes that honest rather than circular.

What this is notThis protocol has now been run end to end, and it did not work. The envelope was fitted against a real acquisition change, variation was generated inside it, a model was retrained, and the result was verified at sagittal— a real acquisition condition that contributed nothing to any arm’s training set, generator or calibration. Measured in absolute balanced accuracy at the held-out condition:

Training on our published transforms scored 0.1384 at the held-out condition, against 0.1394 for no augmentation at all — it did not help, and it cost 0.045 of clean accuracy to get there. An ordinary off-the-shelf augmentation pipeline scored 0.1610, beating both. The fitted envelope scored 0.1542, which is approximately the null its own fit predicted.

The gap between how robust each arm looks on our own generator and how it performs at a real acquisition change is 0.660.68, and no arm meaningfully closes it despite differing by sixteenfold in training data. That gap is a property of the corpus, not of the augmentation. Step 5 below — verify on a site the model has never seen — is the step that produced this, and it is the reason it is written as load-bearing.
  1. Measure the envelope, from real sites. Collect the same subjects, or the same units, through the machines and conditions the model will actually meet. Fit the distribution of each parameter — how much gamma, how much noise floor, how much positioning drift — rather than assuming a range. This step needs paired multi-site data and is the only expensive part.
  2. Publish the envelope as part of the specification. A range of conditions a model claims to cover is a falsifiable statement. It belongs in the passport beside the scores, so a buyer can check their own site against it before purchase rather than after.
  3. Generate inside the measured envelope, seeded. Sample the fitted parameters to synthesise variation that spans the range the deployment can produce. Determinism is not optional: the generator version and seed go in the passport, so the training distribution is reproducible by someone who does not trust us.
  4. Train against it, and re-measure on the same harness. Retention is re-computed with the identical transforms and severities, so before and after are comparable numbers rather than two different experiments.
  5. Verify on a real site the model has never seen. This is the load-bearing step. Improvement measured on synthetic variation drawn from the same generator that produced the training data is not evidence — it is the model learning the generator. The claim is only admissible if it survives a held-out physical site, held to the same separation rules as the rotating held-out track.

7. What separates this from data augmentation, after testing it

Augmentation perturbs training data to make a model less fragile, and it has been standard practice for a decade. This section used to claim three things separated the protocol above from turning on a default augmentation pipeline. We tested that claim against an off-the-shelf pipeline at a held-out real condition and one of the three did not survive. All three are still listed, with the failure first and marked, because a differentiator that failed its test is more informative than one that was quietly dropped.

  • Calibration was supposed to be the difference. We tested that, and it is not. Standard augmentation applies a range someone chose; the design in section 6 fits the range to measured variation between real sites, which makes it a claim about the world that can be shown to be wrong. It was, on both halves. The fitted range came back as essentially the identity — the real acquisition difference is not in the parameters our forward model exposes, so there was nothing to calibrate to. And at a held-out real condition an ordinary off-the-shelf augmentation pipeline beat our published transforms (0.1610 against 0.1384 balanced accuracy) and beat the fitted envelope (0.1542) too.

    So calibration is not currently the differentiator, and this bullet no longer claims it is. What survives the test is the two bullets below — off-generator verification and a signed record — and those are the reason we could run this experiment against ourselves and report it. A vendor whose pipeline is not verified off-generator would not have found this out, which is the argument now, and it is a smaller and truer one.
  • The result is verified off-generator. The improvement must appear at a physical site that contributed no training variation. Anything else measures the generator.
  • The whole loop is recorded in a signed document. Envelope, generator version, seed, before-and-after retention, and the site the verification ran at — all inside the evidence passport, so the claim travels with the model instead of living in a slide.

8. What this cannot do

The limits are not marginal and are worth stating before anyone buys against them.

  • It cannot invent a shift nobody measured. Synthetic variation covers the parameters in the envelope. A site that differs in a way no one thought to parameterise is outside it, and the method is silent there rather than protective.
  • It assumes the label survives the transform. That holds by construction for re-acquisition — changing how a scan was made does not change what it shows. It stops holding if a transform is pushed far enough to destroy the finding, which is why severity is bounded and graded rather than open-ended.
  • It does not make a weak model strong. It narrows the gap between where a model was built and where it runs. A model that was never good enough at the source site does not become good enough by being made stable.
  • Today’s numbers are a stand-in, and the stand-in has been tested. The shift on this page is simulated over single-source public data. Every figure here describes a model’s sensitivity to our transforms, which was a hypothesis about its sensitivity to real sites. That hypothesis has now been measured against a real acquisition change and it does not hold — see section 3. So this bullet is no longer a caution about something unknown; it is a statement about something known. Retention under these transforms should not be read as evidence about a change of scanner until the envelope is fitted and the loop is closed off-generator.

9. What it would take

The expensive input is not compute and not modelling. It is paired data: the same subjects or the same units, captured under two or more genuinely different conditions, with the conditions recorded. Everything downstream of that — fitting the envelope, generating inside it, retraining, re-measuring, and signing the result — is already built or specified in this repository.

The cheapest place to acquire it is not medicine. It is any setting where both conditions can be staged deliberately: an inspection rig moved between two benches, one device revision against its successor, one room in the morning and the same room in the afternoon. A single such pairing is enough to replace the simulated envelope with a measured one, and to turn every figure on this page from a hypothesis into a result.

Related: the console’s Variation studio puts the fitted envelope on the sliders, so the gap between a published severity and real variation is something you move rather than something you read; dimensions 2 and 6 are where these numbers enter the scorecard; the passport is where an envelope and a generator seed would be recorded; live evaluation is the separation rule step 5 borrows.