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/figS12_quality_diversity/README.md
Normal file
32
results/figS12_quality_diversity/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# E5 — Quality-diversity selection preserves diversity where greedy selection destroys it
|
||||
|
||||
**Claim tested:** if each generation you *select* which outputs to keep, does chasing the "best"
|
||||
outputs (greedy) accelerate collapse — and does rewarding novelty instead prevent it?
|
||||
|
||||
**Setup (Layer 1, pure math).** `K = 500` items, Zipf truth, `n = 200`, 400 generations, 100 repeats,
|
||||
all arms given the same grounding. Three selection modes: **none** (grounding only, no selection),
|
||||
**greedy** (keep the fittest — highest-`p*` — items), and **quality-diversity (QD)** (a novelty
|
||||
bonus `w_i ∝ f_i · p_i^{-α}` that up-weights rare items). The novelty exponent `α` is swept over
|
||||
`{0.5, 1, 2}`.
|
||||
|
||||
### Symbols
|
||||
- **greedy** — select toward the fittest/most-probable items (directional pressure).
|
||||
- **QD (quality-diversity)** — select for fitness *and* novelty; `α` = strength of the novelty bonus.
|
||||
- **`H`** diversity; **support** = number of distinct items surviving.
|
||||
|
||||
### The three panels
|
||||
1. **Diversity trajectories.** `H` over generations: red = greedy (crashes toward ~0, i.e. fixation
|
||||
on a few items); orange/blue = QD at `α = 1, 2` (holds a high plateau); green = none (reference).
|
||||
Greedy selection is a *second* collapse engine on top of drift.
|
||||
2. **Novelty dose–response.** Stationary `H` vs the novelty exponent `α` for QD (orange dots), with
|
||||
greedy (red dashed) and none (green dashed) as reference lines. QD sits above greedy for **every**
|
||||
`α`, and rises as the novelty bonus strengthens.
|
||||
3. **Surviving items per arm.** Stationary support (number of distinct items alive) as bars: greedy is
|
||||
lowest; QD arms keep progressively more items alive as `α` grows; none is the reference.
|
||||
|
||||
### Takeaway
|
||||
Optimising only for "what looks best" (greedy) collapses the population onto a handful of winners; a
|
||||
novelty-rewarding, quality-diversity objective actively **re-introduces and holds the tail**. Key
|
||||
numbers: greedy `H ≈ 0.01` (near-total fixation) vs QD `H ≈ 0.48–0.88` rising with `α`.
|
||||
**Falsifier (not triggered):** if QD's stationary `H` had been ≤ greedy's, quality-diversity would be
|
||||
doing no work.
|
||||
BIN
results/figS12_quality_diversity/figS12_quality_diversity.pdf
Normal file
BIN
results/figS12_quality_diversity/figS12_quality_diversity.pdf
Normal file
Binary file not shown.
BIN
results/figS12_quality_diversity/figS12_quality_diversity.png
Normal file
BIN
results/figS12_quality_diversity/figS12_quality_diversity.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 148 KiB |
14
results/figS12_quality_diversity/manifest.json
Normal file
14
results/figS12_quality_diversity/manifest.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"experiment": "E5_qd_vs_greedy",
|
||||
"master_seed": 20260704,
|
||||
"git_commit": "a6eb9b75124779375fa1a0b3a64115ecd705b218",
|
||||
"python": "3.14.5",
|
||||
"libraries": {
|
||||
"numpy": "2.5.0",
|
||||
"scipy": "1.18.0",
|
||||
"pandas": "3.0.3",
|
||||
"pyarrow": "24.0.0"
|
||||
},
|
||||
"rows": 360900,
|
||||
"results_sha256": "16281de4d88951a0688ce8acf82ea9c122034b3faa9be7375b884f46e7b26786"
|
||||
}
|
||||
337
results/figS12_quality_diversity/resolved_config.yaml
Normal file
337
results/figS12_quality_diversity/resolved_config.yaml
Normal file
|
|
@ -0,0 +1,337 @@
|
|||
experiment: E5_qd_vs_greedy
|
||||
seed: 20260704
|
||||
n_replicates: 100
|
||||
source_config:
|
||||
experiment: E5_qd_vs_greedy
|
||||
seed: 20260704
|
||||
n_replicates: 100
|
||||
generations: 400
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: none
|
||||
novelty_alpha: 0.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
sweep:
|
||||
- param: dynamics.selection.mode
|
||||
values:
|
||||
- none
|
||||
- greedy
|
||||
- qd
|
||||
- param: dynamics.selection.novelty_alpha
|
||||
values:
|
||||
- 0.5
|
||||
- 1.0
|
||||
- 2.0
|
||||
output:
|
||||
dir: results/figS12_quality_diversity
|
||||
grid:
|
||||
- label:
|
||||
mode: none
|
||||
novelty_alpha: 0.5
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: none
|
||||
novelty_alpha: 0.5
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: none
|
||||
novelty_alpha: 1.0
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: none
|
||||
novelty_alpha: 1.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: none
|
||||
novelty_alpha: 2.0
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: none
|
||||
novelty_alpha: 2.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: greedy
|
||||
novelty_alpha: 0.5
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: greedy
|
||||
novelty_alpha: 0.5
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: greedy
|
||||
novelty_alpha: 1.0
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: greedy
|
||||
novelty_alpha: 1.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: greedy
|
||||
novelty_alpha: 2.0
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: greedy
|
||||
novelty_alpha: 2.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: qd
|
||||
novelty_alpha: 0.5
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: qd
|
||||
novelty_alpha: 0.5
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: qd
|
||||
novelty_alpha: 1.0
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: qd
|
||||
novelty_alpha: 1.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
- label:
|
||||
mode: qd
|
||||
novelty_alpha: 2.0
|
||||
lineage_cfg:
|
||||
truth:
|
||||
K: 500
|
||||
R: 1
|
||||
tail: zipf
|
||||
zipf_s: 1.1
|
||||
tail_frac: 0.5
|
||||
tail_threshold: 0.001
|
||||
init: truth
|
||||
dynamics:
|
||||
n: 200
|
||||
teachers:
|
||||
K_T: 1
|
||||
rho: 0.0
|
||||
q: 1.0
|
||||
grounding:
|
||||
m: 10
|
||||
policy: proportional
|
||||
selection:
|
||||
mode: qd
|
||||
novelty_alpha: 2.0
|
||||
remint:
|
||||
enabled: false
|
||||
period: null
|
||||
H_gate: null
|
||||
generations: 400
|
||||
metrics:
|
||||
kl_floor: 1.0e-09
|
||||
support_eps: 1.0e-09
|
||||
Loading…
Add table
Add a link
Reference in a new issue