Revisiting Layer 1 against Layer 1.5 (and Riis 2026, arXiv:2604.08554):
neutral Wright-Fisher is a null that BOTH neural architectures deviate
from, in opposite directions. Add a learning kernel to the refit step,
p_{t+1} = T_theta(counts/n), with two population-genetics knobs -- reset u
(mutation toward a prior = smoothing) and temperature tau (sharpening =
mode-competition) -- both identity by default, so the histogram bridge and
all 68 scientific-validation/correctness tests are unchanged.
Result: neutral drift fails both neural models, oppositely.
- VAE regime (n=6000, K=30): neutral drift is inert (no collapse), yet the
real VAE collapsed to one mode. Sharpening tau=0.8 reproduces it -- the
estimator ADDS collapse pressure.
- RNN regime (n=200, K=256): neutral drives H->0, but the real RNN only
partially collapses. Mutation u=0.006 reproduces the H-floor -- the
estimator REMOVES collapse pressure. Honest caveat: uniform-mutation
overshoots the RNN's forward-KL, evidence its smoothing prior is
truth-like, not uniform (future refinement).
This mechanistically explains the architecture-generality result and the
softened neural g*, and develops the estimator axis Riis names as future
work. New: knowledge/kernel.py, configs/layer1/kernel_{sharpen,smooth}.yaml,
figures/plot_kernel.py (overlays analytic arms vs committed neural
endpoints), READMEs, tests/test_kernel.py (+6, 105 total green). Strategic
Riis positioning recorded in CLAUDE.md: concede "collapse=drift" as prior
art; lead with recombination, the kernel axis, and the Lamarckian society.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
82 lines
1.4 KiB
YAML
82 lines
1.4 KiB
YAML
experiment: kernel_sharpen
|
|
seed: 20260705
|
|
n_replicates: 24
|
|
source_config:
|
|
experiment: kernel_sharpen
|
|
kind: lineage
|
|
seed: 20260705
|
|
n_replicates: 24
|
|
truth:
|
|
K: 30
|
|
R: 1
|
|
tail: zipf
|
|
zipf_s: 1.5
|
|
tail_threshold: 0.01
|
|
init: truth
|
|
dynamics:
|
|
n: 6000
|
|
grounding:
|
|
m: 0
|
|
policy: proportional
|
|
kernel:
|
|
reset: 0.0
|
|
temperature: 1.0
|
|
floor: 0.0
|
|
generations: 15
|
|
metrics:
|
|
kl_floor: 1.0e-09
|
|
support_eps: 1.0e-09
|
|
sweep:
|
|
- param: dynamics.kernel.temperature
|
|
values:
|
|
- 1.0
|
|
- 0.8
|
|
output:
|
|
dir: results/kernel_sharpen
|
|
grid:
|
|
- label:
|
|
temperature: 1.0
|
|
lineage_cfg:
|
|
truth:
|
|
K: 30
|
|
R: 1
|
|
tail: zipf
|
|
zipf_s: 1.5
|
|
tail_threshold: 0.01
|
|
init: truth
|
|
dynamics:
|
|
n: 6000
|
|
grounding:
|
|
m: 0
|
|
policy: proportional
|
|
kernel:
|
|
reset: 0.0
|
|
temperature: 1.0
|
|
floor: 0.0
|
|
generations: 15
|
|
metrics:
|
|
kl_floor: 1.0e-09
|
|
support_eps: 1.0e-09
|
|
- label:
|
|
temperature: 0.8
|
|
lineage_cfg:
|
|
truth:
|
|
K: 30
|
|
R: 1
|
|
tail: zipf
|
|
zipf_s: 1.5
|
|
tail_threshold: 0.01
|
|
init: truth
|
|
dynamics:
|
|
n: 6000
|
|
grounding:
|
|
m: 0
|
|
policy: proportional
|
|
kernel:
|
|
reset: 0.0
|
|
temperature: 0.8
|
|
floor: 0.0
|
|
generations: 15
|
|
metrics:
|
|
kl_floor: 1.0e-09
|
|
support_eps: 1.0e-09
|