No result paragraph for this entry was found in the log.
EXPERIMENTS.md · lines 2570–2627E50 — The loop runs; the Kenyon-cell code carries no notion of "near", so nothing transfers
The campaign loop the operator specified - the fly scores a pool cheaply, promotes what it
rates highly up the fidelity ladder, learns from what comes back, and goes again - was
already implemented in scripts/campaign.py and had never been run. It runs. Every rung
fires and returns: 62 cluster-expansion calls in 0.4 s, 2 MACE calls in 9.3 s, one Quantum
ESPRESSO job launched, run and collected in 338 s.
Three defects in the loop, found by reading it.
The results from the two dear rungs were discarded. The MACE energy was printed and
thrown away and the lesson stored was the cheap rung's verdict relabelled; the DFT energy
was thrown away and the lesson was an unconditional +1. The fly had never learned
anything from above the cheapest rung.
The fidelity weighting was cancelled. learn_head standardises the reward against its own
running statistics, so a constant factor divides out exactly - and a single DFT lesson at
77x the scale of the others would have arrived as an outlier that saturates every eligible
synapse. Fidelity is now carried as replay count: a truer lesson is heard more times,
which is inverse-variance weighting written as a sample count, and it raises exposure - and
so novelty - for a confirmed composition, which is right.
The teaching signal was starved. Dominance against everything ever evaluated makes a
positive verdict rarer as the record grows: 160 evaluations produced 7 positives. A
learner built on appetitive against aversive dopamine was being told "no" 96% of the time.
Replaced with a verdict against a moving median, which keeps the classes balanced by
construction (quantile_verdict).
The circuit learns, and the learning changes decisions. Rank correlation against the
true objective goes from -0.295 to +0.580 over 120 lessons, and it genuinely reorders:
the before-against-after rank correlation is +0.113 and only 2 of its top 20 survive
learning. Over-replaying destroys it - 160 lessons at 40 replays gives +0.690, the same
lessons at 200 replays gives -0.001 - because the rule only depresses synapses, so a
lesson heard too often drives every eligible one to its floor. Replay is now capped.
And yet the loop only matches random search. It reaches -463.8 meV/atom, better than
the 99th percentile of 3,000 random draws, in about 250 evaluations - which is roughly what
250 random draws would be expected to find. The reason is a single measurement:
The code overlap is flat. Two nearly identical alloys share the same fraction of their
Kenyon-cell code as two entirely different ones, while the physics decorrelates smoothly
and reaches half-correlation at a distance of 0.203. The representation carries no notion
of "near", so a lesson learned at one composition transfers to none - the circuit can
memorise a hundred alloys and predict nothing about the hundred and first, which is
operationally indistinguishable from random.
This is the mushroom body doing what it is for. Sparse expansion and winner-take-all
inhibition are a pattern separator, evolved so that "this odour is poison" does not
generalise to a similar odour. A surrogate for search needs the opposite. The design space
is not the constraint: the campaign's box (every element 5-35%) has the same objective
range, 138 meV/atom, as a wide-open one at 146.