Is the small survival network as accurate as it can be?
Retrains the small board evaluator at several sizes and settings to test whether more capacity predicts lifetime better.
On this page
Retrain the tiny board-scoring network that already fits inside the search at several widths, training lengths and learning rates, and ask whether any of them predicts remaining lifetime better than the one that played — without playing a single game.
What happened
Nothing beat the network that already played. Across thirteen retrainings the best configuration was 0.0022 more accurate than the baseline, and the three training seeds of the baseline itself spread by 0.0023, so the difference is training noise, and the gate fixed in advance reads supported-as-tested: the network's accuracy on this corpus is saturated. The revealing part is the shape of the failure. Making the network wider lowered its training loss step by step and lowered its held-out accuracy step by step; the eight-times wider version was the worst predictor of games it had not seen. That is a network memorising a corpus that is too small for it, not one that is too small for the job. The next learned-leaf experiment should change the data or the target, not the width.
Technical recordThe result
Result RS-20260822T024228Z-94090db1 for EX-20260822-nnue-leaf-capacity-sweep-79632fd9, run
RUN-20260822T020655Z-feaf4331, valid, pass (supported-as-tested), evidence
tier mechanics-only (offline, no game played). Held-out lifetime Pearson on
the whole-origin test split (486,819 examples): baseline h64/m32/10 epochs
0.8546 (seeds 42283 and 42284: 0.8567, 0.8569; spread 0.0023); h32 0.8550;
h128 0.8543; h256 0.8515; h256/m64/20 epochs 0.8446; h512/m64/20 epochs
0.8378 (final training loss 0.5110 → 0.4197 over that ladder); h64 at 20
epochs 0.8564; mid 16 / mid 64 0.8542 / 0.8568; lr 1e-3 0.8552. Mirrored-board
Pearson matches each row within 0.0004. The recorded finding-08 baseline was
0.8564 on an earlier torch build. Full table in runs/RUN-20260822T020655Z-feaf4331/summary.json.
The intuition
The learned leaf is the one learned evaluator in this repository that helped inside the search, and its page ends with a claim: "train a bigger survival model is not the next experiment", because a network five times its size was only 0.008 more accurate. That claim rests on a single comparison between two quite different architectures. If the small network's accuracy is set by its inputs — 135 active features per board, mostly single cells and adjacent pairs — then making it wider or training it longer will not help, and the next learned-leaf experiment should change what the network sees or what it is asked to predict. If instead the network is simply too small or under-trained, wider versions will be more accurate, and the claim is wrong.
Each training run costs about half a minute on the integrated GPU and reads only the corpus that already exists, so the question is cheap to settle either way.
How it works, step by step
- Same data, same split. Every run trains on the existing 5.26-million-position corpus with the whole-origin split the learned-leaf work used, so held-out numbers are comparable with the recorded baseline.
- A small grid. Hidden width 32 to 512, middle layer 16 to 64, ten or twenty epochs, two learning rates — thirteen runs, including three training seeds of the baseline so that a difference can be compared with the noise of training itself.
- One number per run. Held-out correlation between predicted and actual remaining lifetime, read straight from the trainer's own output file; mean error in moves, hazard accuracy and the mirrored-board check are reported beside it.
- A gate fixed in advance. The claim "saturated" is supported if the best run beats the baseline by no more than twice the seed-to-seed spread (or 0.005, whichever is larger); it is rejected if the best run is at least 0.02 better and more than three spreads away; anything between is inconclusive.
Technical recordThe record
- Theory
TH-20260822-nnue-leaf-capacity-saturation-9c45e42e; experimentEX-20260822-nnue-leaf-capacity-sweep-79632fd9(frozen, CHECK tier, diagnostic, no seed opened). - Trainer:
approaches/lifetime-objective/learned-leaf/train_leaf.py, unchanged; corpusruns/RUN-A51D-corpus/all.states; the recorded baseline is held-out lifetime Pearson 0.8564 (runs/RUN-A52-LEAF/model/leafnet-h64.json). sweep.shruns the grid;summarize.pytabulates and applies the gate.- Limitation stated in advance: inference cost per board is not measured here, so a wider network that wins offline is not yet known to fit the roughly one-microsecond leaf budget the search imposes.
Sources
sweep.sh: the thirteen-run grid, reading the existing corpus onlysummarize.py: the table and the preregistered gate
RecordsTheories, experiments and results that reference this directory
Claim: On the existing 5.26M-record training corpus (runs/RUN-A51D-corpus/all.states, whole-origin split of dataset.py), the NNUE-shaped survival leaf's held-out lifetime correlation does not improve by more than 0.01 when hidden width is raised from 64 to 512, the middle layer from 32 to 64, epochs from 10 to 20, or the learning rate is changed: its accuracy is saturated by the feature space and the data, not by capacity or training length.
This theory is currently supported-as-tested at the mechanics-only (checks only, no games played) level.
It compares leafnet-capacity-grid against fair-d4 at the CHECK (mechanics checks only, no games played) level, using previously-evaluated-development data.
valid run outcome: pass The run was valid and the outcome was pass (mechanics-only (checks only, no games played)). Read the result.
The run was valid; the outcome was pass, at the mechanics-only (checks only, no games played) level. Of 3 preregistered checks, 3 passed and 0 failed.
Offline capacity/training sweep of the NNUE-shaped survival leaf on runs/RUN-A51D-corpus/all.states (13 runs, same whole-origin test split, 486,819 held-out examples). Baseline h64/m32/e10/lr3e-3 held-out lifetime Pearson 0.8546 (finding-08 recorded 0.8564 on an earlier torch build); seed-to-seed spread 0.0023 over three seeds. Best configuration h64-m64-e10-lr3e3-s0 at 0.8568, delta +0.0022 <= max(0.005, 2 x spread): gate verdict supported-as-tested. Width hurts: Pearson by width (params, Pearson, final train loss) h32-m32-e10-lr3e3-s0 (286,447 params: 0.855, loss 0.5238); h64-m32-e10-lr3e3-s0 (572,367 params: 0.8546, loss 0.511); h128-m32-e10-lr3e3-s0 (1,144,207 params: 0.8543, loss 0.5006); h256-m32-e10-lr3e3-s0 (2,287,887 params: 0.8515, loss 0.4857); h256-m64-e20-lr3e3-s0 (2,296,591 params: 0.8446, loss 0.4596); h512-m64-e20-lr3e3-s0 (4,592,143 params: 0.8378, loss 0.4197). Training loss falls monotonically with width while held-out accuracy falls, i.e. larger students overfit this corpus; 20 epochs change nothing at h64 and hurt at h128/h256; lr 1e-3 and mid 16/64 are within spread. The accuracy of this feature space on this corpus is saturated near 0.855-0.857; it is not limited by hidden width, middle width, epochs or learning rate.
Technical recordLimitations recorded with the result
- Offline diagnostic on teacher labels from already-played games; says nothing about playing strength (finding-08: a 0.008 Pearson gap did not separate two models in play).
- Single corpus (5.26M records, whole-origin split); a corpus several times larger could move the saturation point and is the natural follow-up, since the wider models overfit rather than underfit.
- Per-board inference cost was not measured; irrelevant to the verdict because no wider model won.
- GPU ran concurrently with a 30-thread CPU evolution; wall times are not timing-grade; metrics are unaffected.
- The baseline reproduction differs from finding-08's 0.8564 by 0.0018 on a newer torch build; within the measured seed spread.
Agent contextSource files, operational notes and how to reproduce
Directory: approaches/lifetime-objective/leaf-capacity-sweep