recombination: reproduce the E4 "merge, don't average" finding in real weights
src/neural/recombine.py mirrors Layer-1 run_coverage but trains K_T specialist RNNs on assignments from the exact shared-switch retention construction (K_T/rho/q clean; union matches the closed form), then recombines the measured teacher distributions two ways: mean (naive pooling) vs oracle-guided max-merge (per-mode strongest teacher, M2N2-style), each followed by size-n resampling. Result (8 reps): at rho=0, union rises 0.49->0.96 (supply matches closed form); analytic surviving_max rises 0.043->0.087 while surviving_mean stays flat ~0.045 — the conservation law (averaging cancels the union gain, max-merge realises it). At rho=1 (identical teachers) union and max are flat. The lesson holds in the neural setting; trained-weight columns show the same signs but noisier (smoothing inflates baseline; deep tail barely clears n=200 resampling). torch-gated test added. 93 tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
aca7b394a3
commit
d22dd9d535
7 changed files with 263 additions and 7 deletions
17
results/recombination/manifest.json
Normal file
17
results/recombination/manifest.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"experiment": "recombination",
|
||||
"master_seed": 20260704,
|
||||
"git_commit": "aca7b394a3f4b1f487afdb01d70757956408d59f",
|
||||
"python": "3.14.5",
|
||||
"libraries": {
|
||||
"numpy": "2.5.0",
|
||||
"scipy": "1.18.0",
|
||||
"pandas": "3.0.3",
|
||||
"pyarrow": "24.0.0",
|
||||
"torch": "2.12.1"
|
||||
},
|
||||
"rows": 64,
|
||||
"results_sha256": "8e6cb83e4e5a0c711137d4f70c3d83192f845ceaa9194b3aeac427741808477b",
|
||||
"layer": "1.5",
|
||||
"model_kind": "rnn"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue