Fig. 1: colour-separate theory from AI tiers; explain every empty cell
Category separation per GG: population genetics stays blue, both AI tiers move to shades of orange, with a wider gutter between the theory column and the AI pair. The grounding x LLM cell is upgraded from "not tested" to "established at LLM scale in prior work (21, 30); not re-run here" (Shumailov's Nature collapse result; Gerstgrasser's real-data rescue) - it was never a gap, it was already settled. The caption now states the fill principle: each claim is tested at the cheapest tier that can falsify it; a costlier tier is entered only where it adds a discriminating test, and the LLM society is the one genuinely open cell. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkRLcc18rwT2Lysu6PbG7v
This commit is contained in:
parent
5cb49943db
commit
e9fb28d8c4
5 changed files with 25 additions and 12 deletions
|
|
@ -20,7 +20,7 @@ An operator of a model population faces recurring decisions for which there is n
|
||||||
|
|
||||||
\begin{figure*}[p]\centering % fig1
|
\begin{figure*}[p]\centering % fig1
|
||||||
\includegraphics[width=\textwidth]{figs/fig1.pdf}
|
\includegraphics[width=\textwidth]{figs/fig1.pdf}
|
||||||
\caption{The experimental programme. Each population-genetic abstraction (Table 1) is tested at up to three tiers, ordered left to right by increasing realism: an exact Wright--Fisher simulator over knowledge distributions (closed forms; bitwise-reproducible), trained neural networks measured against exact oracles (recurrent, feedforward, and variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an exact-match verifier). The same population-genetic abstractions are carried across the three tiers. Rows are the framework's mechanisms, each defined at the left margin; filled cells name the experiments run at each tier; dashed cells were not tested, and the composed society at language-model scale is the paper's stated gap.}\label{fig1}
|
\caption{The experimental programme. Each population-genetic abstraction (Table 1) is tested at up to three tiers, ordered left to right by increasing realism: an exact Wright--Fisher simulator over knowledge distributions (closed forms; bitwise-reproducible), trained neural networks measured against exact oracles (recurrent, feedforward, and variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an exact-match verifier). Colour separates the two categories: the population-genetic theory tier in blue, the two AI-model tiers in oranges. The same abstractions are carried across all three. Rows are the framework's mechanisms, each defined at the left margin; filled cells name the experiments run at each tier. Each claim is tested at the cheapest tier that can falsify it, and a costlier tier is entered only where it adds a discriminating test rather than a replication: grounding at language-model scale is established in prior work (21, 30) and is not re-run; epistasis and the society skip the middle tier, whose distinctive value (exact oracles) does not bear on those operator-level questions; and the society at language-model scale is the integrative experiment this paper specifies but does not run --- its stated gap.}\label{fig1}
|
||||||
\end{figure*}
|
\end{figure*}
|
||||||
|
|
||||||
\section*{The minimal model, and where its exactness ends}
|
\section*{The minimal model, and where its exactness ends}
|
||||||
|
|
|
||||||
|
|
@ -28,10 +28,16 @@ FIGURES: dict[str, tuple[list[str], str]] = {
|
||||||
"trained neural networks measured against exact oracles (recurrent, feedforward, and "
|
"trained neural networks measured against exact oracles (recurrent, feedforward, and "
|
||||||
"variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on "
|
"variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on "
|
||||||
"MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an "
|
"MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an "
|
||||||
"exact-match verifier). The same population-genetic abstractions are carried across the "
|
"exact-match verifier). Colour separates the two categories: the population-genetic theory "
|
||||||
"three tiers. Rows are the framework's mechanisms, each defined at the left margin; filled "
|
"tier in blue, the two AI-model tiers in oranges. The same abstractions are carried across "
|
||||||
"cells name the experiments run at each tier; dashed cells were not tested, and the composed "
|
"all three. Rows are the framework's mechanisms, each defined at the left margin; filled "
|
||||||
"society at language-model scale is the paper's stated gap."),
|
"cells name the experiments run at each tier. Each claim is tested at the cheapest tier that "
|
||||||
|
"can falsify it, and a costlier tier is entered only where it adds a discriminating test "
|
||||||
|
"rather than a replication: grounding at language-model scale is established in prior work "
|
||||||
|
"(21, 30) and is not re-run; epistasis and the society skip the middle tier, whose "
|
||||||
|
"distinctive value (exact oracles) does not bear on those operator-level questions; and the "
|
||||||
|
"society at language-model scale is the integrative experiment this paper specifies but does "
|
||||||
|
"not run --- its stated gap."),
|
||||||
"fig2": (["paper/pnas/figs/fig2.pdf"],
|
"fig2": (["paper/pnas/figs/fig2.pdf"],
|
||||||
"Grounding is immigration. (A) Stationary diversity against the grounding fraction in the "
|
"Grounding is immigration. (A) Stationary diversity against the grounding fraction in the "
|
||||||
"minimal inheritance model: simulation (points, 95\\% CI) matches the exact immigration--drift "
|
"minimal inheritance model: simulation (points, 95\\% CI) matches the exact immigration--drift "
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -50,16 +50,16 @@ def fig1():
|
||||||
("Population genetics (exact)", "Wright\u2013Fisher simulator (NumPy)", "closed forms \u00b7 bitwise-reproducible",
|
("Population genetics (exact)", "Wright\u2013Fisher simulator (NumPy)", "closed forms \u00b7 bitwise-reproducible",
|
||||||
"#3d7eb8", "#eaf2fa"),
|
"#3d7eb8", "#eaf2fa"),
|
||||||
("Trained networks", "RNN \u00b7 MLP \u00b7 VAE on a synthetic oracle;\nconvolutional VAE on MNIST",
|
("Trained networks", "RNN \u00b7 MLP \u00b7 VAE on a synthetic oracle;\nconvolutional VAE on MNIST",
|
||||||
"sign-level tests \u00b7 exact oracles", "#3f8f4f", "#edf8ea"),
|
"sign-level tests \u00b7 exact oracles", "#e97313", "#fdefe1"),
|
||||||
("Language models", "LoRA specialists on Qwen 0.5B & 7B;\nexact-match verifier",
|
("Language models", "LoRA specialists on Qwen 0.5B & 7B;\nexact-match verifier",
|
||||||
"seed-replicated signs", "#d9650f", "#fdf0e6"),
|
"seed-replicated signs", "#b04e0c", "#fbe6d4"),
|
||||||
]
|
]
|
||||||
ROWS = [
|
ROWS = [
|
||||||
("Grounding = immigration",
|
("Grounding = immigration",
|
||||||
"fresh verified samples from a\nfixed external source enter the\ntraining mix every generation",
|
"fresh verified samples from a\nfixed external source enter the\ntraining mix every generation",
|
||||||
["immigration\u2013drift equilibrium:\n$g \\approx 0.05$ retains $\\geq$95% diversity;\nobservation floor $1-e^{-mp}$",
|
["immigration\u2013drift equilibrium:\n$g \\approx 0.05$ retains $\\geq$95% diversity;\nobservation floor $1-e^{-mp}$",
|
||||||
"collapse & rescue in every\narchitecture; MNIST: dry 30$\\to$1 modes,\n10% grounding holds 30/30;\nestimator-bias learning kernel",
|
"collapse & rescue in every\narchitecture; MNIST: dry 30$\\to$1 modes,\n10% grounding holds 30/30;\nestimator-bias learning kernel",
|
||||||
None]),
|
"LIT:established at LLM scale in\nprior work (refs. 21, 30);\nnot re-run here"]),
|
||||||
("Recombination = sex",
|
("Recombination = sex",
|
||||||
"a child inherits from several\nparents, reassembling variants\nthat arose in different lineages",
|
"a child inherits from several\nparents, reassembling variants\nthat arose in different lineages",
|
||||||
["blending conservation law\n(first-order cancellation);\nunion-operator gain; Fisher\u2013Muller",
|
["blending conservation law\n(first-order cancellation);\nunion-operator gain; Fisher\u2013Muller",
|
||||||
|
|
@ -86,12 +86,13 @@ def fig1():
|
||||||
ax.set_axis_off()
|
ax.set_axis_off()
|
||||||
ax.set_xlim(0, 1)
|
ax.set_xlim(0, 1)
|
||||||
ax.set_ylim(0, 1)
|
ax.set_ylim(0, 1)
|
||||||
x0, gap = 0.205, 0.008
|
x0, gap, sep = 0.205, 0.008, 0.02 # sep: extra gutter between theory and the AI pair
|
||||||
cw = (1.0 - x0) / 3
|
cw = (1.0 - x0 - sep) / 3
|
||||||
|
xs = [x0, x0 + cw + sep, x0 + 2 * cw + sep]
|
||||||
row_h, row_top = 0.157, 0.805
|
row_h, row_top = 0.157, 0.805
|
||||||
|
|
||||||
for j2, (name, arch, guarantee, edge, face) in enumerate(TIERS):
|
for j2, (name, arch, guarantee, edge, face) in enumerate(TIERS):
|
||||||
x = x0 + j2 * cw
|
x = xs[j2]
|
||||||
ax.add_patch(FancyBboxPatch((x + gap, 0.825), cw - 2 * gap, 0.155,
|
ax.add_patch(FancyBboxPatch((x + gap, 0.825), cw - 2 * gap, 0.155,
|
||||||
boxstyle="round,pad=0.004", fc=edge, ec=edge, lw=1.4))
|
boxstyle="round,pad=0.004", fc=edge, ec=edge, lw=1.4))
|
||||||
ax.text(x + cw / 2, 0.966, name, ha="center", va="top", fontsize=9.5,
|
ax.text(x + cw / 2, 0.966, name, ha="center", va="top", fontsize=9.5,
|
||||||
|
|
@ -109,7 +110,7 @@ def fig1():
|
||||||
ax.text(0.0, y1 - 0.054, definition, ha="left", va="top", fontsize=6.2,
|
ax.text(0.0, y1 - 0.054, definition, ha="left", va="top", fontsize=6.2,
|
||||||
style="italic", color="#555", linespacing=1.35)
|
style="italic", color="#555", linespacing=1.35)
|
||||||
for j2, cell in enumerate(cells):
|
for j2, cell in enumerate(cells):
|
||||||
x = x0 + j2 * cw
|
x = xs[j2]
|
||||||
edge, face = TIERS[j2][3], TIERS[j2][4]
|
edge, face = TIERS[j2][3], TIERS[j2][4]
|
||||||
if cell is None:
|
if cell is None:
|
||||||
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
||||||
|
|
@ -117,6 +118,12 @@ def fig1():
|
||||||
lw=0.8, ls=(0, (3, 2))))
|
lw=0.8, ls=(0, (3, 2))))
|
||||||
ax.text(x + cw / 2, yc, "not tested at this tier", ha="center", va="center",
|
ax.text(x + cw / 2, yc, "not tested at this tier", ha="center", va="center",
|
||||||
fontsize=6.4, style="italic", color="#999")
|
fontsize=6.4, style="italic", color="#999")
|
||||||
|
elif cell.startswith("LIT:"):
|
||||||
|
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
||||||
|
boxstyle="round,pad=0.004", fc="white", ec="#bbbbbb",
|
||||||
|
lw=0.8, ls=(0, (3, 2))))
|
||||||
|
ax.text(x + cw / 2, yc, cell[4:], ha="center", va="center",
|
||||||
|
fontsize=6.4, style="italic", color="#777", linespacing=1.35)
|
||||||
elif cell == "OPEN":
|
elif cell == "OPEN":
|
||||||
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
||||||
boxstyle="round,pad=0.004", fc="white", ec=edge,
|
boxstyle="round,pad=0.004", fc="white", ec=edge,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue