Restructure: descriptive tier and experiment names, paper/manuscript
- paper/pnas -> paper/manuscript (venue-neutral)
- configs/layer1 -> configs/inheritance, src/knowledge -> src/inheritance
(imported as `inheritance`), make layer1 -> make inheritance; layer2 alias dropped
- inheritance and trained-network bundles named after the manuscript figure
they feed (fig2_grounding_sweep, figS3_rebaselining, ...), or descriptively
where they feed none; configs keep their `experiment:` value so parquet
hashes are unchanged, only output.dir moves
- figure scripts, SI figure sources, notebooks, REPRODUCING.md, README and the
SI Methods/tables updated; make clean no longer deletes tracked manifests;
reproduce.sh hashes the s{seed}/ layouts too
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y64o8FKP7rCuXzC48pxpMm
This commit is contained in:
parent
84124de143
commit
ab3dc10587
240 changed files with 477 additions and 476 deletions
32
results/figS1_architectures/README.md
Normal file
32
results/figS1_architectures/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# architectures — collapse and rescue are architecture-general
|
||||
|
||||
**Claim tested:** is model collapse (and its cure, grounding) a quirk of one model type, or does the
|
||||
same signature appear across genuinely different neural architectures?
|
||||
|
||||
**Setup (Layer 1.5).** The identical generational loop is run with three different generative models —
|
||||
an **exact histogram** (no neural net), an **autoregressive GRU** (recurrent), and a **causal-masked
|
||||
MLP** (feed-forward) — each a distinct "inductive bias." `K = 256` modes, `n = 200`, 22 generations,
|
||||
5 repeats, compared at **dry (`g = 0`)** vs **grounded (`g = 0.05`)**.
|
||||
|
||||
### Symbols
|
||||
- **inductive bias** — the built-in assumptions of a model type (a histogram has none; a GRU and an MLP smooth differently).
|
||||
- **forward-KL** distance from truth; **tail items alive** — how many rare modes still appear.
|
||||
- **dry** = no grounding; **grounded** = 5% real data mixed in.
|
||||
|
||||
### The three panels
|
||||
1. **Trajectories.** Forward-KL over generations, coloured by architecture; **solid = dry** (climbs,
|
||||
collapse) vs **dashed = grounded** (held down). The dry-up / grounded-down gap appears in **every**
|
||||
architecture.
|
||||
2. **Stationary forward-KL (grouped bars).** For each architecture, dry (red) vs grounded (green).
|
||||
Divergence **falls with grounding across all three** — histogram, GRU, MLP.
|
||||
3. **Tail-item survival (grouped bars).** Same grouping. Survival **rises with grounding across all
|
||||
three.** (Note the histogram's bars are tiny: with no smoothing it drops rare modes outright,
|
||||
whereas the GRU/MLP keep some alive — an inductive-bias difference, not a contradiction.)
|
||||
|
||||
### Takeaway
|
||||
The Wright–Fisher collapse operator and the grounding rescue are **not artefacts of one model** — they
|
||||
show up in an exact counter, a recurrent net, and a feed-forward net alike. This is the
|
||||
architecture-generality claim of Layer 1.5. **Falsifier (not triggered):** if the signs had appeared
|
||||
only for the histogram, collapse would be a property of the idealised operator, not of trained models.
|
||||
*(A VAE was also implemented but fails the generation-0 fidelity check on this task, so it is excluded
|
||||
to avoid confusing underfitting with collapse — documented as a known limitation.)*
|
||||
BIN
results/figS1_architectures/figS1_architectures.pdf
Normal file
BIN
results/figS1_architectures/figS1_architectures.pdf
Normal file
Binary file not shown.
BIN
results/figS1_architectures/figS1_architectures.png
Normal file
BIN
results/figS1_architectures/figS1_architectures.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 156 KiB |
17
results/figS1_architectures/manifest.json
Normal file
17
results/figS1_architectures/manifest.json
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"experiment": "architecture_generality",
|
||||
"master_seed": 20260704,
|
||||
"git_commit": "840b6b00b35ea3f69ef7e0f531914986f88d74a5",
|
||||
"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": 690,
|
||||
"results_sha256": "8f44a15e66c638fc0c717dab9b9d3feedad1cb4cee1890159a325f884677b32e",
|
||||
"layer": "1.5",
|
||||
"model_kind": "rnn"
|
||||
}
|
||||
275
results/figS1_architectures/resolved_config.yaml
Normal file
275
results/figS1_architectures/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
experiment: architecture_generality
|
||||
seed: 20260704
|
||||
n_replicates: 5
|
||||
source_config:
|
||||
experiment: architecture_generality
|
||||
kind: gen_lineage
|
||||
seed: 20260704
|
||||
n_replicates: 5
|
||||
generations: 22
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: rnn
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 0
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
sweep:
|
||||
- param: model.kind
|
||||
values:
|
||||
- histogram
|
||||
- rnn
|
||||
- mlp
|
||||
- param: g
|
||||
values:
|
||||
- 0.0
|
||||
- 0.05
|
||||
output:
|
||||
dir: results/figS1_architectures
|
||||
grid:
|
||||
- label:
|
||||
kind: histogram
|
||||
g: 0.0
|
||||
m: 0
|
||||
neural_cfg:
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: histogram
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 0
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 22
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
kind: histogram
|
||||
g: 0.05
|
||||
m: 11
|
||||
neural_cfg:
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: histogram
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 11
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 22
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
kind: rnn
|
||||
g: 0.0
|
||||
m: 0
|
||||
neural_cfg:
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: rnn
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 0
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 22
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
kind: rnn
|
||||
g: 0.05
|
||||
m: 11
|
||||
neural_cfg:
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: rnn
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 11
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 22
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
kind: mlp
|
||||
g: 0.0
|
||||
m: 0
|
||||
neural_cfg:
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: mlp
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 0
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 22
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
kind: mlp
|
||||
g: 0.05
|
||||
m: 11
|
||||
neural_cfg:
|
||||
synthetic:
|
||||
K: 256
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.3
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
style_len: 3
|
||||
style_vocab: 5
|
||||
id_base: 2
|
||||
model:
|
||||
kind: mlp
|
||||
hidden: 192
|
||||
embed: 24
|
||||
epochs: 25
|
||||
lr: 0.002
|
||||
batch_size: 256
|
||||
n_eval: 12000
|
||||
dynamics:
|
||||
n: 200
|
||||
grounding:
|
||||
m: 11
|
||||
policy: proportional
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 22
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
Loading…
Add table
Add a link
Reference in a new issue