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
283
paper/manuscript/body.tex
Normal file
283
paper/manuscript/body.tex
Normal file
|
|
@ -0,0 +1,283 @@
|
|||
\section*{Significance statement}
|
||||
|
||||
Artificial intelligence increasingly consists of populations of models. Models are fine-tuned from common ancestors, trained on data that earlier models generated, and combined by weight merging. These practices couple model generations the way reproduction couples biological generations, and they raise the same question: how does a population keep and accumulate abilities over time? I transfer the population genetics of sexual reproduction to this setting and test it in simulations, small neural networks, and language models. The framework recasts continual learning at the population scale and yields design rules: how much real data retraining needs, when to combine models, when to keep them separate, when to stop combining them, and how to anticipate a failed combination before making it.
|
||||
|
||||
\section*{Abstract}
|
||||
|
||||
AI development increasingly resembles a population process. Models are specialised, retrained on model output, and recombined by weight merging, in evolutionary vocabulary with little evolutionary theory. I treat multigenerational model populations as systems whose inheritance, diversity, and compatibility must be managed, and transfer to them the population genetics of sexual reproduction. That training on model output is genetic drift, with model collapse its signature, is established; here I develop what follows. A minimal inheritance model is exactly Wright--Fisher, and trained networks depart from it by a measurable, architecture-specific bias. In this model grounding is immigration: a real-data fraction far below one retained most equilibrium diversity, and protecting a rare capability costs the inverse of its frequency. Refitting a child to the average of its parents' outputs cancels the gain of having several parents, to first order for rare items, whereas operators that keep each parent's strongest contribution realise it. Merged language-model specialists exceeded every parent across seeds. In a six-generation language-model population, lineages obliged to merge collapsed once partners stopped knowing different things; lineages allowed to refuse a merge, or made to stop after three generations, finished level with never merging, with or without selection between lineages, and merging with one's own ancestor was safer than merging with a contemporary. Blind recombination fails on rugged task landscapes; screening candidate offspring restores the gain. I introduce model speciation: the merge barrier remaining after permutation-and-rescaling alignment tracks functional conflict, isolation did not emerge from specialisation alone, and pre-merge functional disagreement predicted merge damage where weight geometry did not.
|
||||
|
||||
\medskip\hrule\medskip
|
||||
|
||||
\section*{Introduction}
|
||||
|
||||
Machine learning has become a population-scale phenomenon. Public repositories host millions of models (Hugging Face passed three million by 2026), most of them fine-tunes, distillations, or merges of a few foundation models, forming family trees already mapped by phylogenetic methods (1--3). \emph{Model merging}, the combination of trained parents into a new model by averaging their weights, is mainstream practice with standard tooling and thousands of hybrid checkpoints, some topping leaderboards (4--7), and its literature already speaks of ``crossover,'' ``mutation,'' and ``mate choice'' in populations of merging models that climb benchmarks (5, 8--10) and stagnate as their members grow alike (11).
|
||||
|
||||
Generations are coupled through data as well as weights. Models increasingly learn from model output: frontier alignment pipelines are predominantly synthetic (over 98\% in documented cases; 12, 13), self-generated instruction data seeds whole lineages (14), much of the public web is machine-generated or machine-translated (15, 16), and the stock of human text is projected to run out within this decade (17). Multi-agent systems and agent economies put many models into sustained contact (18--21). A population whose members inherit from one another, recombine, and retransmit is an evolving population in the technical sense, and I transfer to it the branch of biology built for that situation, the population genetics of the evolution of sex (a transfer anticipated by the reading of sex as an algorithm for mixability; 22).
|
||||
|
||||
Training each generation on the previous generation's output degrades it (\emph{model collapse}). Rare capabilities vanish first and the lineage drifts toward its own most common behaviour (23). That degradation is \emph{genetic drift}, the loss of rare variants in any finite population when each generation is a finite sample of the last (the accident by which rare surnames vanish from small villages, with nothing selecting against them). The identification has been made repeatedly and independently, for sequential inference chains before deep learning (24), for language-model text ecosystems (25), as a first-extinction law (26), and in quantitative-genetic form for self-consuming diffusion models (27). Drift is only the entry point, because population genetics is above all a theory of what keeps a finite population from decaying (immigration, recombination, selection, population structure) and of where each of those fails, and every one of them has a counterpart that the operator of a model population can switch on: real data entering each generation, merging, selection against a verifier, and the choice of which models merge with which.
|
||||
|
||||
An operator of a model population faces recurring decisions with no principled guidance. How much verified real data does retraining need? Will combining two models compose their abilities or damage them? Can incompatibility be detected before a failed merge is paid for? When should specialists be kept separate? These are machine learning's oldest problem, \emph{continual learning} (acquiring new abilities without losing old ones; 28, 29), transposed from a single network to a population whose members inherit from one another, and each has a population-genetic answer with a number attached (how many real samples per generation, how far the average sits below the best parent, how much the parents disagree on shared inputs). Table 1 gives the correspondences the argument runs on. Fig. 1A maps the programme across three tiers (an inheritance model in simulation, trained neural networks, language models). Fig. 1B draws the change of viewpoint the transfer rests on. Models are usually pictured as a society in space, contemporaries exchanging messages, but the couplings that matter here (training on model output, merging, real data entering each generation) run between generations, and a society coupled in time is what population genetics describes.
|
||||
|
||||
\begin{figure*}[p]\centering % fig1
|
||||
\includegraphics[width=\textwidth]{figs/fig1a.pdf}\\[6pt]
|
||||
\includegraphics[width=\textwidth]{figs/fig1b.pdf}
|
||||
\caption{A map of the study. (A) Each row is a biological mechanism the paper borrows, each column a level of realism at which it is tested: an inheritance model (an exact simulation of knowledge transmission, green), trained neural networks measured against exact oracles (blue), and language models (blue). Filled cells name the experiments run at each level and, in the corner, the figure or table reporting them; grey cells were not run, either because the result is established in prior work (23, 34) or because that level adds no new test for that question. The inheritance model is the reference column: it sets the expectation the real-model experiments are read against. (B) The change of viewpoint the transfer rests on. A group of models is usually pictured as a society in space, contemporaries exchanging messages. The couplings studied here run between generations: training on model output (inheritance), weight-space merging (recombination), and verified real data entering each generation (immigration from reality). That is a society in time, which is what population genetics describes. Dots are capabilities: the rare one (gold) is lost under single-parent inheritance, reassembled by merging complementary parents, and re-supplied by grounding.}\label{fig1}
|
||||
\end{figure*}
|
||||
|
||||
\section*{Results}
|
||||
|
||||
\subsection*{The inheritance model and its calibration against trained networks}
|
||||
|
||||
Knowledge is modelled as a distribution \texttt{p\_t} over \texttt{K} discrete \emph{items}, each standing for a capability, a fact or a mode of behaviour. An item is the counterpart of an allele, and a \emph{capability} is what an item stands for. A fixed true distribution \texttt{p*} gives each item its true frequency, and its rare tail (the items of lowest frequency) carries the knowledge most at risk. Following population genetics I call an item's frequency \texttt{p\_i} its \emph{mass}, the probability that one sample drawn from the distribution is that item (the allele frequency of Table 1), and the mass of a set of items is the sum of their frequencies. One generation has a single parent and a single child (several parents are the subject of the merging section) and consists of three steps: draw \texttt{n} samples from the parent's distribution; optionally add \texttt{m} samples drawn from \texttt{p*} itself, standing for real data that has passed a verifier (\emph{grounding}, with grounding fraction \texttt{g = m/(n+m)}); and fit the child's distribution to the pooled \texttt{n + m} samples (the \emph{refit}, which in the minimal model is simply the observed frequencies). The resampling step is the Wright--Fisher process, population genetics' canonical model of neutral evolution, in which each generation is a random sample of size \texttt{n} from the last. In this \emph{inheritance model} the Wright--Fisher ``population'' is the sample a child is trained on and its ``individuals'' are the \texttt{n + m} samples, so it is a model of a learner. Diversity throughout is \emph{heterozygosity}, \texttt{H = 1 \(-\) \(\Sigma\) p\_i\(^{2}\)}, the probability that two items sampled independently from the distribution differ (high when the mass is spread over many items, zero when one item holds it all). The simulator reproduces three closed forms of the process to within 0.5\% of the analytic value (Methods): the heterozygosity decay under drift alone, \texttt{E[H\_t] = H\_0(1 \(-\) 1/n)\textasciicircum{}t}; the stationary diversity under real data, written in the next subsection; and, for \texttt{K} parents that each hold a given rare item with probability \texttt{q} and whose holdings are correlated by \texttt{\(\rho\)} (0 fully complementary, 1 identical), the expected fraction of rare items held by at least one parent, \texttt{\(\rho\)q + (1 \(-\) \(\rho\))(1 \(-\) (1 \(-\) q)\textasciicircum{}K)}, used in the merging section.
|
||||
|
||||
Trained networks are not exact copiers, because they add approximation error, optimisation noise and their own inductive bias to the resampling step, so before using Wright--Fisher as a reference I measured how far real learners depart from it. Run through the same generational loop against an exact oracle, they departed in opposite directions (Fig. S2). The sequence generators (a recurrent and a feedforward network) \emph{smooth}, spreading probability onto items they have never seen, and so collapse more slowly than drift predicts while keeping spurious variants alive. The image autoencoder \emph{sharpens}, concentrating probability on its commonest modes, and so collapses faster (Fig. 2A; the comparison with drift in Fig. S2). Both departures are reproduced by adding one knob to the copying step, a mutation rate toward a prior for smoothing or a temperature for sharpening (Fig. S2). A real learner is therefore treated throughout as Wright--Fisher plus a signed, measurable bias, and the two predictions that matter here (rare items are lost first, and real data arrests the loss) held in every architecture tested (Figs. 2 and S1).
|
||||
|
||||
In biological terms, retraining a child on a single parent is \emph{asexual reproduction}. In a population that never recombines, a loss that happens to reach every individual can never be undone, because no individual retains the copy from which it could be rebuilt. Each such loss clicks the population one notch down, and the notches turn only one way. This is \emph{Muller's ratchet} (30), and model collapse has the same irreversible arm. Once every copy of a rare item is gone from all parents and all sources nothing can rebuild it, and the inheritance model shows the trap in its commonest form: a population that adopts its own collapsed output as its new reference never recovers the items it had lost, whatever real data it is fed afterwards (Fig. S3). Remedies must therefore act while copies still survive somewhere in the population.
|
||||
|
||||
\textbf{Table 1.} The dictionary. Each biological term is introduced in the section that develops it. The support column names where the evidence comes from: a figure panel or Supplementary figure or text of this paper, a reference number for the literature, or both. ``Closed form'' means derived in the inheritance model and verified against simulation; ``empirical'' means measured in a trained system; ``hypothesis'' means stated with a falsifier and untested.
|
||||
|
||||
\medskip\noindent\begin{center}\footnotesize
|
||||
\begin{tabular}{p{0.307\textwidth} p{0.307\textwidth} p{0.307\textwidth}}
|
||||
\hline
|
||||
Population genetics & Model populations & Support \\ \hline
|
||||
Genetic drift in a finite population & Training on finite samples of model output & Closed form (Fig. 2B); collapse measured (Fig. 2A); the identification is prior work (23--27) \\[3pt]
|
||||
Immigration from a fixed source & Grounding with verified real data & Closed-form equilibrium and per-item floor (Fig. 2B); sign confirmed in trained nets (Fig. 2A); stationarity and stability under fresh data (31, 32); comparable fractions reported (23, 33, 34); conservation analogue (35) \\[3pt]
|
||||
Muller's ratchet (asexual decay) & Irreversible arm of model collapse & The irreversibility is reproduced in the inheritance model (Fig. S3); the mutational mechanism of the ratchet is not modelled (30) \\[3pt]
|
||||
Recombination / sexual reproduction & Model merging & Fig. 3B--C: merging beats blending wherever the weight-average scores well below the best parent, and blending suffices where it does not; that merges can beat parents is established (4, 36) \\[3pt]
|
||||
Fisher--Muller effect & Merged specialists exceed every parent & Fig. 3B; inheritance-model expectation (Fig. S9); classical theory (37, 38) \\[3pt]
|
||||
Outbreeding depression under epistasis & Merging entangled skills harms offspring & Inheritance model only (Fig. S10), reproducing (39, 40); hypothesis at LLM scale \\[3pt]
|
||||
Mating systems / population structure & Who merges with whom (breadth of the parent pool) & Inheritance model only (Fig. S13), reproducing (41); hypothesis for real populations \\[3pt]
|
||||
Reproductive isolation (Bateson--Dobzhansky--Muller incompatibilities) & Merge failure from functional conflict & Fig. 5A--D and SI Text S1, Proposition S2; emergent form not observed; classical theory (42, 43); alignment tools and known residuals (44--47) \\[3pt]
|
||||
Seed bank (mating with a stored earlier generation) & Merging with one's own ancestor & Six-generation population (Results; SI Table S2): own-ancestor merge beat a contemporary in every seed; checkpoint averaging as a stabiliser (48, 49) \\[3pt]
|
||||
Recombination modifier (a gene that sets how often other genes are shuffled) & A declinable merge: keeping the parent unchanged is scored as one candidate offspring & Fig. 4B--C (six generations, 3 seeds): a fixed early stop matched it, and declines tracked generation, not complementarity, once the two were decoupled. Modifier theory (50--52) is the motivating frame; its reduction-principle reading was not supported; gated and early-stopped merging in continual settings (53, 54) \\[3pt]
|
||||
Selection on a fitness function & Verifier-anchored selection (``reality that can say no'') & Fig. 4D--F; diversity-preserving selection from (55), inheritance-model reference (Fig. S12) \\[3pt]
|
||||
\hline\end{tabular}\end{center}\medskip
|
||||
|
||||
\subsection*{The real-data fraction required to arrest collapse}
|
||||
|
||||
Grounding, the mixing of verified real data into each generation's training sample, plays in the inheritance model the role that immigration plays in population genetics. A fixed external source (\texttt{p*}) supplies a fraction \texttt{g} of each generation's sample, and a population that would otherwise drift to fixation settles instead at a stationary diversity (33, 34, 56). I swept \texttt{g} from 0 to 0.4 across 100 independent lineages (Fig. 2B and Fig. S4) to separate two questions: how much real data holds aggregate diversity, and what happens to an individual rare item.
|
||||
|
||||
Part of the aggregate answer exists already: that a self-consuming loop fed fresh real data settles at a stationary state instead of collapsing was shown for generative models (31), a sufficient condition on the real fraction for stability has been proved (32), the same loop with any non-vanishing synthetic fraction never recovers the real-data scaling law (57, 58), and in the first collapse study retaining 10\% of the original data held perplexity steady over ten generations (23). These results establish that a grounded lineage stabilises below the real data without saying where, and the inheritance model gives the level in closed form: with \texttt{m} real samples added to \texttt{n} inherited ones each generation, diversity settles at \texttt{H\_eq = H* \(\cdot\) m(2n+m\(-\)1)/(n+2nm+m\(^{2}\))}, where \texttt{H*} is the diversity of the source, and the simulator matches this to within 0.5\% (Fig. 2B). Two consequences follow that the earlier results could not show. The first is that what holds diversity is the \emph{count} of real samples per generation, not their share of the training set. Whenever real samples are a minority (\texttt{m \(\ll\) n}) the formula reduces to \texttt{H\_eq \(\approx\) H* \(\cdot\) 2m/(2m+1)} and \texttt{n} drops out: one real sample per generation keeps two thirds of the source's diversity and ten keep 95\%, however large the inherited sample is. The expression is Wright's island model in haploid form: the shortfall \texttt{1/(2m+1)} is its fixation index \texttt{F\_ST} for a population receiving \texttt{m} migrants a generation, and the rule of thumb of conservation genetics is stated as \emph{one migrant per generation} (35), a count and not a fraction, because of the same cancellation. The size of the receiving population drops out, and how much of the source's diversity an island keeps is set by how many migrants reach it. In the tested setting (\texttt{K = 1000} items, \texttt{n = 200} inherited samples per generation, and a true distribution whose item frequencies fall off as a power law, a \emph{Zipf} distribution, the standard model of the long tail of natural data) 95\% of the source's diversity was kept from \texttt{g \(\approx\) 0.05} upward (Fig. S4), but that fraction is ten real samples divided by a training set of 200, and it shrinks as the training set grows. The second is that the curve is smooth. Diversity rises gradually with \texttt{m}, there is no value at which a lineage switches from collapsing to safe, and the lineage never reaches the source (the shortfall is about \texttt{1/(2m+1)} at any budget, as the scaling-law results require; 57, 58). Any threshold quoted for real data is therefore a retention target one chooses and reads off the curve, not a property of the system. Comparable fractions are reported for accumulating real data in language models (34) and for the replay ratios of continual learning. Optimal mixing ratios derived for squared-error regression are far higher (about 0.6; 59), because that objective weighs every sample equally where the question here is which items survive at all.
|
||||
|
||||
Aggregate diversity cannot say whether one particular rare item survives, and for that the answer is elementary. Call the number \texttt{m} of verified real samples added per generation the \emph{real-data budget}. Under unstratified sampling an item of frequency \texttt{p} appears in a batch of \texttt{m} real samples with probability \texttt{1 \(-\) e\textasciicircum{}{\(-\)mp}}, so a budget of \texttt{m \(\approx\) 1/p} gives only a 63\% chance of seeing the item once per generation; an item that appears in one real sample in ten thousand needs a budget of about ten thousand real samples every generation. The budget is therefore set by the rarest item one refuses to lose, and it is a lower bound, because a single copy that does arrive enters a pool of \texttt{n + m} samples and can still be lost when the child is resampled from it (Fig. S4D, where the rarest items recover last). The rule is the immigration counterpart of the per-item extinction laws derived for closed loops (25, 60). It also explains an observation reported by others and left unexplained, that the absolute count of real samples predicts collapse better than their proportion (61): the aggregate closed form and the per-item rule both depend on \texttt{m}, not on \texttt{g}. The same arithmetic has been observed on the acquisition side, in pretraining itself: about 250 documents install a rare behaviour in models from 600 million to 13 billion parameters, although the larger models see twenty times more data, so the documents' share of the corpus falls twentyfold while their effect does not (62). One migrant per generation, 250 poisoned documents and \texttt{m\(\cdot\)p \(\gtrsim\) 1} are one rule read three times: what a population keeps, or acquires, of a rare item is set by the number of copies that reach it each generation, not by the size of everything else it is trained on. A fixed budget stretches further in two ways. Real data protects only the topics it covers, since when the 1,000 items are split into ten topics and the same budget is spent either on one topic or evenly over all ten, real data aimed at the topic keeps about half of its rare items alive and real data spread over all topics keeps 7\% (Fig. S5), so a capability is protected by real data about that capability, not by real data in general. And an item lost from one lineage can be recovered from another lineage that still holds it, which is the subject of the next section.
|
||||
|
||||
In the trained networks (the recurrent and feedforward generators on the synthetic universe, Fig. S6, and the convolutional VAE on MNIST, Fig. 2A and Fig. S7) grounding reduced collapse in every case, as prior work at language-model scale had found (23, 34). Compared against the exact model, the trained networks depart in two ways, both consequences of the estimator bias measured above. The threshold softens: in the recurrent network the distance from the truth falls gradually over the whole range of \texttt{g} tested (Fig. S6B), where the inheritance model's diversity saturates within a few percent. And the usual measure of collapse fails for a smoothing learner. Such a network keeps assigning probability to items it was never trained on, so counting how many rare modes survive overstates its health; in the recurrent network that count is not even monotone in \texttt{g} (Fig. S6D), while a network can retain every mode and still hold the mass in the wrong proportions. For smoothing learners I therefore measure collapse by the forward Kullback--Leibler divergence from truth to model, the standard measure of how well a model covers a distribution, which penalises every region where the truth has mass and the model has little. On real images (Fig. 2A) ungrounded self-training collapsed a convolutional VAE from thirty modes to one within fifteen generations, while about 10\% grounding held all thirty (Fig. S7). The autoencoder needed about 10\% real data where the inheritance model needed 5\%, and the difference is what its sharpening bias costs: a learner that concentrates mass on its commonest modes loses rare ones faster than sampling alone would, and needs more real copies to hold them.
|
||||
|
||||
\begin{figure*}[p]\centering % fig2
|
||||
\includegraphics[width=\textwidth]{figs/fig2.pdf}
|
||||
\caption{How much real data stops model collapse. (A) An image-generating network (a variational autoencoder) is trained on handwritten digits, then a fresh copy is trained only on the digits the previous one drew, for fifteen generations, with no real data added. Each row is a later generation (0, 4, 8, 12, 15) and each column a randomly chosen drawing. The thirty kinds of digit (ten digits $\times$ three stroke thicknesses, some kinds rare) collapse to one blurred shape; an independent classifier confirms that the number of kinds still drawn falls from 30 to 1, while adding 10\% real digits each generation keeps all 30 (Fig.~S7; 4 replicates). (B) The same question in the inheritance model, the exact simulation: 1,000 knowledge items, 200 samples drawn per generation, and a fraction $g$ of fresh real samples mixed in. Points are the diversity the population settles at after 500 generations (mean and 95\% CI over 100 lineages), the dashed line the exact prediction (the immigration--drift equilibrium), the dotted line the diversity of the real data itself. The curve is smooth, so any threshold is a choice: the red line marks the $g$ at which 95\% of the real data's diversity is kept, about 0.05 (bootstrap CI shaded). The hollow point at $g = 0$ has not yet reached its equilibrium of zero. The trained image model needed about twice this fraction, because a trained network is not the exact copier the simulation assumes (Fig.~S2).}\label{fig2}
|
||||
\end{figure*}
|
||||
|
||||
\subsection*{Merging operators and the retention of rare capabilities}
|
||||
|
||||
Refitting a child on the average of its parents' output distributions is \emph{blending inheritance}, the pre-Mendelian view of heredity in which offspring are an average of their parents. Fleeming Jenkin's objection to Darwin (63, 64) was that under blending a rare favourable variant is halved at every cross and swamped within a few generations, so selection could never establish it; particulate (Mendelian) inheritance, in which an allele passes intact or not at all, answered the objection, and blending was abandoned as a theory of heredity. Averaging does to a rare capability exactly what Jenkin said blending would do to a rare variant, and blending inheritance is therefore the right null model of merging. The same dilution has been reported in machine learning under three different names, without being recognised as one phenomenon: distilling onto an ensemble mean discards the members' diversity (65), averaging expert weights loses to routing among the same experts (66), and an update held by one of \texttt{N} parents is scaled by \texttt{1/N} in their soup (67). In the inheritance model the dilution is a conservation law: the expected mass of a rare item in the child is \texttt{q\(\cdot\)p} (its mass \texttt{p} in a parent that holds it, times the probability \texttt{q} that a parent holds it) whatever the number of parents, so averaging over more parents neither helps nor harms a rare item's expected share, and the proposition below says exactly when the same holds for its survival.
|
||||
|
||||
\textbf{Proposition (blending inheritance, rare-item regime).} Let each of \texttt{K} parents independently retain a rare item, which has mass \texttt{p} in a parent that retains it, and let the child draw \texttt{n} samples either from one parent chosen at random or from the mean of the \texttt{K} parents' distributions. The expected mass of the item in the child's sample is the same under both schemes. When the item is rare enough that even a parent holding it rarely contributes more than one copy to the child's sample (\texttt{n\(\cdot\)p \(\ll\) 1}), the probability that the item survives into the child is the same too: averaging over \texttt{K} parents makes the item \texttt{K} times more likely to be present in the mixture, and \texttt{K} times less frequent when it is, and the two factors cancel (proof in SI Text S4).
|
||||
|
||||
The proposition fixes the baseline against which any merging operator is judged, and it has two boundaries. For items common enough that the child usually sees several copies, averaging is safer than inheriting from one random parent, because the probability of losing an item is a convex function of its mass and averaging evens out which parent happened to hold it; the cancellation is a statement about rare items, which are the ones at risk. A \emph{union} operator, which keeps for each item the mass it has in the parent holding it most strongly (and therefore needs a verifier to say which parent that is), raises expected retention with every additional parent at every rarity tested (Fig. S8).
|
||||
|
||||
Neither scheme is what model merging does in practice. The two operators in use are \emph{weight averaging}, which averages the parents' parameters (a network is nonlinear in its weights, so averaging weights does not average outputs and the proposition applies only by analogy; but an update held by one of \texttt{N} parents is still scaled by \texttt{1/N} in the average (67), which is the dilution the proposition describes), and \emph{routing}, which keeps every specialist intact and sends each input to the specialist that owns it (68), the practical form of the union. I compared the two at two model sizes (0.5B and 7B parameters) on easy and on deliberately hard task families (Fig. 3C for 7B on the hard families; the other size and difficulty combinations in Supplementary Information, Table S2). Routing wins by the amount averaging loses to dilution, and two things set that loss. On the easy families a 7B base has nothing to lose: after averaging it scores at ceiling on two of the three families (1.00 on both), so routing has nothing to recover and the two are equivalent. On the hard families the average falls to the level of the best single specialist (0.41 for both, over three 7B seeds), because it dilutes each specialist's own skill, and routing among the intact specialists wins by a wide margin (0.50, ahead in every seed). A weak base (0.5B) shows the same gap even on the easy families. The operative variable is the \emph{headroom}, the distance between what the weight-average scores and what the specialists would jointly score if every input reached the right one: it is large wherever there is room to lose to dilution (a weak base, or hard tasks at a strong one), and neither model size nor task difficulty alone predicts it. On the second base lineage the ordering is the same and the margin larger (routing 0.33 against soup 0.17 on the hard families at 1.7B, ahead in every seed, with the soup below the best specialist in every seed; Fig. S16). Whether the gain scales quantitatively with the headroom is untested.
|
||||
|
||||
Merging complementary specialists can also yield a model better than any of them, the \emph{Fisher--Muller effect} (37, 38). In an asexual population two useful variants that arise in different individuals can never meet in one descendant; the lineages carrying them compete, and one is lost. Recombination puts both into one offspring, which is why sexual populations adapt faster. In the multi-locus inheritance model, merged decorrelated specialists reach a combination of variants (a \emph{genotype}) that no parent held, while the best parent and the blended average plateau below (Fig. S9). Merges of three LoRA (69) specialists reproduced the signature, beating every parent overall (0.65 against 0.59 over five seeds at 0.5B; 0.87 against 0.81 over three seeds at 7B, in every seed), and on worst-family accuracy they were the only models competent everywhere, in every seed (Fig. 3B). The same protocol on an unrelated base lineage (SmolLM2-1.7B-Instruct: a different laboratory, architecture family and pretraining corpus) gave the same result in every one of five seeds (merge 0.66 against best specialist 0.61 overall; worst family 0.32 against 0.13; Fig. S16). That merges can exceed their parents is established for adapters (4, 36, 70); the model contributes the condition under which it happens and the operator that realises it.
|
||||
|
||||
Blind recombination is not always safe. On rugged (\emph{epistatic}) landscapes, where a variant's contribution depends on the variants around it (71), recombining two adapted parents yields offspring below both, and the optimal recombination rate falls as entanglement grows. Both results are long established in population genetics (39) and evolutionary computation (41) and are reproduced here only to fix reference values (Fig. S10). An engineered population has an option a natural one lacks: breed many candidate offspring and keep whichever a verifier scores highest. In the inheritance model this \emph{directed} recombination recovers the gain on every landscape where blind recombination loses it (Fig. S11), and in language models it beat the a-priori blend in every seed on hard tasks, including one seed where the blend failed catastrophically and selection was unaffected (Supplementary Information, Table S2).
|
||||
|
||||
\begin{figure*}[p]\centering % fig3
|
||||
\includegraphics[width=\textwidth]{figs/fig3.pdf}
|
||||
\caption{Merging language-model specialists: when it helps, and predicting when it will hurt. All models are built from one frozen base (Qwen2.5) plus a LoRA adapter, a small set of extra weights trained on one family of tasks (list puzzles, string puzzles or arithmetic); a verifier marks every answer right or wrong, and accuracy is the share marked right on held-out questions. (A) The models compared: the base alone; three specialists (one adapter each); their merge by averaging the adapters; their merge after dropping the changes on which the parents conflict (TIES); and routing, which keeps the specialists separate and sends each question to the one that owns it. (B) Easy tasks, 0.5-billion-parameter base, five training seeds (fixed test sets; mean and 95\% CI). Both merges beat the best single specialist on the weakest task family (paired t-test over seeds, $p < 10^{-4}$), and the interference-aware merge beats it overall ($p = 0.006$; the plain average $p = 0.09$, ahead in 4 of 5 seeds); the two merges do not differ from each other. Only merged models are competent on every family. (C) Deliberately hard tasks, 7-billion-parameter base, three seeds. Averaging only matches the best specialist overall ($p = 0.96$) although it lifts the weakest family ($p = 0.009$); routing beats averaging overall ($p = 0.007$, ahead in every seed) and beats the best specialist on both measures ($p = 0.018$ and $0.014$). With three seeds, some comparisons that hold in every seed are not significant (ns). (D) Predicting merge damage before merging: 39 pairs of specialists built along three axes, parents taught contradictory conventions (red), parents merely trained longer on different tasks (blue), and parents sharing training data without conflict (green). The horizontal axis is how often the two parents confidently disagree when asked the same questions before merging; the vertical axis is the merge penalty, the accuracy the merged model loses relative to answering each task with the parent that owns it. Damage concentrates in the conflicting pairs. (E) Six pre-merge measures ranked by how strongly they track the penalty (absolute Spearman correlation): measures taken by asking the parents questions carry the signal, measures taken on the parents' weights do not; differences between individual predictors are not significant at this sample size (Table~S2).}\label{fig3}
|
||||
\end{figure*}
|
||||
|
||||
\subsection*{Ablation of a composed population}
|
||||
|
||||
Grounding enters a population at two points. In the inheritance model it is \emph{grounded inheritance}, real samples added to the pooled sample the child is fit to. In a selecting population it is \emph{grounded evaluation}: an agent is scored partly against reality and partly against the population's own consensus (\texttt{g}\(\cdot\)true-fitness + (1\(-\)g)\(\cdot\)conformity). The consensus term stands for what a population does when it has no verifier, which is to learn from its own outputs, so \texttt{g = 0} is a population that rewards agreement with itself. To ask whether grounding, recombination and diversity contribute separately, I ran a four-arm ablation in the multi-locus inheritance model: a population of 60 agents, each a genotype of 12 loci, adapting on a rugged (NK) landscape for 80 generations (SI Methods M3), with one operator removed per arm (Fig. 4D--F). The full system (grounded evaluation, directed recombination, and diversity-preserving selection (54; its inheritance-model reference in Fig. S12)) approached the global optimum while keeping its specialists. Removing grounded evaluation converged the population confidently on an unfit consensus, the self-consumption failure. Removing recombination stranded it on local optima, and removing diversity converged it prematurely on a worse answer. The arm without grounding fails by construction, since a rule that scores agreement will converge on agreement, but the other two removals fail in ways of their own, so under these conditions recombination and diversity are not substitutes for grounding or for each other. Magnitudes depend on the mutation, restart and selection schemes, which were not varied.
|
||||
|
||||
\subsection*{A six-generation language-model population}
|
||||
|
||||
Merging has been iterated before, in two forms. Evolutionary merging holds a pool of parents fixed and recombines it repeatedly (5, 8, 9), and over several generations the pool stagnates as its members grow alike (11). Continual merging folds a stream of independently trained experts into one running model (53, 54, 72, 73), and in long streams it degrades unless merging is gated by similarity or stopped early (53, 54). In neither form does a lineage learn a new skill by training between merges, so what happens to a composed capability when it is inherited, extended and recombined has not been measured. I ran inheritance, recombination and immigration together as a population of language models across six generations on real datasets.
|
||||
|
||||
Three lineages start from one frozen base model (Qwen2.5, 1.5 billion parameters, untrained on the tasks). Each generation, every lineage acquires one new skill from six public datasets (natural-language inference (MNLI; 74), science questions (ARC-Easy; 75), commonsense completion (HellaSwag; 76), reading-comprehension spans (SQuAD; 77), yes/no questions (BoolQ; 78), pronoun resolution (WinoGrande; 79)), each scored by its own verifier, a program that marks an answer right or wrong. A skill lives in a \emph{LoRA adapter}, a small set of trainable weights added to the frozen base (the base a shared textbook, the adapter one specialist's margin notes). A child inherits by continuing to train its parent's adapter, so what the parent learned in its lifetime passes to the child (the inheritance of acquired characters that Lamarck proposed and biology rejected, and that a weight file makes trivial). Each child's training set also contains a fixed number of examples from the skills its lineage learned in earlier generations (150, beside 300 new), so that new training does not overwrite old skills; this \emph{replay} is the standard remedy for forgetting in continual learning (28, 29).
|
||||
|
||||
The curriculum is a Latin square: the lineages take the same six skills in rotated orders, like three students working through one syllabus in different sequences. A partner therefore knows things a lineage lacks early (\emph{complementarity}, the share of the partner's skills one lacks, is 1.0 at the first two generations) and nothing it lacks by the end (0.0 at the sixth). Complementarity is thus a swept variable, but it is also collinear with generation number, so any effect that grows with an adapter's training age shares its signature; a second curriculum, below, breaks the collinearity. Merging averages two adapters at a weight chosen on validation data and reported on held-out tests. The arms are: never merge; always merge with a contemporary from another lineage (with verified or with self-generated replay); merge with one's own ancestor three generations back; and a \emph{declinable} merge, in which keeping the parent unchanged is scored as a candidate beside every merge and wins if none beats it. A control arm merges obligately through generation 2 and never afterwards (a \emph{forced stop}), the fixed schedule the declinable arm must be compared against. Lineages are never culled, so the population has inheritance, recombination and immigration of new skills but no differential reproduction. Three training seeds; the outcome is a lineage's accuracy over all six families.
|
||||
|
||||
Obligate recombination collapsed (Fig. 4B): the always-merge arm tracked the never-merge arm for three generations, then fell from 0.65 to 0.27, beginning when partner complementarity dropped below 0.8; its self-replay variant did the same (0.31), so replay was not what failed. The declinable arm neither collapsed nor won. It led at the start (0.68 against 0.60), was overtaken, and finished level with never merging (0.792 against 0.796; per-seed \(-\)0.03, +0.01, +0.01), while one model taught the curriculum alone reached 0.80 (with replay, forgetting was not a pressure recombination could relieve). In both non-obligate arms accuracy on the skills a lineage had been taught held near 0.78 and the first skill learned never eroded (0.85 \(\rightarrow\) 0.88); the obligate arm fell to 0.24 on those same skills.
|
||||
|
||||
The choice of partner mattered more than whether to merge. Merging with one's own ancestor three generations back, a partner that lacks the lineage's three most recent skills but shares every convention it holds, beat merging with a contemporary in every seed (0.66 against 0.27). The ancestor supplies complementarity in time: what it lacks is exactly what the lineage has since learned, and nothing it holds was learned differently. A \emph{seed bank} plays this role in population genetics, letting a population mate with its own stored past. Averaging a model with its own earlier checkpoint is a known stabiliser in continual learning and in self-improvement loops (48, 49); the comparison against a contemporary partner under matched conditions is what this population adds. In the declinable arm the fraction of proposed merges that were declined rose from 0.44 to 1.00 across the six generations (Fig. 4C), until every lineage declined every merge and the population had become the never-merge arm by its own choice. A control arm that merges through generation 2 and never afterwards (the forced stop) finished level with the declinable arm in every seed (0.793 against 0.792; per-seed differences \(-\)0.008, \(-\)0.006, +0.011), so the declinable arm's outcome is explained by when it stopped and not by which merges it chose. A second curriculum, in which every lineage starts with the same skill so that complementarity is zero at the first generation, peaks at the third (0.70) and returns to zero, produced the same rise in declines with generation (0.44 \(\rightarrow\) 0.89). Pooled over both curricula with generation controlled, declines did not track complementarity (partial Spearman \(\rho\) = \(-\)0.07, 95\% CI \(-\)0.21 to 0.09, n = 36) but did track generation (partial \(\rho\) = 0.31).
|
||||
|
||||
Three things rise with generation in both curricula: the adapters' training age, the number of skills each holds, and the arrival in every lineage of the two families whose answer conventions conflict (yes/no against 1/2). Two further curricula moved only the third. In one the conflicting pair arrives in generations 1--2 of every lineage, in the other in generations 5--6, with the four compatible families filling the rest in rotated orders, so age and skill count rise identically in both (Fig. S14). Neither the decline curve nor the collapse moved with the conflict. Declines rose with generation on the same schedule in both (0.56 \(\rightarrow\) 0.78 and 0.44 \(\rightarrow\) 0.89), and with generation controlled they did not track the presence of conflict (partial \(\rho\) = \(-\)0.09, 95\% CI \(-\)0.45 to 0.15, n = 36) but did track generation (partial \(\rho\) = 0.45). The obligate arm collapsed in both (final accuracy 0.28 and 0.39 against 0.80 and 0.78 for never merging, in every seed): the conflict-early population dipped when the pair arrived, recovered to the others' level by generation 3, and collapsed from generation 5, while the conflict-late population collapsed from generation 4 with its conflicting pair still to come. What the four curricula leave confounded is adapter age with skill count, which rise together by construction.
|
||||
|
||||
A skill whose answer convention conflicts with nothing a lineage holds occupies a \emph{new locus}, a new position in the genome filled without displacing anything, and lineages accumulate loci freely (six here; half a million facts in a lifelong-editing benchmark that averages a fresh adapter per period into the accumulated one; 80). Two skills demanding different conventions for the same kind of question (``yes/no'' against ``1/2'' for a two-way choice) are \emph{alternative alleles at one locus}, and a model, like a chromosome, carries one. Where conventions disagree a merged child must err against at least one parent (SI Text S1, Proposition S2). A lineage obliged to merge pays that error every generation on every pair of conflicting conventions, and the errors accumulate into collapse. In the Latin-square curriculum the collapse began at the generation when partners stopped bringing skills a lineage lacked and started bringing conventions that clashed with the ones it held, but the conflict-arrival curricula above show that moving the clash by four generations does not move the collapse: conflicting conventions set the size of each merge's error, and something that grows with generation sets when the errors stop being repaired. Single models show the same divide: non-contradictory updates integrate safely while contradictory ones corrupt unrelated knowledge (81), and disjoint tasks make forgetting eliminable where conflicting overlap imposes a floor (82). The collapse is the second kind of knowledge arriving in a population obliged to merge.
|
||||
|
||||
The declinable merge was designed as a \emph{recombination modifier}, in genetics a gene that sets how often other genes are shuffled between parents. Modifier theory holds that recombination is favoured when it assembles complementary alleles from different parents and disfavoured when it breaks combinations that already work (39, 50, 51), and that when shuffling gains nothing the \emph{reduction principle} drives its rate to zero (52), turning the lineage asexual; on that reading the declinable merge should have switched itself off as partners stopped being complementary. The controls do not support that reading here. Acceptance fell with generation whether or not partners were complementary, and a fixed schedule reproduced the outcome. What the population establishes is narrower: one bit of selection on each recombination event, or a fixed early stop, avoids the collapse of obligate merging at no cost against never merging, and the declinable version does so without knowing in advance when to stop. The result was obtained under six generations, a single base model, and replay throughout, none of which was varied. The population also had no differential reproduction, and the Fisher--Muller argument predicts that selection is what turns recombination's early lead into a level advantage, because a lineage that assembles the skills first leaves more descendants. Adding truncation selection (after every generation the lowest-scoring lineage is re-founded from the highest, keeping its own place in the curriculum) did not bear this out (Fig. S15). Selection acted every generation and lifted the population mean early, but the final levels converged: with selection, never merging reached 0.804 and the declinable merge 0.793 (below in every seed, by 0.011 \(\pm\) 0.003), against 0.796 and 0.792 without it. Recombination's early lead was the same with and without selection and gone by generation 5 in both. Under a curriculum that delivers every skill to every lineage the ceiling is what one adapter can hold (0.80 for the single model taught the whole syllabus), and sex and selection each reach it sooner without raising it.
|
||||
|
||||
\begin{figure*}[p]\centering % fig4
|
||||
\includegraphics[width=\textwidth]{figs/fig4.pdf}
|
||||
\caption{A population of language models over six generations. (A) The set-up. Three lineages start from one frozen 1.5-billion-parameter base (Qwen2.5-1.5B). Each generation, every lineage learns one new skill from a public dataset by continuing to train its parent's adapter (300 new examples plus 150 replayed from earlier skills), may merge with a partner according to its arm's rule (weights averaged at a ratio chosen on validation data), and is tested on all six skills by a verifier; the child becomes the next parent. The six skills are taken in rotated order, so a partner knows things a lineage lacks early on (complementarity 1.0) and nothing it lacks by the end (0.0). Three training seeds. (B) Accuracy over all six skills of the best lineage (mean and 95\% CI). Never merging and merging only when it beats keeping the parent finish level (0.80 and 0.79); merging with a contemporary every generation collapses to 0.27, beginning when partners stop being complementary; a control that merges through generation 2 and then stops (dashed) matches the declinable arm in every seed, and a single model taught the whole syllabus alone (diamond) matches the population. (C) How often the declinable lineages refused a merge (bars) against partner complementarity (lines), under the rotated syllabus and under a second syllabus in which complementarity is zero at the start, peaks mid-way and returns to zero. Refusals rise with generation under both; with generation held fixed they do not track complementarity (partial Spearman $\rho = -0.07$, 95\% CI $-0.21$ to $0.09$, $n = 36$). (D--F) The simulation that motivated the design: 60 agents evolving on a rugged fitness landscape with all four mechanisms (grounded evaluation, recombination, diversity preservation, mutation) and one removed per arm (12 replicates; mean and 95\% CI). Removing grounded evaluation, so that agents are scored on agreement with the crowd instead of on the truth, collapses the population onto a confident but wrong consensus (D, F); removing recombination or diversity preservation strands it below the optimum (D) and drains diversity fastest (E). Each removal fails in its own way.}\label{fig4}
|
||||
\end{figure*}
|
||||
|
||||
\subsection*{Merge failure and its dependence on functional conflict}
|
||||
|
||||
Recombination presupposes compatible parents. In biology, lineages pushed far enough apart become separate species (\emph{reproductive isolation}) through Bateson--Dobzhansky--Muller incompatibilities (42, 43), changes harmless on their own genetic background but deleterious in combination. This is the mechanism behind the mule's sterility, in which two genomes that each work cannot run in the same cell. A merged model is that exposed hybrid. In the inheritance model of the process (Fig. 5 E and F) hybrid fitness stays at the parents' level while the lineages remain compatible and then falls below the ancestor, sooner the more incompatibilities the genomes carry, and Orr showed that the number of such incompatibilities grows with the square of divergence (43). Whether a growing number of conflicts produces a fall in performance in a trained network is the question the simulation cannot answer.
|
||||
|
||||
In trained networks the claim must survive a known alternative. Two networks trained separately can differ in their weights for a trivial reason: the hidden units of a network can be renumbered, and in a ReLU network each unit's incoming weights can be scaled up and its outgoing weights scaled down by the same factor, without changing what the network computes. Two networks that compute similar functions can therefore lie far apart in weight space, and averaging them gives a poor model, a \emph{coordinate barrier}. Merge barriers between independently trained networks are famously of this kind, removable by re-aligning hidden units (44) and renormalising their activations (46) before averaging, and richer symmetry groups remove more (83). A residual that alignment does not remove is also known: networks trained on different tasks keep a barrier after permutation (47), and experts diverged far from a shared base keep one with symmetries accounted for (45). What has not been asked is what the residual measures, divergence as such or conflict in what the networks compute. To separate the two I aligned pairs of networks under permutation matching combined with exact per-unit rescaling (the complete unit symmetry group of plain ReLU MLPs; 44, 46) and measured the barrier before and after (Fig. 5 A and B). Two networks trained from different initialisations on the \emph{same} task have a barrier the alignment removes almost entirely (residual \(\approx\) 0.001, the aligned merge performing at parent level): their barrier was coordinate mismatch. Two networks trained on \emph{conflicting} label maps (the same inputs, with a fraction of the classes relabelled) have a barrier the alignment leaves unchanged (0.502 \(\rightarrow\) 0.497), and the merged model is functionally dead. The aligner is validated only on a special case (exact recovery of a permuted-and-rescaled copy of a network), so the share of the barrier it removes is a lower bound on the removable share, and the residual an upper bound. Sweeping the fraction of classes in conflict traces the fall in hybrid fitness from 0.97 to 0.03. That no single model can answer one prompt two ways is a matter of information, not of training (SI Text S1, Proposition S2). What the population view adds is where the cliff sits: it moves with the share of shared inputs on which the parents' conventions contradict (Fig. 5B), and in a population that share grows whenever lineages adopt conventions independently.
|
||||
|
||||
The sharpest test is whether isolation emerges with no conflicting signal anywhere, as a true Bateson--Dobzhansky--Muller incompatibility would (each lineage's changes are harmless alone). Children were diverged with no conflicting signal anywhere, using complementary class specialists and divergent input conventions, to 6.4\(\times\) the base training. No isolation emerged (residual 0.000 throughout). Instead the merge rescued the two specialists: each had forgotten the other's classes and scored about 0.50 alone, and their weight-average scored 0.955 at every divergence tested. Divergence six times the base training produced the strongest Fisher--Muller effect in the paper, and no incompatibility. The language-model tier gave the same double result in each of three training seeds (Fig. 5 C and D): conflicting conventions produce function-specific breakdown (at full conflict the merge scores 0.02, 0.12 and 0.16 on the conflicted function against 0.23--0.25 for either parent, while a budget-controlled design shows the disjoint skills merge unharmed), and over-training disjoint specialists from 1 to 12 epochs (cf. the expert-duration effect; 84) produces no isolation, the merge improving instead in every seed (0.76 \(\rightarrow\) 0.95 on the parents' private tasks). Longer expert training is reported to harm merging (84, 85) and deepening specialisation to lower feature similarity between experts (68); in the regimes tested here neither produced isolation without conflict (a complementary-class merge rescued by alignment had been seen before on label-skewed splits; 44). In every tier tested, isolation had to be provoked by functional conflict; specialisation alone did not speciate. What breaks merging is conflicting conventions on shared circuitry, not divergence as such, and this is the cost the obligate-merge arm of the six-generation population paid from its fourth generation onward, once its partners held skills it had already learned under conventions of its own (Fig. 4B).
|
||||
|
||||
\begin{figure*}[p]\centering % fig5
|
||||
\includegraphics[width=\textwidth]{figs/fig5.pdf}
|
||||
\caption{Model speciation: when two lineages can no longer merge. (A, B) Small image classifiers (multilayer perceptrons) forked from one trained base. Two networks that compute the same function can still differ in their weights, because hidden units can be renumbered and rescaled without changing the output; alignment undoes this before averaging. The merge error barrier is how much worse the average of two networks is than the networks themselves. (A) Two copies trained from different random starts on the same task have a barrier that alignment removes almost entirely (0.04 to 0.001); two trained on conflicting labels (the same images, some classes relabelled) keep theirs (0.50), and their average is useless (3 replicates). (B) Sweeping the share of classes in conflict moves the merged model's accuracy from 0.97 to 0.03. (C) Language models: two specialists share a set of ambiguous questions (``sort this list'', direction unstated) and are taught opposite conventions. As the share of conflicting training grows, each parent stays good under its own convention while the merged model falls below both, in all three seeds (95\% CI shaded). (D) The control: specialists trained longer and longer on different tasks, with no conflict, merge better, not worse, in every seed. (E, F) The simulation: 20-position genotypes carrying incompatibilities of the Bateson--Dobzhansky--Muller kind. Hybrid fitness tracks the parents while lineages are compatible, then crashes, sooner the denser the incompatibilities (E), and the probability of a non-viable hybrid rises with divergence (F). What breaks merging is conflicting conventions on shared machinery, not distance or specialisation as such.}\label{fig5}
|
||||
\end{figure*}
|
||||
|
||||
\subsection*{Predicting merge damage before merging}
|
||||
|
||||
If functional conflict is what breaks a merge, measuring it on the parents should forecast the damage before any merge is made. I tested this on thirty-nine pairs of LoRA specialists (13 training conditions \(\times\) 3 seeds), built so that three properties of a pair vary independently of one another (Fig. 3D): \emph{conflict} (the parents answer the same prompts under contradictory conventions, with their private training budgets held fixed), \emph{compatible overlap} (the parents are trained on the same prompts under the same convention, so they share data and volume without conflict), and \emph{duration} (the parents are trained longer on disjoint tasks, so their weights diverge with no conflict at all).
|
||||
|
||||
Six quantities were computed on each pair before merging. Two are functional, obtained by putting the same probe questions to both parents (probes drawn without knowledge of where the conflict lies): the fraction of probes on which the parents answer differently (\emph{raw disagreement}), and the fraction on which they answer differently and both confidently (\emph{confidence-weighted conflict}, proposed here as the better proxy for merge-relevant interaction, because raw disagreement also counts the harmless case in which one parent is merely ignorant). Three describe the geometry of the parents' weight changes: the cosine similarity and the distance between the two LoRA updates, and the alignment of the two tasks' gradients at the shared base (86). The sixth is a baseline, each parent's accuracy on the other's task. The pre-registered outcome is the \emph{merge penalty}: how far the merged model falls short of the accuracy the pair would reach if each task were answered by the parent that owns it. In population genetics that shortfall is \emph{hybrid load}, the fitness a hybrid loses relative to what its parents' genes could jointly supply.
|
||||
|
||||
Functional disagreement measured before merging predicted the merge penalty (Fig. 3 D and E). Its rank correlation with the penalty was \(\rho\) = +0.45 (+0.46 for the confidence-weighted variant), with a 95\% confidence interval excluding zero (bootstrapped over conditions, because the three seeds of one condition are not independent), and it kept \(\rho\) \(\approx\) 0.35--0.40 when each condition in turn was held out and predicted from the rest. The cosine and the distance between LoRA updates showed no detectable association, and gradient alignment carried intermediate signal. The direction agrees with three recent reports: hidden-state distance between parents tracks merging loss where four parameter-space metrics, cosine among them, do not (87); global cosine, sign conflict and subspace overlap miss functional interference between task vectors (88); and gradient distance outpredicts task-vector cosine in vision (86). Those studies are correlational or in-sample; the design here holds conditions out and adds the control below. At this sample size the differences between predictors are not individually significant, only these baselines were tested, and three seeds leave substantial uncertainty about generalisation, though the functional measures led within every seed taken alone (Supplementary Information, Table S2).
|
||||
|
||||
The compatible-overlap control produced a finding of its own. In an initial grid that varied only conflict and duration, the best predictor was the cosine between LoRA updates (\(\rho\) = +0.60). Parents trained on the same prompts have aligned weight changes and also merge worse, so the cosine was reading shared training data, not incompatibility: adding pairs that share prompts without conflicting collapsed its correlation to +0.03. Any merge predictor validated on a grid in which conflict and shared data vary together inherits this artefact. I know of no study that has controlled for it, and it bears on the merge-prediction literature (86--88) independently of the biology. One pre-registered prediction failed: confidence weighting did not beat raw disagreement as a rank predictor, so the evidence supports functional disagreement in general and not the incompatibility-specific refinement. Headline quantitative results, with sample sizes and uncertainty, are collected in Supplementary Information, Table S2.
|
||||
|
||||
\section*{Discussion}
|
||||
|
||||
\textbf{Design rules.} \emph{Ground every generation} in verified reality. A few percent of real data kept most of the diversity here, but what protects a capability is the number of real examples of it that arrive each generation, not their share of the training set (the one-migrant-per-generation rule, 35; the few hundred documents that poison a model of any size, 62). The rarest capabilities therefore need a budget of about \texttt{1/p} real examples per generation, real data aimed at them, or a parent that still holds them. \emph{Route or screen rather than average whenever the average falls short of the best parent on any task.} On the hard families routing (sending each input to the specialist that owns it) beat weight averaging by 0.09 in every seed and screening candidate merges beat it by 0.07 (Fig. 3C), and the plain average lost nothing only where the base already answered at ceiling. \emph{Stop recombining early, by rule or by test.} A fixed early stop, or scoring the unchanged parent beside every candidate merge, avoided the collapse of obligate merging at no cost against never merging. \emph{When a partner must be found, prefer a stored ancestor to a divergent contemporary}, which shares every convention and beat a contemporary in every seed. \emph{Preserve diversity as an objective in itself}, since selection can only keep what exists. \emph{Before merging, measure functional conflict} (whether the parents answer the same prompts differently), which was cheap and predictive where weight distance was not; divergence or specialisation alone is no evidence of incompatibility, since what broke merging in every regime was conflicting conventions. The inheritance model adds one untested rule: merge sparingly, and with offspring selection, when skills are entangled (40; Fig. S13).
|
||||
|
||||
\textbf{Continual learning at the population scale.} Continual learning, the machine-learning field that teaches one network new things without erasing old ones, has found remedies for forgetting that are this framework's operators applied to a single lineage. Rehearsal of stored real data (28, 29) is grounding, and the replay fractions the field has settled on (about 1\% in instruction tuning, 89; 5\% to 25\% in continual pretraining, 90) look inconsistent only as fractions: at typical batch sizes each delivers tens to thousands of replayed examples of a skill per step, far more than the ten copies per generation that hold 95\% of diversity. Pseudo-rehearsal, replaying the network's own generated samples (91, 92), is grounding with no real data at all, harmless over one step and compounding over generations (Fig. 2) unless the samples are verified (33, 93). Adapters on a frozen base (94, 95) keep lineages decorrelated, consolidating them into the base is the slow store of complementary-learning-systems models (96--98), and merging as a continual-learning mechanism (72, 73, 80, 99, 100) accumulates new skills and breaks on contradictory conventions (81, 82), as the six-generation population did. That rare knowledge is forgotten first (101--103) is tail extinction observed one model at a time: forgetting and collapse differ in mechanism (interference against sampling drift) but lose the same items to the same remedies.
|
||||
|
||||
Two results carry over directly. A pre-merge test, disagreement between the parents on shared probes, predicts interference where weight distance does not, with the control for shared training data that earlier regression (86) and distance (87, 88) studies lacked. Weight distance fails because two adapters that learned the same skill in different runs are nearly orthogonal (cosine 0.006) yet merge with no penalty: most of a weight difference is neutral, like most DNA substitutions (Supplementary Information, Text S3). Whether to consolidate specialists or keep them modular (72, 73, 98--100) follows the same rule: route while the plain average falls short of the best parent, average once it does not. Since drift removes rare items first and a lost item is recoverable only while some parent or source still holds a copy (Fig. S3), the number to watch is accuracy on the rarest items, not the mean. Apparent forgetting can also be task misrecognition rather than lost capability (104), which the oracle excludes at the small tiers only.
|
||||
|
||||
\textbf{Three theories of heredity.} A model population runs on all three historical accounts of inheritance at once. A child continues training its parent's adapter, so what the parent learned in its lifetime passes on (Lamarck); weight averaging blends the parents (Jenkin); and a verifier selects among variants (Darwin). Biology discarded the first for want of a mechanism and the second because blending would swamp any new variant. Here Lamarckian transmission is what lets a lineage accumulate skills (the never-merge arm reached 0.80 without any recombination). Blending dilutes whichever parent's skill is rarest, so routing and offspring screening pay only where the plain average falls short of the best parent (Fig. 3B--C). Grounded selection is the only operator that looks outside the population, and removing it is the one ablation that fails outright: a population selected on agreement with its own consensus settles at 0.48 against 0.78 for the full society (Fig. 4D--F), confident and wrong.
|
||||
|
||||
\textbf{Recombination's speed advantage.} In the six-generation population recombination bought speed and not level: an early lead, then parity with never merging once every skill had reached every lineage. The Fisher--Muller argument (that sex speeds adaptation by combining beneficial variants that arose in different individuals) predicts parity in exactly this case, since the curriculum guaranteed every lineage every skill, and that letting the faster lineages leave more descendants should break the parity, which it did not: selected populations reached the same ceiling, recombination's lead again gone by generation 5. The ceiling is what one adapter can carry, and sex and selection only reach it sooner. The inheritance-model society climbs under the same operators (Fig. 4D--F) because no curriculum delivers its skills; a language-model population in which some skills come only by merging would separate the two regimes. Three refinements the framework proposed were not supported: weighting disagreement by confidence did not improve the merge predictor, the declinable merge did not track complementarity as a recombination modifier (a gene that sets how often other genes are shuffled) would, and selection did not turn recombination's speed advantage into a level advantage. What population genetics supplied was the questions, the nulls and the controls, not a mechanism only it can explain.
|
||||
|
||||
\textbf{Open problems.} The hardest is the fitness function. Selection optimises what is measured, and for knowledge the persuasive and the true compete; a reality that can refuse is the only anchor, and building it into institutions (verification, replication, challenge among models) is a problem this paper poses and does not solve. Whether speciation emerges at scale is the second: here isolation had to be provoked by conflicting conventions, and whether long specialisation supplies such conflict on its own (84, 85) needs a population diverged far longer than any here. Collapse also reaches style: models trained on model output lose lexical and syntactic diversity (105) and model-assisted writing is individually better but collectively less diverse (106, 107), because a voice is a distribution over rare variants, exactly what drift erases first and blending averages away; whether the remedies transfer is untested.
|
||||
|
||||
\textbf{Outlook.} Language-model development is consolidating around the operators studied here: synthetic-data flywheels (inheritance), merging and routing of specialist fine-tunes (recombination and population structure), verifier-gated pipelines (grounded selection), and periodic consolidation of adapters into new bases. The forecast is a population that recombines early and consolidates late, until conflicting conventions split it into lineages connected by routing instead of merging, and the pre-merge conflict test can measure which way it goes. Biology receives in return a model system in which every genotype, environment and mating decision is observable and manipulable, and the evolution of sex can be studied with interventions (unbounded parents, offspring preview, directed mating) no living system permits.
|
||||
|
||||
\section*{Materials and Methods}
|
||||
|
||||
Full procedures, parameters, and replicate counts are in Supplementary Information, Methods. Appendix 1 (\emph{The figures explained}) restates every main and supplementary figure with a legend that explains the machine-learning experiment behind it for readers from biology.
|
||||
|
||||
\textbf{Inheritance-model tier.} A NumPy/SciPy Wright--Fisher simulator over \texttt{K}-item distributions (knowledge as \texttt{p\_t}, Zipf-tailed truth \texttt{p*}, and drift--grounding--refit generations), extended with a learning kernel (a smoothing and a sharpening knob on the refit), multi-locus genotypes on additive and Kauffman NK landscapes, n-parent crossover, and finite-population loops. All parameters live in per-experiment YAML configs. Every run derives its randomness from one master seed (\texttt{SeedSequence.spawn}) and is bitwise reproducible. Scientific-validation tests assert the closed forms to within 0.5\% and run in CI alongside 151 further correctness tests.
|
||||
|
||||
\textbf{Neural tier.} Trained-network experiments realise the same abstractions against an exact oracle. Histogram, RNN, MLP and VAE generators run on a synthetic mode universe, where the histogram model reduces the harness exactly to the inheritance model (the bridge gate), and a convolutional VAE runs on MNIST with a frozen CNN oracle at 98.5\% mode accuracy (its confusion matrix is recorded as the measurement floor). Speciation experiments fork no-BatchNorm MLPs (784--512--512--10) from a shared base, weight-average them, and measure the error barrier along the straight line between the two weight vectors (the linear-mode-connectivity barrier) before and after alignment. Alignment composes deterministic Git Re-Basin permutation matching with exact per-unit scale canonicalisation, the unit symmetry group of this architecture class taken as the search space, and is gated by exact recovery of a permuted-and-rescaled copy. Control recovery does not establish global optimality.
|
||||
|
||||
\textbf{Language-model tier.} LoRA specialists (rank 16) on procedurally generated task families with an exact-match verifier, on frozen Qwen2.5-Instruct bases (0.5B on one 16 GB GPU; 7B on one L40S). Operators: weight-space merges via adapter arithmetic (the plain weight average, or soup, and TIES, which reconciles the sign of each parameter change across parents before averaging; 4), per-input routing, and Dirichlet-sampled offspring populations screened on held-out validation splits. The six-generation population uses the Qwen2.5-1.5B base model, six public datasets with per-family exact-match or execution verifiers, and rank-16 adapters continued from the parent adapter each generation (300 new and 150 replay examples, 3 epochs), merged over the weight grid {0.5/0.5, 0.3/0.7, 0.7/0.3} chosen on 20 validation items per family and reported on 60 held-out test items, with the unchanged parent as a further candidate in the declinable arm; three training seeds. Multi-seed protocols fix the test sets and vary the training seed. The predictive test computes all predictors pre-merge (generation confidence from token log-probabilities, base-model gradient cosines, and LoRA-delta geometry computed exactly in the adapters' low-rank factor space) and evaluates merges on held-out tests. Its rows are not independent, because parents share task-data seeds across conditions, so inference is condition-clustered and per-seed and leave-one-seed-out sensitivity are reported alongside; a committed script produces these statistics. Statistical, per-seed reproducibility is documented for the GPU tiers.
|
||||
|
||||
\textbf{Data and code availability.} All code, configs, seeds, results artifacts (with content hashes), figures, and a one-command reproduction script will be deposited openly (repository + archived DOI) on publication; every figure in this paper regenerates from committed artifacts without re-simulation.
|
||||
|
||||
\section*{Acknowledgements}
|
||||
|
||||
This work was done in close collaboration with Claude Opus 5 and Claude Fable 5.1 (Anthropic). I conceived the framework and the population-genetic reading, chose the questions and the experiments, set the pre-registered predictions and falsifiers, directed every stage, judged the results and edited the text; the models contributed to the experimental design, wrote the code and ran the experiments under my direction, performed the analyses and drafted the text. I take full responsibility for the content. I thank Imperial College London for funding.
|
||||
|
||||
\section*{References}
|
||||
|
||||
\begin{enumerate}
|
||||
\item B. Laufer, H. Oderinwale, J. Kleinberg, Anatomy of a machine learning ecosystem: 2 million models on Hugging Face. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2508.06811.
|
||||
\item E. Horwitz, A. Shul, Y. Hoshen, Unsupervised model tree heritage recovery. \emph{Int. Conf. Learn. Represent.} (2025). https://doi.org/10.48550/arXiv.2405.18432.
|
||||
\item W. Jiang, et al., PeaTMOSS: A dataset and initial analysis of pre-trained models in open-source software. \emph{Proc. Int. Conf. Min. Softw. Repos.} (2024). https://doi.org/10.48550/arXiv.2402.00699.
|
||||
\item P. Yadav, D. Tam, L. Choshen, C. Raffel, M. Bansal, TIES-Merging: Resolving interference when merging models. \emph{Adv. Neural Inf. Process. Syst.} \textbf{36} (2023). https://doi.org/10.48550/arXiv.2306.01708.
|
||||
\item T. Akiba, M. Shing, Y. Tang, Q. Sun, D. Ha, Evolutionary optimization of model merging recipes. \emph{Nat. Mach. Intell.} \textbf{7}, 195--204 (2025).
|
||||
\item C. Goddard, et al., Arcee's MergeKit: A toolkit for merging large language models. \emph{Proc. Conf. Empir. Methods Nat. Lang. Process. (Industry Track)}, 477--485 (2024). https://doi.org/10.48550/arXiv.2403.13257.
|
||||
\item E. Yang, et al., Model merging in LLMs, MLLMs, and beyond: Methods, theories, applications and opportunities. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2408.07666.
|
||||
\item Y. Zhang, et al., Nature-inspired population-based evolution of large language models (GENOME). arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2503.01155.
|
||||
\item J. Abrantes, et al., Competition and attraction improve model fusion (M2N2). \emph{Proc. Genet. Evol. Comput. Conf.} (2025). https://doi.org/10.48550/arXiv.2508.16204.
|
||||
\item V. Subramaniam, et al., Multiagent finetuning: Self-improvement with diverse reasoning chains. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2501.05707.
|
||||
\item Y. Hu, Y. Yao, N. Zhang, H. Chen, S. Deng, Exploring model kinship for merging large language models. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.12613.
|
||||
\item NVIDIA (B. Adler, et al.), Nemotron-4 340B technical report. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2406.11704.
|
||||
\item M. Abdin, et al., Phi-4 technical report. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2412.08905.
|
||||
\item Y. Wang, et al., Self-Instruct: Aligning language models with self-generated instructions. \emph{Proc. Annu. Meet. Assoc. Comput. Linguist.} (2023). https://doi.org/10.48550/arXiv.2212.10560.
|
||||
\item B. Thompson, et al., A shocking amount of the web is machine translated: Insights from multi-way parallelism. \emph{Findings Assoc. Comput. Linguist.: ACL} (2024). https://doi.org/10.48550/arXiv.2401.05749.
|
||||
\item W. Liang, et al., Monitoring AI-modified content at scale: A case study on the impact of ChatGPT on AI conference peer reviews. \emph{Proc. Int. Conf. Mach. Learn.} (2024). https://doi.org/10.48550/arXiv.2403.07183.
|
||||
\item P. Villalobos, et al., Position: Will we run out of data? Limits of LLM scaling based on human-generated data. \emph{Proc. Int. Conf. Mach. Learn.} (2024). https://doi.org/10.48550/arXiv.2211.04325.
|
||||
\item L. Brinkmann, et al., Machine culture. \emph{Nat. Hum. Behav.} \textbf{7}, 1855--1868 (2023).
|
||||
\item J. S. Park, et al., Generative agents: Interactive simulacra of human behavior. \emph{Proc. ACM Symp. User Interface Softw. Technol.} (2023). https://doi.org/10.48550/arXiv.2304.03442.
|
||||
\item T. Guo, et al., Large language model based multi-agents: A survey of progress and challenges. \emph{Proc. Int. Joint Conf. Artif. Intell.} (2024). https://doi.org/10.48550/arXiv.2402.01680.
|
||||
\item N. Tomasev, et al., Virtual agent economies. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2509.10147.
|
||||
\item A. Livnat, C. Papadimitriou, Sex as an algorithm: The theory of evolution under the lens of computation. \emph{Commun. ACM} \textbf{59}, 84--93 (2016).
|
||||
\item I. Shumailov, et al., AI models collapse when trained on recursively generated data. \emph{Nature} \textbf{631}, 755--759 (2024).
|
||||
\item J. P. Crutchfield, S. Whalen, Structural drift: The population dynamics of sequential learning. \emph{PLOS Comput. Biol.} \textbf{8}, e1002510 (2012).
|
||||
\item S. Riis, Drift and selection in LLM text ecosystems. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2604.08554.
|
||||
\item M. Benati, A. Londei, D. Lanzieri, V. Loreto, First-extinction law for resampling processes. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2509.20101.
|
||||
\item Y. Yoon, D. Hu, I. Weissburg, Y. Qin, H. Jeong, Model collapse in the self-consuming chain of diffusion finetuning: A novel perspective from quantitative trait modeling. \emph{Int. Conf. Learn. Represent.} (2025). https://doi.org/10.48550/arXiv.2407.17493.
|
||||
\item M. McCloskey, N. J. Cohen, Catastrophic interference in connectionist networks: The sequential learning problem. \emph{Psychol. Learn. Motiv.} \textbf{24}, 109--165 (1989).
|
||||
\item R. M. French, Catastrophic forgetting in connectionist networks. \emph{Trends Cogn. Sci.} \textbf{3}, 128--135 (1999).
|
||||
\item H. J. Muller, The relation of recombination to mutational advance. \emph{Mutat. Res.} \textbf{1}, 2--9 (1964).
|
||||
\item S. Alemohammad, et al., Self-consuming generative models go MAD. \emph{Int. Conf. Learn. Represent.} (2024). https://doi.org/10.48550/arXiv.2307.01850.
|
||||
\item Q. Bertrand, A. J. Bose, A. Duplessis, M. Jiralerspong, G. Gidel, On the stability of iterative retraining of generative models on their own data. \emph{Int. Conf. Learn. Represent.} (2024). https://doi.org/10.48550/arXiv.2310.00429.
|
||||
\item B. Yi, Q. Liu, Y. Cheng, H. Xu, Escaping model collapse via synthetic data verification. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2510.16657.
|
||||
\item M. Gerstgrasser, et al., Is model collapse inevitable? Breaking the curse of recursion by accumulating real and synthetic data. \emph{Conf. Lang. Model.} (2024). https://doi.org/10.48550/arXiv.2404.01413.
|
||||
\item L. S. Mills, F. W. Allendorf, The one-migrant-per-generation rule in conservation and management. \emph{Conserv. Biol.} \textbf{10}, 1509--1518 (1996).
|
||||
\item M. Wortsman, et al., Model soups: Averaging weights of multiple fine-tuned models improves accuracy without increasing inference time. \emph{Proc. Int. Conf. Mach. Learn.} (2022). https://doi.org/10.48550/arXiv.2203.05482.
|
||||
\item R. A. Fisher, \emph{The Genetical Theory of Natural Selection} (Clarendon Press, 1930).
|
||||
\item H. J. Muller, Some genetic aspects of sex. \emph{Am. Nat.} \textbf{66}, 118--138 (1932).
|
||||
\item S. P. Otto, M. W. Feldman, Deleterious mutations, variable epistatic interactions, and the evolution of recombination. \emph{Theor. Popul. Biol.} \textbf{51}, 134--147 (1997).
|
||||
\item A. R. Templeton, ``Coadaptation and outbreeding depression'' in \emph{Conservation Biology: The Science of Scarcity and Diversity}, M. E. Soulé, Ed. (Sinauer, 1986), pp. 105--116.
|
||||
\item M. Tomassini, \emph{Spatially Structured Evolutionary Algorithms: Artificial Evolution in Space and Time} (Springer, 2005).
|
||||
\item H. A. Orr, The population genetics of speciation: The evolution of hybrid incompatibilities. \emph{Genetics} \textbf{139}, 1805--1813 (1995).
|
||||
\item H. A. Orr, M. Turelli, The evolution of postzygotic isolation: Accumulating Dobzhansky--Muller incompatibilities. \emph{Evolution} \textbf{55}, 1085--1094 (2001).
|
||||
\item S. K. Ainsworth, J. Hayase, S. Srinivasa, Git Re-Basin: Merging models modulo permutation symmetries. \emph{Int. Conf. Learn. Represent.} (2023). https://doi.org/10.48550/arXiv.2209.04836.
|
||||
\item E. Sharma, D. M. Roy, G. K. Dziugaite, The non-local model merging problem: Permutation symmetries and variance collapse. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.12766.
|
||||
\item K. Jordan, H. Sedghi, O. Saukh, R. Entezari, B. Neyshabur, REPAIR: REnormalizing permuted activations for interpolation repair. \emph{Int. Conf. Learn. Represent.} (2023). https://doi.org/10.48550/arXiv.2211.08403.
|
||||
\item G. Stoica, et al., ZipIt! Merging models from different tasks without training. \emph{Int. Conf. Learn. Represent.} (2024). https://doi.org/10.48550/arXiv.2305.03053.
|
||||
\item A. Kleiman, G. K. Dziugaite, J. Frankle, S. Kakade, M. Paul, Soup to go: Mitigating forgetting during continual learning with model averaging. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2501.05559.
|
||||
\item X. Yuan, et al., Superficial self-improved reasoners benefit from model merging. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2503.02103.
|
||||
\item N. H. Barton, A general model for the evolution of recombination. \emph{Genet. Res.} \textbf{65}, 123--144 (1995).
|
||||
\item S. P. Otto, T. Lenormand, Resolving the paradox of sex and recombination. \emph{Nat. Rev. Genet.} \textbf{3}, 252--261 (2002).
|
||||
\item L. Altenberg, M. W. Feldman, Selection, generalized transmission and the evolution of modifier genes. I. The reduction principle. \emph{Genetics} \textbf{117}, 559--572 (1987).
|
||||
\item T. Fukuda, H. Kera, K. Kawamoto, Adapter merging with centroid prototype mapping for scalable class-incremental learning. \emph{Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit.} (2025). https://doi.org/10.48550/arXiv.2412.18219.
|
||||
\item D. Shenaj, O. Bohdal, T. Ceritli, M. Ozay, P. Zanuttigh, U. Michieli, K-Merge: Online continual merging of adapters for on-device large language models. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2510.13537.
|
||||
\item J. Lehman, K. O. Stanley, Abandoning objectives: Evolution through the search for novelty alone. \emph{Evol. Comput.} \textbf{19}, 189--223 (2011).
|
||||
\item S. Wright, Evolution in Mendelian populations. \emph{Genetics} \textbf{16}, 97--159 (1931).
|
||||
\item E. Dohmatob, Y. Feng, P. Yang, F. Charton, J. Kempe, A tale of tails: Model collapse as a change of scaling laws. \emph{Proc. Int. Conf. Mach. Learn.} (2024). https://doi.org/10.48550/arXiv.2402.07043.
|
||||
\item E. Dohmatob, Y. Feng, A. Subramonian, J. Kempe, Strong model collapse. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.04840.
|
||||
\item A. Garg, S. Bhattacharya, P. Sur, Preventing model collapse under overparametrization: Optimal mixing ratios for interpolation learning and ridge regression. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2509.22341.
|
||||
\item A. T. Suresh, A. Thangaraj, A. N. K. Khandavally, Rate of model collapse in recursive training. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2412.17646.
|
||||
\item J. Kazdan, et al., Collapse or thrive? Perils and promises of synthetic data in a self-generating world. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.16713.
|
||||
\item A. Souly, et al., Poisoning attacks on LLMs require a near-constant number of poison samples. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2510.07192.
|
||||
\item F. Jenkin, The origin of species [review]. \emph{North Br. Rev.} \textbf{46}, 277--318 (1867).
|
||||
\item M. Bulmer, Did Jenkin's swamping argument invalidate Darwin's theory of natural selection? \emph{Br. J. Hist. Sci.} \textbf{37}, 281--297 (2004).
|
||||
\item A. Malinin, B. Mlodozeniec, M. Gales, Ensemble distribution distillation. \emph{Int. Conf. Learn. Represent.} (2020). https://doi.org/10.48550/arXiv.1905.00076.
|
||||
\item M. Li, et al., Branch-Train-Merge: Embarrassingly parallel training of expert language models. arXiv [Preprint] (2022). https://doi.org/10.48550/arXiv.2208.03306.
|
||||
\item X. Yuan, et al., Behavior knowledge merge in reinforced agentic models. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2601.13572.
|
||||
\item J. Pari, S. Jelassi, P. Agrawal, Collective model intelligence requires compatible specialization. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2411.02207.
|
||||
\item E. J. Hu, et al., LoRA: Low-rank adaptation of large language models. \emph{Int. Conf. Learn. Represent.} (2022). https://doi.org/10.48550/arXiv.2106.09685.
|
||||
\item L. Yu, B. Yu, H. Yu, F. Huang, Y. Li, Language models are super Mario: Absorbing abilities from homologous models as a free lunch. \emph{Proc. Int. Conf. Mach. Learn.} (2024). https://doi.org/10.48550/arXiv.2311.03099.
|
||||
\item S. A. Kauffman, S. Levin, Towards a general theory of adaptive walks on rugged landscapes. \emph{J. Theor. Biol.} \textbf{128}, 11--45 (1987).
|
||||
\item D. Marczak, B. Twardowski, T. Trzciński, S. Cygert, MagMax: Leveraging model merging for seamless continual learning. \emph{Proc. Eur. Conf. Comput. Vis.} (2024). https://doi.org/10.48550/arXiv.2407.06322.
|
||||
\item S. Dziadzio, et al., How to merge your multimodal models over time? \emph{Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit.} (2025). https://doi.org/10.48550/arXiv.2412.06712.
|
||||
\item A. Williams, N. Nangia, S. R. Bowman, A broad-coverage challenge corpus for sentence understanding through inference. \emph{Proc. Conf. North Am. Chapter Assoc. Comput. Linguist. Hum. Lang. Technol.}, 1112--1122 (2018).
|
||||
\item P. Clark, et al., Think you have solved question answering? Try ARC, the AI2 Reasoning Challenge. arXiv [Preprint] (2018). https://doi.org/10.48550/arXiv.1803.05457.
|
||||
\item R. Zellers, A. Holtzman, Y. Bisk, A. Farhadi, Y. Choi, HellaSwag: Can a machine really finish your sentence? \emph{Proc. Annu. Meet. Assoc. Comput. Linguist.}, 4791--4800 (2019).
|
||||
\item P. Rajpurkar, J. Zhang, K. Lopyrev, P. Liang, SQuAD: 100,000+ questions for machine comprehension of text. \emph{Proc. Conf. Empir. Methods Nat. Lang. Process.}, 2383--2392 (2016).
|
||||
\item C. Clark, et al., BoolQ: Exploring the surprising difficulty of natural yes/no questions. \emph{Proc. Conf. North Am. Chapter Assoc. Comput. Linguist. Hum. Lang. Technol.}, 2924--2936 (2019).
|
||||
\item K. Sakaguchi, R. Le Bras, C. Bhagavatula, Y. Choi, WinoGrande: An adversarial Winograd schema challenge at scale. \emph{Proc. AAAI Conf. Artif. Intell.} \textbf{34}, 8732--8740 (2020).
|
||||
\item L. Thede, K. Roth, M. Bethge, Z. Akata, T. Hartvigsen, WikiBigEdit: Understanding the limits of lifelong knowledge editing in LLMs. \emph{Proc. Int. Conf. Mach. Learn.} (2025). https://doi.org/10.48550/arXiv.2503.05683.
|
||||
\item S. Clemente, et al., In praise of stubbornness: An empirical case for cognitive-dissonance aware continual update of knowledge in LLMs. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2502.04390.
|
||||
\item J. Störk, Interference and retention in continual learning. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2607.09202.
|
||||
\item T. Li, Z. Shen, Scaling linear mode connectivity and merging to billion-parameter pretrained transformers. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2606.23607.
|
||||
\item N. Kozodoi, Z. Afolabi, J. Butler, Are we merging the right models? Impact of expert training duration on model merging for LLMs. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2607.11997.
|
||||
\item S. Horoi, G. Wolf, E. Belilovsky, G. K. Dziugaite, From memorization to parameter interference: How overtraining experts harms model merging. \emph{Proc. Int. Conf. Mach. Learn.} (2026). https://doi.org/10.48550/arXiv.2506.14126.
|
||||
\item L. Zhou, B. Zhao, R. Yu, E. Rodolà, Demystifying mergeability: Interpretable properties to predict model merging success. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2601.22285.
|
||||
\item Y. Cao, et al., An empirical study and theoretical explanation on task-level model-merging collapse. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2603.09463.
|
||||
\item C. Zhu, X. Li, T. Cai, When do task vectors interfere? Mapping the validity boundaries of weight-space composition. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2608.09490.
|
||||
\item T. Scialom, T. Chakrabarty, S. Muresan, Fine-tuned language models are continual learners. \emph{Proc. Conf. Empir. Methods Nat. Lang. Process.} (2022). https://doi.org/10.48550/arXiv.2205.12393.
|
||||
\item A. Ibrahim, et al., Simple and scalable strategies to continually pre-train large language models. \emph{Trans. Mach. Learn. Res.} (2024). https://doi.org/10.48550/arXiv.2403.08763.
|
||||
\item A. Robins, Catastrophic forgetting, rehearsal and pseudorehearsal. \emph{Connect. Sci.} \textbf{7}, 123--146 (1995).
|
||||
\item H. Shin, J. K. Lee, J. Kim, J. Kim, Continual learning with deep generative replay. \emph{Adv. Neural Inf. Process. Syst.} \textbf{30} (2017). https://doi.org/10.48550/arXiv.1705.08690.
|
||||
\item Y. Feng, et al., Beyond model collapse: Scaling up with synthesized data requires verification. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2406.07515.
|
||||
\item A. A. Rusu, et al., Progressive neural networks. arXiv [Preprint] (2016). https://doi.org/10.48550/arXiv.1606.04671.
|
||||
\item D. Biderman, et al., LoRA learns less and forgets less. \emph{Trans. Mach. Learn. Res.} (2024). https://doi.org/10.48550/arXiv.2405.09673.
|
||||
\item J. L. McClelland, B. L. McNaughton, R. C. O'Reilly, Why there are complementary learning systems in the hippocampus and neocortex: Insights from the successes and failures of connectionist models of learning and memory. \emph{Psychol. Rev.} \textbf{102}, 419--457 (1995).
|
||||
\item D. Kumaran, D. Hassabis, J. L. McClelland, What learning systems do intelligent agents need? Complementary learning systems theory updated. \emph{Trends Cogn. Sci.} \textbf{20}, 512--534 (2016).
|
||||
\item J. Schwarz, et al., Progress \& Compress: A scalable framework for continual learning. \emph{Proc. Int. Conf. Mach. Learn.} (2018).
|
||||
\item G. Ilharco, et al., Editing models with task arithmetic. \emph{Int. Conf. Learn. Represent.} (2023). https://doi.org/10.48550/arXiv.2212.04089.
|
||||
\item A. Alexandrov, et al., Mitigating catastrophic forgetting in language transfer via model merging. \emph{Findings Assoc. Comput. Linguist.: EMNLP} (2024). https://doi.org/10.48550/arXiv.2407.08699.
|
||||
\item M. Toneva, et al., An empirical study of example forgetting during deep neural network learning. \emph{Int. Conf. Learn. Represent.} (2019). https://doi.org/10.48550/arXiv.1812.05159.
|
||||
\item N. Kandpal, H. Deng, A. Roberts, E. Wallace, C. Raffel, Large language models struggle to learn long-tail knowledge. \emph{Proc. Int. Conf. Mach. Learn.} (2023). https://doi.org/10.48550/arXiv.2211.08411.
|
||||
\item X. Liu, et al., Long-tailed class incremental learning. \emph{Proc. Eur. Conf. Comput. Vis.} (2022). https://doi.org/10.48550/arXiv.2210.00266.
|
||||
\item S. Kotha, J. M. Springer, A. Raghunathan, Understanding catastrophic forgetting in language models via implicit inference. \emph{Int. Conf. Learn. Represent.} (2024). https://doi.org/10.48550/arXiv.2309.10105.
|
||||
\item Y. Guo, G. Shang, M. Vazirgiannis, C. Clavel, The curious decline of linguistic diversity: Training language models on synthetic text. \emph{Findings Assoc. Comput. Linguist.: NAACL} (2024). https://doi.org/10.48550/arXiv.2311.09807.
|
||||
\item V. Padmakumar, H. He, Does writing with language models reduce content diversity? \emph{Int. Conf. Learn. Represent.} (2024). https://doi.org/10.48550/arXiv.2309.05196.
|
||||
\item A. R. Doshi, O. P. Hauser, Generative AI enhances individual creativity but reduces the collective diversity of novel content. \emph{Sci. Adv.} \textbf{10}, eadn5290 (2024).
|
||||
\end{enumerate}
|
||||
|
||||
271
paper/manuscript/build.py
Normal file
271
paper/manuscript/build.py
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
r"""Build the manuscript-draft PDF from main.md (Markdown stays the source of truth).
|
||||
|
||||
Adapted from paper/arxiv/md2tex.py (same Markdown subset + pipe tables), with one addition: standalone
|
||||
`*(FIG:name)*` markers place the publication figures produced by make_figs.py (unified, lettered,
|
||||
codename-free panels re-plotted from the committed artifacts). Run make_figs.py before building when
|
||||
results change.
|
||||
|
||||
Usage: python paper/manuscript/build.py && (cd paper/manuscript && tectonic main.tex)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
HERE = Path(__file__).resolve().parent
|
||||
SRC = HERE / "main.md"
|
||||
OUT = HERE / "body.tex"
|
||||
SI_FIG_DIR = HERE / "figs" / "si"
|
||||
|
||||
import sys # noqa: E402
|
||||
|
||||
sys.path.insert(0, str(HERE))
|
||||
from si_figures import SI_FIGURES # noqa: E402 (supplementary figures, numbered by order in si.md)
|
||||
|
||||
# figure name -> (single publication PDF from make_figs.py, caption)
|
||||
FIGURES: dict[str, tuple[list[str], str]] = {
|
||||
"fig1": (["paper/manuscript/figs/fig1a.pdf", "paper/manuscript/figs/fig1b.pdf"],
|
||||
"A map of the study. (A) Each row is a biological mechanism the paper borrows, each column a level "
|
||||
"of realism at which it is tested: an inheritance model (an exact simulation of knowledge "
|
||||
"transmission, green), trained neural networks measured against exact oracles (blue), and language "
|
||||
"models (blue). Filled cells name the experiments run at each level and, in the corner, the figure "
|
||||
"or table reporting them; grey cells were not run, either because the result is "
|
||||
"established in prior work (23, 34) or because that level adds no new test for that question. The "
|
||||
"inheritance model is the reference column: it sets the expectation the real-model experiments are "
|
||||
"read against. (B) The change of viewpoint the transfer rests on. A group of models is usually "
|
||||
"pictured as a society in space, contemporaries exchanging messages. The couplings studied here run "
|
||||
"between generations: training on model output (inheritance), weight-space merging (recombination), "
|
||||
"and verified real data entering each generation (immigration from reality). That is a society in "
|
||||
"time, which is what population genetics describes. Dots are capabilities: the rare one (gold) is "
|
||||
"lost under single-parent inheritance, reassembled by merging complementary parents, and re-supplied "
|
||||
"by grounding."),
|
||||
"fig2": (["paper/manuscript/figs/fig2.pdf"],
|
||||
"How much real data stops model collapse. (A) An image-generating network (a variational "
|
||||
"autoencoder) is trained on handwritten digits, then a fresh copy is trained only on the digits the "
|
||||
"previous one drew, for fifteen generations, with no real data added. Each row is a later generation "
|
||||
"(0, 4, 8, 12, 15) and each column a randomly chosen drawing. The thirty kinds of digit (ten digits "
|
||||
"$\\times$ three stroke thicknesses, some kinds rare) collapse to one blurred shape; an independent "
|
||||
"classifier confirms that the number of kinds still drawn falls from 30 to 1, while adding 10\\% real "
|
||||
"digits each generation keeps all 30 (Fig.~S7; 4 replicates). (B) The same question in the "
|
||||
"inheritance model, the exact simulation: 1,000 knowledge items, 200 samples drawn per generation, "
|
||||
"and a fraction $g$ of fresh real samples mixed in. Points are the diversity the population settles "
|
||||
"at after 500 generations (mean and 95\\% CI over 100 lineages), the dashed line the exact prediction "
|
||||
"(the immigration--drift equilibrium), the dotted line the diversity of the real data itself. The "
|
||||
"curve is smooth, so any threshold is a choice: the red line marks the $g$ at which 95\\% of the real "
|
||||
"data's diversity is kept, about 0.05 (bootstrap CI shaded). The hollow point at $g = 0$ has not yet "
|
||||
"reached its equilibrium of zero. The trained image model needed about twice this fraction, because "
|
||||
"a trained network is not the exact copier the simulation assumes (Fig.~S2)."),
|
||||
"fig4": (["paper/manuscript/figs/fig4.pdf"],
|
||||
"A population of language models over six generations. (A) The set-up. Three lineages start "
|
||||
"from one frozen 1.5-billion-parameter base (Qwen2.5-1.5B). Each generation, every lineage learns "
|
||||
"one new skill from a public dataset by continuing to train its parent's adapter (300 new examples "
|
||||
"plus 150 replayed from earlier skills), may merge with a partner according to its arm's rule "
|
||||
"(weights averaged at a ratio chosen on validation data), and is tested on all six skills by a "
|
||||
"verifier; the child becomes the next parent. The six skills are taken in rotated order, so a "
|
||||
"partner knows things a lineage lacks early on (complementarity 1.0) and nothing it lacks by the "
|
||||
"end (0.0). Three training seeds. (B) Accuracy over all six skills of the best lineage (mean and "
|
||||
"95\\% CI). Never merging and merging only when it beats keeping the parent finish level (0.80 and "
|
||||
"0.79); merging with a contemporary every generation collapses to 0.27, beginning when partners "
|
||||
"stop being complementary; a control that merges through generation 2 and then stops (dashed) "
|
||||
"matches the declinable arm in every seed, and a single model taught the whole syllabus alone "
|
||||
"(diamond) matches the population. (C) How often the declinable lineages refused a merge (bars) "
|
||||
"against partner complementarity (lines), under the rotated syllabus and under a second syllabus in "
|
||||
"which complementarity is zero at the start, peaks mid-way and returns to zero. Refusals rise with "
|
||||
"generation under both; with generation held fixed they do not track complementarity (partial "
|
||||
"Spearman $\\rho = -0.07$, 95\\% CI $-0.21$ to $0.09$, $n = 36$). (D--F) The simulation that "
|
||||
"motivated the design: 60 agents evolving on a rugged fitness landscape with all four mechanisms "
|
||||
"(grounded evaluation, recombination, diversity preservation, mutation) and one removed per arm (12 "
|
||||
"replicates; mean and 95\\% CI). Removing grounded evaluation, so that agents are scored on "
|
||||
"agreement with the crowd instead of on the truth, collapses the population onto a confident but "
|
||||
"wrong consensus (D, F); removing recombination or diversity preservation strands it below the "
|
||||
"optimum (D) and drains diversity fastest (E). Each removal fails in its own way."),
|
||||
"fig5": (["paper/manuscript/figs/fig5.pdf"],
|
||||
"Model speciation: when two lineages can no longer merge. (A, B) Small image classifiers "
|
||||
"(multilayer perceptrons) forked from one trained base. Two networks that compute the same function "
|
||||
"can still differ in their weights, because hidden units can be renumbered and rescaled without "
|
||||
"changing the output; alignment undoes this before averaging. The merge error barrier is how much "
|
||||
"worse the average of two networks is than the networks themselves. (A) Two copies trained from "
|
||||
"different random starts on the same task have a barrier that alignment removes almost entirely "
|
||||
"(0.04 to 0.001); two trained on conflicting labels (the same images, some classes relabelled) keep "
|
||||
"theirs (0.50), and their average is useless (3 replicates). (B) Sweeping the share of classes in "
|
||||
"conflict moves the merged model's accuracy from 0.97 to 0.03. (C) Language models: two specialists "
|
||||
"share a set of ambiguous questions (``sort this list'', direction unstated) and are taught opposite "
|
||||
"conventions. As the share of conflicting training grows, each parent stays good under its own "
|
||||
"convention while the merged model falls below both, in all three seeds (95\\% CI shaded). (D) The "
|
||||
"control: specialists trained longer and longer on different tasks, with no conflict, merge better, "
|
||||
"not worse, in every seed. (E, F) The simulation: 20-position genotypes carrying incompatibilities "
|
||||
"of the Bateson--Dobzhansky--Muller kind. Hybrid fitness tracks the parents while lineages are "
|
||||
"compatible, then crashes, sooner the denser the incompatibilities (E), and the probability of a "
|
||||
"non-viable hybrid rises with divergence (F). What breaks merging is conflicting conventions on "
|
||||
"shared machinery, not distance or specialisation as such."),
|
||||
"fig3": (["paper/manuscript/figs/fig3.pdf"],
|
||||
"Merging language-model specialists: when it helps, and predicting when it will hurt. All models "
|
||||
"are built from one frozen base (Qwen2.5) plus a LoRA adapter, a small set of extra weights trained "
|
||||
"on one family of tasks (list puzzles, string puzzles or arithmetic); a verifier marks every answer "
|
||||
"right or wrong, and accuracy is the share marked right on held-out questions. (A) The models "
|
||||
"compared: the base alone; three specialists (one adapter each); their merge by averaging the "
|
||||
"adapters; their merge after dropping the changes on which the parents conflict (TIES); and routing, "
|
||||
"which keeps the specialists separate and sends each question to the one that owns it. (B) Easy "
|
||||
"tasks, 0.5-billion-parameter base, five training seeds (fixed test sets; mean and 95\\% CI). Both "
|
||||
"merges beat the best single specialist on the weakest task family (paired t-test over seeds, "
|
||||
"$p < 10^{-4}$), and the interference-aware merge beats it overall ($p = 0.006$; the plain average "
|
||||
"$p = 0.09$, ahead in 4 of 5 seeds); the two merges do not differ from each other. Only merged models "
|
||||
"are competent on every family. (C) Deliberately hard tasks, 7-billion-parameter base, three seeds. "
|
||||
"Averaging only matches the best specialist overall ($p = 0.96$) although it lifts the weakest "
|
||||
"family ($p = 0.009$); routing beats averaging overall ($p = 0.007$, ahead in every seed) and beats "
|
||||
"the best specialist on both measures ($p = 0.018$ and $0.014$). With three seeds, some comparisons "
|
||||
"that hold in every seed are not significant (ns). (D) Predicting merge damage before merging: 39 "
|
||||
"pairs of specialists built along three axes, parents taught contradictory conventions (red), "
|
||||
"parents merely trained longer on different tasks (blue), and parents sharing training data without "
|
||||
"conflict (green). The horizontal axis is how often the two parents confidently disagree when asked "
|
||||
"the same questions before merging; the vertical axis is the merge penalty, the accuracy the merged "
|
||||
"model loses relative to answering each task with the parent that owns it. Damage concentrates in "
|
||||
"the conflicting pairs. (E) Six pre-merge measures ranked by how strongly they track the penalty "
|
||||
"(absolute Spearman correlation): measures taken by asking the parents questions carry the signal, "
|
||||
"measures taken on the parents' weights do not; differences between individual predictors are not "
|
||||
"significant at this sample size (Table~S2)."),
|
||||
}
|
||||
|
||||
UNICODE = {
|
||||
# Multi-character sequences first: esc() applies these in insertion order.
|
||||
"⁽ᵏ⁾": r"\(^{(k)}\)", "⁻³": r"\(^{-3}\)", "⁻⁴": r"\(^{-4}\)",
|
||||
"—": "---", "–": "--", "→": r"\(\rightarrow\)", "≈": r"\(\approx\)", "≥": r"\(\geq\)",
|
||||
"≳": r"\(\gtrsim\)", "×": r"\(\times\)", "·": r"\(\cdot\)", "μ": r"\(\mu\)",
|
||||
"ρ": r"\(\rho\)", "≤": r"\(\leq\)", "≪": r"\(\ll\)", "∝": r"\(\propto\)",
|
||||
# Greek and math symbols: the typewriter font has no Greek, so these must become math.
|
||||
"α": r"\(\alpha\)", "β": r"\(\beta\)", "ε": r"\(\varepsilon\)", "Δ": r"\(\Delta\)",
|
||||
"Σ": r"\(\Sigma\)", "∈": r"\(\in\)", "≠": r"\(\neq\)", "±": r"\(\pm\)",
|
||||
"∼": r"\(\sim\)", "−": r"\(-\)", "²": r"\(^{2}\)", "³": r"\(^{3}\)", "⁴": r"\(^{4}\)",
|
||||
}
|
||||
SPECIALS = {"&": r"\&", "%": r"\%", "#": r"\#", "_": r"\_", "$": r"\$",
|
||||
"~": r"\textasciitilde{}", "^": r"\textasciicircum{}"}
|
||||
|
||||
|
||||
def esc(s: str) -> str:
|
||||
s = s.replace("\\", r"\textbackslash{}")
|
||||
for k, v in SPECIALS.items():
|
||||
s = s.replace(k, v)
|
||||
for k, v in UNICODE.items():
|
||||
s = s.replace(k, v)
|
||||
return s
|
||||
|
||||
|
||||
def inline(s: str) -> str:
|
||||
# Code spans are stashed behind sentinels *before* emphasis is applied, so that an italic or
|
||||
# bold span containing `code` is still matched as one span (splitting first would break it).
|
||||
codes: list[str] = []
|
||||
|
||||
def stash(m: re.Match) -> str:
|
||||
codes.append(r"\texttt{" + esc(m.group(0)[1:-1]) + "}")
|
||||
return f"\x00{len(codes) - 1}\x00"
|
||||
|
||||
s = re.sub(r"`[^`]*`", stash, s)
|
||||
s = esc(s)
|
||||
s = re.sub(r"\[([^\]]+)\]\((https?://[^)]+)\)", r"\\href{\2}{\1}", s)
|
||||
s = re.sub(r"\*\*([^*]+)\*\*", r"\\textbf{\1}", s)
|
||||
s = re.sub(r"\*([^*]+)\*", r"\\emph{\1}", s)
|
||||
s = re.sub(r'"([^"]+)"', r"``\1''", s)
|
||||
return re.sub(r"\x00(\d+)\x00", lambda m: codes[int(m.group(1))], s)
|
||||
|
||||
|
||||
def figure_env(name: str) -> str:
|
||||
if name in SI_FIGURES:
|
||||
# Supplementary figure: copy the committed per-experiment PDF beside the SI build, so the SI
|
||||
# stays a pure function of the results artifacts; numbered by the LaTeX counter (S-prefixed).
|
||||
src, caption = SI_FIGURES[name]
|
||||
SI_FIG_DIR.mkdir(parents=True, exist_ok=True)
|
||||
dst = SI_FIG_DIR / f"{name}_{(ROOT / src).name}"
|
||||
shutil.copyfile(ROOT / src, dst)
|
||||
return "\n".join([f"\\begin{{figure}}[p]\\centering % {name}",
|
||||
f"\\includegraphics[width=\\textwidth]{{figs/si/{dst.name}}}",
|
||||
f"\\caption{{{caption}}}\\label{{{name}}}",
|
||||
"\\end{figure}"])
|
||||
pdfs, caption = FIGURES[name]
|
||||
incl = "\\\\[6pt]\n".join(f"\\includegraphics[width=\\textwidth]{{figs/{(ROOT / p).name}}}"
|
||||
for p in pdfs)
|
||||
lines = [f"\\begin{{figure*}}[p]\\centering % {name}",
|
||||
incl,
|
||||
f"\\caption{{{caption}}}\\label{{{name}}}",
|
||||
"\\end{figure*}"]
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def convert(text: str) -> str:
|
||||
lines = text.split("\n")
|
||||
# Skip the title block only when the document opens with one (main.md separates it with a rule
|
||||
# in the first few lines); si.md has no such block, so nothing is dropped there.
|
||||
i = 0
|
||||
head = [n for n, ln in enumerate(lines[:10]) if ln.strip() == "---"]
|
||||
if head:
|
||||
i = head[0] + 1
|
||||
|
||||
blocks: list[list[str]] = []
|
||||
cur: list[str] = []
|
||||
for line in lines[i:]:
|
||||
if line.strip() == "":
|
||||
if cur:
|
||||
blocks.append(cur); cur = []
|
||||
else:
|
||||
cur.append(line)
|
||||
if cur:
|
||||
blocks.append(cur)
|
||||
|
||||
def emit_table(block, out):
|
||||
rows = [[c.strip() for c in line.strip().strip("|").split("|")] for line in block]
|
||||
header, body = rows[0], rows[2:]
|
||||
n = len(header)
|
||||
widths = " ".join([f"p{{{0.92 / n:.3f}\\textwidth}}"] * n)
|
||||
out += ["\\medskip\\noindent\\begin{center}\\footnotesize",
|
||||
f"\\begin{{tabular}}{{{widths}}}", "\\hline",
|
||||
" & ".join(inline(c) for c in header) + " \\\\ \\hline"]
|
||||
for r in body:
|
||||
r = (r + [""] * n)[:n]
|
||||
out.append(" & ".join(inline(c) for c in r) + " \\\\[3pt]")
|
||||
out += ["\\hline\\end{tabular}\\end{center}\\medskip", ""]
|
||||
|
||||
out: list[str] = []
|
||||
for block in blocks:
|
||||
first = block[0].strip()
|
||||
m = re.match(r"^\*?\(FIG:(\w+)\)\*?$", first)
|
||||
if m:
|
||||
out.append(figure_env(m.group(1))); out.append("")
|
||||
elif first.startswith("|") and len(block) >= 2 and set(block[1].strip()) <= set("|-: "):
|
||||
emit_table(block, out)
|
||||
elif first == "---" and len(block) == 1:
|
||||
out.append("\\medskip\\hrule\\medskip"); out.append("")
|
||||
elif first.startswith("# ") and not first.startswith("## "):
|
||||
continue # document title: the wrapper supplies it
|
||||
elif first.startswith("## "):
|
||||
out.append(f"\\section*{{{inline(first[3:])}}}"); out.append("")
|
||||
elif first.startswith("### "):
|
||||
out.append(f"\\subsection*{{{inline(first[4:])}}}"); out.append("")
|
||||
elif re.match(r"^(- |\d+\. )", first):
|
||||
env = "itemize" if first.startswith("- ") else "enumerate"
|
||||
out.append(f"\\begin{{{env}}}")
|
||||
items: list[str] = []
|
||||
for l in block:
|
||||
s = l.strip()
|
||||
if re.match(r"^(- |\d+\. )", s):
|
||||
items.append(re.sub(r"^(- |\d+\. )", "", s))
|
||||
else:
|
||||
items[-1] += " " + s
|
||||
for it in items:
|
||||
out.append("\\item " + inline(it.strip()))
|
||||
out.append(f"\\end{{{env}}}"); out.append("")
|
||||
else:
|
||||
joined = re.sub(r"\s{2,}", " ", " ".join(l.strip() for l in block)).strip()
|
||||
out.append(inline(joined)); out.append("")
|
||||
return "\n".join(out) + "\n"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
doc = sys.argv[1] if len(sys.argv) > 1 else "main"
|
||||
src = HERE / f"{doc}.md"
|
||||
out = HERE / ("body.tex" if doc == "main" else f"{doc}_body.tex")
|
||||
out.write_text(convert(src.read_text()))
|
||||
print(f"wrote {out}")
|
||||
61
paper/manuscript/build_lay_legends.py
Normal file
61
paper/manuscript/build_lay_legends.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
"""Build the student-level figure guide (figure_legends_for_students.md -> .tex -> PDF).
|
||||
|
||||
The Markdown is the source of truth. Lines of the form ```` become figure includes
|
||||
(paths relative to paper/manuscript/); ``## `` headings become unnumbered sections; everything else goes
|
||||
through build.py's inline() converter, so the same Markdown subset and unicode handling apply.
|
||||
|
||||
Usage: python paper/manuscript/build_lay_legends.py && (cd paper/manuscript && tectonic figure_legends_for_students.tex)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
HERE = Path(__file__).resolve().parent
|
||||
sys.path.insert(0, str(HERE))
|
||||
from build import inline # noqa: E402
|
||||
|
||||
SRC = HERE / "figure_legends_for_students.md"
|
||||
OUT = HERE / "figure_legends_for_students.tex"
|
||||
|
||||
PREAMBLE = r"""\ifdefined\XeTeXversion\else\ifdefined\pdfoutput\pdfoutput=1\fi\fi
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, margin=1.0in]{geometry}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{amsmath, amssymb}
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
\usepackage{microtype}
|
||||
\setlength{\parskip}{0.5em}
|
||||
\setlength{\parindent}{0pt}
|
||||
\begin{document}
|
||||
"""
|
||||
|
||||
|
||||
def convert(text: str) -> str:
|
||||
out: list[str] = []
|
||||
blocks = [b for b in re.split(r"\n\s*\n", text) if b.strip()]
|
||||
for block in blocks:
|
||||
first = block.strip()
|
||||
if first.startswith("# ") and not first.startswith("## "):
|
||||
out.append(f"\\begin{{center}}{{\\LARGE\\bfseries {inline(first[2:])}}}\\end{{center}}")
|
||||
elif first.startswith("## "):
|
||||
out.append(f"\\section*{{{inline(first[3:])}}}")
|
||||
elif first == "---":
|
||||
out.append("\\medskip\\hrule\\medskip")
|
||||
elif re.match(r"^!\[\]\((.+)\)$", first):
|
||||
path = re.match(r"^!\[\]\((.+)\)$", first).group(1)
|
||||
assert (HERE / path).exists(), f"missing figure {path}"
|
||||
out.append(f"\\begin{{center}}\\includegraphics[width=\\textwidth]{{{path}}}\\end{{center}}")
|
||||
elif first.startswith("- "):
|
||||
items = [re.sub(r"^- ", "", l.strip()) for l in block.split("\n") if l.strip().startswith("- ")]
|
||||
out.append("\\begin{itemize}\n" + "\n".join(f"\\item {inline(i)}" for i in items) + "\n\\end{itemize}")
|
||||
else:
|
||||
out.append(inline(re.sub(r"\s+", " ", block.strip())))
|
||||
return PREAMBLE + "\n\n".join(out) + "\n\\end{document}\n"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
OUT.write_text(convert(SRC.read_text()))
|
||||
print(f"wrote {OUT}")
|
||||
291
paper/manuscript/build_zotero_library.py
Normal file
291
paper/manuscript/build_zotero_library.py
Normal file
|
|
@ -0,0 +1,291 @@
|
|||
"""Build a Zotero-importable library from the manuscript's reference list.
|
||||
|
||||
For each of the numbered references in paper/manuscript/main.md: take the DOI printed in the entry when
|
||||
there is one, otherwise ask Crossref for it by title (accepting only a high-scoring match whose title
|
||||
really is the same, checked by normalised comparison). Then fetch authoritative metadata for every
|
||||
resolved DOI by content negotiation against doi.org, which serves Crossref and DataCite alike, and
|
||||
write the result as CSL-JSON plus RIS.
|
||||
|
||||
Entries whose DOI cannot be resolved (pre-DOI literature, books, chapters) are reported and written
|
||||
from the manuscript's own metadata so nothing is silently dropped.
|
||||
|
||||
Usage: python paper/manuscript/build_zotero_library.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
from pathlib import Path
|
||||
|
||||
MAIN = Path(__file__).resolve().parent / "main.md"
|
||||
OUT = Path(__file__).resolve().parent / "refs"
|
||||
MAILTO = "g.gilestro@imperial.ac.uk" # Crossref polite pool
|
||||
UA = f"LamarckianAI-refs/1.0 (mailto:{MAILTO})"
|
||||
|
||||
# Reference numbers whose sources predate DOIs or are books/chapters: never send these to Crossref
|
||||
# title search, because it returns confident nonsense for them.
|
||||
NO_DOI_EXPECTED = {33, 35, 39} # Jenkin 1867; Fisher 1930 (book); Templeton 1986 (chapter)
|
||||
|
||||
# DOIs the title search could not find and that were verified by hand against the publisher record.
|
||||
DOI_OVERRIDE = {
|
||||
17: "10.1038/s41562-023-01742-2", # Brinkmann et al., Machine culture (Nat. Hum. Behav.)
|
||||
64: "10.48550/arXiv.1805.06370", # Schwarz et al., Progress & Compress (no Crossref DOI)
|
||||
}
|
||||
|
||||
# The three genuinely pre-DOI sources, written out rather than parsed, so the Zotero records are
|
||||
# complete instead of merely non-empty.
|
||||
HAND_WRITTEN = {
|
||||
33: {"type": "article-journal", "title": "[Review of] The Origin of Species",
|
||||
"author": [{"given": "Fleeming", "family": "Jenkin"}],
|
||||
"container-title": "The North British Review", "volume": "46", "page": "277-318",
|
||||
"issued": {"date-parts": [[1867]]}},
|
||||
35: {"type": "book", "title": "The Genetical Theory of Natural Selection",
|
||||
"author": [{"given": "Ronald A.", "family": "Fisher"}],
|
||||
"publisher": "Clarendon Press", "publisher-place": "Oxford",
|
||||
"issued": {"date-parts": [[1930]]}},
|
||||
39: {"type": "chapter", "title": "Coadaptation and outbreeding depression",
|
||||
"author": [{"given": "Alan R.", "family": "Templeton"}],
|
||||
"editor": [{"given": "Michael E.", "family": "Soulé"}],
|
||||
"container-title": "Conservation Biology: The Science of Scarcity and Diversity",
|
||||
"publisher": "Sinauer Associates", "publisher-place": "Sunderland, MA",
|
||||
"page": "105-116", "issued": {"date-parts": [[1986]]}},
|
||||
}
|
||||
|
||||
|
||||
def get(url: str, accept: str | None = None, tries: int = 3) -> bytes | None:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": UA})
|
||||
if accept:
|
||||
req.add_header("Accept", accept)
|
||||
for i in range(tries):
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=30) as r:
|
||||
return r.read()
|
||||
except Exception as e: # noqa: BLE001
|
||||
if i == tries - 1:
|
||||
print(f" ! {type(e).__name__}: {str(e)[:80]}", file=sys.stderr)
|
||||
time.sleep(1.5 * (i + 1))
|
||||
return None
|
||||
|
||||
|
||||
def parse_refs() -> list[tuple[int, str]]:
|
||||
refs = MAIN.read_text().split("## References")[1]
|
||||
out = []
|
||||
for line in refs.splitlines():
|
||||
if m := re.match(r"^(\d+)\. (.*)$", line):
|
||||
out.append((int(m.group(1)), m.group(2).strip()))
|
||||
return out
|
||||
|
||||
|
||||
def strip_md(s: str) -> str:
|
||||
return re.sub(r"[*_`]", "", s)
|
||||
|
||||
|
||||
def guess_title(entry: str) -> str:
|
||||
"""The title is the run of text between the author list and the italic venue or the year."""
|
||||
t = strip_md(entry)
|
||||
t = re.sub(r"\s*https?://\S+$", "", t).strip()
|
||||
# drop the leading author list: everything up to the last ", " before the title is unreliable,
|
||||
# so instead cut after the first ", " that follows an initial-style name block
|
||||
m = re.match(r"^((?:[A-ZÀ-Þ]\.\s*)+[^,]+,\s*)+", t)
|
||||
rest = t[m.end():] if m else t
|
||||
rest = re.sub(r"^et al\.,\s*", "", rest)
|
||||
# the title ends at the venue (". *Venue*") or at " arXiv [Preprint]" or " (Year)"
|
||||
rest = re.split(r"\.\s+(?:arXiv \[Preprint\]|[A-Z][a-zA-Z.\s&]*\*|Proc\.|Int\.|Adv\.|Conf\.|Nat\.|Trans\.)", rest)[0]
|
||||
rest = re.split(r"\s*\(\d{4}\)", rest)[0]
|
||||
return rest.strip(" .,")
|
||||
|
||||
|
||||
def norm(s: str) -> str:
|
||||
return re.sub(r"[^a-z0-9]", "", s.lower())
|
||||
|
||||
|
||||
def crossref_by_title(title: str, year: str | None) -> tuple[str | None, str]:
|
||||
q = urllib.parse.urlencode({"query.bibliographic": title, "rows": 5, "mailto": MAILTO})
|
||||
raw = get(f"https://api.crossref.org/works?{q}")
|
||||
if not raw:
|
||||
return None, "crossref unreachable"
|
||||
items = json.loads(raw).get("message", {}).get("items", [])
|
||||
tn = norm(title)
|
||||
for it in items:
|
||||
cand = (it.get("title") or [""])[0]
|
||||
cn = norm(cand)
|
||||
if not cn:
|
||||
continue
|
||||
# accept only a genuine title match, not merely a high Crossref score
|
||||
if cn.startswith(tn[:60]) or tn.startswith(cn[:60]):
|
||||
return it.get("DOI"), f"matched: {cand[:70]}"
|
||||
return None, f"no title match (best: {(items[0].get('title') or [''])[0][:60] if items else '-'})"
|
||||
|
||||
|
||||
def csl_from_doi(doi: str) -> dict | None:
|
||||
raw = get(f"https://doi.org/{urllib.parse.quote(doi)}",
|
||||
accept="application/vnd.citationstyles.csl+json")
|
||||
if not raw:
|
||||
return None
|
||||
try:
|
||||
return json.loads(raw)
|
||||
except json.JSONDecodeError:
|
||||
return None
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- fallback CSL from the manuscript
|
||||
def manual_csl(num: int, entry: str) -> dict:
|
||||
t = strip_md(entry)
|
||||
year = (re.search(r"\((\d{4})\)", t) or re.search(r"(\d{4})", t))
|
||||
authors = []
|
||||
m = re.match(r"^((?:[A-ZÀ-Þ]\.(?:\s*[A-ZÀ-Þ]\.)*\s+[^,]+,\s*)+)", t)
|
||||
if m:
|
||||
for name in re.findall(r"([A-ZÀ-Þ]\.(?:\s*[A-ZÀ-Þ]\.)*)\s+([^,]+)", m.group(1)):
|
||||
authors.append({"given": name[0].strip(), "family": name[1].strip()})
|
||||
venue = re.search(r"\*([^*]+)\*", entry)
|
||||
vol = re.search(r"\*\*(\d+)\*\*", entry)
|
||||
pages = re.search(r"\*\*\d+\*\*,\s*([\d–\-]+)", entry)
|
||||
return {k: v for k, v in {
|
||||
"id": f"ref{num}",
|
||||
"type": "book" if "Press)" in t or "Sinauer" in t else "article-journal",
|
||||
"title": guess_title(entry),
|
||||
"author": authors or None,
|
||||
"container-title": venue.group(1) if venue else None,
|
||||
"volume": vol.group(1) if vol else None,
|
||||
"page": pages.group(1).replace("–", "-") if pages else None,
|
||||
"issued": {"date-parts": [[int(year.group(1))]]} if year else None,
|
||||
"note": f"manuscript reference {num}; no DOI",
|
||||
}.items() if v is not None}
|
||||
|
||||
|
||||
def clean_text(s: str) -> str:
|
||||
"""Publisher abstracts arrive with JATS tags, HTML entities, and hard line breaks; RIS is a
|
||||
line-oriented format, so every field has to end up as one clean line."""
|
||||
import html
|
||||
|
||||
s = re.sub(r"<[^>]+>", " ", s) # JATS/HTML tags
|
||||
s = html.unescape(s)
|
||||
return re.sub(r"\s+", " ", s).strip()
|
||||
|
||||
|
||||
def clean_csl(c: dict) -> dict:
|
||||
for k, v in list(c.items()):
|
||||
if isinstance(v, str):
|
||||
c[k] = clean_text(v)
|
||||
elif isinstance(v, list) and v and isinstance(v[0], str):
|
||||
c[k] = [clean_text(x) for x in v]
|
||||
doi = c.get("DOI", "")
|
||||
if doi.lower().startswith("10.48550/arxiv."):
|
||||
# DataCite returns these uppercased and with no venue; restore the canonical DOI casing and
|
||||
# give Zotero something to show in the publication field instead of a blank.
|
||||
arxiv_id = doi.split(".", 2)[-1]
|
||||
c["DOI"] = f"10.48550/arXiv.{arxiv_id}"
|
||||
c["container-title"] = "arXiv"
|
||||
c["number"] = f"arXiv:{arxiv_id}"
|
||||
c["genre"] = "preprint"
|
||||
return c
|
||||
|
||||
|
||||
# Crossref reports its own type vocabulary alongside real CSL types; map both.
|
||||
CSL2RIS_EXTRA = {"journal-article": "JOUR", "book-chapter": "CHAP", "proceedings-article": "CPAPER",
|
||||
"posted-content": "JOUR", "book-section": "CHAP", "monograph": "BOOK"}
|
||||
|
||||
|
||||
CSL2RIS = {"article-journal": "JOUR", "paper-conference": "CPAPER", "chapter": "CHAP",
|
||||
"book": "BOOK", "article": "JOUR", "posted-content": "JOUR", "report": "RPRT",
|
||||
"dataset": "DATA", "thesis": "THES"}
|
||||
|
||||
|
||||
def ris_type(c: dict) -> str:
|
||||
t = c.get("type", "")
|
||||
return CSL2RIS.get(t) or CSL2RIS_EXTRA.get(t) or "JOUR"
|
||||
|
||||
|
||||
def to_ris(c: dict, num: int) -> str:
|
||||
L = [f"TY - {ris_type(c)}"]
|
||||
for a in c.get("author") or []:
|
||||
fam, giv = a.get("family", ""), a.get("given", "")
|
||||
L.append(f"AU - {fam}, {giv}".rstrip(", ") if fam else f"AU - {a.get('literal', '')}")
|
||||
ttl = c.get("title")
|
||||
if isinstance(ttl, list):
|
||||
ttl = ttl[0]
|
||||
if ttl:
|
||||
L.append(f"TI - {ttl}")
|
||||
ct = c.get("container-title")
|
||||
if isinstance(ct, list):
|
||||
ct = ct[0] if ct else None
|
||||
if ct:
|
||||
L.append(f"{'BT' if ris_type(c) == 'CHAP' else 'T2'} - {ct}")
|
||||
for ed in c.get("editor") or []:
|
||||
L.append(f"A2 - {ed.get('family', '')}, {ed.get('given', '')}".rstrip(", "))
|
||||
if c.get("number"):
|
||||
L.append(f"AN - {c['number']}")
|
||||
if c.get("publisher-place"):
|
||||
L.append(f"CY - {c['publisher-place']}")
|
||||
parts = (c.get("issued") or {}).get("date-parts") or [[]]
|
||||
if parts and parts[0]:
|
||||
L.append(f"PY - {parts[0][0]}")
|
||||
for key, tag in (("volume", "VL"), ("issue", "IS"), ("publisher", "PB"), ("DOI", "DO"),
|
||||
("URL", "UR"), ("abstract", "AB")):
|
||||
if c.get(key):
|
||||
L.append(f"{tag} - {c[key]}")
|
||||
if c.get("page"):
|
||||
pg = str(c["page"]).replace("–", "-").split("-")
|
||||
L.append(f"SP - {pg[0]}")
|
||||
if len(pg) > 1:
|
||||
L.append(f"EP - {pg[-1]}")
|
||||
L.append(f"N1 - {c.get('note') or f'Manuscript reference {num}'}")
|
||||
L.append("ER - \n")
|
||||
return "\n".join(L)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
refs = parse_refs()
|
||||
print(f"{len(refs)} references parsed\n")
|
||||
csls, report = [], []
|
||||
for num, entry in refs:
|
||||
doi = None
|
||||
if num in HAND_WRITTEN:
|
||||
c = dict(HAND_WRITTEN[num], id=f"ref{num}", note=f"Manuscript reference {num}; predates DOIs")
|
||||
csls.append(c)
|
||||
report.append((num, "HAND (pre-DOI source)", c["title"][:64], "written by hand"))
|
||||
print(f" {num:3d} {'HAND (pre-DOI source)':52s} {c['title'][:56]}")
|
||||
continue
|
||||
if num in DOI_OVERRIDE:
|
||||
doi, src = DOI_OVERRIDE[num], "verified by hand"
|
||||
elif m := re.search(r"doi\.org/(10\.\S+?)\.?$", entry):
|
||||
doi = m.group(1)
|
||||
src = "in manuscript"
|
||||
elif num not in NO_DOI_EXPECTED:
|
||||
title = guess_title(entry)
|
||||
yr = re.search(r"\((\d{4})\)", entry)
|
||||
doi, why = crossref_by_title(title, yr.group(1) if yr else None)
|
||||
src = f"crossref ({why})"
|
||||
time.sleep(0.3)
|
||||
else:
|
||||
src = "pre-DOI / book — not searched"
|
||||
|
||||
c = csl_from_doi(doi) if doi else None
|
||||
if c:
|
||||
c["id"] = f"ref{num}"
|
||||
c["note"] = f"Manuscript reference {num}"
|
||||
status = f"OK {doi}"
|
||||
else:
|
||||
c = manual_csl(num, entry)
|
||||
status = f"MANUAL ({src})" if not doi else f"MANUAL (DOI {doi} would not resolve)"
|
||||
csls.append(c)
|
||||
report.append((num, status, (c.get('title') or '')[:64], src))
|
||||
print(f" {num:3d} {status:52s} {(c.get('title') or '')[:56]}")
|
||||
time.sleep(0.2)
|
||||
|
||||
csls = [clean_csl(c) for c in csls]
|
||||
(OUT / "references.json").write_text(json.dumps(csls, indent=1, ensure_ascii=False))
|
||||
(OUT / "references.ris").write_text("".join(to_ris(c, n) for (n, _), c in zip(refs, csls)))
|
||||
ok = sum(1 for _, s, _, _ in report if s.startswith("OK"))
|
||||
print(f"\nresolved from DOI: {ok}/{len(refs)} manual: {len(refs)-ok}")
|
||||
(OUT / "report.txt").write_text("\n".join(f"{n}\t{s}\t{t}\t{src}" for n, s, t, src in report))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
39
paper/manuscript/cover_letter_nmi.md
Normal file
39
paper/manuscript/cover_letter_nmi.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
Giorgio F. Gilestro
|
||||
Department of Life Sciences, Imperial College London
|
||||
giorgio@gilest.ro
|
||||
|
||||
[Date]
|
||||
|
||||
Dear Editor,
|
||||
|
||||
Please consider the enclosed manuscript, "The evolution of sex for artificial intelligence: a population-genetic framework for multigenerational model populations", for publication as an Article in *Nature Machine Intelligence*.
|
||||
|
||||
Machine learning has become a population process. Public repositories hold millions of models, most of them fine-tunes, distillations or weight merges of a few ancestors; models learn from the output of earlier models; and merging, now mainstream practice with standard tooling, is described in its own literature with the words crossover, mutation and mate choice. A population whose members inherit from one another, recombine and retransmit is an evolving population in the technical sense, and the branch of biology built for that situation is the population genetics of sexual reproduction. That training on model output is genetic drift, with model collapse as its signature, has been established several times over. This paper takes the next step and develops the mechanisms population genetics offers for sustaining a population against drift (immigration, recombination, selection, population structure), and the point where they fail (reproductive isolation), and tests each of them in a chain from closed forms to trained networks to language models.
|
||||
|
||||
Four measurements are new, and each was chosen because the existing experimental designs could not make it.
|
||||
|
||||
First, a six-generation population of language models in which three lineages each learn a new skill every generation and then choose whether, and with whom, to merge. Merging has been iterated before, in evolutionary pools of fixed parents and in continual streams folded into one model, but never while the lineages were also learning. The population shows that obligate merging collapses once partners hold conflicting conventions (accuracy 0.65 to 0.27), that a merge each lineage may decline, or a fixed early stop, avoids the collapse at no cost against never merging, and that merging with one's own ancestor is safer than merging with a contemporary in every seed. A second curriculum decoupling partner complementarity from generation shows that declines track generation, which corrects an interpretation the first curriculum invited.
|
||||
|
||||
Second, model speciation as a named and tested question. Using the permutation-and-rescaling alignment of Git Re-Basin and REPAIR, the merge barrier between networks is separated into the part alignment removes and the part it cannot. Conflicting label maps leave a residual alignment does not touch, while six times the base training on non-conflicting tasks produces no isolation at all and the strongest rescue-by-merging in the paper, against the expectation that specialisation by itself erodes mergeability.
|
||||
|
||||
Third, a pre-merge predictive test on 39 language-model parent pairs across three decorrelated axes (conflict, compatible overlap, duration). Functional disagreement between parents predicts merge damage out of sample where LoRA-weight cosine and distance do not, in agreement with recent correlational reports. The control that matters is new: on a grid that varies conflict and shared training data together, weight cosine is the best predictor (ρ = 0.60), and adding overlap without conflict collapses it to 0.03. Any weight-geometry predictor validated on such a grid is reading the shared data, which bears on the merge-prediction literature independently of the biology.
|
||||
|
||||
Fourth, a conservation law for blending inheritance. Refitting a child on the average of several parents' outputs carries a rare capability across a generation no better than inheriting from one parent, to first order, so the gain of having several parents is realised only by operators that keep each parent's strongest contribution. The law fixes the null against which every recombination operator is judged and predicted the headroom rule measured in language models at two scales: routing and offspring selection beat the weight average wherever that average falls short of attainable performance (hard tasks at 7B, every seed), and add nothing where it does not.
|
||||
|
||||
Around these sit results that place the framework in the existing literature: a closed-form grounding equilibrium and per-item floor that agree with the fresh-data stability theorems and with the finding that absolute real-sample counts matter more than proportions; the transfer of every drift sign to trained networks with a measured, architecture-specific estimator bias; and a four-arm ablation of a composed population. Two refinements the framework proposed were not supported, and the paper says so.
|
||||
|
||||
I am submitting to *Nature Machine Intelligence* because the readers who make the decisions this paper prices (how much verified data a synthetic pipeline needs, whether to merge or route, when to stop merging, how to detect an incompatible pair before paying for the merge) are this journal's readers, and because the journal has already published evolutionary model merging as a research direction (Akiba et al., 2025). The paper gives that direction its theory and its failure modes. What biology receives in return is a model system where every genotype, environment and mating decision is observable and manipulable, so the paper should also interest the evolutionary biologists among your readership.
|
||||
|
||||
All code, configurations, seeds, results artefacts and a one-command reproduction script will be deposited openly with an archived DOI on publication; every figure regenerates from committed artefacts without re-simulation. The manuscript is not under consideration elsewhere and has not been published in any form. [A preprint has been / will be posted to arXiv.] I am the sole author and declare no competing interests.
|
||||
|
||||
Suggested referees:
|
||||
- [Name, affiliation, email] (model merging)
|
||||
- [Name, affiliation, email] (model collapse / synthetic data theory)
|
||||
- [Name, affiliation, email] (population genetics of recombination and speciation)
|
||||
- [Name, affiliation, email] (continual learning)
|
||||
|
||||
Excluded referees: [none / names].
|
||||
|
||||
Yours sincerely,
|
||||
|
||||
Giorgio F. Gilestro
|
||||
BIN
paper/manuscript/figs/fig1a.pdf
Normal file
BIN
paper/manuscript/figs/fig1a.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig1b.pdf
Normal file
BIN
paper/manuscript/figs/fig1b.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig2.pdf
Normal file
BIN
paper/manuscript/figs/fig2.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig3.pdf
Normal file
BIN
paper/manuscript/figs/fig3.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig4.pdf
Normal file
BIN
paper/manuscript/figs/fig4.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig5.pdf
Normal file
BIN
paper/manuscript/figs/fig5.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig6.pdf
Normal file
BIN
paper/manuscript/figs/fig6.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/fig7.pdf
Normal file
BIN
paper/manuscript/figs/fig7.pdf
Normal file
Binary file not shown.
1
paper/manuscript/figs/icons/pea.svg
Normal file
1
paper/manuscript/figs/icons/pea.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 12 KiB |
1
paper/manuscript/figs/icons/robot.svg
Normal file
1
paper/manuscript/figs/icons/robot.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg id="Layer_1" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1"><rect fill="#eff3f9" height="29" rx="4" width="34" x="7" y="15"/><path d="m11 38v-23c-2.209 0-4 1.791-4 4v21c0 2.209 1.791 4 4 4h26c2.209 0 4-1.791 4-4h-28c-1.105 0-2-.895-2-2z" fill="#cfe0f3"/><circle cx="18" cy="25" fill="#afb4c2" r="2"/><circle cx="30" cy="25" fill="#afb4c2" r="2"/><path d="m45 36h-4v-13h4c1.105 0 2 .895 2 2v9c0 1.105-.895 2-2 2z" fill="#8c94af"/><path d="m3 36h4v-13h-4c-1.105 0-2 .895-2 2v9c0 1.105.895 2 2 2z" fill="#8c94af"/><path d="m45 32h-4v4h4c1.105 0 2-.895 2-2v-4c0 1.105-.895 2-2 2z" fill="#6f7792"/><path d="m1 30v4c0 1.105.895 2 2 2h4v-4h-4c-1.105 0-2-.895-2-2z" fill="#6f7792"/><circle cx="24" cy="6" fill="#ff3b65" r="3"/><path d="m25.5 7c-1.381 0-2.5-1.119-2.5-2.5 0-.54.175-1.037.467-1.446-1.402.252-2.467 1.472-2.467 2.946 0 1.657 1.343 3 3 3 1.474 0 2.694-1.065 2.946-2.467-.409.291-.906.467-1.446.467z" fill="#d82b50" opacity=".75"/><g fill="#08105e"><path d="m21 25c0-1.654-1.346-3-3-3s-3 1.346-3 3 1.346 3 3 3 3-1.346 3-3zm-3 1c-.551 0-1-.448-1-1s.449-1 1-1 1 .449 1 1-.449 1-1 1z"/><path d="m30 22c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zm0 4c-.551 0-1-.448-1-1s.449-1 1-1 1 .449 1 1-.449 1-1 1z"/><path d="m28.543 33.91c-2.815 1.447-6.271 1.447-9.086 0-.492-.253-1.094-.059-1.347.433s-.059 1.094.433 1.347c1.669.857 3.556 1.311 5.457 1.311s3.788-.453 5.457-1.311c.491-.253.685-.855.433-1.347s-.855-.686-1.347-.433z"/><path d="m45 22h-3v-3c0-2.757-2.243-5-5-5h-12v-4.142c1.72-.447 3-2 3-3.858 0-2.206-1.794-4-4-4s-4 1.794-4 4c0 1.858 1.28 3.411 3 3.858v4.142h-12c-2.757 0-5 2.243-5 5v3h-3c-1.654 0-3 1.346-3 3v9c0 1.654 1.346 3 3 3h3v3c0 2.757 2.243 5 5 5h26c2.757 0 5-2.243 5-5v-3h3c1.654 0 3-1.346 3-3v-9c0-1.654-1.346-3-3-3zm-23-16c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2-2-.897-2-2zm-19 29c-.551 0-1-.448-1-1v-9c0-.551.449-1 1-1h3v11zm37 5c0 1.654-1.346 3-3 3h-26c-1.654 0-3-1.346-3-3v-21c0-1.654 1.346-3 3-3h26c1.654 0 3 1.346 3 3zm6-6c0 .552-.449 1-1 1h-3v-11h3c.551 0 1 .449 1 1z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2 KiB |
BIN
paper/manuscript/figs/si/s10_figS10_rugged_landscapes.pdf
Normal file
BIN
paper/manuscript/figs/si/s10_figS10_rugged_landscapes.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s11_figS11_directed_recombination.pdf
Normal file
BIN
paper/manuscript/figs/si/s11_figS11_directed_recombination.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s12_figS12_quality_diversity.pdf
Normal file
BIN
paper/manuscript/figs/si/s12_figS12_quality_diversity.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s13_figS13_mating_breadth.pdf
Normal file
BIN
paper/manuscript/figs/si/s13_figS13_mating_breadth.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s14_curriculum_timing.pdf
Normal file
BIN
paper/manuscript/figs/si/s14_curriculum_timing.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s15_curriculum_cull.pdf
Normal file
BIN
paper/manuscript/figs/si/s15_curriculum_cull.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s16_llm_smol.pdf
Normal file
BIN
paper/manuscript/figs/si/s16_llm_smol.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s1_figS1_architectures.pdf
Normal file
BIN
paper/manuscript/figs/si/s1_figS1_architectures.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s2_kernel.pdf
Normal file
BIN
paper/manuscript/figs/si/s2_kernel.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s3_figS3_rebaselining.pdf
Normal file
BIN
paper/manuscript/figs/si/s3_figS3_rebaselining.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s4_fig2_grounding_sweep.pdf
Normal file
BIN
paper/manuscript/figs/si/s4_fig2_grounding_sweep.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s5_figS5_aimed_grounding.pdf
Normal file
BIN
paper/manuscript/figs/si/s5_figS5_aimed_grounding.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s6_figS6_grounding_rnn.pdf
Normal file
BIN
paper/manuscript/figs/si/s6_figS6_grounding_rnn.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s7_fig2_mnist_collapse.pdf
Normal file
BIN
paper/manuscript/figs/si/s7_fig2_mnist_collapse.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s8_figS8_multiparent_union.pdf
Normal file
BIN
paper/manuscript/figs/si/s8_figS8_multiparent_union.pdf
Normal file
Binary file not shown.
BIN
paper/manuscript/figs/si/s9_figS9_specialist_superparent.pdf
Normal file
BIN
paper/manuscript/figs/si/s9_figS9_specialist_superparent.pdf
Normal file
Binary file not shown.
271
paper/manuscript/figure_legends_for_students.md
Normal file
271
paper/manuscript/figure_legends_for_students.md
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
# The evolution of sex for artificial intelligence: the figures explained
|
||||
|
||||
*Appendix to the paper. Written for a reader with A-level biology or maths and no background in machine learning.*
|
||||
|
||||
## Why this appendix exists
|
||||
|
||||
The paper sits between two fields. Its questions and its theory come from population genetics; its experiments are machine learning, run on simulations, small neural networks and language models. A biologist can follow the argument in the main text while still finding the experimental details opaque: what a model is trained on, what an adapter is, what a verifier measures, why a result rests on seeds rather than replicates. This appendix answers those questions figure by figure. It repeats every figure of the paper, main and supplementary, with a legend that explains the experiment behind it in plain terms, so that a reader from biology can judge the evidence and not only the analogy.
|
||||
|
||||
## How to read this document
|
||||
|
||||
The paper asks one question: when artificial-intelligence models are built from other models, what happens to what they know over the generations? Modern AI systems are rarely trained from nothing. A new model is usually a copy of an older one that has been trained a little further (a *child* of a *parent*), it is often trained on text that earlier models wrote, and two trained models are often blended into one by averaging the numbers inside them (*merging*). Those three habits give AI models parents, siblings and descendants, and biology has a hundred years of theory about populations like that: *population genetics*, the mathematics of how genes spread, vanish and recombine over generations.
|
||||
|
||||
The paper takes that theory literally. It treats a model's knowledge as a set of *items* (a fact, a skill, a habit of answering), each with a frequency, exactly as a population geneticist treats *alleles* (the alternative versions of a gene) and their frequencies. It then tests, at three levels of realism, whether the biological rules hold. The three levels are: a pure simulation with known answers (called the *inheritance model*), small neural networks trained on data the authors fully control, and real language models (the family of systems behind chatbots). Every figure below belongs to one or more of those levels.
|
||||
|
||||
A few terms come back in every figure:
|
||||
|
||||
- **Generation.** One round of "train a child from its parent". A lineage that goes through ten rounds has ten generations.
|
||||
- **Grounding.** Mixing some genuine, checked real data into what a child is trained on, instead of training it only on what its parent produced. In the biological reading this is *immigration*: new individuals arriving from outside.
|
||||
- **Model collapse.** The gradual loss of rare knowledge when each generation is trained only on the previous one. In biology the same process is called *genetic drift*: in a small population, rare alleles disappear by chance, not because anything selects against them, in the way that rare surnames die out in a small village.
|
||||
- **Diversity, or heterozygosity, H.** A number between 0 and 1 that measures how spread out the knowledge is. If you pick two items at random, H is the chance they differ. H near 1 means many items share the frequency; H equal to 0 means one item has taken over.
|
||||
- **Merging.** Making a new model by averaging the internal numbers (the *weights*) of two or more trained parents. The paper's central claim is that this is the AI counterpart of *sexual reproduction*, with the same benefits and the same dangers.
|
||||
- **Verifier.** A program that can mark an answer right or wrong automatically (run the code, check the arithmetic, compare with the known answer). It is the paper's stand-in for "reality that can say no".
|
||||
- **Accuracy.** The fraction of test questions a model gets right, from 0 to 1.
|
||||
- **Seed.** Training a neural network involves random choices. Repeating an experiment with a different random seed and getting the same answer shows the result is not a fluke. Error bars in the figures are 95% confidence intervals over seeds or replicates.
|
||||
|
||||
Each legend below says what was done, what you are looking at, and what it means.
|
||||
|
||||
---
|
||||
|
||||
## Figure 1. A map of the whole study
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
**What was done.** Nothing is measured in this figure. It is a map. Panel A is a grid: each row is one biological mechanism the paper borrows, each column is one of the three levels of realism at which it was tested. The rows are grounding (immigration), recombination (sex), epistasis (skills that only work in combination), the complete "society" with all mechanisms running at once, and speciation (when two lineages can no longer produce a working hybrid). The columns are the inheritance model (a simulation with exact answers, in green), trained small networks (blue), and language models (blue). Each filled cell names what was run there and, in the corner, which figure reports it. Cells marked "no counterpart" or "established in prior work" were deliberately not run: the paper tests each claim at the cheapest level that could prove it wrong, and moves to a more expensive level only when that adds a new test rather than a repeat.
|
||||
|
||||
**Panel B** shows the change of viewpoint the whole paper rests on. On the left is how people usually picture a group of AI models: contemporaries exchanging messages, a *society in space*. On the right the same group is drawn along its time axis: a model inherits from a parent, merges with a partner, receives fresh real data, and passes the result on. That is a *society in time*, and it is exactly the kind of object population genetics was built to describe. The coloured dots on each robot are its skills. Follow the gold dot: it is rare, it is lost when a child inherits from a single parent, it is recovered when two complementary parents merge, and it is re-supplied by grounding (the globe).
|
||||
|
||||
**What it means.** If you remember one thing from this figure, remember the right-hand side of panel B. The rest of the paper is a list of what happens to the gold dot.
|
||||
|
||||
## Figure 2. How much real data stops collapse
|
||||
|
||||

|
||||
|
||||
**What was done.** Two experiments on the same question. In panel A a small image-generating network (a *variational autoencoder*, a type of network that learns to draw new examples of what it was shown) was trained on handwritten digits, then a fresh copy was trained only on the digits the first one drew, then another on that one's output, for fifteen generations. The digits were sorted into thirty kinds (each digit in three stroke thicknesses), some kinds common and some rare, and an independent classifier checked which kind each drawn digit belonged to. In panel B the same question was asked of the inheritance model, the pure simulation: a population of 1,000 knowledge items, 200 samples drawn per generation, and a fraction *g* of fresh real samples mixed in each time, swept from 0 to 0.4 across 100 independent lineages.
|
||||
|
||||
**What you see.** In A, each row is a generation (0, 4, 8, 12, 15) and each column a randomly chosen drawing. With no real data added, the drawings degrade from recognisable digits to one blurred grey shape: the population has collapsed to a single kind. In B, the vertical axis is the diversity H the population settles at, and the horizontal axis is the grounding fraction g. Points are the simulation, the dashed line is the exact mathematical prediction, and the dotted line is the diversity of the real data itself. The red line marks the g at which the population keeps 95% of the real data's diversity for ever: about 0.05, one sample in twenty.
|
||||
|
||||
**What it means.** A small, steady trickle of checked real data is enough to hold the population's diversity indefinitely, much as a few migrants per generation keep an island population healthy. The curve is smooth: there is no sudden switch between "safe" and "collapsing", so any threshold you quote is a choice of how much diversity you want to keep. The image network needed about twice the simulation's fraction (10% rather than 5%) because a trained network is not the ideal copier the simulation assumes. The text also explains why the *rarest* items need more than this: to have a fair chance of seeing an item that occurs once in ten thousand real examples, you need about ten thousand real examples every generation.
|
||||
|
||||
## Figure 3. Merging language models: when it helps, and predicting when it will hurt
|
||||
|
||||

|
||||
|
||||
**What was done.** Every data panel uses small language models trained to be *specialists*: starting from one shared base model (Qwen2.5, of 0.5 or 7 billion parameters), a small add-on set of weights called a *LoRA adapter* is trained on one family of tasks (list puzzles, string puzzles or arithmetic). Think of the base model as a shared textbook and each adapter as one student's margin notes. Merging two specialists means averaging their notes. A verifier marks every answer.
|
||||
|
||||
**Panel A** is a picture of the five kinds of model the next two panels compare, left to right: the base alone; the three specialists (the "best specialist" is whichever of the three scores highest, chosen separately for each seed); the three combined by averaging their adapters, which dilutes each parent's contribution; the three combined after first dropping the changes on which the parents disagree (an "interference-aware" merge); and routing, which keeps the three specialists intact and sends each question to the one that owns it.
|
||||
|
||||
**Panels B and C.** Bars show accuracy averaged over all task families (blue) and on the family each model is worst at (red); brackets mark pairs of bars that differ significantly across seeds (stars) or do not (ns). In B (0.5B model, five seeds) the merged models beat the best single specialist overall, and they are the only models that are competent on every family at once. This is the AI version of what geneticists call the *Fisher–Muller effect*: sex gathers into one offspring useful variants that arose in different individuals. In C the tasks were made deliberately hard so that a larger 7B model was not already at the ceiling. Here plain averaging only matches the best specialist, because averaging dilutes each specialist's own skill, while *routing* (keeping the specialists separate and sending each question to the right one) wins by a wide margin. The rule the paper draws is about *headroom*: keep specialists separate whenever the average falls short of what they could jointly do.
|
||||
|
||||
**Panels D and E.** Can you tell in advance whether a merge will go badly? Thirty-nine pairs of specialists were built along three axes: pairs trained to answer the same questions in *contradictory* ways (red), pairs trained on the same questions in the *same* way (green), and pairs simply trained for longer on different things (blue). Before merging, six quantities were measured on each pair. The one on the horizontal axis of D is functional conflict: how often the two parents confidently disagree when asked the same probe questions. The vertical axis is the *merge penalty*: how far the merged model falls short of what the pair could have scored if each question went to the parent that knew it. The penalty concentrates in the red points. Panel E compares the six predictors: how well each one ranks the pairs by penalty. Disagreement measured by asking questions predicts damage; measures of how far apart the parents' internal numbers are (weight cosine, weight distance) do not.
|
||||
|
||||
**What it means.** Merging complementary specialists can produce a model better than any of its parents, and a cheap behavioural test on the parents forecasts when merging will fail. The green points carry a warning for other researchers: pairs that share training data have similar weights and also merge worse, so a predictor based on weight similarity can look good for the wrong reason.
|
||||
|
||||
## Figure 4. A population of language models over six generations
|
||||
|
||||

|
||||
|
||||
**What was done.** Panel A is a picture of the set-up; panels B and C follow three lineages of language models for six generations. Each generation, every lineage learns one new skill from a public dataset (six in total: reasoning about sentences, science questions, common-sense completion, reading comprehension, yes/no questions, pronoun resolution) by continuing to train its parent's adapter, so what the parent learned passes on. The three lineages take the six skills in rotated orders, like three students working through one syllabus in different sequences, so early on a partner knows things you lack and late on it knows nothing you lack. That quantity, the share of a partner's skills you do not have, is called *complementarity* and is printed under the generation numbers. Between generations a lineage may merge with a partner. The arms differ in the rule: never merge; always merge with a contemporary; merge only if the merged model beats keeping the parent (a *declinable* merge); merge for the first three generations and then stop. Everything was repeated with three seeds.
|
||||
|
||||
**Panel A** shows one generation as a loop (learn a new skill, decide whether to merge, take the test), the syllabus as a grid of three lineages by six generations with the skills colour-coded so the rotation is visible, and the four merging rules with the colours used in panel B. **Panel B.** Accuracy of the best lineage on all six skills, generation by generation. Never merging (blue) and the declinable merge (green) end level, near 0.80. Always merging (red) tracks them for three generations and then collapses to under 0.30, beginning when partners stop being complementary. The orange dashed line is the "merge early, then stop" control, and the grey diamond is a single model taught the whole syllabus alone. **Panel C.** How often the declinable lineages refused a merge (bars) against complementarity (lines), under the rotated syllabus (green) and a second syllabus in which complementarity starts at zero, peaks in the middle and returns to zero (orange). Refusals rise with generation under both, and once generation is accounted for they do not follow complementarity.
|
||||
|
||||
**Panels D to F** are the simulation that motivated the design: sixty simulated agents evolving on a rugged fitness landscape (a landscape where a variant's value depends on which other variants it sits next to), with all four mechanisms running (grounding, recombination, diversity preservation, mutation) and one removed per arm. Removing grounding (red) makes the population agree confidently on a wrong answer: it optimises fitting the crowd instead of reality. Removing recombination (orange) or diversity (purple) strands it lower. Each removal fails in its own way.
|
||||
|
||||
**What it means.** Merging with a partner that knows conflicting things is what destroys a population; giving each lineage the right to refuse a merge, or simply stopping early, avoids the collapse at no cost. The simulation shows why all the mechanisms are needed at once. Two things the paper had hoped to see were not seen: refusals did not track complementarity, and (Figure S15) adding survival of the fittest did not make merging lineages finish ahead.
|
||||
|
||||
## Figure 5. Model speciation: when two lineages can no longer merge
|
||||
|
||||

|
||||
|
||||
**What was done.** In biology, two lineages pushed far enough apart become separate species: their hybrids fail, as a mule is sterile, because two genomes that each work cannot run together in one cell. The paper asks whether the same happens to models. The difficulty is a known nuisance: two networks trained separately can differ in their weights for a trivial reason. The internal units of a network can be renumbered, and scaled up and down in matching pairs, without changing what the network computes, so two networks that do the same job can look very different inside. *Alignment* undoes this relabelling before merging. Panels A and B use small networks whose units can be aligned exactly; panels C and D use language models; panels E and F use the simulation.
|
||||
|
||||
**Panel A.** The height of the bar is the *barrier*: how much worse the average of two networks is than the networks themselves. Two copies trained from different random starts on the same task have a barrier that alignment removes almost entirely (from 0.04 to about 0.001). Two networks trained on *conflicting* labels (the same images, some classes deliberately relabelled) have a barrier alignment leaves untouched (0.50), and the merged model is useless. **Panel B.** Sweeping the fraction of classes in conflict moves the merged model's accuracy from 0.97 to 0.03: a cliff. **Panel C.** Language models: two specialists were given a shared set of ambiguous questions ("sort this list", direction unstated) and taught opposite conventions (one sorts ascending, the other descending). As the share of such conflicting training grows, each parent stays good under its own convention, but the merged model's accuracy under its best convention falls below both parents, in all three seeds (shaded bands). **Panel D.** The control: specialists trained for longer and longer on *different* tasks, with no conflict at all. The merged model gets better, never worse, however long the parents train. **Panels E and F.** The simulation: hybrid fitness tracks the parents while lineages are compatible and then crashes, sooner when incompatibilities are denser, and the chance of a non-viable hybrid rises with divergence.
|
||||
|
||||
**What it means.** What breaks merging is conflicting conventions on shared machinery, not distance or specialisation as such. Left alone, specialisation did not produce "species" in any experiment here; isolation had to be provoked by conflict. That is good news for anyone merging models, and it is why the pre-merge test in Figure 3D works.
|
||||
|
||||
---
|
||||
|
||||
## Supplementary figures
|
||||
|
||||
The supplementary figures are the experiments behind the main text that either reproduce a known result, calibrate a method, or replicate a main result on more seeds or a second system. They keep the working titles the experiments were run under.
|
||||
|
||||
## Figure S1. Collapse and rescue in three different kinds of network
|
||||
|
||||

|
||||
|
||||
**What was done.** The same generational loop as Figure 2 (train a child only on its parent's output, with or without 5% real data) was run with three generators: an exact histogram (a simple frequency count, no neural network), a recurrent neural network (one that reads and writes sequences one token at a time), and a feed-forward network. Each had to learn a synthetic "universe" of 256 kinds of item whose true frequencies were known exactly, for 22 generations, five times over.
|
||||
|
||||
**What you see.** (A) distance from the true distribution (a quantity called forward KL divergence, which grows the more of the truth a model fails to cover) against generation. Solid lines, with no real data, climb in every architecture; dashed lines, with 5% real data, stay low. (B, C) the same at the end of the run, as bars, and the fraction of rare items still alive.
|
||||
|
||||
**What it means.** Collapse and its rescue by grounding are not a quirk of one type of network. The histogram's bars for rare items are tiny because a frequency count drops a rare item outright once it is unseen, whereas the neural networks keep some alive by "smoothing", spreading a little probability onto things they have not seen. That difference is the subject of Figure S2.
|
||||
|
||||
## Figure S2. Why real networks deviate from the ideal, in opposite directions
|
||||
|
||||

|
||||
|
||||
**What was done.** The inheritance model assumes a perfect copier: a child's frequencies are exactly the frequencies it sampled from its parent. Real networks are not perfect copiers. This figure adds two knobs to the simulation's copying step: a *smoothing* knob (a small pull toward treating all items as possible) and a *sharpening* knob (a temperature that concentrates probability on the commonest items), and asks whether either reproduces what the real networks did.
|
||||
|
||||
**What you see.** Blue is the ideal copier, red the copier with one knob turned, green dashed the level the real trained network actually reached. Panels A and B: the image network of Figure 2 (6,000 samples per generation, 30 kinds). The ideal copier barely drifts at that sample size, yet the real network collapsed to a single kind; turning the sharpening knob reproduces the collapse. Panels C and D: the recurrent network (200 samples, 256 kinds). The ideal copier drives diversity to zero, yet the real network keeps a floor of diversity; turning the smoothing knob reproduces the floor.
|
||||
|
||||
**What it means.** A trained network behaves like the textbook model of drift plus a bias that depends on its architecture: some networks add collapse, some resist it. In biological terms the two knobs are different things. The smoothing knob is recurrent mutation: variants appear in the child that it did not inherit, though here they are the network's own inventions rather than real knowledge, which is why counting them overstates its health. The sharpening knob is not mutation at all; it is selection in favour of whatever is already common, which removes variants and never creates them. Knowing the sign of that bias is what lets the paper use the exact simulation as a reference for real systems, and it explains why the image network in Figure 2 needed twice the simulation's dose of real data.
|
||||
|
||||
## Figure S3. Re-baselining a collapsed population locks in the damage
|
||||
|
||||

|
||||
|
||||
**What was done.** A tempting shortcut in practice is to declare a model's current output the new "ground truth" and stop keeping the original data. The simulation tests what that does. Two hundred generations in, and again at 300, the population's current frequencies are frozen as the new reference for grounding and the original truth is thrown away (it is kept only to measure against). Four arms: re-baseline while still healthy (green); re-baseline after collapse (red); the same, but only allowed when diversity is above 0.75 (blue); never re-baseline (grey).
|
||||
|
||||
**What you see.** (A) distance from the original truth against generation. The red arm jumps at each re-baselining and never comes back; the healthy arm shows small steps; the gated and the never arms coincide. (B) diversity, with the gate's threshold as a dashed line.
|
||||
|
||||
**What it means.** This is Muller's ratchet in a population of models: once the rare knowledge is gone from every copy, nothing downstream can rebuild it, and re-baselining after collapse makes the loss permanent. A simple rule (never re-baseline while diversity is low) prevents it. The lesson is that remedies must act while copies of the rare knowledge still exist somewhere.
|
||||
|
||||
## Figure S4. The full grounding sweep in the simulation
|
||||
|
||||

|
||||
|
||||
**What was done.** The complete version of the experiment summarised in Figure 2B: 1,000 knowledge items with a long tail of rare ones, 200 samples per generation, 500 generations, 100 lineages, and the fraction g of real data swept from 0 to 0.4.
|
||||
|
||||
**What you see.** (A) diversity over time, one line per g; with no real data it declines steadily, with any real data it levels off. (B) the levelling-off value against g, with the exact prediction (dashed) and the real data's own diversity (dotted); the red line is the 95%-retention point at g of about 0.048. (C) the fraction of the rare tail that survives, counted by items and by their share of the truth; both rise with g but stay below 0.1 even at g of 0.4. (D) survival split into bands of rarity, from the rarest to the least rare; the rarest bands recover last.
|
||||
|
||||
**What it means.** Overall diversity is cheap to protect, but the rarest items are not. An item persists only when enough real examples of it arrive each generation, roughly one per generation, so protecting it costs about one over its frequency in real samples. The real-data budget is set by the rarest thing you refuse to lose.
|
||||
|
||||
## Figure S5. Real data protects only the topics it covers
|
||||
|
||||

|
||||
|
||||
**What was done.** The 1,000 items were divided into ten topics. The same total budget of real data was spent in two ways: spread evenly over all ten topics, or concentrated on a single topic that the experimenter wants to protect.
|
||||
|
||||
**What you see.** (A) the fraction of that topic's rare items still alive, over 400 generations, when real data is aimed at it (blue) versus spread evenly (red). Aimed grounding holds about half the topic's rare items; spread grounding lets it fall to under a tenth. (B) survival per topic at the end. Aimed grounding protects its topic and leaves the others with nothing; spread grounding gives every topic the same low survival.
|
||||
|
||||
**What it means.** Grounding is not a general tonic. A fixed budget of real data protects the rare knowledge it actually contains, so it should be aimed at what matters, and targeting changes the cost of protecting a rare item substantially.
|
||||
|
||||
## Figure S6. Grounding in a trained recurrent network
|
||||
|
||||

|
||||
|
||||
**What was done.** The grounding sweep of Figure S4 repeated in a trained recurrent network rather than the simulation: 256 kinds of item, 200 samples per generation, 30 generations, nine values of g from 0 to 0.2, eighteen repeats.
|
||||
|
||||
**What you see.** (A) distance from the truth over time; more real data suppresses the climb. (B) the final distance against g, falling steadily from about 2.1 with no real data to 0.75 at g of 0.2. (C) how much of the achievable improvement each g buys; half of it arrives by g of about 0.04, close to the simulation's 0.048, but the full improvement needs g near 0.19. (D) three ways of measuring collapse on one scale. Diversity is flat; the count of surviving rare items goes up and down with no pattern; distance from the truth improves cleanly.
|
||||
|
||||
**What it means.** The direction of the effect is the same as in the simulation, but the sharp threshold softens, and counting surviving items is the wrong ruler for a smoothing network, because it keeps inventing rare items that are not in the truth. Distance from the truth is the measure the paper uses for such networks.
|
||||
|
||||
## Figure S7. Collapse and rescue on real handwritten digits, in numbers
|
||||
|
||||

|
||||
|
||||
**What was done.** The experiment whose pictures are in Figure 2A, quantified. Thirty kinds of digit, a classifier reading the kind of each drawn digit with 98.5% accuracy, 6,000 drawings per generation, fifteen generations, four repeats, with 0% (red) or 10% (green) real digits mixed in.
|
||||
|
||||
**What you see.** (A) distance from the truth rises from about 0.5 to about 18 with no real data and stays near the floor with 10%. (B) the number of distinct kinds still being drawn falls from 30 to 1 without real data; with it, all 30 survive. (C) the share of the rare kinds still alive falls to 0.06 without real data. (D) diversity falls to zero without real data and stays near 0.9 with it.
|
||||
|
||||
**What it means.** Everything the simulation predicted appears on real images with an independent judge, and the dose of real data needed is about twice the simulation's, for the reason given in Figure S2.
|
||||
|
||||
## Figure S8. Averaging parents cancels the benefit of having several; keeping the best of each does not
|
||||
|
||||

|
||||
|
||||
**What was done.** Several parent models each remember a random share of the rare items, and the experimenter controls how similar their shares are (from fully complementary to identical). A child is then built either by averaging the parents' output frequencies, or by keeping, for each item, the largest frequency any parent gives it (a *union*). The child then resamples, as every generation does, and the question is how many rare items survive in it.
|
||||
|
||||
**What you see.** (A) the fraction of the rare tail held by at least one parent, against parent similarity, one curve per number of parents; the lines are an exact formula and the points match it. (B) the fraction that survives in the child. Solid lines (union) rise with more and less similar parents; dashed lines (averaging) stay flat near 0.08 whatever the number of parents. (C) the same at zero similarity, against the number of parents.
|
||||
|
||||
**What it means.** Averaging dilutes each rare item by the number of parents, which exactly cancels the gain of having more parents to draw on: a conservation law. That is the AI form of *blending inheritance*, the pre-Mendelian idea that offspring are an average of their parents, which Fleeming Jenkin showed would swamp any rare favourable variant. Only an operator that keeps each parent's strongest contribution realises the benefit of several parents, and it needs a judge to say which parent that is.
|
||||
|
||||
## Figure S9. Many complementary parents can produce an offspring better than any of them
|
||||
|
||||

|
||||
|
||||
**What was done.** A capability is modelled as a string of twelve yes/no positions (a *genotype* of twelve *loci*), and fitness is the number of positions that are right. Each parent is a specialist: confident and correct on the positions it has mastered, unsure elsewhere, and no parent has mastered them all. Offspring are built from 2 to 12 parents either by averaging or by taking, position by position, the answer of the parent most confident about it.
|
||||
|
||||
**What you see.** (A) fitness of the offspring against the number of parents, when parents master different positions. Position-wise recombination (red) reaches the perfect score of 12 with eight parents; the best single parent (grey) sits near 8.7; the average of parents (blue) reaches about 11.6 at twelve parents. (B) recombination against the number of parents when parents are complementary, half-overlapping, or identical clones; clones gain nothing.
|
||||
|
||||
**What it means.** This is the Fisher–Muller effect in its cleanest form: recombination assembles, in one offspring, good variants that arose in different individuals. Unlike biology, a model population is not limited to two parents, so the effect is unbounded. Figure 3B is this result in real language models.
|
||||
|
||||
## Figure S10. When skills are entangled, blind recombination harms the offspring
|
||||
|
||||

|
||||
|
||||
**What was done.** The same twelve-position genotypes, now on a *rugged* landscape (Kauffman's NK model), in which the value of a position depends on what its neighbours hold, with a knob K from 0 (positions independent) to 8 (highly entangled). Parents are local optima found by hill-climbing, the model of a trained specialist. Offspring are made by recombining them at rates from 0 (copy a parent) to 0.5 (free shuffling).
|
||||
|
||||
**What you see.** (A) mean offspring fitness minus the best parent, against recombination rate, one curve per K. On a smooth landscape the difference is zero; as K grows the curves fall, more steeply at higher rates, down to about minus 0.23. (B) the fitness of the *best* offspring in a brood; on rugged landscapes it peaks at an intermediate recombination rate and falls back toward the parents under free shuffling.
|
||||
|
||||
**What it means.** This is *outbreeding depression*, well known in conservation biology: crossing two locally adapted populations can break up combinations of genes that only work together. The optimal amount of recombination shrinks as skills become more entangled. The design rule is to merge freely when skills are independent and sparingly, with selection, when they are not.
|
||||
|
||||
## Figure S11. Directed sex: choosing and screening offspring rescues recombination
|
||||
|
||||

|
||||
|
||||
**What was done.** Biology is stuck with two random parents and no preview of the offspring. A model population is not: it can pick complementary parents, breed many candidate offspring, test them, keep the fittest and repeat. On the rugged landscapes of Figure S10 three strategies are compared: the best single parent (grey), random recombination (blue) and this *directed* recombination (red, five rounds).
|
||||
|
||||
**What you see.** (A) offspring fitness against ruggedness K, with the global optimum dotted. Random recombination falls from 0.66 to 0.51 as K rises; directed recombination tracks the best parent and the optimum at every K. (B) the same as a difference from the best parent; directed stays at or above zero, random falls to about minus 0.2.
|
||||
|
||||
**What it means.** The danger of Figure S10 is real but avoidable, by doing what no living population can. In language models this is "breed many merges, keep the best" (Figure 3 and Table S2), and it beat the single default merge in every seed on hard tasks.
|
||||
|
||||
## Figure S12. Selecting for the best destroys diversity; rewarding novelty preserves it
|
||||
|
||||

|
||||
|
||||
**What was done.** Each generation, the simulation now *selects* which items to keep, all arms receiving the same grounding. Three rules: no selection; *greedy*, keeping the items of highest true probability; and *quality-diversity*, which rewards an item for being rare as well as good, with a knob (alpha) for how much rarity counts.
|
||||
|
||||
**What you see.** (A) diversity over 400 generations. Greedy (red) collapses within a few generations to almost zero; quality-diversity at two settings and no selection hold a plateau above 0.85. (B) the settled diversity against alpha, rising from about 0.48 to about 0.88 as rarity is rewarded more. (C) the number of distinct items alive at the end: about 9 under greedy, 14 to 28 under quality-diversity, about 32 with no selection.
|
||||
|
||||
**What it means.** Chasing the best outputs is a fast route to collapse, because it is a directional pressure on top of drift. Diversity has to be an objective in its own right, since selection can only preserve variety that still exists. This is the "diversity preservation" ingredient of the composed society in Figure 4D to F.
|
||||
|
||||
## Figure S13. Who should mate with whom: mating breadth on rugged landscapes
|
||||
|
||||

|
||||
|
||||
**What was done.** Forty-eight simulated agents sit on a ring. When an offspring is made, its second parent is drawn from a neighbourhood whose width is the knob: narrow (mating only with neighbours, like an isolated village) to the whole ring (anyone can mate with anyone). An offspring replaces the agent at its position only if it is fitter. Ruggedness K is swept from 0 to 10.
|
||||
|
||||
**What you see.** (A) the best fitness reached, relative to the optimum, against mating breadth, per K. On a smooth landscape every breadth reaches the optimum; as K rises the best breadth narrows (0.6 at K of 3, 0.35 at K of 6 and 10) and mating with everyone falls below it. (B) the population's mean fitness rises with breadth at every K. (C) standing diversity (how different the agents are from one another) falls with breadth, fastest on rugged landscapes.
|
||||
|
||||
**What it means.** Wide mixing spreads a good variant fast but homogenises the population, so on entangled problems it loses the ability to explore several solutions in parallel. This is Sewall Wright's classic argument for structured populations, reproduced here as a design rule: as skills become more entangled, keep merging local.
|
||||
|
||||
## Figure S14. Do lineages stop merging because of conflict, or just because time passes?
|
||||
|
||||

|
||||
|
||||
**What was done.** In Figure 4 three things rose together with generation: how long each adapter had been trained, how many skills it held, and the arrival of the two skills whose answer formats clash (one wants "yes/no", the other "1/2"). To separate the third from the other two, two new syllabuses were run in which the clashing pair arrives either in the first two generations (conflict-early) or the last two (conflict-late), everything else rising exactly as before. Three seeds each, plus the two syllabuses from Figure 4.
|
||||
|
||||
**What you see.** (A) how often lineages refused a merge, by generation, for all four syllabuses; the filled marker on each curve is the first generation at which both clashing skills are present everywhere. Refusals rise with generation on the same schedule in all four. A statistical test that holds generation fixed finds no relationship between refusals and the presence of conflict, and a clear one with generation. (B) the accuracy of populations forced to merge every generation. The conflict-early population dips when the clash arrives, recovers, and then collapses from generation 5 like the others; the conflict-late population collapses from generation 4 before its clash has even arrived.
|
||||
|
||||
**What it means.** Moving the conflict by four generations did not move the collapse or the refusals. Conflicting conventions set how much damage each merge does, but something that grows with generation, adapter age or the number of skills carried, sets when the population can no longer repair the damage. Those two remain to be separated.
|
||||
|
||||
## Figure S15. Survival of the fittest did not give merging lineages the edge
|
||||
|
||||

|
||||
|
||||
**What was done.** The population of Figure 4 never removed a lineage. Here, after each generation's test, the worst-scoring lineage is deleted and replaced with a copy of the best (it keeps its own place in the syllabus). This is *differential reproduction*, the ingredient of natural selection the earlier population lacked. The prediction was that a lineage which assembles the skills first, by merging, would now leave more descendants and finish ahead. Never-merge and declinable-merge populations were run with and without this selection, three seeds each.
|
||||
|
||||
**What you see.** (A) best-lineage accuracy over the six generations for the four populations; the two selected ones are dashed. All four end within 0.01 of each other, near 0.80. (B) the average over the three lineages; selection lifts the average early (it copies the best genome into the worst slot), but the final averages converge too. (C) exactly one replacement happened every generation in every selected population, so selection was acting throughout.
|
||||
|
||||
**What it means.** Merging still bought speed, an early lead of about 0.08, and still bought no final advantage, with or without selection. Under a syllabus that eventually teaches every skill to every lineage, the ceiling is set by how much one adapter can hold, and both sex and selection only reach it sooner. The paper records this as a prediction it made and did not confirm.
|
||||
|
||||
## Figure S16. The same results on a second, unrelated family of language models
|
||||
|
||||

|
||||
|
||||
**What was done.** Every language-model experiment in the paper used one family of base models (Qwen). To check that the two most-cited results are not peculiar to it, the experiments of Figure 3B and 3C were re-run, unchanged, on SmolLM2, a 1.7-billion-parameter model from a different laboratory with a different architecture and training data. Blue bars are the original Qwen runs, orange and red the SmolLM2 runs; lighter bars are overall accuracy, darker bars the worst task family.
|
||||
|
||||
**What you see.** (A) on the easy tasks the merged models beat the best single specialist on SmolLM2 in every one of five seeds, by about the same margins as on Qwen. (B) on the hard tasks, keeping specialists separate and routing questions to the right one beats averaging in every seed on both families, by a larger margin on SmolLM2, where the average even falls below the best single specialist.
|
||||
|
||||
**What it means.** The Fisher–Muller effect and the headroom rule hold on a second lineage of models. Results that depend on one model family are common in machine learning; these two do not.
|
||||
|
||||
---
|
||||
|
||||
## Glossary
|
||||
|
||||
- **Adapter (LoRA).** A small set of extra trainable numbers added to a frozen base model, so that a specialist can be trained cheaply and two specialists can be merged by averaging their adapters.
|
||||
- **Allele.** One of the alternative versions of a gene. In this paper, one of the alternative items of knowledge a model may hold.
|
||||
- **Complementarity.** The share of a partner's skills that a lineage does not itself have. High early in the syllabus of Figure 4, zero at its end.
|
||||
- **Epistasis.** When the effect of one gene depends on which other genes are present. For models: when a skill only works in combination with others (a rugged landscape).
|
||||
- **Fisher–Muller effect.** The advantage of sex in bringing together, in one individual, beneficial variants that arose separately.
|
||||
- **Fitness landscape.** A map from every possible genotype to its fitness. Smooth landscapes have one peak; rugged (NK) landscapes have many, so a population can get stuck on a poor one.
|
||||
- **Forward KL divergence.** A measure of how badly a model covers the true distribution; it charges the model for every region where the truth has probability and the model has almost none.
|
||||
- **Immigration–drift equilibrium.** The steady level of diversity a population settles at when new arrivals from outside balance the losses from drift. Its exact formula is the dashed line in Figure 2B.
|
||||
- **Muller's ratchet.** In populations that never recombine, damage accumulates irreversibly, because once the best genome is lost it cannot be rebuilt.
|
||||
- **Outbreeding depression.** Reduced fitness of offspring from parents that were each adapted to different conditions, because recombination breaks up combinations that only worked together.
|
||||
- **Reproductive isolation.** The state in which two lineages can no longer produce viable hybrids; the defining boundary between species.
|
||||
- **Routing.** Instead of merging specialists, keeping them separate and sending each question to the one that owns it.
|
||||
- **Union (or max-merge).** Building a child by keeping, for each item, the strongest contribution any parent makes, rather than averaging the parents.
|
||||
- **Wright–Fisher model.** The simplest mathematical model of a population: each generation is a random sample of fixed size drawn from the previous one. Its only force is chance, which is why rare variants disappear.
|
||||
BIN
paper/manuscript/figure_legends_for_students.pdf
Normal file
BIN
paper/manuscript/figure_legends_for_students.pdf
Normal file
Binary file not shown.
286
paper/manuscript/figure_legends_for_students.tex
Normal file
286
paper/manuscript/figure_legends_for_students.tex
Normal file
|
|
@ -0,0 +1,286 @@
|
|||
\ifdefined\XeTeXversion\else\ifdefined\pdfoutput\pdfoutput=1\fi\fi
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage[a4paper, margin=1.0in]{geometry}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{amsmath, amssymb}
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
\usepackage{microtype}
|
||||
\setlength{\parskip}{0.5em}
|
||||
\setlength{\parindent}{0pt}
|
||||
\begin{document}
|
||||
\begin{center}{\LARGE\bfseries The evolution of sex for artificial intelligence: the figures explained}\end{center}
|
||||
|
||||
\emph{Appendix to the paper. Written for a reader with A-level biology or maths and no background in machine learning.}
|
||||
|
||||
\section*{Why this appendix exists}
|
||||
|
||||
The paper sits between two fields. Its questions and its theory come from population genetics; its experiments are machine learning, run on simulations, small neural networks and language models. A biologist can follow the argument in the main text while still finding the experimental details opaque: what a model is trained on, what an adapter is, what a verifier measures, why a result rests on seeds rather than replicates. This appendix answers those questions figure by figure. It repeats every figure of the paper, main and supplementary, with a legend that explains the experiment behind it in plain terms, so that a reader from biology can judge the evidence and not only the analogy.
|
||||
|
||||
\section*{How to read this document}
|
||||
|
||||
The paper asks one question: when artificial-intelligence models are built from other models, what happens to what they know over the generations? Modern AI systems are rarely trained from nothing. A new model is usually a copy of an older one that has been trained a little further (a \emph{child} of a \emph{parent}), it is often trained on text that earlier models wrote, and two trained models are often blended into one by averaging the numbers inside them (\emph{merging}). Those three habits give AI models parents, siblings and descendants, and biology has a hundred years of theory about populations like that: \emph{population genetics}, the mathematics of how genes spread, vanish and recombine over generations.
|
||||
|
||||
The paper takes that theory literally. It treats a model's knowledge as a set of \emph{items} (a fact, a skill, a habit of answering), each with a frequency, exactly as a population geneticist treats \emph{alleles} (the alternative versions of a gene) and their frequencies. It then tests, at three levels of realism, whether the biological rules hold. The three levels are: a pure simulation with known answers (called the \emph{inheritance model}), small neural networks trained on data the authors fully control, and real language models (the family of systems behind chatbots). Every figure below belongs to one or more of those levels.
|
||||
|
||||
A few terms come back in every figure:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Generation.} One round of ``train a child from its parent''. A lineage that goes through ten rounds has ten generations.
|
||||
\item \textbf{Grounding.} Mixing some genuine, checked real data into what a child is trained on, instead of training it only on what its parent produced. In the biological reading this is \emph{immigration}: new individuals arriving from outside.
|
||||
\item \textbf{Model collapse.} The gradual loss of rare knowledge when each generation is trained only on the previous one. In biology the same process is called \emph{genetic drift}: in a small population, rare alleles disappear by chance, not because anything selects against them, in the way that rare surnames die out in a small village.
|
||||
\item \textbf{Diversity, or heterozygosity, H.} A number between 0 and 1 that measures how spread out the knowledge is. If you pick two items at random, H is the chance they differ. H near 1 means many items share the frequency; H equal to 0 means one item has taken over.
|
||||
\item \textbf{Merging.} Making a new model by averaging the internal numbers (the \emph{weights}) of two or more trained parents. The paper's central claim is that this is the AI counterpart of \emph{sexual reproduction}, with the same benefits and the same dangers.
|
||||
\item \textbf{Verifier.} A program that can mark an answer right or wrong automatically (run the code, check the arithmetic, compare with the known answer). It is the paper's stand-in for ``reality that can say no''.
|
||||
\item \textbf{Accuracy.} The fraction of test questions a model gets right, from 0 to 1.
|
||||
\item \textbf{Seed.} Training a neural network involves random choices. Repeating an experiment with a different random seed and getting the same answer shows the result is not a fluke. Error bars in the figures are 95\% confidence intervals over seeds or replicates.
|
||||
\end{itemize}
|
||||
|
||||
Each legend below says what was done, what you are looking at, and what it means.
|
||||
|
||||
\medskip\hrule\medskip
|
||||
|
||||
\section*{Figure 1. A map of the whole study}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/fig1a.pdf}\end{center}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/fig1b.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Nothing is measured in this figure. It is a map. Panel A is a grid: each row is one biological mechanism the paper borrows, each column is one of the three levels of realism at which it was tested. The rows are grounding (immigration), recombination (sex), epistasis (skills that only work in combination), the complete ``society'' with all mechanisms running at once, and speciation (when two lineages can no longer produce a working hybrid). The columns are the inheritance model (a simulation with exact answers, in green), trained small networks (blue), and language models (blue). Each filled cell names what was run there and, in the corner, which figure reports it. Cells marked ``no counterpart'' or ``established in prior work'' were deliberately not run: the paper tests each claim at the cheapest level that could prove it wrong, and moves to a more expensive level only when that adds a new test rather than a repeat.
|
||||
|
||||
\textbf{Panel B} shows the change of viewpoint the whole paper rests on. On the left is how people usually picture a group of AI models: contemporaries exchanging messages, a \emph{society in space}. On the right the same group is drawn along its time axis: a model inherits from a parent, merges with a partner, receives fresh real data, and passes the result on. That is a \emph{society in time}, and it is exactly the kind of object population genetics was built to describe. The coloured dots on each robot are its skills. Follow the gold dot: it is rare, it is lost when a child inherits from a single parent, it is recovered when two complementary parents merge, and it is re-supplied by grounding (the globe).
|
||||
|
||||
\textbf{What it means.} If you remember one thing from this figure, remember the right-hand side of panel B. The rest of the paper is a list of what happens to the gold dot.
|
||||
|
||||
\section*{Figure 2. How much real data stops collapse}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/fig2.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Two experiments on the same question. In panel A a small image-generating network (a \emph{variational autoencoder}, a type of network that learns to draw new examples of what it was shown) was trained on handwritten digits, then a fresh copy was trained only on the digits the first one drew, then another on that one's output, for fifteen generations. The digits were sorted into thirty kinds (each digit in three stroke thicknesses), some kinds common and some rare, and an independent classifier checked which kind each drawn digit belonged to. In panel B the same question was asked of the inheritance model, the pure simulation: a population of 1,000 knowledge items, 200 samples drawn per generation, and a fraction \emph{g} of fresh real samples mixed in each time, swept from 0 to 0.4 across 100 independent lineages.
|
||||
|
||||
\textbf{What you see.} In A, each row is a generation (0, 4, 8, 12, 15) and each column a randomly chosen drawing. With no real data added, the drawings degrade from recognisable digits to one blurred grey shape: the population has collapsed to a single kind. In B, the vertical axis is the diversity H the population settles at, and the horizontal axis is the grounding fraction g. Points are the simulation, the dashed line is the exact mathematical prediction, and the dotted line is the diversity of the real data itself. The red line marks the g at which the population keeps 95\% of the real data's diversity for ever: about 0.05, one sample in twenty.
|
||||
|
||||
\textbf{What it means.} A small, steady trickle of checked real data is enough to hold the population's diversity indefinitely, much as a few migrants per generation keep an island population healthy. The curve is smooth: there is no sudden switch between ``safe'' and ``collapsing'', so any threshold you quote is a choice of how much diversity you want to keep. The image network needed about twice the simulation's fraction (10\% rather than 5\%) because a trained network is not the ideal copier the simulation assumes. The text also explains why the \emph{rarest} items need more than this: to have a fair chance of seeing an item that occurs once in ten thousand real examples, you need about ten thousand real examples every generation.
|
||||
|
||||
\section*{Figure 3. Merging language models: when it helps, and predicting when it will hurt}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/fig3.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Every data panel uses small language models trained to be \emph{specialists}: starting from one shared base model (Qwen2.5, of 0.5 or 7 billion parameters), a small add-on set of weights called a \emph{LoRA adapter} is trained on one family of tasks (list puzzles, string puzzles or arithmetic). Think of the base model as a shared textbook and each adapter as one student's margin notes. Merging two specialists means averaging their notes. A verifier marks every answer.
|
||||
|
||||
\textbf{Panel A} is a picture of the five kinds of model the next two panels compare, left to right: the base alone; the three specialists (the ``best specialist'' is whichever of the three scores highest, chosen separately for each seed); the three combined by averaging their adapters, which dilutes each parent's contribution; the three combined after first dropping the changes on which the parents disagree (an ``interference-aware'' merge); and routing, which keeps the three specialists intact and sends each question to the one that owns it.
|
||||
|
||||
\textbf{Panels B and C.} Bars show accuracy averaged over all task families (blue) and on the family each model is worst at (red); brackets mark pairs of bars that differ significantly across seeds (stars) or do not (ns). In B (0.5B model, five seeds) the merged models beat the best single specialist overall, and they are the only models that are competent on every family at once. This is the AI version of what geneticists call the \emph{Fisher--Muller effect}: sex gathers into one offspring useful variants that arose in different individuals. In C the tasks were made deliberately hard so that a larger 7B model was not already at the ceiling. Here plain averaging only matches the best specialist, because averaging dilutes each specialist's own skill, while \emph{routing} (keeping the specialists separate and sending each question to the right one) wins by a wide margin. The rule the paper draws is about \emph{headroom}: keep specialists separate whenever the average falls short of what they could jointly do.
|
||||
|
||||
\textbf{Panels D and E.} Can you tell in advance whether a merge will go badly? Thirty-nine pairs of specialists were built along three axes: pairs trained to answer the same questions in \emph{contradictory} ways (red), pairs trained on the same questions in the \emph{same} way (green), and pairs simply trained for longer on different things (blue). Before merging, six quantities were measured on each pair. The one on the horizontal axis of D is functional conflict: how often the two parents confidently disagree when asked the same probe questions. The vertical axis is the \emph{merge penalty}: how far the merged model falls short of what the pair could have scored if each question went to the parent that knew it. The penalty concentrates in the red points. Panel E compares the six predictors: how well each one ranks the pairs by penalty. Disagreement measured by asking questions predicts damage; measures of how far apart the parents' internal numbers are (weight cosine, weight distance) do not.
|
||||
|
||||
\textbf{What it means.} Merging complementary specialists can produce a model better than any of its parents, and a cheap behavioural test on the parents forecasts when merging will fail. The green points carry a warning for other researchers: pairs that share training data have similar weights and also merge worse, so a predictor based on weight similarity can look good for the wrong reason.
|
||||
|
||||
\section*{Figure 4. A population of language models over six generations}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/fig4.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Panel A is a picture of the set-up; panels B and C follow three lineages of language models for six generations. Each generation, every lineage learns one new skill from a public dataset (six in total: reasoning about sentences, science questions, common-sense completion, reading comprehension, yes/no questions, pronoun resolution) by continuing to train its parent's adapter, so what the parent learned passes on. The three lineages take the six skills in rotated orders, like three students working through one syllabus in different sequences, so early on a partner knows things you lack and late on it knows nothing you lack. That quantity, the share of a partner's skills you do not have, is called \emph{complementarity} and is printed under the generation numbers. Between generations a lineage may merge with a partner. The arms differ in the rule: never merge; always merge with a contemporary; merge only if the merged model beats keeping the parent (a \emph{declinable} merge); merge for the first three generations and then stop. Everything was repeated with three seeds.
|
||||
|
||||
\textbf{Panel A} shows one generation as a loop (learn a new skill, decide whether to merge, take the test), the syllabus as a grid of three lineages by six generations with the skills colour-coded so the rotation is visible, and the four merging rules with the colours used in panel B. \textbf{Panel B.} Accuracy of the best lineage on all six skills, generation by generation. Never merging (blue) and the declinable merge (green) end level, near 0.80. Always merging (red) tracks them for three generations and then collapses to under 0.30, beginning when partners stop being complementary. The orange dashed line is the ``merge early, then stop'' control, and the grey diamond is a single model taught the whole syllabus alone. \textbf{Panel C.} How often the declinable lineages refused a merge (bars) against complementarity (lines), under the rotated syllabus (green) and a second syllabus in which complementarity starts at zero, peaks in the middle and returns to zero (orange). Refusals rise with generation under both, and once generation is accounted for they do not follow complementarity.
|
||||
|
||||
\textbf{Panels D to F} are the simulation that motivated the design: sixty simulated agents evolving on a rugged fitness landscape (a landscape where a variant's value depends on which other variants it sits next to), with all four mechanisms running (grounding, recombination, diversity preservation, mutation) and one removed per arm. Removing grounding (red) makes the population agree confidently on a wrong answer: it optimises fitting the crowd instead of reality. Removing recombination (orange) or diversity (purple) strands it lower. Each removal fails in its own way.
|
||||
|
||||
\textbf{What it means.} Merging with a partner that knows conflicting things is what destroys a population; giving each lineage the right to refuse a merge, or simply stopping early, avoids the collapse at no cost. The simulation shows why all the mechanisms are needed at once. Two things the paper had hoped to see were not seen: refusals did not track complementarity, and (Figure S15) adding survival of the fittest did not make merging lineages finish ahead.
|
||||
|
||||
\section*{Figure 5. Model speciation: when two lineages can no longer merge}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/fig5.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} In biology, two lineages pushed far enough apart become separate species: their hybrids fail, as a mule is sterile, because two genomes that each work cannot run together in one cell. The paper asks whether the same happens to models. The difficulty is a known nuisance: two networks trained separately can differ in their weights for a trivial reason. The internal units of a network can be renumbered, and scaled up and down in matching pairs, without changing what the network computes, so two networks that do the same job can look very different inside. \emph{Alignment} undoes this relabelling before merging. Panels A and B use small networks whose units can be aligned exactly; panels C and D use language models; panels E and F use the simulation.
|
||||
|
||||
\textbf{Panel A.} The height of the bar is the \emph{barrier}: how much worse the average of two networks is than the networks themselves. Two copies trained from different random starts on the same task have a barrier that alignment removes almost entirely (from 0.04 to about 0.001). Two networks trained on \emph{conflicting} labels (the same images, some classes deliberately relabelled) have a barrier alignment leaves untouched (0.50), and the merged model is useless. \textbf{Panel B.} Sweeping the fraction of classes in conflict moves the merged model's accuracy from 0.97 to 0.03: a cliff. \textbf{Panel C.} Language models: two specialists were given a shared set of ambiguous questions (``sort this list'', direction unstated) and taught opposite conventions (one sorts ascending, the other descending). As the share of such conflicting training grows, each parent stays good under its own convention, but the merged model's accuracy under its best convention falls below both parents, in all three seeds (shaded bands). \textbf{Panel D.} The control: specialists trained for longer and longer on \emph{different} tasks, with no conflict at all. The merged model gets better, never worse, however long the parents train. \textbf{Panels E and F.} The simulation: hybrid fitness tracks the parents while lineages are compatible and then crashes, sooner when incompatibilities are denser, and the chance of a non-viable hybrid rises with divergence.
|
||||
|
||||
\textbf{What it means.} What breaks merging is conflicting conventions on shared machinery, not distance or specialisation as such. Left alone, specialisation did not produce ``species'' in any experiment here; isolation had to be provoked by conflict. That is good news for anyone merging models, and it is why the pre-merge test in Figure 3D works.
|
||||
|
||||
\medskip\hrule\medskip
|
||||
|
||||
\section*{Supplementary figures}
|
||||
|
||||
The supplementary figures are the experiments behind the main text that either reproduce a known result, calibrate a method, or replicate a main result on more seeds or a second system. They keep the working titles the experiments were run under.
|
||||
|
||||
\section*{Figure S1. Collapse and rescue in three different kinds of network}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s1_figS1_architectures.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The same generational loop as Figure 2 (train a child only on its parent's output, with or without 5\% real data) was run with three generators: an exact histogram (a simple frequency count, no neural network), a recurrent neural network (one that reads and writes sequences one token at a time), and a feed-forward network. Each had to learn a synthetic ``universe'' of 256 kinds of item whose true frequencies were known exactly, for 22 generations, five times over.
|
||||
|
||||
\textbf{What you see.} (A) distance from the true distribution (a quantity called forward KL divergence, which grows the more of the truth a model fails to cover) against generation. Solid lines, with no real data, climb in every architecture; dashed lines, with 5\% real data, stay low. (B, C) the same at the end of the run, as bars, and the fraction of rare items still alive.
|
||||
|
||||
\textbf{What it means.} Collapse and its rescue by grounding are not a quirk of one type of network. The histogram's bars for rare items are tiny because a frequency count drops a rare item outright once it is unseen, whereas the neural networks keep some alive by ``smoothing'', spreading a little probability onto things they have not seen. That difference is the subject of Figure S2.
|
||||
|
||||
\section*{Figure S2. Why real networks deviate from the ideal, in opposite directions}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s2_kernel.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The inheritance model assumes a perfect copier: a child's frequencies are exactly the frequencies it sampled from its parent. Real networks are not perfect copiers. This figure adds two knobs to the simulation's copying step: a \emph{smoothing} knob (a small pull toward treating all items as possible) and a \emph{sharpening} knob (a temperature that concentrates probability on the commonest items), and asks whether either reproduces what the real networks did.
|
||||
|
||||
\textbf{What you see.} Blue is the ideal copier, red the copier with one knob turned, green dashed the level the real trained network actually reached. Panels A and B: the image network of Figure 2 (6,000 samples per generation, 30 kinds). The ideal copier barely drifts at that sample size, yet the real network collapsed to a single kind; turning the sharpening knob reproduces the collapse. Panels C and D: the recurrent network (200 samples, 256 kinds). The ideal copier drives diversity to zero, yet the real network keeps a floor of diversity; turning the smoothing knob reproduces the floor.
|
||||
|
||||
\textbf{What it means.} A trained network behaves like the textbook model of drift plus a bias that depends on its architecture: some networks add collapse, some resist it. In biological terms the two knobs are different things. The smoothing knob is recurrent mutation: variants appear in the child that it did not inherit, though here they are the network's own inventions rather than real knowledge, which is why counting them overstates its health. The sharpening knob is not mutation at all; it is selection in favour of whatever is already common, which removes variants and never creates them. Knowing the sign of that bias is what lets the paper use the exact simulation as a reference for real systems, and it explains why the image network in Figure 2 needed twice the simulation's dose of real data.
|
||||
|
||||
\section*{Figure S3. Re-baselining a collapsed population locks in the damage}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s3_figS3_rebaselining.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} A tempting shortcut in practice is to declare a model's current output the new ``ground truth'' and stop keeping the original data. The simulation tests what that does. Two hundred generations in, and again at 300, the population's current frequencies are frozen as the new reference for grounding and the original truth is thrown away (it is kept only to measure against). Four arms: re-baseline while still healthy (green); re-baseline after collapse (red); the same, but only allowed when diversity is above 0.75 (blue); never re-baseline (grey).
|
||||
|
||||
\textbf{What you see.} (A) distance from the original truth against generation. The red arm jumps at each re-baselining and never comes back; the healthy arm shows small steps; the gated and the never arms coincide. (B) diversity, with the gate's threshold as a dashed line.
|
||||
|
||||
\textbf{What it means.} This is Muller's ratchet in a population of models: once the rare knowledge is gone from every copy, nothing downstream can rebuild it, and re-baselining after collapse makes the loss permanent. A simple rule (never re-baseline while diversity is low) prevents it. The lesson is that remedies must act while copies of the rare knowledge still exist somewhere.
|
||||
|
||||
\section*{Figure S4. The full grounding sweep in the simulation}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s4_fig2_grounding_sweep.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The complete version of the experiment summarised in Figure 2B: 1,000 knowledge items with a long tail of rare ones, 200 samples per generation, 500 generations, 100 lineages, and the fraction g of real data swept from 0 to 0.4.
|
||||
|
||||
\textbf{What you see.} (A) diversity over time, one line per g; with no real data it declines steadily, with any real data it levels off. (B) the levelling-off value against g, with the exact prediction (dashed) and the real data's own diversity (dotted); the red line is the 95\%-retention point at g of about 0.048. (C) the fraction of the rare tail that survives, counted by items and by their share of the truth; both rise with g but stay below 0.1 even at g of 0.4. (D) survival split into bands of rarity, from the rarest to the least rare; the rarest bands recover last.
|
||||
|
||||
\textbf{What it means.} Overall diversity is cheap to protect, but the rarest items are not. An item persists only when enough real examples of it arrive each generation, roughly one per generation, so protecting it costs about one over its frequency in real samples. The real-data budget is set by the rarest thing you refuse to lose.
|
||||
|
||||
\section*{Figure S5. Real data protects only the topics it covers}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s5_figS5_aimed_grounding.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The 1,000 items were divided into ten topics. The same total budget of real data was spent in two ways: spread evenly over all ten topics, or concentrated on a single topic that the experimenter wants to protect.
|
||||
|
||||
\textbf{What you see.} (A) the fraction of that topic's rare items still alive, over 400 generations, when real data is aimed at it (blue) versus spread evenly (red). Aimed grounding holds about half the topic's rare items; spread grounding lets it fall to under a tenth. (B) survival per topic at the end. Aimed grounding protects its topic and leaves the others with nothing; spread grounding gives every topic the same low survival.
|
||||
|
||||
\textbf{What it means.} Grounding is not a general tonic. A fixed budget of real data protects the rare knowledge it actually contains, so it should be aimed at what matters, and targeting changes the cost of protecting a rare item substantially.
|
||||
|
||||
\section*{Figure S6. Grounding in a trained recurrent network}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s6_figS6_grounding_rnn.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The grounding sweep of Figure S4 repeated in a trained recurrent network rather than the simulation: 256 kinds of item, 200 samples per generation, 30 generations, nine values of g from 0 to 0.2, eighteen repeats.
|
||||
|
||||
\textbf{What you see.} (A) distance from the truth over time; more real data suppresses the climb. (B) the final distance against g, falling steadily from about 2.1 with no real data to 0.75 at g of 0.2. (C) how much of the achievable improvement each g buys; half of it arrives by g of about 0.04, close to the simulation's 0.048, but the full improvement needs g near 0.19. (D) three ways of measuring collapse on one scale. Diversity is flat; the count of surviving rare items goes up and down with no pattern; distance from the truth improves cleanly.
|
||||
|
||||
\textbf{What it means.} The direction of the effect is the same as in the simulation, but the sharp threshold softens, and counting surviving items is the wrong ruler for a smoothing network, because it keeps inventing rare items that are not in the truth. Distance from the truth is the measure the paper uses for such networks.
|
||||
|
||||
\section*{Figure S7. Collapse and rescue on real handwritten digits, in numbers}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s7_fig2_mnist_collapse.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The experiment whose pictures are in Figure 2A, quantified. Thirty kinds of digit, a classifier reading the kind of each drawn digit with 98.5\% accuracy, 6,000 drawings per generation, fifteen generations, four repeats, with 0\% (red) or 10\% (green) real digits mixed in.
|
||||
|
||||
\textbf{What you see.} (A) distance from the truth rises from about 0.5 to about 18 with no real data and stays near the floor with 10\%. (B) the number of distinct kinds still being drawn falls from 30 to 1 without real data; with it, all 30 survive. (C) the share of the rare kinds still alive falls to 0.06 without real data. (D) diversity falls to zero without real data and stays near 0.9 with it.
|
||||
|
||||
\textbf{What it means.} Everything the simulation predicted appears on real images with an independent judge, and the dose of real data needed is about twice the simulation's, for the reason given in Figure S2.
|
||||
|
||||
\section*{Figure S8. Averaging parents cancels the benefit of having several; keeping the best of each does not}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s8_figS8_multiparent_union.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Several parent models each remember a random share of the rare items, and the experimenter controls how similar their shares are (from fully complementary to identical). A child is then built either by averaging the parents' output frequencies, or by keeping, for each item, the largest frequency any parent gives it (a \emph{union}). The child then resamples, as every generation does, and the question is how many rare items survive in it.
|
||||
|
||||
\textbf{What you see.} (A) the fraction of the rare tail held by at least one parent, against parent similarity, one curve per number of parents; the lines are an exact formula and the points match it. (B) the fraction that survives in the child. Solid lines (union) rise with more and less similar parents; dashed lines (averaging) stay flat near 0.08 whatever the number of parents. (C) the same at zero similarity, against the number of parents.
|
||||
|
||||
\textbf{What it means.} Averaging dilutes each rare item by the number of parents, which exactly cancels the gain of having more parents to draw on: a conservation law. That is the AI form of \emph{blending inheritance}, the pre-Mendelian idea that offspring are an average of their parents, which Fleeming Jenkin showed would swamp any rare favourable variant. Only an operator that keeps each parent's strongest contribution realises the benefit of several parents, and it needs a judge to say which parent that is.
|
||||
|
||||
\section*{Figure S9. Many complementary parents can produce an offspring better than any of them}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s9_figS9_specialist_superparent.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} A capability is modelled as a string of twelve yes/no positions (a \emph{genotype} of twelve \emph{loci}), and fitness is the number of positions that are right. Each parent is a specialist: confident and correct on the positions it has mastered, unsure elsewhere, and no parent has mastered them all. Offspring are built from 2 to 12 parents either by averaging or by taking, position by position, the answer of the parent most confident about it.
|
||||
|
||||
\textbf{What you see.} (A) fitness of the offspring against the number of parents, when parents master different positions. Position-wise recombination (red) reaches the perfect score of 12 with eight parents; the best single parent (grey) sits near 8.7; the average of parents (blue) reaches about 11.6 at twelve parents. (B) recombination against the number of parents when parents are complementary, half-overlapping, or identical clones; clones gain nothing.
|
||||
|
||||
\textbf{What it means.} This is the Fisher--Muller effect in its cleanest form: recombination assembles, in one offspring, good variants that arose in different individuals. Unlike biology, a model population is not limited to two parents, so the effect is unbounded. Figure 3B is this result in real language models.
|
||||
|
||||
\section*{Figure S10. When skills are entangled, blind recombination harms the offspring}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s10_figS10_rugged_landscapes.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The same twelve-position genotypes, now on a \emph{rugged} landscape (Kauffman's NK model), in which the value of a position depends on what its neighbours hold, with a knob K from 0 (positions independent) to 8 (highly entangled). Parents are local optima found by hill-climbing, the model of a trained specialist. Offspring are made by recombining them at rates from 0 (copy a parent) to 0.5 (free shuffling).
|
||||
|
||||
\textbf{What you see.} (A) mean offspring fitness minus the best parent, against recombination rate, one curve per K. On a smooth landscape the difference is zero; as K grows the curves fall, more steeply at higher rates, down to about minus 0.23. (B) the fitness of the \emph{best} offspring in a brood; on rugged landscapes it peaks at an intermediate recombination rate and falls back toward the parents under free shuffling.
|
||||
|
||||
\textbf{What it means.} This is \emph{outbreeding depression}, well known in conservation biology: crossing two locally adapted populations can break up combinations of genes that only work together. The optimal amount of recombination shrinks as skills become more entangled. The design rule is to merge freely when skills are independent and sparingly, with selection, when they are not.
|
||||
|
||||
\section*{Figure S11. Directed sex: choosing and screening offspring rescues recombination}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s11_figS11_directed_recombination.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Biology is stuck with two random parents and no preview of the offspring. A model population is not: it can pick complementary parents, breed many candidate offspring, test them, keep the fittest and repeat. On the rugged landscapes of Figure S10 three strategies are compared: the best single parent (grey), random recombination (blue) and this \emph{directed} recombination (red, five rounds).
|
||||
|
||||
\textbf{What you see.} (A) offspring fitness against ruggedness K, with the global optimum dotted. Random recombination falls from 0.66 to 0.51 as K rises; directed recombination tracks the best parent and the optimum at every K. (B) the same as a difference from the best parent; directed stays at or above zero, random falls to about minus 0.2.
|
||||
|
||||
\textbf{What it means.} The danger of Figure S10 is real but avoidable, by doing what no living population can. In language models this is ``breed many merges, keep the best'' (Figure 3 and Table S2), and it beat the single default merge in every seed on hard tasks.
|
||||
|
||||
\section*{Figure S12. Selecting for the best destroys diversity; rewarding novelty preserves it}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s12_figS12_quality_diversity.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Each generation, the simulation now \emph{selects} which items to keep, all arms receiving the same grounding. Three rules: no selection; \emph{greedy}, keeping the items of highest true probability; and \emph{quality-diversity}, which rewards an item for being rare as well as good, with a knob (alpha) for how much rarity counts.
|
||||
|
||||
\textbf{What you see.} (A) diversity over 400 generations. Greedy (red) collapses within a few generations to almost zero; quality-diversity at two settings and no selection hold a plateau above 0.85. (B) the settled diversity against alpha, rising from about 0.48 to about 0.88 as rarity is rewarded more. (C) the number of distinct items alive at the end: about 9 under greedy, 14 to 28 under quality-diversity, about 32 with no selection.
|
||||
|
||||
\textbf{What it means.} Chasing the best outputs is a fast route to collapse, because it is a directional pressure on top of drift. Diversity has to be an objective in its own right, since selection can only preserve variety that still exists. This is the ``diversity preservation'' ingredient of the composed society in Figure 4D to F.
|
||||
|
||||
\section*{Figure S13. Who should mate with whom: mating breadth on rugged landscapes}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s13_figS13_mating_breadth.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Forty-eight simulated agents sit on a ring. When an offspring is made, its second parent is drawn from a neighbourhood whose width is the knob: narrow (mating only with neighbours, like an isolated village) to the whole ring (anyone can mate with anyone). An offspring replaces the agent at its position only if it is fitter. Ruggedness K is swept from 0 to 10.
|
||||
|
||||
\textbf{What you see.} (A) the best fitness reached, relative to the optimum, against mating breadth, per K. On a smooth landscape every breadth reaches the optimum; as K rises the best breadth narrows (0.6 at K of 3, 0.35 at K of 6 and 10) and mating with everyone falls below it. (B) the population's mean fitness rises with breadth at every K. (C) standing diversity (how different the agents are from one another) falls with breadth, fastest on rugged landscapes.
|
||||
|
||||
\textbf{What it means.} Wide mixing spreads a good variant fast but homogenises the population, so on entangled problems it loses the ability to explore several solutions in parallel. This is Sewall Wright's classic argument for structured populations, reproduced here as a design rule: as skills become more entangled, keep merging local.
|
||||
|
||||
\section*{Figure S14. Do lineages stop merging because of conflict, or just because time passes?}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s14_curriculum_timing.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} In Figure 4 three things rose together with generation: how long each adapter had been trained, how many skills it held, and the arrival of the two skills whose answer formats clash (one wants ``yes/no'', the other ``1/2''). To separate the third from the other two, two new syllabuses were run in which the clashing pair arrives either in the first two generations (conflict-early) or the last two (conflict-late), everything else rising exactly as before. Three seeds each, plus the two syllabuses from Figure 4.
|
||||
|
||||
\textbf{What you see.} (A) how often lineages refused a merge, by generation, for all four syllabuses; the filled marker on each curve is the first generation at which both clashing skills are present everywhere. Refusals rise with generation on the same schedule in all four. A statistical test that holds generation fixed finds no relationship between refusals and the presence of conflict, and a clear one with generation. (B) the accuracy of populations forced to merge every generation. The conflict-early population dips when the clash arrives, recovers, and then collapses from generation 5 like the others; the conflict-late population collapses from generation 4 before its clash has even arrived.
|
||||
|
||||
\textbf{What it means.} Moving the conflict by four generations did not move the collapse or the refusals. Conflicting conventions set how much damage each merge does, but something that grows with generation, adapter age or the number of skills carried, sets when the population can no longer repair the damage. Those two remain to be separated.
|
||||
|
||||
\section*{Figure S15. Survival of the fittest did not give merging lineages the edge}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s15_curriculum_cull.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} The population of Figure 4 never removed a lineage. Here, after each generation's test, the worst-scoring lineage is deleted and replaced with a copy of the best (it keeps its own place in the syllabus). This is \emph{differential reproduction}, the ingredient of natural selection the earlier population lacked. The prediction was that a lineage which assembles the skills first, by merging, would now leave more descendants and finish ahead. Never-merge and declinable-merge populations were run with and without this selection, three seeds each.
|
||||
|
||||
\textbf{What you see.} (A) best-lineage accuracy over the six generations for the four populations; the two selected ones are dashed. All four end within 0.01 of each other, near 0.80. (B) the average over the three lineages; selection lifts the average early (it copies the best genome into the worst slot), but the final averages converge too. (C) exactly one replacement happened every generation in every selected population, so selection was acting throughout.
|
||||
|
||||
\textbf{What it means.} Merging still bought speed, an early lead of about 0.08, and still bought no final advantage, with or without selection. Under a syllabus that eventually teaches every skill to every lineage, the ceiling is set by how much one adapter can hold, and both sex and selection only reach it sooner. The paper records this as a prediction it made and did not confirm.
|
||||
|
||||
\section*{Figure S16. The same results on a second, unrelated family of language models}
|
||||
|
||||
\begin{center}\includegraphics[width=\textwidth]{figs/si/s16_llm_smol.pdf}\end{center}
|
||||
|
||||
\textbf{What was done.} Every language-model experiment in the paper used one family of base models (Qwen). To check that the two most-cited results are not peculiar to it, the experiments of Figure 3B and 3C were re-run, unchanged, on SmolLM2, a 1.7-billion-parameter model from a different laboratory with a different architecture and training data. Blue bars are the original Qwen runs, orange and red the SmolLM2 runs; lighter bars are overall accuracy, darker bars the worst task family.
|
||||
|
||||
\textbf{What you see.} (A) on the easy tasks the merged models beat the best single specialist on SmolLM2 in every one of five seeds, by about the same margins as on Qwen. (B) on the hard tasks, keeping specialists separate and routing questions to the right one beats averaging in every seed on both families, by a larger margin on SmolLM2, where the average even falls below the best single specialist.
|
||||
|
||||
\textbf{What it means.} The Fisher--Muller effect and the headroom rule hold on a second lineage of models. Results that depend on one model family are common in machine learning; these two do not.
|
||||
|
||||
\medskip\hrule\medskip
|
||||
|
||||
\section*{Glossary}
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Adapter (LoRA).} A small set of extra trainable numbers added to a frozen base model, so that a specialist can be trained cheaply and two specialists can be merged by averaging their adapters.
|
||||
\item \textbf{Allele.} One of the alternative versions of a gene. In this paper, one of the alternative items of knowledge a model may hold.
|
||||
\item \textbf{Complementarity.} The share of a partner's skills that a lineage does not itself have. High early in the syllabus of Figure 4, zero at its end.
|
||||
\item \textbf{Epistasis.} When the effect of one gene depends on which other genes are present. For models: when a skill only works in combination with others (a rugged landscape).
|
||||
\item \textbf{Fisher--Muller effect.} The advantage of sex in bringing together, in one individual, beneficial variants that arose separately.
|
||||
\item \textbf{Fitness landscape.} A map from every possible genotype to its fitness. Smooth landscapes have one peak; rugged (NK) landscapes have many, so a population can get stuck on a poor one.
|
||||
\item \textbf{Forward KL divergence.} A measure of how badly a model covers the true distribution; it charges the model for every region where the truth has probability and the model has almost none.
|
||||
\item \textbf{Immigration--drift equilibrium.} The steady level of diversity a population settles at when new arrivals from outside balance the losses from drift. Its exact formula is the dashed line in Figure 2B.
|
||||
\item \textbf{Muller's ratchet.} In populations that never recombine, damage accumulates irreversibly, because once the best genome is lost it cannot be rebuilt.
|
||||
\item \textbf{Outbreeding depression.} Reduced fitness of offspring from parents that were each adapted to different conditions, because recombination breaks up combinations that only worked together.
|
||||
\item \textbf{Reproductive isolation.} The state in which two lineages can no longer produce viable hybrids; the defining boundary between species.
|
||||
\item \textbf{Routing.} Instead of merging specialists, keeping them separate and sending each question to the one that owns it.
|
||||
\item \textbf{Union (or max-merge).} Building a child by keeping, for each item, the strongest contribution any parent makes, rather than averaging the parents.
|
||||
\item \textbf{Wright--Fisher model.} The simplest mathematical model of a population: each generation is a random sample of fixed size drawn from the previous one. Its only force is chance, which is why rare variants disappear.
|
||||
\end{itemize}
|
||||
\end{document}
|
||||
852
paper/manuscript/main.md
Normal file
852
paper/manuscript/main.md
Normal file
|
|
@ -0,0 +1,852 @@
|
|||
# The evolution of sex for artificial intelligence: a population-genetic framework for multigenerational model populations
|
||||
|
||||
**Giorgio F. Gilestro**, Department of Life Sciences, Imperial College London. giorgio@gilest.ro
|
||||
|
||||
---
|
||||
|
||||
## Significance statement
|
||||
|
||||
Artificial intelligence increasingly consists of populations of models. Models are fine-tuned from
|
||||
common ancestors, trained on data that earlier models generated, and combined by weight merging.
|
||||
These practices couple model generations the way reproduction couples biological generations, and
|
||||
they raise the same question: how does a population keep and accumulate abilities over time? I
|
||||
transfer the population genetics of sexual reproduction to this setting and test it in simulations,
|
||||
small neural networks, and language models. The framework recasts continual learning at the
|
||||
population scale and yields design rules: how much real data retraining needs, when to combine
|
||||
models, when to keep them separate, when to stop combining them, and how to anticipate a failed
|
||||
combination before making it.
|
||||
|
||||
## Abstract
|
||||
|
||||
AI development increasingly resembles a population process. Models are specialised, retrained on
|
||||
model output, and recombined by weight merging, in evolutionary vocabulary with little evolutionary
|
||||
theory. I treat multigenerational model populations as systems whose inheritance, diversity, and
|
||||
compatibility must be managed, and transfer to them the population genetics of sexual reproduction.
|
||||
That training on model output is genetic drift, with model collapse its signature, is established;
|
||||
here I develop what follows. A minimal inheritance model is exactly Wright–Fisher, and trained
|
||||
networks depart from it by a measurable, architecture-specific bias. In this model grounding is
|
||||
immigration: a real-data fraction far below one retained most equilibrium diversity, and protecting
|
||||
a rare capability costs the inverse of its frequency. Refitting a child to the average of its
|
||||
parents' outputs cancels the gain of having several parents, to first order for rare items, whereas
|
||||
operators that keep each parent's strongest contribution realise it. Merged language-model
|
||||
specialists exceeded every parent across seeds. In a six-generation language-model population,
|
||||
lineages obliged to merge collapsed once partners stopped knowing different things; lineages allowed to refuse a merge, or made to stop
|
||||
after three generations, finished level with never merging, with or without selection between
|
||||
lineages, and merging with one's own ancestor was safer than merging with a contemporary. Blind
|
||||
recombination fails on rugged task landscapes; screening candidate offspring restores the gain. I
|
||||
introduce model speciation: the merge barrier remaining after permutation-and-rescaling alignment
|
||||
tracks functional conflict, isolation did not emerge from specialisation alone, and pre-merge
|
||||
functional disagreement predicted merge damage where weight geometry did not.
|
||||
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
Machine learning has become a population-scale phenomenon. Public repositories host millions of
|
||||
models (Hugging Face passed three million by 2026), most of them fine-tunes, distillations, or merges
|
||||
of a few foundation models, forming family trees already mapped by phylogenetic methods (1–3).
|
||||
*Model merging*, the combination of trained parents into a new model by averaging their weights, is
|
||||
mainstream practice with standard tooling and thousands of hybrid checkpoints, some topping
|
||||
leaderboards (4–7), and its literature already speaks of "crossover," "mutation," and "mate choice"
|
||||
in populations of merging models that climb benchmarks (5, 8–10) and stagnate as their members grow
|
||||
alike (11).
|
||||
|
||||
Generations are coupled through data as well as weights. Models increasingly learn from model
|
||||
output: frontier alignment pipelines are predominantly synthetic (over 98% in documented cases;
|
||||
12, 13), self-generated instruction data seeds whole lineages (14), much of the public web is
|
||||
machine-generated or machine-translated (15, 16), and the stock of human text is projected to run
|
||||
out within this decade (17). Multi-agent systems and agent economies put many models into sustained
|
||||
contact (18–21). A population whose members inherit from one another, recombine, and retransmit is
|
||||
an evolving population in the technical sense, and I transfer to it the branch of biology built for
|
||||
that situation, the population genetics of the evolution of sex (a transfer anticipated by the reading
|
||||
of sex as an algorithm for mixability; 22).
|
||||
|
||||
Training each generation on the previous generation's output degrades it (*model collapse*). Rare
|
||||
capabilities vanish first and the lineage drifts toward its own most common behaviour (23). That
|
||||
degradation is *genetic drift*, the loss of rare variants in any finite population when each
|
||||
generation is a finite sample of the last (the accident by which rare surnames vanish from small
|
||||
villages, with nothing selecting against them). The identification has been made repeatedly and
|
||||
independently, for sequential inference chains before deep learning (24), for language-model text
|
||||
ecosystems (25), as a first-extinction law (26), and in quantitative-genetic form for self-consuming
|
||||
diffusion models (27). Drift is only the entry point, because population genetics is above all a
|
||||
theory of what keeps a finite population from decaying (immigration, recombination, selection,
|
||||
population structure) and of where each of those fails, and every one of them has a counterpart that
|
||||
the operator of a model population can switch on: real data entering each generation, merging,
|
||||
selection against a verifier, and the choice of which models merge with which.
|
||||
|
||||
An operator of a model population faces recurring decisions with no principled guidance. How much
|
||||
verified real data does retraining need? Will combining two models compose their abilities or damage
|
||||
them? Can incompatibility be detected before a failed merge is paid for? When should specialists be
|
||||
kept separate? These are machine learning's oldest problem, *continual learning* (acquiring new
|
||||
abilities without losing old ones; 28, 29), transposed from a single network to a population whose
|
||||
members inherit from one another, and each has a population-genetic answer with a number attached
|
||||
(how many real samples per generation, how far the average sits below the best parent, how much the
|
||||
parents disagree on shared inputs). Table 1 gives the correspondences the argument runs on. Fig. 1A
|
||||
maps the programme across three tiers (an inheritance model in simulation, trained neural networks,
|
||||
language models). Fig. 1B draws the change of viewpoint the transfer rests on. Models are usually
|
||||
pictured as a society in space, contemporaries exchanging messages, but the couplings that matter
|
||||
here (training on model output, merging, real data entering each generation) run between
|
||||
generations, and a society coupled in time is what population genetics describes.
|
||||
|
||||
*(FIG:fig1)*
|
||||
|
||||
## Results
|
||||
|
||||
### The inheritance model and its calibration against trained networks
|
||||
|
||||
Knowledge is modelled as a distribution `p_t` over `K` discrete *items*, each standing for a
|
||||
capability, a fact or a mode of behaviour. An item is the counterpart of an allele, and a
|
||||
*capability* is what an item stands for. A fixed
|
||||
true distribution `p*` gives each item its true frequency, and its rare tail (the items of lowest
|
||||
frequency) carries the knowledge most at risk. Following population genetics I call an item's
|
||||
frequency `p_i` its *mass*, the probability that one sample drawn from the distribution is that item
|
||||
(the allele frequency of Table 1), and the mass of a set of items is the sum of their frequencies. One generation has a single parent and a single child (several parents are the subject
|
||||
of the merging section) and consists of three steps: draw `n` samples from the parent's distribution;
|
||||
optionally add `m` samples drawn from `p*` itself, standing for real data that has passed a verifier
|
||||
(*grounding*, with grounding fraction `g = m/(n+m)`); and fit the child's distribution to the pooled
|
||||
`n + m` samples (the *refit*, which in the minimal model is simply the observed frequencies). The
|
||||
resampling step is the Wright–Fisher process, population genetics' canonical model of neutral
|
||||
evolution, in which each generation is a random sample of size `n` from the last. In this
|
||||
*inheritance model* the Wright–Fisher "population" is the sample a child is trained on and its
|
||||
"individuals" are the `n + m` samples, so it is a model of a learner. Diversity throughout is *heterozygosity*, `H = 1 − Σ p_i²`, the probability that
|
||||
two items sampled independently from the distribution differ (high when the mass is spread over many
|
||||
items, zero when one item holds it all). The simulator reproduces three closed forms of the process
|
||||
to within 0.5% of the analytic value (Methods): the heterozygosity decay under drift alone,
|
||||
`E[H_t] = H_0(1 − 1/n)^t`; the stationary diversity under real data, written in the next subsection;
|
||||
and, for `K` parents that each hold a given rare item with probability `q` and whose holdings are
|
||||
correlated by `ρ` (0 fully complementary, 1 identical), the expected fraction of rare items held by
|
||||
at least one parent, `ρq + (1 − ρ)(1 − (1 − q)^K)`, used in the merging section.
|
||||
|
||||
Trained networks are not exact copiers, because they add approximation error, optimisation noise and
|
||||
their own inductive bias to the resampling step, so before using Wright–Fisher as a reference I
|
||||
measured how far real learners depart from it. Run through the same generational loop against an exact oracle, they
|
||||
departed in opposite directions (Fig. S2). The sequence generators (a recurrent and a feedforward
|
||||
network) *smooth*, spreading probability onto items they have never seen, and so collapse more slowly
|
||||
than drift predicts while keeping spurious variants alive. The image autoencoder *sharpens*,
|
||||
concentrating probability on its commonest modes, and so collapses faster (Fig. 2A; the comparison
|
||||
with drift in Fig. S2). Both departures
|
||||
are reproduced by adding one knob to the copying step, a mutation rate toward a prior for smoothing or
|
||||
a temperature for sharpening (Fig. S2). A real learner is therefore treated throughout as
|
||||
Wright–Fisher plus a signed, measurable bias, and the two predictions that matter here (rare items
|
||||
are lost first, and real data arrests the loss) held in every architecture tested (Figs. 2 and S1).
|
||||
|
||||
In biological terms, retraining a child on a single parent is *asexual reproduction*. In a population
|
||||
that never recombines, a loss that happens to reach every individual can never be undone, because no
|
||||
individual retains the copy from which it could be rebuilt. Each such loss clicks the population one
|
||||
notch down, and the notches turn only one way. This is *Muller's ratchet* (30), and model collapse has
|
||||
the same irreversible arm. Once every copy of a rare item is gone from all parents and all sources
|
||||
nothing can rebuild it, and the inheritance model shows the trap in its commonest form: a population
|
||||
that adopts its own collapsed output as its new reference never recovers the items it had lost,
|
||||
whatever real data it is fed afterwards (Fig. S3). Remedies must therefore act while copies still
|
||||
survive somewhere in the population.
|
||||
|
||||
**Table 1.** The dictionary. Each biological term is introduced in the section that develops it. The
|
||||
support column names where the evidence comes from: a figure panel or Supplementary figure or text of this paper, a
|
||||
reference number for the literature, or both. "Closed form" means derived in the inheritance model and
|
||||
verified against simulation; "empirical" means measured in a trained system; "hypothesis" means stated
|
||||
with a falsifier and untested.
|
||||
|
||||
| Population genetics | Model populations | Support |
|
||||
|---|---|---|
|
||||
| Genetic drift in a finite population | Training on finite samples of model output | Closed form (Fig. 2B); collapse measured (Fig. 2A); the identification is prior work (23–27) |
|
||||
| Immigration from a fixed source | Grounding with verified real data | Closed-form equilibrium and per-item floor (Fig. 2B); sign confirmed in trained nets (Fig. 2A); stationarity and stability under fresh data (31, 32); comparable fractions reported (23, 33, 34); conservation analogue (35) |
|
||||
| Muller's ratchet (asexual decay) | Irreversible arm of model collapse | The irreversibility is reproduced in the inheritance model (Fig. S3); the mutational mechanism of the ratchet is not modelled (30) |
|
||||
| Recombination / sexual reproduction | Model merging | Fig. 3B–C: merging beats blending wherever the weight-average scores well below the best parent, and blending suffices where it does not; that merges can beat parents is established (4, 36) |
|
||||
| Fisher–Muller effect | Merged specialists exceed every parent | Fig. 3B; inheritance-model expectation (Fig. S9); classical theory (37, 38) |
|
||||
| Outbreeding depression under epistasis | Merging entangled skills harms offspring | Inheritance model only (Fig. S10), reproducing (39, 40); hypothesis at LLM scale |
|
||||
| Mating systems / population structure | Who merges with whom (breadth of the parent pool) | Inheritance model only (Fig. S13), reproducing (41); hypothesis for real populations |
|
||||
| Reproductive isolation (Bateson–Dobzhansky–Muller incompatibilities) | Merge failure from functional conflict | Fig. 5A–D and SI Text S1, Proposition S2; emergent form not observed; classical theory (42, 43); alignment tools and known residuals (44–47) |
|
||||
| Seed bank (mating with a stored earlier generation) | Merging with one's own ancestor | Six-generation population (Results; SI Table S2): own-ancestor merge beat a contemporary in every seed; checkpoint averaging as a stabiliser (48, 49) |
|
||||
| Recombination modifier (a gene that sets how often other genes are shuffled) | A declinable merge: keeping the parent unchanged is scored as one candidate offspring | Fig. 4B–C (six generations, 3 seeds): a fixed early stop matched it, and declines tracked generation, not complementarity, once the two were decoupled. Modifier theory (50–52) is the motivating frame; its reduction-principle reading was not supported; gated and early-stopped merging in continual settings (53, 54) |
|
||||
| Selection on a fitness function | Verifier-anchored selection ("reality that can say no") | Fig. 4D–F; diversity-preserving selection from (55), inheritance-model reference (Fig. S12) |
|
||||
|
||||
### The real-data fraction required to arrest collapse
|
||||
|
||||
Grounding, the mixing of verified real data into each generation's training sample, plays in the
|
||||
inheritance model the role that immigration plays in population genetics. A fixed external source
|
||||
(`p*`) supplies a fraction `g` of each generation's sample, and a population that would otherwise
|
||||
drift to fixation settles instead at a stationary diversity (33, 34, 56). I swept `g` from 0 to 0.4 across 100
|
||||
independent lineages (Fig. 2B and Fig. S4) to separate two questions: how much real data holds
|
||||
aggregate diversity, and what happens to an individual rare item.
|
||||
|
||||
Part of the aggregate answer exists already: that a self-consuming loop fed fresh real data settles
|
||||
at a stationary state instead of collapsing was shown for generative models (31), a sufficient condition
|
||||
on the real fraction for stability has been proved (32), the same loop with any non-vanishing
|
||||
synthetic fraction never recovers the real-data scaling law (57, 58), and in the first collapse study
|
||||
retaining 10% of the original data held perplexity steady over ten generations (23). These results
|
||||
establish that a grounded lineage stabilises below the real data without saying where, and the
|
||||
inheritance model gives the level in closed form: with `m` real samples added to `n` inherited ones
|
||||
each generation, diversity settles at `H_eq = H* · m(2n+m−1)/(n+2nm+m²)`, where `H*` is the
|
||||
diversity of the source, and the simulator matches this to within 0.5% (Fig. 2B). Two consequences
|
||||
follow that the earlier results could not show. The first is that what holds diversity is the
|
||||
*count* of real samples per generation, not their share of the training set. Whenever real samples
|
||||
are a minority (`m ≪ n`) the formula reduces to `H_eq ≈ H* · 2m/(2m+1)` and `n` drops out: one real
|
||||
sample per generation keeps two thirds of the source's diversity and ten keep 95%, however large the
|
||||
inherited sample is. The expression is Wright's island model in haploid form: the shortfall
|
||||
`1/(2m+1)` is its fixation index `F_ST` for a population receiving `m` migrants a generation, and the
|
||||
rule of thumb of conservation genetics is stated as *one migrant per generation* (35), a count and not
|
||||
a fraction, because of the same cancellation. The size of the receiving population drops out, and how
|
||||
much of the source's diversity an island keeps is set by how many migrants reach it. In the tested setting (`K = 1000` items, `n = 200`
|
||||
inherited samples per generation, and a true distribution whose item frequencies fall off as a power
|
||||
law, a *Zipf* distribution, the standard model of the long tail of natural data) 95% of the source's
|
||||
diversity was kept from `g ≈ 0.05` upward (Fig. S4), but that fraction is ten real samples divided by
|
||||
a training set of 200, and it shrinks as the training set grows. The second is that the curve is
|
||||
smooth. Diversity rises gradually with `m`, there is no value at which a lineage switches from
|
||||
collapsing to safe, and the lineage never reaches the source (the shortfall is about `1/(2m+1)` at
|
||||
any budget, as the scaling-law results require; 57, 58). Any threshold quoted for real data is
|
||||
therefore a retention target one chooses and reads off the curve, not a property of the system.
|
||||
Comparable fractions are reported for accumulating real data in language models (34) and for the
|
||||
replay ratios of continual learning. Optimal mixing ratios derived for squared-error regression are
|
||||
far higher (about 0.6; 59), because that objective weighs every sample equally where the question
|
||||
here is which items survive at all.
|
||||
|
||||
Aggregate diversity cannot say whether one particular rare item survives, and for that the answer
|
||||
is elementary. Call the number `m` of verified real samples added per generation the *real-data
|
||||
budget*. Under unstratified sampling an item of frequency `p` appears in a batch of `m` real samples
|
||||
with probability `1 − e^{−mp}`, so a budget of `m ≈ 1/p` gives only a 63% chance of seeing the item
|
||||
once per generation; an item that appears in one real sample in ten thousand needs a budget of about
|
||||
ten thousand real samples every generation. The budget is therefore set by the rarest item one
|
||||
refuses to lose, and it is a lower bound, because a single copy that does arrive enters a pool of
|
||||
`n + m` samples and can still be lost when the child is resampled from it (Fig. S4D, where the rarest
|
||||
items recover last). The rule is the immigration counterpart of the per-item
|
||||
extinction laws derived for closed loops (25, 60). It also explains an observation reported by others
|
||||
and left unexplained, that the absolute count of real samples predicts collapse better than their
|
||||
proportion (61): the aggregate closed form and the per-item rule both depend on `m`, not on `g`. The
|
||||
same arithmetic has been observed on the acquisition side, in pretraining itself: about 250 documents
|
||||
install a rare behaviour in models from 600 million to 13 billion parameters, although the larger
|
||||
models see twenty times more data, so the documents' share of the corpus falls twentyfold while their
|
||||
effect does not (62). One migrant per generation, 250 poisoned documents and `m·p ≳ 1` are one rule
|
||||
read three times: what a population keeps, or acquires, of a rare item is set by the number of copies
|
||||
that reach it each generation, not by the size of everything else it is trained on. A fixed budget stretches further in two ways.
|
||||
Real data protects only the topics it covers, since when the 1,000 items are split into ten topics and the same
|
||||
budget is spent either on one topic or evenly over all ten, real data aimed at the topic keeps about
|
||||
half of its rare items alive and real data spread over all topics keeps 7% (Fig. S5), so a
|
||||
capability is protected by real data about that capability, not by real data in general. And an
|
||||
item lost from one lineage can be recovered from another lineage that still holds it, which is the
|
||||
subject of the next section.
|
||||
|
||||
In the trained networks (the recurrent and feedforward generators on the synthetic universe, Fig.
|
||||
S6, and the convolutional VAE on MNIST, Fig. 2A and Fig. S7) grounding reduced collapse in every
|
||||
case, as prior work at language-model scale had found (23, 34). Compared against the exact model,
|
||||
the trained networks depart in two ways, both consequences of the estimator bias measured above. The
|
||||
threshold softens: in the recurrent network the distance from the truth falls gradually over the
|
||||
whole range of `g` tested (Fig. S6B), where the inheritance model's diversity saturates
|
||||
within a few percent. And the usual measure of collapse fails for a smoothing learner. Such a network keeps assigning probability to items it was
|
||||
never trained on, so counting how many rare modes survive overstates its health; in the recurrent
|
||||
network that count is not even monotone in `g` (Fig. S6D), while a network can retain
|
||||
every mode and still hold the mass in the wrong proportions. For smoothing learners I therefore
|
||||
measure collapse by the forward Kullback–Leibler divergence from truth to model, the standard measure
|
||||
of how well a model covers a distribution, which penalises every region where the truth has mass and
|
||||
the model has little. On real images (Fig. 2A) ungrounded self-training collapsed a convolutional VAE
|
||||
from thirty modes to one within fifteen generations, while about 10% grounding held all thirty (Fig.
|
||||
S7). The autoencoder needed about 10% real data where the inheritance model needed 5%, and the
|
||||
difference is what its sharpening bias costs: a learner that concentrates mass on its commonest modes
|
||||
loses rare ones faster than sampling alone would, and needs more real copies to hold them.
|
||||
|
||||
*(FIG:fig2)*
|
||||
|
||||
### Merging operators and the retention of rare capabilities
|
||||
|
||||
Refitting a child on the average of its parents' output distributions is *blending inheritance*,
|
||||
the pre-Mendelian view of heredity in which offspring are an average of their parents. Fleeming
|
||||
Jenkin's objection to Darwin (63, 64) was that under blending a rare favourable variant is halved at
|
||||
every cross and swamped within a few generations, so selection could never establish it; particulate
|
||||
(Mendelian) inheritance, in which an allele passes intact or not at all, answered the objection, and
|
||||
blending was abandoned as a theory of heredity. Averaging does to a rare capability exactly what
|
||||
Jenkin said blending would do to a rare variant, and blending inheritance is therefore the right null
|
||||
model of merging. The same dilution has
|
||||
been reported in machine learning under three different names, without being recognised as one
|
||||
phenomenon: distilling onto an ensemble mean discards the
|
||||
members' diversity (65), averaging expert weights loses to routing among the same experts (66), and
|
||||
an update held by one of `N` parents is scaled by `1/N` in their soup (67). In the inheritance model
|
||||
the dilution is a conservation law: the expected mass of a rare item in the child is `q·p` (its mass
|
||||
`p` in a parent that holds it, times the probability `q` that a parent holds it) whatever the number
|
||||
of parents, so averaging over more parents neither helps nor harms a rare item's expected share, and
|
||||
the proposition below says exactly when the same holds for its survival.
|
||||
|
||||
**Proposition (blending inheritance, rare-item regime).** Let each of `K` parents independently
|
||||
retain a rare item, which has mass `p` in a parent that retains it, and let the child draw `n` samples
|
||||
either from one parent chosen at random or from the mean of the `K` parents' distributions. The
|
||||
expected mass of the item in the child's sample is the same under both schemes. When the item is rare
|
||||
enough that even a parent holding it rarely contributes more than one copy to the child's sample
|
||||
(`n·p ≪ 1`), the probability that the item survives into the child is the same too: averaging over
|
||||
`K` parents makes the item `K` times more likely to be present in the mixture, and `K` times less
|
||||
frequent when it is, and the two factors cancel (proof in SI Text S4).
|
||||
|
||||
The proposition fixes the baseline against which any merging operator is judged, and it has two
|
||||
boundaries. For items common enough that the child usually sees several copies, averaging is safer
|
||||
than inheriting from one random parent, because the probability of losing an item is a convex
|
||||
function of its mass and averaging evens out which parent happened to hold it; the cancellation is a
|
||||
statement about rare items, which are the ones at risk. A *union* operator, which keeps for each item the
|
||||
mass it has in the parent holding it most strongly (and therefore needs a verifier to say which parent
|
||||
that is), raises expected retention with every additional parent at every rarity tested (Fig. S8).
|
||||
|
||||
Neither scheme is what model merging does in practice. The two operators in use are *weight
|
||||
averaging*, which averages the parents' parameters (a network is nonlinear in its weights, so
|
||||
averaging weights does not average outputs and the proposition applies only by analogy; but an update
|
||||
held by one of `N` parents is still scaled by `1/N` in the average (67), which is the dilution the
|
||||
proposition describes), and *routing*, which keeps every specialist intact and sends each input to the
|
||||
specialist that owns it (68), the practical form of the union. I compared the two at two model sizes
|
||||
(0.5B and 7B parameters) on easy and on deliberately hard task families (Fig. 3C for 7B on the hard
|
||||
families; the other size and difficulty combinations in Supplementary Information, Table S2). Routing
|
||||
wins by the amount averaging loses to dilution, and two things set that loss. On the easy families a
|
||||
7B base has nothing to lose: after averaging it scores at ceiling on two of the three families (1.00
|
||||
on both), so routing has nothing to recover and the two are equivalent. On the hard families the
|
||||
average falls to the level of the best single specialist (0.41 for both, over three 7B seeds),
|
||||
because it dilutes each specialist's own skill, and routing among the intact specialists wins by a
|
||||
wide margin (0.50, ahead in every seed). A weak base (0.5B) shows the same gap even on the easy
|
||||
families. The operative variable is the *headroom*, the distance between what the weight-average
|
||||
scores and what the specialists would jointly score if every input reached the right one: it is large
|
||||
wherever there is room to lose to dilution (a weak base, or hard tasks at a strong one), and neither
|
||||
model size nor task difficulty alone predicts it. On the
|
||||
second base lineage the ordering is the same and the margin larger (routing 0.33 against soup 0.17
|
||||
on the hard families at 1.7B, ahead in every seed, with the soup below the best specialist in every
|
||||
seed; Fig. S16). Whether
|
||||
the gain scales quantitatively with the headroom is untested.
|
||||
|
||||
Merging complementary specialists can also yield a model better than any of them, the *Fisher–Muller
|
||||
effect* (37, 38). In an asexual population two useful variants that arise in different individuals
|
||||
can never meet in one descendant; the lineages carrying them compete, and one is lost. Recombination
|
||||
puts both into one offspring, which is why sexual populations adapt faster. In the
|
||||
multi-locus inheritance model, merged decorrelated specialists reach a combination of variants (a
|
||||
*genotype*) that no parent held, while the best parent and the blended average plateau below (Fig.
|
||||
S9). Merges of three LoRA (69) specialists reproduced the signature, beating
|
||||
every parent overall (0.65 against 0.59 over five seeds at 0.5B; 0.87 against 0.81 over three seeds at
|
||||
7B, in every seed), and on worst-family accuracy they were the only models competent everywhere, in
|
||||
every seed (Fig. 3B). The same protocol on an unrelated base lineage (SmolLM2-1.7B-Instruct: a different laboratory,
|
||||
architecture family and pretraining corpus) gave the same result in every one of five seeds (merge
|
||||
0.66 against best specialist 0.61 overall; worst family 0.32 against 0.13; Fig. S16). That merges can exceed their parents is established for adapters (4, 36, 70); the model
|
||||
contributes the condition under which it happens and the operator that realises it.
|
||||
|
||||
Blind recombination is not always safe. On rugged (*epistatic*) landscapes, where a variant's
|
||||
contribution depends on the variants around it (71), recombining two adapted parents yields offspring
|
||||
below both, and the optimal recombination rate falls as entanglement grows. Both results are long
|
||||
established in population genetics (39) and evolutionary computation (41) and are reproduced here
|
||||
only to fix reference values (Fig. S10). An engineered population has an option a natural one lacks: breed
|
||||
many candidate offspring and keep whichever a verifier scores highest. In the inheritance model this
|
||||
*directed* recombination recovers the gain on every landscape where blind recombination loses it
|
||||
(Fig. S11), and in language models it beat the a-priori blend in every seed on hard tasks, including one seed where the blend
|
||||
failed catastrophically and selection was unaffected (Supplementary Information, Table S2).
|
||||
|
||||
*(FIG:fig3)*
|
||||
|
||||
### Ablation of a composed population
|
||||
|
||||
Grounding enters a population at two points. In the inheritance model it is *grounded inheritance*,
|
||||
real samples added to the pooled sample the child is fit to. In a selecting population it is
|
||||
*grounded evaluation*: an agent is scored partly against reality and partly against the population's
|
||||
own consensus (`g`·true-fitness + (1−g)·conformity). The consensus term stands for what a population
|
||||
does when it has no verifier, which is to learn from its own outputs, so `g = 0` is a population that
|
||||
rewards agreement with itself. To ask whether grounding, recombination and diversity contribute
|
||||
separately, I ran a four-arm ablation in the multi-locus inheritance model: a population of 60 agents,
|
||||
each a genotype of 12 loci, adapting on a rugged (NK) landscape for 80 generations (SI Methods M3),
|
||||
with one operator removed per arm (Fig. 4D–F). The full system (grounded evaluation, directed
|
||||
recombination, and diversity-preserving selection (54; its inheritance-model reference in Fig. S12))
|
||||
approached the global optimum while keeping its specialists. Removing grounded
|
||||
evaluation converged the population confidently on an unfit consensus, the self-consumption failure.
|
||||
Removing recombination stranded it on local optima, and removing diversity converged it prematurely
|
||||
on a worse answer. The arm without grounding fails by construction, since a rule that scores
|
||||
agreement will converge on agreement, but the other two removals fail in ways of their own, so under
|
||||
these conditions recombination and diversity are not substitutes for grounding or for each other.
|
||||
Magnitudes depend on the mutation, restart and selection schemes, which were not varied.
|
||||
|
||||
### A six-generation language-model population
|
||||
|
||||
Merging has been iterated before, in two forms. Evolutionary merging holds a pool of parents fixed
|
||||
and recombines it repeatedly (5, 8, 9), and over several generations the pool stagnates as its
|
||||
members grow alike (11). Continual merging folds a stream of independently trained experts into one
|
||||
running model (53, 54, 72, 73), and in long streams it degrades unless merging is gated by similarity
|
||||
or stopped early (53, 54). In neither form does a lineage learn a new skill by training between
|
||||
merges, so what happens to a composed capability when it is inherited, extended and recombined has
|
||||
not been measured. I ran inheritance, recombination and immigration together as a population of
|
||||
language models across six generations on real datasets.
|
||||
|
||||
Three lineages start from one frozen base model (Qwen2.5, 1.5 billion parameters, untrained on the
|
||||
tasks). Each generation, every lineage acquires one new skill from six public datasets
|
||||
(natural-language inference (MNLI; 74), science questions (ARC-Easy; 75), commonsense completion
|
||||
(HellaSwag; 76), reading-comprehension spans (SQuAD; 77), yes/no questions (BoolQ; 78), pronoun
|
||||
resolution (WinoGrande; 79)), each scored by its own verifier, a program that marks an answer
|
||||
right or wrong. A skill lives in a *LoRA adapter*, a small set of trainable weights added to the
|
||||
frozen base (the base a shared textbook, the adapter one specialist's margin notes). A child inherits
|
||||
by continuing to train its parent's adapter, so what the parent learned in its lifetime passes to the
|
||||
child (the inheritance of acquired characters that Lamarck proposed and biology rejected, and that a
|
||||
weight file makes trivial). Each child's training set also contains a fixed number of
|
||||
examples from the skills its lineage learned in earlier generations (150, beside 300 new), so that new
|
||||
training does not overwrite old skills; this *replay* is the standard remedy for forgetting in
|
||||
continual learning (28, 29).
|
||||
|
||||
The curriculum is a Latin square: the lineages take the same six skills in rotated orders, like three
|
||||
students working through one syllabus in different sequences. A partner therefore knows things a
|
||||
lineage lacks early (*complementarity*, the share of the partner's skills one lacks, is 1.0 at the
|
||||
first two generations) and nothing it lacks by the end (0.0 at the sixth). Complementarity is thus a
|
||||
swept variable, but it is also collinear with generation number, so any effect that grows with an
|
||||
adapter's training age shares its signature; a second curriculum, below, breaks the collinearity. Merging averages two adapters at a weight chosen on
|
||||
validation data and reported on held-out tests. The arms are: never merge; always merge with a
|
||||
contemporary from another lineage (with verified or with self-generated replay); merge with one's own
|
||||
ancestor three generations back; and a *declinable* merge, in which keeping the parent unchanged is
|
||||
scored as a candidate beside every merge and wins if none beats it. A control arm merges
|
||||
obligately through generation 2 and never afterwards (a *forced stop*), the fixed schedule the
|
||||
declinable arm must be compared against. Lineages are never culled, so the
|
||||
population has inheritance, recombination and immigration of new skills but no differential
|
||||
reproduction. Three training seeds; the outcome is a lineage's accuracy over all six families.
|
||||
|
||||
Obligate recombination collapsed (Fig. 4B): the always-merge arm tracked the never-merge arm for
|
||||
three generations, then fell from 0.65 to 0.27, beginning when partner complementarity dropped below
|
||||
0.8; its self-replay variant did the same (0.31), so replay was not what failed. The declinable arm
|
||||
neither collapsed nor won. It led at the start (0.68 against 0.60), was overtaken, and finished level
|
||||
with never merging (0.792 against 0.796; per-seed −0.03, +0.01, +0.01), while one model taught the
|
||||
curriculum alone reached 0.80 (with replay, forgetting was not a pressure recombination could
|
||||
relieve). In both non-obligate arms accuracy on the skills a lineage had been taught held near 0.78
|
||||
and the first skill learned never eroded (0.85 → 0.88); the obligate arm fell to 0.24 on those same
|
||||
skills.
|
||||
|
||||
The choice of partner mattered more than whether to merge. Merging with one's own ancestor three
|
||||
generations back, a partner that lacks the lineage's three most recent skills but shares every
|
||||
convention it holds, beat merging with a contemporary in every seed (0.66 against 0.27). The ancestor
|
||||
supplies complementarity in time: what it lacks is exactly what the lineage has since learned, and
|
||||
nothing it holds was learned differently. A *seed bank* plays this role in population genetics,
|
||||
letting a population mate with its own stored past. Averaging a model with its own earlier
|
||||
checkpoint is a known stabiliser in continual learning and in self-improvement loops (48, 49); the
|
||||
comparison against a contemporary partner under matched conditions is what this population adds. In the
|
||||
declinable arm the fraction of proposed merges that were declined rose from 0.44 to 1.00 across the
|
||||
six generations (Fig. 4C), until every lineage declined every merge and the population had become the
|
||||
never-merge arm by its own choice. A control arm that merges through generation 2 and never afterwards
|
||||
(the forced stop) finished level with the declinable arm in every seed (0.793 against 0.792; per-seed
|
||||
differences −0.008, −0.006, +0.011), so the declinable arm's outcome is explained by when it stopped
|
||||
and not by which merges it chose. A second curriculum, in which every lineage starts with the same
|
||||
skill so that complementarity is zero at the first generation, peaks at the third (0.70) and returns
|
||||
to zero, produced the same rise in declines with generation (0.44 → 0.89). Pooled over both curricula with
|
||||
generation controlled, declines did not track complementarity (partial Spearman ρ = −0.07, 95% CI
|
||||
−0.21 to 0.09, n = 36) but did track generation (partial ρ = 0.31).
|
||||
|
||||
Three things rise with generation in both curricula: the adapters' training age, the number of skills each holds, and the arrival in
|
||||
every lineage of the two families whose answer conventions conflict (yes/no against 1/2). Two
|
||||
further curricula moved only the third. In one the conflicting pair arrives in generations 1–2 of
|
||||
every lineage, in the other in generations 5–6, with the four compatible families filling the rest
|
||||
in rotated orders, so age and skill count rise identically in both (Fig. S14). Neither the decline
|
||||
curve nor the collapse moved with the conflict. Declines rose with generation on the same schedule
|
||||
in both (0.56 → 0.78 and 0.44 → 0.89), and with generation controlled they did not track the
|
||||
presence of conflict (partial ρ = −0.09, 95% CI −0.45 to 0.15, n = 36) but did track generation
|
||||
(partial ρ = 0.45). The obligate arm collapsed in both (final accuracy 0.28 and 0.39 against 0.80 and
|
||||
0.78 for never merging, in every seed): the conflict-early population dipped when the pair arrived,
|
||||
recovered to the others' level by generation 3, and collapsed from generation 5, while the
|
||||
conflict-late population collapsed from generation 4 with its conflicting pair still to come. What
|
||||
the four curricula leave confounded is adapter age with skill count, which rise together by
|
||||
construction.
|
||||
|
||||
A skill
|
||||
whose answer convention conflicts with nothing a lineage holds occupies a *new locus*, a new position
|
||||
in the genome filled without displacing anything, and lineages accumulate loci freely (six here; half
|
||||
a million facts in a lifelong-editing benchmark that averages a fresh adapter per period into the
|
||||
accumulated one; 80). Two skills demanding different conventions for the same kind of question
|
||||
("yes/no" against "1/2" for a two-way choice) are *alternative alleles at one locus*, and a model,
|
||||
like a chromosome, carries one. Where conventions disagree a merged child must err against at least
|
||||
one parent (SI Text S1, Proposition S2). A lineage obliged to merge pays that error every generation
|
||||
on every pair of conflicting conventions, and the errors accumulate into collapse. In the
|
||||
Latin-square curriculum the collapse began at the generation when partners stopped bringing skills a
|
||||
lineage lacked and started bringing conventions that clashed with the ones it held, but the
|
||||
conflict-arrival curricula above show that moving the clash by four generations does not move the
|
||||
collapse: conflicting conventions set the size of each merge's error, and something that grows with
|
||||
generation sets when the errors stop being repaired. Single models show the same
|
||||
divide: non-contradictory updates integrate safely while contradictory ones corrupt unrelated
|
||||
knowledge (81), and disjoint tasks make forgetting eliminable where conflicting overlap imposes a
|
||||
floor (82). The collapse is the second kind of knowledge arriving in a population obliged to merge.
|
||||
|
||||
The declinable merge was designed as a *recombination modifier*, in genetics a gene that sets how
|
||||
often other genes are shuffled between parents. Modifier theory holds that recombination is favoured when it
|
||||
assembles complementary alleles from different parents and disfavoured when it breaks combinations
|
||||
that already work (39, 50, 51), and that when shuffling gains nothing the *reduction principle*
|
||||
drives its rate to zero (52), turning the lineage asexual; on that reading the declinable merge should
|
||||
have switched itself off as partners stopped being complementary. The controls do not support
|
||||
that reading here. Acceptance fell with generation whether or not partners were complementary, and
|
||||
a fixed schedule reproduced the outcome. What the population establishes is narrower: one bit of
|
||||
selection on each recombination event, or a fixed early stop, avoids the collapse of obligate
|
||||
merging at no cost against never merging, and the declinable version does so without knowing in
|
||||
advance when to stop. The result was obtained under six generations, a single base model, and replay throughout, none
|
||||
of which was varied. The population also had no differential reproduction, and the Fisher–Muller
|
||||
argument predicts that selection is what turns recombination's early lead into a level advantage,
|
||||
because a lineage that assembles the skills first leaves more descendants. Adding truncation
|
||||
selection (after every generation the lowest-scoring lineage is re-founded from the highest, keeping
|
||||
its own place in the curriculum) did not bear this out (Fig. S15). Selection acted every generation
|
||||
and lifted the population mean early, but the final levels converged: with selection, never merging
|
||||
reached 0.804 and the declinable merge 0.793 (below in every seed, by 0.011 ± 0.003), against 0.796
|
||||
and 0.792 without it. Recombination's early lead was the same with and without selection and gone by
|
||||
generation 5 in both. Under a curriculum that delivers every skill to every lineage the ceiling is
|
||||
what one adapter can hold (0.80 for the single model taught the whole syllabus), and sex and selection
|
||||
each reach it sooner without raising it.
|
||||
|
||||
*(FIG:fig4)*
|
||||
|
||||
### Merge failure and its dependence on functional conflict
|
||||
|
||||
Recombination presupposes compatible parents. In biology, lineages pushed far enough apart become
|
||||
separate species (*reproductive isolation*) through Bateson–Dobzhansky–Muller incompatibilities
|
||||
(42, 43), changes harmless on their own genetic background but deleterious in combination. This is
|
||||
the mechanism behind the mule's sterility, in which two genomes that each work cannot run in the same
|
||||
cell. A merged model is that exposed hybrid. In the inheritance model of the process (Fig. 5 E and F)
|
||||
hybrid fitness stays at the parents' level while the lineages remain compatible and then falls below
|
||||
the ancestor, sooner the more incompatibilities the genomes carry, and Orr showed that the number of
|
||||
such incompatibilities grows with the square of divergence (43). Whether a growing number of conflicts
|
||||
produces a fall in performance in a trained network is the question the simulation cannot answer.
|
||||
|
||||
In trained networks the claim must survive a known alternative. Two networks trained separately can
|
||||
differ in their weights for a trivial reason: the hidden units of a network can be renumbered, and in
|
||||
a ReLU network each unit's incoming weights can be scaled up and its outgoing weights scaled down by
|
||||
the same factor, without changing what the network computes. Two networks that compute similar
|
||||
functions can therefore lie far apart in weight space, and averaging them gives a poor model, a
|
||||
*coordinate barrier*. Merge barriers between independently trained networks are famously of this
|
||||
kind, removable by re-aligning hidden units (44) and renormalising their activations (46) before
|
||||
averaging, and richer symmetry groups remove more (83). A residual that alignment does not remove is
|
||||
also known: networks trained on different tasks keep a barrier after permutation (47), and experts
|
||||
diverged far from a shared base keep one with symmetries accounted for (45). What has not been asked
|
||||
is what the residual measures, divergence as such or conflict in what the networks compute. To
|
||||
separate the two I aligned pairs of networks under permutation matching combined with exact per-unit
|
||||
rescaling (the complete unit symmetry group of plain ReLU MLPs; 44, 46) and measured the barrier
|
||||
before and after (Fig. 5 A and B). Two networks trained from different initialisations on the *same*
|
||||
task have a barrier the alignment removes almost entirely (residual ≈ 0.001, the aligned merge
|
||||
performing at parent level): their barrier was coordinate mismatch. Two networks trained on
|
||||
*conflicting* label maps (the same inputs, with a fraction of the classes relabelled) have a barrier
|
||||
the alignment leaves unchanged (0.502 → 0.497), and the merged model is functionally dead. The aligner
|
||||
is validated only on a special case (exact recovery of a permuted-and-rescaled copy of a network), so
|
||||
the share of the barrier it removes is a lower bound on the removable share, and the residual an
|
||||
upper bound. Sweeping the fraction of classes in conflict traces the fall in hybrid fitness from 0.97
|
||||
to 0.03. That no single model can answer one prompt two ways is a matter of information, not of training
|
||||
(SI Text S1, Proposition S2). What the population view adds is where the cliff sits: it moves with the
|
||||
share of shared inputs on which the parents' conventions contradict (Fig. 5B), and in a population
|
||||
that share grows whenever lineages adopt conventions independently.
|
||||
|
||||
The sharpest test is whether isolation emerges with no conflicting signal anywhere, as a true
|
||||
Bateson–Dobzhansky–Muller incompatibility would (each lineage's changes are harmless alone). Children
|
||||
were diverged with no conflicting signal anywhere, using complementary class specialists and divergent input
|
||||
conventions, to 6.4× the base training. No isolation emerged (residual 0.000 throughout). Instead the
|
||||
merge rescued the two specialists: each had forgotten the other's classes and scored about 0.50
|
||||
alone, and their weight-average scored 0.955 at every divergence tested. Divergence six times the
|
||||
base training produced the strongest Fisher–Muller effect in the paper, and no incompatibility. The
|
||||
language-model tier gave the same double result in each of three training seeds (Fig. 5 C and D):
|
||||
conflicting conventions produce function-specific breakdown (at full conflict the merge scores 0.02,
|
||||
0.12 and 0.16 on the conflicted function against 0.23–0.25 for either parent, while a
|
||||
budget-controlled design shows the disjoint skills merge unharmed), and over-training disjoint
|
||||
specialists from 1 to 12 epochs (cf. the expert-duration effect; 84) produces no isolation, the merge
|
||||
improving instead in every seed (0.76 → 0.95 on the parents' private tasks). Longer expert training is reported to harm merging (84, 85) and deepening
|
||||
specialisation to lower feature similarity between experts (68); in the regimes tested here neither
|
||||
produced isolation without conflict (a complementary-class merge rescued by alignment had been seen
|
||||
before on label-skewed splits; 44). In every tier tested, isolation had to be provoked by functional
|
||||
conflict; specialisation alone did not speciate. What breaks merging is conflicting conventions on shared
|
||||
circuitry, not divergence as such, and this is the cost the obligate-merge arm of the six-generation
|
||||
population paid from its fourth generation onward, once its partners held skills it had already
|
||||
learned under conventions of its own (Fig. 4B).
|
||||
|
||||
*(FIG:fig5)*
|
||||
|
||||
### Predicting merge damage before merging
|
||||
|
||||
If functional conflict is what breaks a merge, measuring it on the parents should forecast the
|
||||
damage before any merge is made. I tested this on thirty-nine pairs of LoRA specialists (13 training
|
||||
conditions × 3 seeds), built so that three properties of a pair vary independently of one another
|
||||
(Fig. 3D): *conflict* (the parents answer the same prompts under contradictory conventions, with their
|
||||
private training budgets held fixed), *compatible overlap* (the parents are trained on the same
|
||||
prompts under the same convention, so they share data and volume without conflict), and *duration*
|
||||
(the parents are trained longer on disjoint tasks, so their weights diverge with no conflict at all).
|
||||
|
||||
Six quantities were computed on each pair before merging. Two are functional, obtained by putting the
|
||||
same probe questions to both parents (probes drawn without knowledge of where the conflict lies): the
|
||||
fraction of probes on which the parents answer differently (*raw disagreement*), and the fraction on
|
||||
which they answer differently and both confidently (*confidence-weighted conflict*, proposed here as
|
||||
the better proxy for merge-relevant interaction, because raw disagreement also counts the harmless
|
||||
case in which one parent is merely ignorant). Three describe the geometry of the parents' weight
|
||||
changes: the cosine similarity and the distance between the two LoRA updates, and the alignment of the
|
||||
two tasks' gradients at the shared base (86). The sixth is a baseline, each parent's accuracy on the
|
||||
other's task. The pre-registered outcome is the *merge penalty*: how far the merged model falls short
|
||||
of the accuracy the pair would reach if each task were answered by the parent that owns it. In
|
||||
population genetics that shortfall is *hybrid load*, the fitness a hybrid loses relative to what its
|
||||
parents' genes could jointly supply.
|
||||
|
||||
Functional disagreement measured before merging predicted the merge penalty (Fig. 3 D and E). Its
|
||||
rank correlation with the penalty was ρ = +0.45 (+0.46 for the confidence-weighted variant), with a
|
||||
95% confidence interval excluding zero (bootstrapped over conditions, because the three seeds of one
|
||||
condition are not independent), and it kept ρ ≈ 0.35–0.40 when each condition in turn was held out
|
||||
and predicted from the rest. The cosine and the distance
|
||||
between LoRA updates showed no detectable association, and gradient alignment carried intermediate
|
||||
signal. The direction agrees with three recent reports: hidden-state distance between parents tracks
|
||||
merging loss where four parameter-space metrics, cosine among them, do not (87); global cosine, sign
|
||||
conflict and subspace overlap miss functional interference between task vectors (88); and gradient
|
||||
distance outpredicts task-vector cosine in vision (86). Those studies are correlational or in-sample;
|
||||
the design here holds conditions out and adds the control below. At this sample size the differences
|
||||
between predictors are not individually significant, only these baselines were tested, and three
|
||||
seeds leave substantial uncertainty about generalisation, though the functional measures led within
|
||||
every seed taken alone (Supplementary Information, Table S2).
|
||||
|
||||
The compatible-overlap control produced a finding of its own. In an initial grid that varied only
|
||||
conflict and duration, the best predictor was the cosine between LoRA updates (ρ = +0.60). Parents
|
||||
trained on the same prompts have aligned weight changes and also merge worse, so the cosine was
|
||||
reading shared training data, not incompatibility: adding pairs that share prompts without
|
||||
conflicting collapsed its correlation to +0.03. Any merge predictor validated on a grid in which
|
||||
conflict and shared data vary together inherits this artefact. I know of no study that has controlled
|
||||
for it, and it bears on the merge-prediction literature (86–88) independently of the biology. One
|
||||
pre-registered prediction failed: confidence weighting did not beat raw disagreement as a rank
|
||||
predictor, so the evidence supports functional disagreement in general and not the
|
||||
incompatibility-specific refinement. Headline quantitative results,
|
||||
with sample sizes and uncertainty, are collected in Supplementary Information, Table S2.
|
||||
|
||||
## Discussion
|
||||
|
||||
**Design rules.** *Ground every generation* in verified reality. A few percent of real data kept
|
||||
most of the diversity here, but what protects a capability is the number of real examples of it that
|
||||
arrive each generation, not their share of the training set (the one-migrant-per-generation rule,
|
||||
35; the few hundred documents that poison a model of any size, 62). The rarest capabilities
|
||||
therefore need a budget of about `1/p` real examples per generation, real data aimed at them, or a
|
||||
parent that still holds them. *Route or screen rather than average whenever the average falls short
|
||||
of the best parent on any task.* On the hard families routing (sending each input to the specialist
|
||||
that owns it) beat weight averaging by 0.09 in every seed and screening candidate merges beat it by
|
||||
0.07 (Fig. 3C), and the plain average lost nothing only where the base already answered at ceiling.
|
||||
*Stop recombining early, by rule or by test.* A fixed early stop, or scoring the unchanged parent
|
||||
beside every candidate merge, avoided the collapse of obligate merging at no cost against never
|
||||
merging. *When a partner must be found, prefer a stored ancestor to a divergent contemporary*, which
|
||||
shares every convention and beat a contemporary in every seed. *Preserve diversity as an objective
|
||||
in itself*, since selection can only keep what exists. *Before merging, measure functional
|
||||
conflict* (whether the parents answer the same prompts differently), which was cheap and predictive
|
||||
where weight distance was not; divergence or specialisation alone is no evidence of incompatibility,
|
||||
since what broke merging in every regime was conflicting conventions. The inheritance model adds one
|
||||
untested rule: merge sparingly, and with offspring selection, when skills are entangled (40; Fig.
|
||||
S13).
|
||||
|
||||
**Continual learning at the population scale.** Continual learning, the machine-learning field that teaches one network new things without erasing old ones, has found remedies for
|
||||
forgetting that are this framework's operators applied to a single lineage. Rehearsal of stored real
|
||||
data (28, 29) is grounding, and the replay fractions the field has settled on (about 1% in
|
||||
instruction tuning, 89; 5% to 25% in continual pretraining, 90) look inconsistent only as fractions:
|
||||
at typical batch sizes each delivers tens to thousands of replayed examples of a skill per step, far
|
||||
more than the ten copies per generation that hold 95% of diversity. Pseudo-rehearsal, replaying the
|
||||
network's own generated samples (91, 92), is grounding with no real data at all, harmless over one
|
||||
step and compounding over generations (Fig. 2) unless the samples are verified (33, 93). Adapters on
|
||||
a frozen base (94, 95) keep lineages decorrelated, consolidating them into the base is the slow
|
||||
store of complementary-learning-systems models (96–98), and merging as a continual-learning
|
||||
mechanism (72, 73, 80, 99, 100) accumulates new skills and breaks on contradictory conventions (81,
|
||||
82), as the six-generation population did. That rare knowledge is forgotten first (101–103) is tail
|
||||
extinction observed one model at a time: forgetting and collapse differ in mechanism (interference
|
||||
against sampling drift) but lose the same items to the same remedies.
|
||||
|
||||
Two results carry over directly. A pre-merge test, disagreement between the parents on shared
|
||||
probes, predicts interference where weight distance does not, with the control for shared training
|
||||
data that earlier regression (86) and distance (87, 88) studies lacked. Weight distance fails
|
||||
because two adapters that learned the same skill in different runs are nearly orthogonal (cosine
|
||||
0.006) yet merge with no penalty: most of a weight difference is neutral, like most DNA
|
||||
substitutions (Supplementary Information, Text S3). Whether to consolidate specialists or keep them
|
||||
modular (72, 73, 98–100) follows the same rule: route while the plain average falls short of the
|
||||
best parent, average once it does not. Since drift removes rare items first and a lost item is
|
||||
recoverable only while some parent or source still holds a copy (Fig. S3), the number to watch is
|
||||
accuracy on the rarest items, not the mean. Apparent forgetting can also be task misrecognition
|
||||
rather than lost capability (104), which the oracle excludes at the small tiers only.
|
||||
|
||||
**Three theories of heredity.** A model population runs on all three historical accounts of
|
||||
inheritance at once. A child continues training its parent's adapter, so what the parent learned in
|
||||
its lifetime passes on (Lamarck); weight averaging blends the parents (Jenkin); and a verifier
|
||||
selects among variants (Darwin). Biology discarded the first for want of a mechanism and the second
|
||||
because blending would swamp any new variant. Here Lamarckian transmission is what lets a lineage
|
||||
accumulate skills (the never-merge arm reached 0.80 without any recombination). Blending dilutes
|
||||
whichever parent's skill is rarest, so routing and offspring screening pay only where the plain
|
||||
average falls short of the best parent (Fig. 3B–C). Grounded selection is the only operator that
|
||||
looks outside the population, and removing it is the one ablation that fails outright: a population
|
||||
selected on agreement with its own consensus settles at 0.48 against 0.78 for the full society (Fig.
|
||||
4D–F), confident and wrong.
|
||||
|
||||
**Recombination's speed advantage.** In the six-generation population recombination
|
||||
bought speed and not level: an early lead, then parity with never merging once every skill had
|
||||
reached every lineage. The Fisher–Muller argument (that sex speeds adaptation by combining
|
||||
beneficial variants that arose in different individuals) predicts parity in exactly this case, since
|
||||
the curriculum guaranteed every lineage every skill, and that letting the faster lineages leave more
|
||||
descendants should break the parity, which it did not: selected populations reached the same
|
||||
ceiling, recombination's lead again gone by generation 5. The ceiling is what one adapter can carry,
|
||||
and sex and selection only reach it sooner. The inheritance-model society climbs under the same
|
||||
operators (Fig. 4D–F) because no curriculum delivers its skills; a language-model population in
|
||||
which some skills come only by merging would separate the two regimes. Three refinements the
|
||||
framework proposed were not supported: weighting disagreement by confidence did not improve the
|
||||
merge predictor, the declinable merge did not track complementarity as a recombination modifier (a
|
||||
gene that sets how often other genes are shuffled) would, and selection did not turn recombination's
|
||||
speed advantage into a level advantage. What population genetics supplied was the questions, the
|
||||
nulls and the controls, not a mechanism only it can explain.
|
||||
|
||||
**Open problems.** The hardest is the fitness function. Selection optimises what is measured, and
|
||||
for knowledge the persuasive and the true compete; a reality that can refuse is the only anchor, and
|
||||
building it into institutions (verification, replication, challenge among models) is a problem this
|
||||
paper poses and does not solve. Whether speciation emerges at scale is the second: here isolation
|
||||
had to be provoked by conflicting conventions, and whether long specialisation supplies such
|
||||
conflict on its own (84, 85) needs a population diverged far longer than any here. Collapse also
|
||||
reaches style: models trained on model output lose lexical and syntactic diversity (105) and
|
||||
model-assisted writing is individually better but collectively less diverse (106, 107), because a
|
||||
voice is a distribution over rare variants, exactly what drift erases first and blending averages
|
||||
away; whether the remedies transfer is untested.
|
||||
|
||||
**Outlook.** Language-model development is consolidating around the operators studied here:
|
||||
synthetic-data flywheels (inheritance), merging and routing of specialist fine-tunes (recombination
|
||||
and population structure), verifier-gated pipelines (grounded selection), and periodic consolidation
|
||||
of adapters into new bases. The forecast is a population that recombines early and consolidates
|
||||
late, until conflicting conventions split it into lineages connected by routing instead of merging,
|
||||
and the pre-merge conflict test can measure which way it goes. Biology receives in return a model
|
||||
system in which every genotype, environment and mating decision is observable and manipulable, and
|
||||
the evolution of sex can be studied with interventions (unbounded parents, offspring preview,
|
||||
directed mating) no living system permits.
|
||||
|
||||
## Materials and Methods
|
||||
|
||||
Full procedures, parameters, and replicate counts are in Supplementary Information, Methods. Appendix 1 (*The figures explained*) restates every main and supplementary figure with a legend
|
||||
that explains the machine-learning experiment behind it for readers from biology.
|
||||
|
||||
**Inheritance-model tier.** A NumPy/SciPy Wright–Fisher simulator over `K`-item distributions
|
||||
(knowledge as `p_t`, Zipf-tailed truth `p*`, and drift–grounding–refit generations), extended with a
|
||||
learning kernel (a smoothing and a sharpening knob on the refit), multi-locus genotypes on additive
|
||||
and Kauffman NK landscapes, n-parent crossover, and finite-population loops. All parameters live in
|
||||
per-experiment YAML configs. Every run derives its randomness from one master seed
|
||||
(`SeedSequence.spawn`) and is bitwise reproducible. Scientific-validation tests assert the closed
|
||||
forms to within 0.5% and run in CI alongside 151 further correctness tests.
|
||||
|
||||
**Neural tier.** Trained-network experiments realise the same abstractions against an exact oracle.
|
||||
Histogram, RNN, MLP and VAE generators run on a synthetic mode universe, where the histogram model
|
||||
reduces the harness exactly to the inheritance model (the bridge gate), and a convolutional VAE runs
|
||||
on MNIST with a frozen CNN oracle at 98.5% mode accuracy (its confusion matrix is recorded as the
|
||||
measurement floor). Speciation experiments fork no-BatchNorm MLPs (784–512–512–10) from a shared base,
|
||||
weight-average them, and measure the error barrier along the straight line between the two weight
|
||||
vectors (the linear-mode-connectivity barrier) before and after alignment. Alignment composes
|
||||
deterministic Git Re-Basin permutation matching with exact per-unit scale canonicalisation, the unit
|
||||
symmetry group of this architecture class taken as the search space, and is gated by exact recovery
|
||||
of a permuted-and-rescaled copy. Control recovery does not establish global optimality.
|
||||
|
||||
**Language-model tier.** LoRA specialists (rank 16) on procedurally generated task families with an
|
||||
exact-match verifier, on frozen Qwen2.5-Instruct bases (0.5B on one 16 GB GPU; 7B on one L40S).
|
||||
Operators: weight-space merges via adapter arithmetic (the plain weight average, or soup, and TIES,
|
||||
which reconciles the sign of each parameter change across parents before averaging; 4), per-input
|
||||
routing, and Dirichlet-sampled offspring populations screened on held-out validation splits. The
|
||||
six-generation population uses the Qwen2.5-1.5B base model, six public datasets with per-family
|
||||
exact-match or execution verifiers, and rank-16 adapters continued from the parent adapter each
|
||||
generation (300 new and 150 replay examples, 3 epochs), merged over the weight grid {0.5/0.5,
|
||||
0.3/0.7, 0.7/0.3} chosen on 20 validation items per family and reported on 60 held-out test items,
|
||||
with the unchanged parent as a further candidate in the declinable arm; three training seeds.
|
||||
Multi-seed protocols fix the test sets and vary the training seed. The predictive test computes all
|
||||
predictors pre-merge (generation confidence from token log-probabilities, base-model gradient
|
||||
cosines, and LoRA-delta geometry computed exactly in the adapters' low-rank factor space) and
|
||||
evaluates merges on held-out tests. Its rows are not independent, because parents share task-data
|
||||
seeds across conditions, so inference is condition-clustered and per-seed and leave-one-seed-out
|
||||
sensitivity are reported alongside; a committed script produces these statistics. Statistical,
|
||||
per-seed reproducibility is documented for the GPU tiers.
|
||||
|
||||
**Data and code availability.** All code, configs, seeds, results artifacts (with content hashes),
|
||||
figures, and a one-command reproduction script will be deposited openly (repository + archived DOI) on
|
||||
publication; every figure in this paper regenerates from committed artifacts without re-simulation.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
This work was done in close collaboration with Claude Opus 5 and Claude Fable 5.1 (Anthropic). I
|
||||
conceived the framework and the population-genetic reading, chose the questions and the experiments,
|
||||
set the pre-registered predictions and falsifiers, directed every stage, judged the results and edited
|
||||
the text; the models contributed to the experimental design, wrote the code and ran the experiments
|
||||
under my direction, performed the analyses and drafted the text. I take full responsibility for the
|
||||
content. I thank Imperial College London for funding.
|
||||
|
||||
## References
|
||||
|
||||
1. B. Laufer, H. Oderinwale, J. Kleinberg, Anatomy of a machine learning ecosystem: 2 million models on Hugging Face. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2508.06811.
|
||||
2. E. Horwitz, A. Shul, Y. Hoshen, Unsupervised model tree heritage recovery. *Int. Conf. Learn. Represent.* (2025). https://doi.org/10.48550/arXiv.2405.18432.
|
||||
3. W. Jiang, et al., PeaTMOSS: A dataset and initial analysis of pre-trained models in open-source software. *Proc. Int. Conf. Min. Softw. Repos.* (2024). https://doi.org/10.48550/arXiv.2402.00699.
|
||||
4. P. Yadav, D. Tam, L. Choshen, C. Raffel, M. Bansal, TIES-Merging: Resolving interference when merging models. *Adv. Neural Inf. Process. Syst.* **36** (2023). https://doi.org/10.48550/arXiv.2306.01708.
|
||||
5. T. Akiba, M. Shing, Y. Tang, Q. Sun, D. Ha, Evolutionary optimization of model merging recipes. *Nat. Mach. Intell.* **7**, 195–204 (2025).
|
||||
6. C. Goddard, et al., Arcee's MergeKit: A toolkit for merging large language models. *Proc. Conf. Empir. Methods Nat. Lang. Process. (Industry Track)*, 477–485 (2024). https://doi.org/10.48550/arXiv.2403.13257.
|
||||
7. E. Yang, et al., Model merging in LLMs, MLLMs, and beyond: Methods, theories, applications and opportunities. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2408.07666.
|
||||
8. Y. Zhang, et al., Nature-inspired population-based evolution of large language models (GENOME). arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2503.01155.
|
||||
9. J. Abrantes, et al., Competition and attraction improve model fusion (M2N2). *Proc. Genet. Evol. Comput. Conf.* (2025). https://doi.org/10.48550/arXiv.2508.16204.
|
||||
10. V. Subramaniam, et al., Multiagent finetuning: Self-improvement with diverse reasoning chains. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2501.05707.
|
||||
11. Y. Hu, Y. Yao, N. Zhang, H. Chen, S. Deng, Exploring model kinship for merging large language models. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.12613.
|
||||
12. NVIDIA (B. Adler, et al.), Nemotron-4 340B technical report. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2406.11704.
|
||||
13. M. Abdin, et al., Phi-4 technical report. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2412.08905.
|
||||
14. Y. Wang, et al., Self-Instruct: Aligning language models with self-generated instructions. *Proc. Annu. Meet. Assoc. Comput. Linguist.* (2023). https://doi.org/10.48550/arXiv.2212.10560.
|
||||
15. B. Thompson, et al., A shocking amount of the web is machine translated: Insights from multi-way parallelism. *Findings Assoc. Comput. Linguist.: ACL* (2024). https://doi.org/10.48550/arXiv.2401.05749.
|
||||
16. W. Liang, et al., Monitoring AI-modified content at scale: A case study on the impact of ChatGPT on AI conference peer reviews. *Proc. Int. Conf. Mach. Learn.* (2024). https://doi.org/10.48550/arXiv.2403.07183.
|
||||
17. P. Villalobos, et al., Position: Will we run out of data? Limits of LLM scaling based on human-generated data. *Proc. Int. Conf. Mach. Learn.* (2024). https://doi.org/10.48550/arXiv.2211.04325.
|
||||
18. L. Brinkmann, et al., Machine culture. *Nat. Hum. Behav.* **7**, 1855–1868 (2023).
|
||||
19. J. S. Park, et al., Generative agents: Interactive simulacra of human behavior. *Proc. ACM Symp. User Interface Softw. Technol.* (2023). https://doi.org/10.48550/arXiv.2304.03442.
|
||||
20. T. Guo, et al., Large language model based multi-agents: A survey of progress and challenges. *Proc. Int. Joint Conf. Artif. Intell.* (2024). https://doi.org/10.48550/arXiv.2402.01680.
|
||||
21. N. Tomasev, et al., Virtual agent economies. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2509.10147.
|
||||
22. A. Livnat, C. Papadimitriou, Sex as an algorithm: The theory of evolution under the lens of computation. *Commun. ACM* **59**, 84–93 (2016).
|
||||
23. I. Shumailov, et al., AI models collapse when trained on recursively generated data. *Nature* **631**, 755–759 (2024).
|
||||
24. J. P. Crutchfield, S. Whalen, Structural drift: The population dynamics of sequential learning. *PLOS Comput. Biol.* **8**, e1002510 (2012).
|
||||
25. S. Riis, Drift and selection in LLM text ecosystems. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2604.08554.
|
||||
26. M. Benati, A. Londei, D. Lanzieri, V. Loreto, First-extinction law for resampling processes. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2509.20101.
|
||||
27. Y. Yoon, D. Hu, I. Weissburg, Y. Qin, H. Jeong, Model collapse in the self-consuming chain of diffusion finetuning: A novel perspective from quantitative trait modeling. *Int. Conf. Learn. Represent.* (2025). https://doi.org/10.48550/arXiv.2407.17493.
|
||||
28. M. McCloskey, N. J. Cohen, Catastrophic interference in connectionist networks: The sequential learning problem. *Psychol. Learn. Motiv.* **24**, 109–165 (1989).
|
||||
29. R. M. French, Catastrophic forgetting in connectionist networks. *Trends Cogn. Sci.* **3**, 128–135 (1999).
|
||||
30. H. J. Muller, The relation of recombination to mutational advance. *Mutat. Res.* **1**, 2–9 (1964).
|
||||
31. S. Alemohammad, et al., Self-consuming generative models go MAD. *Int. Conf. Learn. Represent.* (2024). https://doi.org/10.48550/arXiv.2307.01850.
|
||||
32. Q. Bertrand, A. J. Bose, A. Duplessis, M. Jiralerspong, G. Gidel, On the stability of iterative retraining of generative models on their own data. *Int. Conf. Learn. Represent.* (2024). https://doi.org/10.48550/arXiv.2310.00429.
|
||||
33. B. Yi, Q. Liu, Y. Cheng, H. Xu, Escaping model collapse via synthetic data verification. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2510.16657.
|
||||
34. M. Gerstgrasser, et al., Is model collapse inevitable? Breaking the curse of recursion by accumulating real and synthetic data. *Conf. Lang. Model.* (2024). https://doi.org/10.48550/arXiv.2404.01413.
|
||||
35. L. S. Mills, F. W. Allendorf, The one-migrant-per-generation rule in conservation and management. *Conserv. Biol.* **10**, 1509–1518 (1996).
|
||||
36. M. Wortsman, et al., Model soups: Averaging weights of multiple fine-tuned models improves accuracy without increasing inference time. *Proc. Int. Conf. Mach. Learn.* (2022). https://doi.org/10.48550/arXiv.2203.05482.
|
||||
37. R. A. Fisher, *The Genetical Theory of Natural Selection* (Clarendon Press, 1930).
|
||||
38. H. J. Muller, Some genetic aspects of sex. *Am. Nat.* **66**, 118–138 (1932).
|
||||
39. S. P. Otto, M. W. Feldman, Deleterious mutations, variable epistatic interactions, and the evolution of recombination. *Theor. Popul. Biol.* **51**, 134–147 (1997).
|
||||
40. A. R. Templeton, "Coadaptation and outbreeding depression" in *Conservation Biology: The Science of Scarcity and Diversity*, M. E. Soulé, Ed. (Sinauer, 1986), pp. 105–116.
|
||||
41. M. Tomassini, *Spatially Structured Evolutionary Algorithms: Artificial Evolution in Space and Time* (Springer, 2005).
|
||||
42. H. A. Orr, The population genetics of speciation: The evolution of hybrid incompatibilities. *Genetics* **139**, 1805–1813 (1995).
|
||||
43. H. A. Orr, M. Turelli, The evolution of postzygotic isolation: Accumulating Dobzhansky–Muller incompatibilities. *Evolution* **55**, 1085–1094 (2001).
|
||||
44. S. K. Ainsworth, J. Hayase, S. Srinivasa, Git Re-Basin: Merging models modulo permutation symmetries. *Int. Conf. Learn. Represent.* (2023). https://doi.org/10.48550/arXiv.2209.04836.
|
||||
45. E. Sharma, D. M. Roy, G. K. Dziugaite, The non-local model merging problem: Permutation symmetries and variance collapse. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.12766.
|
||||
46. K. Jordan, H. Sedghi, O. Saukh, R. Entezari, B. Neyshabur, REPAIR: REnormalizing permuted activations for interpolation repair. *Int. Conf. Learn. Represent.* (2023). https://doi.org/10.48550/arXiv.2211.08403.
|
||||
47. G. Stoica, et al., ZipIt! Merging models from different tasks without training. *Int. Conf. Learn. Represent.* (2024). https://doi.org/10.48550/arXiv.2305.03053.
|
||||
48. A. Kleiman, G. K. Dziugaite, J. Frankle, S. Kakade, M. Paul, Soup to go: Mitigating forgetting during continual learning with model averaging. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2501.05559.
|
||||
49. X. Yuan, et al., Superficial self-improved reasoners benefit from model merging. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2503.02103.
|
||||
50. N. H. Barton, A general model for the evolution of recombination. *Genet. Res.* **65**, 123–144 (1995).
|
||||
51. S. P. Otto, T. Lenormand, Resolving the paradox of sex and recombination. *Nat. Rev. Genet.* **3**, 252–261 (2002).
|
||||
52. L. Altenberg, M. W. Feldman, Selection, generalized transmission and the evolution of modifier genes. I. The reduction principle. *Genetics* **117**, 559–572 (1987).
|
||||
53. T. Fukuda, H. Kera, K. Kawamoto, Adapter merging with centroid prototype mapping for scalable class-incremental learning. *Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit.* (2025). https://doi.org/10.48550/arXiv.2412.18219.
|
||||
54. D. Shenaj, O. Bohdal, T. Ceritli, M. Ozay, P. Zanuttigh, U. Michieli, K-Merge: Online continual merging of adapters for on-device large language models. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2510.13537.
|
||||
55. J. Lehman, K. O. Stanley, Abandoning objectives: Evolution through the search for novelty alone. *Evol. Comput.* **19**, 189–223 (2011).
|
||||
56. S. Wright, Evolution in Mendelian populations. *Genetics* **16**, 97–159 (1931).
|
||||
57. E. Dohmatob, Y. Feng, P. Yang, F. Charton, J. Kempe, A tale of tails: Model collapse as a change of scaling laws. *Proc. Int. Conf. Mach. Learn.* (2024). https://doi.org/10.48550/arXiv.2402.07043.
|
||||
58. E. Dohmatob, Y. Feng, A. Subramonian, J. Kempe, Strong model collapse. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.04840.
|
||||
59. A. Garg, S. Bhattacharya, P. Sur, Preventing model collapse under overparametrization: Optimal mixing ratios for interpolation learning and ridge regression. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2509.22341.
|
||||
60. A. T. Suresh, A. Thangaraj, A. N. K. Khandavally, Rate of model collapse in recursive training. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2412.17646.
|
||||
61. J. Kazdan, et al., Collapse or thrive? Perils and promises of synthetic data in a self-generating world. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2410.16713.
|
||||
62. A. Souly, et al., Poisoning attacks on LLMs require a near-constant number of poison samples. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2510.07192.
|
||||
63. F. Jenkin, The origin of species [review]. *North Br. Rev.* **46**, 277–318 (1867).
|
||||
64. M. Bulmer, Did Jenkin's swamping argument invalidate Darwin's theory of natural selection? *Br. J. Hist. Sci.* **37**, 281–297 (2004).
|
||||
65. A. Malinin, B. Mlodozeniec, M. Gales, Ensemble distribution distillation. *Int. Conf. Learn. Represent.* (2020). https://doi.org/10.48550/arXiv.1905.00076.
|
||||
66. M. Li, et al., Branch-Train-Merge: Embarrassingly parallel training of expert language models. arXiv [Preprint] (2022). https://doi.org/10.48550/arXiv.2208.03306.
|
||||
67. X. Yuan, et al., Behavior knowledge merge in reinforced agentic models. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2601.13572.
|
||||
68. J. Pari, S. Jelassi, P. Agrawal, Collective model intelligence requires compatible specialization. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2411.02207.
|
||||
69. E. J. Hu, et al., LoRA: Low-rank adaptation of large language models. *Int. Conf. Learn. Represent.* (2022). https://doi.org/10.48550/arXiv.2106.09685.
|
||||
70. L. Yu, B. Yu, H. Yu, F. Huang, Y. Li, Language models are super Mario: Absorbing abilities from homologous models as a free lunch. *Proc. Int. Conf. Mach. Learn.* (2024). https://doi.org/10.48550/arXiv.2311.03099.
|
||||
71. S. A. Kauffman, S. Levin, Towards a general theory of adaptive walks on rugged landscapes. *J. Theor. Biol.* **128**, 11–45 (1987).
|
||||
72. D. Marczak, B. Twardowski, T. Trzciński, S. Cygert, MagMax: Leveraging model merging for seamless continual learning. *Proc. Eur. Conf. Comput. Vis.* (2024). https://doi.org/10.48550/arXiv.2407.06322.
|
||||
73. S. Dziadzio, et al., How to merge your multimodal models over time? *Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit.* (2025). https://doi.org/10.48550/arXiv.2412.06712.
|
||||
74. A. Williams, N. Nangia, S. R. Bowman, A broad-coverage challenge corpus for sentence understanding through inference. *Proc. Conf. North Am. Chapter Assoc. Comput. Linguist. Hum. Lang. Technol.*, 1112–1122 (2018).
|
||||
75. P. Clark, et al., Think you have solved question answering? Try ARC, the AI2 Reasoning Challenge. arXiv [Preprint] (2018). https://doi.org/10.48550/arXiv.1803.05457.
|
||||
76. R. Zellers, A. Holtzman, Y. Bisk, A. Farhadi, Y. Choi, HellaSwag: Can a machine really finish your sentence? *Proc. Annu. Meet. Assoc. Comput. Linguist.*, 4791–4800 (2019).
|
||||
77. P. Rajpurkar, J. Zhang, K. Lopyrev, P. Liang, SQuAD: 100,000+ questions for machine comprehension of text. *Proc. Conf. Empir. Methods Nat. Lang. Process.*, 2383–2392 (2016).
|
||||
78. C. Clark, et al., BoolQ: Exploring the surprising difficulty of natural yes/no questions. *Proc. Conf. North Am. Chapter Assoc. Comput. Linguist. Hum. Lang. Technol.*, 2924–2936 (2019).
|
||||
79. K. Sakaguchi, R. Le Bras, C. Bhagavatula, Y. Choi, WinoGrande: An adversarial Winograd schema challenge at scale. *Proc. AAAI Conf. Artif. Intell.* **34**, 8732–8740 (2020).
|
||||
80. L. Thede, K. Roth, M. Bethge, Z. Akata, T. Hartvigsen, WikiBigEdit: Understanding the limits of lifelong knowledge editing in LLMs. *Proc. Int. Conf. Mach. Learn.* (2025). https://doi.org/10.48550/arXiv.2503.05683.
|
||||
81. S. Clemente, et al., In praise of stubbornness: An empirical case for cognitive-dissonance aware continual update of knowledge in LLMs. arXiv [Preprint] (2025). https://doi.org/10.48550/arXiv.2502.04390.
|
||||
82. J. Störk, Interference and retention in continual learning. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2607.09202.
|
||||
83. T. Li, Z. Shen, Scaling linear mode connectivity and merging to billion-parameter pretrained transformers. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2606.23607.
|
||||
84. N. Kozodoi, Z. Afolabi, J. Butler, Are we merging the right models? Impact of expert training duration on model merging for LLMs. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2607.11997.
|
||||
85. S. Horoi, G. Wolf, E. Belilovsky, G. K. Dziugaite, From memorization to parameter interference: How overtraining experts harms model merging. *Proc. Int. Conf. Mach. Learn.* (2026). https://doi.org/10.48550/arXiv.2506.14126.
|
||||
86. L. Zhou, B. Zhao, R. Yu, E. Rodolà, Demystifying mergeability: Interpretable properties to predict model merging success. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2601.22285.
|
||||
87. Y. Cao, et al., An empirical study and theoretical explanation on task-level model-merging collapse. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2603.09463.
|
||||
88. C. Zhu, X. Li, T. Cai, When do task vectors interfere? Mapping the validity boundaries of weight-space composition. arXiv [Preprint] (2026). https://doi.org/10.48550/arXiv.2608.09490.
|
||||
89. T. Scialom, T. Chakrabarty, S. Muresan, Fine-tuned language models are continual learners. *Proc. Conf. Empir. Methods Nat. Lang. Process.* (2022). https://doi.org/10.48550/arXiv.2205.12393.
|
||||
90. A. Ibrahim, et al., Simple and scalable strategies to continually pre-train large language models. *Trans. Mach. Learn. Res.* (2024). https://doi.org/10.48550/arXiv.2403.08763.
|
||||
91. A. Robins, Catastrophic forgetting, rehearsal and pseudorehearsal. *Connect. Sci.* **7**, 123–146 (1995).
|
||||
92. H. Shin, J. K. Lee, J. Kim, J. Kim, Continual learning with deep generative replay. *Adv. Neural Inf. Process. Syst.* **30** (2017). https://doi.org/10.48550/arXiv.1705.08690.
|
||||
93. Y. Feng, et al., Beyond model collapse: Scaling up with synthesized data requires verification. arXiv [Preprint] (2024). https://doi.org/10.48550/arXiv.2406.07515.
|
||||
94. A. A. Rusu, et al., Progressive neural networks. arXiv [Preprint] (2016). https://doi.org/10.48550/arXiv.1606.04671.
|
||||
95. D. Biderman, et al., LoRA learns less and forgets less. *Trans. Mach. Learn. Res.* (2024). https://doi.org/10.48550/arXiv.2405.09673.
|
||||
96. J. L. McClelland, B. L. McNaughton, R. C. O'Reilly, Why there are complementary learning systems in the hippocampus and neocortex: Insights from the successes and failures of connectionist models of learning and memory. *Psychol. Rev.* **102**, 419–457 (1995).
|
||||
97. D. Kumaran, D. Hassabis, J. L. McClelland, What learning systems do intelligent agents need? Complementary learning systems theory updated. *Trends Cogn. Sci.* **20**, 512–534 (2016).
|
||||
98. J. Schwarz, et al., Progress & Compress: A scalable framework for continual learning. *Proc. Int. Conf. Mach. Learn.* (2018).
|
||||
99. G. Ilharco, et al., Editing models with task arithmetic. *Int. Conf. Learn. Represent.* (2023). https://doi.org/10.48550/arXiv.2212.04089.
|
||||
100. A. Alexandrov, et al., Mitigating catastrophic forgetting in language transfer via model merging. *Findings Assoc. Comput. Linguist.: EMNLP* (2024). https://doi.org/10.48550/arXiv.2407.08699.
|
||||
101. M. Toneva, et al., An empirical study of example forgetting during deep neural network learning. *Int. Conf. Learn. Represent.* (2019). https://doi.org/10.48550/arXiv.1812.05159.
|
||||
102. N. Kandpal, H. Deng, A. Roberts, E. Wallace, C. Raffel, Large language models struggle to learn long-tail knowledge. *Proc. Int. Conf. Mach. Learn.* (2023). https://doi.org/10.48550/arXiv.2211.08411.
|
||||
103. X. Liu, et al., Long-tailed class incremental learning. *Proc. Eur. Conf. Comput. Vis.* (2022). https://doi.org/10.48550/arXiv.2210.00266.
|
||||
104. S. Kotha, J. M. Springer, A. Raghunathan, Understanding catastrophic forgetting in language models via implicit inference. *Int. Conf. Learn. Represent.* (2024). https://doi.org/10.48550/arXiv.2309.10105.
|
||||
105. Y. Guo, G. Shang, M. Vazirgiannis, C. Clavel, The curious decline of linguistic diversity: Training language models on synthetic text. *Findings Assoc. Comput. Linguist.: NAACL* (2024). https://doi.org/10.48550/arXiv.2311.09807.
|
||||
106. V. Padmakumar, H. He, Does writing with language models reduce content diversity? *Int. Conf. Learn. Represent.* (2024). https://doi.org/10.48550/arXiv.2309.05196.
|
||||
107. A. R. Doshi, O. P. Hauser, Generative AI enhances individual creativity but reduces the collective diversity of novel content. *Sci. Adv.* **10**, eadn5290 (2024).
|
||||
BIN
paper/manuscript/main.pdf
Normal file
BIN
paper/manuscript/main.pdf
Normal file
Binary file not shown.
27
paper/manuscript/main.tex
Normal file
27
paper/manuscript/main.tex
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
% Manuscript draft — readable single-column build for review/iteration (tectonic/XeLaTeX). Content is
|
||||
% generated from main.md by build.py; journal-template reflow happens at submission.
|
||||
\ifdefined\XeTeXversion\else\ifdefined\pdfoutput\pdfoutput=1\fi\fi
|
||||
\documentclass[11pt]{article}
|
||||
|
||||
\usepackage[a4paper, margin=1.0in]{geometry}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{amsmath, amssymb}
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
\usepackage{microtype}
|
||||
|
||||
\setlength{\parskip}{0.35em}
|
||||
|
||||
\title{\textbf{The evolution of sex for artificial intelligence}\\[0.5em]
|
||||
\large A population-genetic framework for multigenerational model populations}
|
||||
\author{Giorgio F.\ Gilestro\\[0.2em]
|
||||
\normalsize Department of Life Sciences, Imperial College London\\
|
||||
\normalsize \href{mailto:giorgio@gilest.ro}{giorgio@gilest.ro} \,\(\cdot\)\,
|
||||
\href{https://lab.gilest.ro}{lab.gilest.ro}}
|
||||
\date{Draft}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\input{body}
|
||||
|
||||
\end{document}
|
||||
845
paper/manuscript/make_figs.py
Normal file
845
paper/manuscript/make_figs.py
Normal file
|
|
@ -0,0 +1,845 @@
|
|||
"""Publication figures for the manuscript — unified, lettered, codename-free.
|
||||
|
||||
Renders fig1 (the experimental-programme schematic) and re-plots every data panel directly from the
|
||||
committed results artifacts (figs/fig2.pdf .. fig5.pdf): no experiment codenames, no suptitles, bold panel
|
||||
letters, one consistent style. Since 2026-09-13 each data panel carries a short headline stating its
|
||||
finding (with the model and its size where relevant), legends say in words what is plotted, and
|
||||
Figs. 3 and 4 open with a schematic panel explaining the set-up, so a figure is readable without its
|
||||
caption. The per-experiment figures under results/ remain the exploratory versions; these are the
|
||||
manuscript's.
|
||||
|
||||
Usage: python paper/manuscript/make_figs.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
sys.path.insert(0, str(ROOT / "figures"))
|
||||
sys.path.insert(0, str(ROOT / "src"))
|
||||
import os
|
||||
os.chdir(ROOT) # load_bundle uses repo-relative paths
|
||||
from _figlib import load_bundle, load_seed_bundles, mean_ci # noqa: E402
|
||||
|
||||
OUT = ROOT / "paper" / "manuscript" / "figs"
|
||||
|
||||
plt.rcParams.update({
|
||||
"font.size": 8, "axes.labelsize": 8.5, "legend.fontsize": 7, "legend.frameon": False,
|
||||
"lines.markersize": 3.6, "axes.spines.top": False, "axes.spines.right": False,
|
||||
})
|
||||
|
||||
|
||||
def letter(ax, s, x=-0.14):
|
||||
ax.text(x, 1.02, s, transform=ax.transAxes, fontsize=12, fontweight="bold", va="bottom")
|
||||
|
||||
|
||||
def save(fig, name):
|
||||
OUT.mkdir(exist_ok=True)
|
||||
fig.savefig(OUT / f"{name}.pdf", bbox_inches="tight")
|
||||
plt.close(fig)
|
||||
print("wrote", OUT / f"{name}.pdf")
|
||||
|
||||
|
||||
def headline(ax, text, sub=None, x0=0):
|
||||
"""A short bold finding above the panel, with an optional grey line naming model and size.
|
||||
|
||||
Both lines are wrapped to the panel's own width (so a headline never runs into its neighbour)
|
||||
and set clear of the axes: the grey line 7 pt above the frame, the headline above that.
|
||||
"""
|
||||
import textwrap
|
||||
|
||||
fig = ax.figure
|
||||
width_pt = fig.get_figwidth() * ax.get_position().width * 72 - x0
|
||||
wrap = lambda s, fs: "\n".join(textwrap.fill(par, max(20, int(width_pt / (fs * 0.5))))
|
||||
for par in s.split("\n"))
|
||||
text = wrap(text, 8.2)
|
||||
dy = 7
|
||||
if sub:
|
||||
sub = wrap(sub, 7)
|
||||
ax.annotate(sub, xy=(0, 1), xycoords="axes fraction", xytext=(x0, dy), textcoords="offset points",
|
||||
fontsize=7, color="#555", ha="left", va="bottom", annotation_clip=False, linespacing=1.15)
|
||||
dy += 9.5 * (sub.count("\n") + 1) + 3
|
||||
ax.annotate(text, xy=(0, 1), xycoords="axes fraction", xytext=(x0, dy), textcoords="offset points",
|
||||
fontsize=8.2, fontweight="bold", ha="left", va="bottom", annotation_clip=False, linespacing=1.15)
|
||||
|
||||
|
||||
def paired_p(df, a, b, metric):
|
||||
"""Paired per-seed t-test between two models on one metric (the brackets' p-value)."""
|
||||
from scipy.stats import ttest_rel
|
||||
piv = (df[df["metric"] == metric].pivot_table(index="seed", columns="model", values="accuracy",
|
||||
aggfunc="mean")[[a, b]].dropna())
|
||||
return float(ttest_rel(piv[a], piv[b]).pvalue) if len(piv) > 1 else float("nan")
|
||||
|
||||
|
||||
def stars(p):
|
||||
return "***" if p < 0.001 else "**" if p < 0.01 else "*" if p < 0.05 else "ns"
|
||||
|
||||
|
||||
def sig_brackets(ax, specs, top, step=0.055, h=0.012):
|
||||
"""Significance brackets packed into tiers. ``specs`` = [(x1, x2, p, color)]; brackets that
|
||||
overlap horizontally go to a higher tier, so the tallest span sits on top."""
|
||||
specs = sorted(specs, key=lambda s: (abs(s[1] - s[0]), s[3]))
|
||||
tiers: list[list[tuple[float, float]]] = []
|
||||
for x1, x2, p, c in specs:
|
||||
lo, hi = min(x1, x2) + 0.04, max(x1, x2) - 0.04
|
||||
k = next((i for i, tier in enumerate(tiers) if all(hi < a or lo > b for a, b in tier)), None)
|
||||
if k is None:
|
||||
tiers.append([]); k = len(tiers) - 1
|
||||
tiers[k].append((lo, hi))
|
||||
y = top + k * step
|
||||
ax.plot([x1, x1, x2, x2], [y, y + h, y + h, y], color=c, lw=0.8, clip_on=False)
|
||||
ax.text((x1 + x2) / 2, y + h + 0.004, stars(p), ha="center", va="bottom", fontsize=6.5, color=c)
|
||||
return top + len(tiers) * step
|
||||
|
||||
|
||||
def _icon(svg_name: str):
|
||||
"""Rasterise a committed icon SVG at 2048 px (print-lossless at the ~0.3 in placed size).
|
||||
|
||||
Requires ``rsvg-convert`` (librsvg). The SVGs are the committed source of truth; no derived
|
||||
PNGs are kept in the repo.
|
||||
"""
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
svg = OUT / "icons" / svg_name
|
||||
with tempfile.NamedTemporaryFile(suffix=".png") as f:
|
||||
try:
|
||||
subprocess.run(["rsvg-convert", "-w", "1024", "-h", "1024", "-o", f.name, str(svg)],
|
||||
check=True, capture_output=True)
|
||||
except FileNotFoundError as e:
|
||||
raise RuntimeError("rsvg-convert (librsvg) is required to rasterise the icon SVGs "
|
||||
"for fig1a") from e
|
||||
return plt.imread(f.name)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- fig 1: experimental programme
|
||||
def fig1a():
|
||||
from matplotlib.patches import FancyBboxPatch
|
||||
|
||||
# (name, architecture, guarantee, edge, cell face, header fill, header text colour, icon)
|
||||
# Icons: Flaticon #2347052 (green pea, for Mendel) and #10479785 (robot) as committed SVGs,
|
||||
# used under GG's paid Flaticon licence; rasterised at build time by _icon().
|
||||
TIERS = [
|
||||
("Inheritance model\n(reference)", "Wright\u2013Fisher simulator (NumPy)",
|
||||
"closed forms \u00b7 sets the expectation",
|
||||
"#4e8d4e", "#eef6ec", "#c5e0bd", "#2d5b2d", "pea.svg"),
|
||||
("Trained networks", "RNN \u00b7 MLP \u00b7 VAE\non a synthetic oracle;\nconvolutional VAE on MNIST",
|
||||
"sign-level tests \u00b7 exact oracles", "#5b9bc9", "#eff6fb", "#c9e2f2", "#1f4e79",
|
||||
"robot.svg"),
|
||||
("Language models", "LoRA specialists on Qwen\n0.5B, 1.5B & 7B; exact-match\nand execution verifiers",
|
||||
"seed-replicated signs", "#3c6ea5", "#e7eef8", "#adc8e8", "#1d3f66", "robot.svg"),
|
||||
]
|
||||
ROWS = [
|
||||
("Grounding = immigration",
|
||||
"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}$",
|
||||
"collapse & rescue in every\narchitecture; MNIST: dry 30$\\to$1 modes,\n10% grounding holds 30/30;\nestimator-bias learning kernel",
|
||||
"LIT:established at LLM scale in\nprior work (refs. 23, 33);\nnot re-run here"]),
|
||||
("Recombination = sex",
|
||||
"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",
|
||||
"merge rescues two forgetting\nspecialists ($\\approx$0.50 $\\to$ 0.955)",
|
||||
"merged specialists beat every parent\n(5 seeds at 0.5B; 7B); routing vs\naveraging: the headroom rule"]),
|
||||
("Epistasis (entangled skills)",
|
||||
"a variant's fitness contribution\ndepends on the variants present\nat the other loci",
|
||||
["reference values only: outbreeding\ndepression, the recombination-rate\noptimum, mate-pool breadth (SI)",
|
||||
None,
|
||||
"bred-and-screened offspring beat\nthe blind blend in every seed\n(hard, unsaturated tasks)"]),
|
||||
("The composed society",
|
||||
"selection, recombination,\ndiversity preservation and\ngrounding on one population",
|
||||
["four-arm ablation: grounding, sex,\ndiversity each removed\n$\\to$ three distinct failures",
|
||||
None,
|
||||
"6 generations $\\times$ 3 lineages:\nobligate merging collapses,\na declinable merge tracks\npartner complementarity"]),
|
||||
("Speciation",
|
||||
"reproductive isolation: diverged\nlineages no longer produce\nviable (mergeable) offspring",
|
||||
["BDM incompatibility model:\nisolation cliff; quadratic snowball",
|
||||
"barrier decomposition under\npermutation+rescaling; conflict\nsweep 0.97$\\to$0.03; emergent null",
|
||||
"convention conflict $\\to$ hybrid\nbreakdown; duration null; pre-merge\npredictive test (13 cond. $\\times$ 3 seeds)"]),
|
||||
]
|
||||
|
||||
TAGS = [("Fig. 2B", "Fig. 2A", None),
|
||||
("SI", "Table S2", "Fig. 3B\u2013C"),
|
||||
("SI", None, "Table S2"),
|
||||
("Fig. 4D\u2013F", None, "Fig. 4B\u2013C"),
|
||||
("Fig. 5E\u2013F", "Fig. 5A\u2013B", "Figs. 5C\u2013D, 3D\u2013E")]
|
||||
|
||||
fig, ax = plt.subplots(figsize=(11.4, 5.3))
|
||||
ax.set_axis_off()
|
||||
ax.set_xlim(0, 1)
|
||||
ax.set_ylim(0, 1)
|
||||
ax.text(0.0, 0.995, "A", fontsize=13, fontweight="bold", va="top")
|
||||
x0, gap, sep = 0.205, 0.008, 0.02 # sep: extra gutter between theory and the AI pair
|
||||
cw = (1.0 - x0 - sep) / 3
|
||||
xs = [x0, x0 + cw + sep, x0 + 2 * cw + sep]
|
||||
row_h, row_top = 0.157, 0.805
|
||||
|
||||
for j2, (name, arch, guarantee, edge, face, headfill, textcol, icon) in enumerate(TIERS):
|
||||
x = xs[j2]
|
||||
xc = x + cw / 2 - 0.02 # text centred left of the icon slot
|
||||
ax.add_patch(FancyBboxPatch((x + gap, 0.825), cw - 2 * gap, 0.170,
|
||||
boxstyle="round,pad=0.004", fc=headfill, ec=edge, lw=1.6))
|
||||
ax.text(xc, 0.988, name, ha="center", va="top", fontsize=9.5,
|
||||
fontweight="bold", color=textcol, linespacing=1.0)
|
||||
# Reason: a two-line tier name needs its (single-line) subtitle pushed down.
|
||||
arch_y = 0.918 if "\n" in name else 0.944
|
||||
ax.text(x + cw / 2 - 0.030, arch_y, arch, ha="center", va="top", fontsize=6.6,
|
||||
linespacing=1.25, color=textcol)
|
||||
ax.text(x + cw / 2 - 0.030, 0.831, guarantee, ha="center", va="bottom", fontsize=6.4,
|
||||
style="italic", color=textcol, alpha=0.85)
|
||||
# Reason: imshow + interpolation="none" embeds the icon unsampled in the PDF (an
|
||||
# OffsetImage is always composited at figure dpi, i.e. ~39 px, whatever the source).
|
||||
img = _icon(icon)
|
||||
iw = 56.0 / 1140.0 # 56 display px on an 11.4in/100dpi fig
|
||||
ih = iw * 11.4 / 5.3
|
||||
icx, icy = x + cw - gap - 0.030, 0.906
|
||||
ax.imshow(img, extent=(icx - iw / 2, icx + iw / 2, icy - ih / 2, icy + ih / 2),
|
||||
interpolation="none", aspect="auto", zorder=5)
|
||||
ax.set_xlim(0, 1)
|
||||
ax.set_ylim(0, 1)
|
||||
|
||||
for i2, (label, definition, cells) in enumerate(ROWS):
|
||||
tags = TAGS[i2]
|
||||
y1 = row_top - i2 * row_h
|
||||
y0 = y1 - row_h + 2 * gap
|
||||
yc = (y0 + y1) / 2
|
||||
ax.text(0.0, y1 - 0.014, label, ha="left", va="top", fontsize=8, fontweight="bold")
|
||||
ax.text(0.0, y1 - 0.054, definition, ha="left", va="top", fontsize=6.2,
|
||||
style="italic", color="#555", linespacing=1.35)
|
||||
for j2, cell in enumerate(cells):
|
||||
x = xs[j2]
|
||||
edge = TIERS[j2][3]
|
||||
face = TIERS[j2][4]
|
||||
if cell is None:
|
||||
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
||||
boxstyle="round,pad=0.004", fc="#f3f3f3", ec="none"))
|
||||
ax.text(x + cw / 2, yc, "adds no discriminating test\nat this tier", ha="center",
|
||||
va="center", fontsize=6.4, style="italic", color="#999", linespacing=1.35)
|
||||
elif cell.startswith("LIT:"):
|
||||
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
||||
boxstyle="round,pad=0.004", fc="#f3f3f3", ec="none"))
|
||||
ax.text(x + cw / 2, yc, cell[4:], ha="center", va="center",
|
||||
fontsize=6.4, style="italic", color="#777", linespacing=1.35)
|
||||
else:
|
||||
ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0,
|
||||
boxstyle="round,pad=0.004", fc=face, ec="none"))
|
||||
ax.text(x + cw / 2, yc + 0.008, cell, ha="center", va="center",
|
||||
fontsize=6.4, linespacing=1.35)
|
||||
if tags[j2]: # where the result lives (the ToC role)
|
||||
ax.text(x + cw - gap - 0.005, y0 + 0.006, tags[j2], ha="right", va="bottom",
|
||||
fontsize=5.6, style="italic", color=edge)
|
||||
save(fig, "fig1a")
|
||||
|
||||
# ------------------------------------------------------- fig 1B: society in space -> in time
|
||||
BLUE, GREEN, GOLD = "#4292c6", "#41ab5d", "#d4a017"
|
||||
|
||||
|
||||
def _robot(ax, x, y, img, dots=(), lost=(), size=0.62):
|
||||
"""The robot icon (the same Flaticon asset as Fig. 1A) with capability dots beneath."""
|
||||
from matplotlib.patches import Circle
|
||||
|
||||
ax.imshow(img, extent=(x - size / 2, x + size / 2, y - size / 2, y + size / 2),
|
||||
interpolation="none", zorder=2)
|
||||
marks = [(c, False) for c in dots] + [(c, True) for c in lost]
|
||||
n = len(marks)
|
||||
for i, (c, is_lost) in enumerate(marks):
|
||||
cx = x + (i - (n - 1) / 2) * 0.19
|
||||
cy = y - size / 2 - 0.13
|
||||
if is_lost:
|
||||
ax.add_patch(Circle((cx, cy), 0.07, fc="white", ec=c, lw=0.9, ls=(0, (2, 2))))
|
||||
ax.text(cx, cy - 0.005, "\u00d7", ha="center", va="center", fontsize=6, color=c)
|
||||
else:
|
||||
ax.add_patch(Circle((cx, cy), 0.07, fc=c, ec="none"))
|
||||
|
||||
|
||||
def fig1b():
|
||||
from matplotlib.patches import Circle, FancyArrowPatch
|
||||
|
||||
W, H = 11.4, 4.75
|
||||
fig, ax = plt.subplots(figsize=(W, H))
|
||||
ax.set_xlim(0, W)
|
||||
ax.set_ylim(0, H)
|
||||
ax.set_aspect("equal")
|
||||
ax.set_axis_off()
|
||||
ax.text(0.05, H - 0.05, "B", fontsize=13, fontweight="bold", va="top")
|
||||
|
||||
def arrow(p, q, color="#666", lw=1.2, style="-|>", shrink=2.0, ls="-"):
|
||||
ax.add_patch(FancyArrowPatch(p, q, arrowstyle=style, mutation_scale=10, color=color,
|
||||
lw=lw, linestyle=ls, shrinkA=shrink, shrinkB=shrink))
|
||||
|
||||
rob = _icon("robot.svg")
|
||||
|
||||
# ---------------- left: a society in space (contemporaries exchanging messages)
|
||||
cx, cy, r = 2.45, 2.95, 0.95
|
||||
dotsets = [(BLUE, GOLD), (GREEN,), (BLUE, GREEN), (GOLD, GREEN), (BLUE,)]
|
||||
pos = []
|
||||
for i, ds in enumerate(dotsets):
|
||||
a = np.pi / 2 + i * 2 * np.pi / 5
|
||||
x, y = cx + r * np.cos(a) * 1.4, cy + r * np.sin(a) * 0.95
|
||||
pos.append((x, y))
|
||||
_robot(ax, x, y, rob, dots=ds)
|
||||
for i, j2 in [(0, 2), (1, 3), (2, 4), (0, 3), (1, 4)]:
|
||||
arrow(pos[i], pos[j2], color="#99a", lw=0.9, style="<|-|>", shrink=26, ls=(0, (4, 2)))
|
||||
ax.text(pos[0][0] + 0.72, pos[0][1] + 0.38, "hi!", fontsize=8, ha="center",
|
||||
bbox=dict(boxstyle="round,pad=0.25", fc="white", ec="#99a", lw=0.8))
|
||||
clk = (0.55, 4.33)
|
||||
ax.add_patch(Circle(clk, 0.21, fc="white", ec="#445", lw=1.1))
|
||||
ax.plot([clk[0], clk[0]], [clk[1], clk[1] + 0.13], color="#445", lw=1.0)
|
||||
ax.plot([clk[0], clk[0] + 0.10], [clk[1], clk[1]], color="#445", lw=1.0)
|
||||
ax.text(clk[0], clk[1] - 0.34, "one moment", ha="center", fontsize=7, style="italic",
|
||||
color="#555")
|
||||
ax.text(2.45, 0.80, "a society in space", ha="center", fontsize=11, fontweight="bold")
|
||||
ax.text(2.45, 0.50, "contemporaries exchanging messages \u2014 multi-agent systems, agent economies",
|
||||
ha="center", fontsize=7.2, style="italic", color="#555")
|
||||
ax.text(2.45, 0.24, "information is passed on, but not easily stored: it fades with the conversation",
|
||||
ha="center", fontsize=7.2, style="italic", color="#555")
|
||||
|
||||
# ---------------- middle: the shift of perspective
|
||||
arrow((4.60, 2.75), (5.95, 2.75), color="#445", lw=2.0, style="-|>")
|
||||
ax.text(5.27, 2.91, "the same ecosystem,\nseen along its time axis", ha="center",
|
||||
va="bottom", fontsize=8, style="italic", color="#334", linespacing=1.3)
|
||||
|
||||
# ---------------- right: a society in time (a pedigree)
|
||||
axx = 6.8
|
||||
arrow((axx, 4.55), (axx, 1.25), color="#445", lw=1.3)
|
||||
for gy, lab in [(4.05, "gen 0"), (2.80, "gen 1"), (1.60, "gen 2")]:
|
||||
ax.text(axx - 0.12, gy, lab, ha="right", va="center", fontsize=7.5, color="#445")
|
||||
|
||||
p1, p2 = (8.0, 4.05), (9.5, 4.05)
|
||||
c1, c2 = (7.5, 2.80), (9.0, 2.80)
|
||||
g2 = (9.0, 1.60)
|
||||
_robot(ax, *p1, rob, dots=(BLUE, GOLD))
|
||||
_robot(ax, *p2, rob, dots=(GREEN, BLUE))
|
||||
_robot(ax, *c1, rob, dots=(BLUE,), lost=(GOLD,))
|
||||
_robot(ax, *c2, rob, dots=(BLUE, GREEN, GOLD))
|
||||
_robot(ax, *g2, rob, dots=(BLUE, GREEN, GOLD))
|
||||
arrow((7.87, 3.51), (7.56, 3.29), color="#666")
|
||||
ax.text(7.42, 3.41, "inherit", ha="right", fontsize=7, style="italic", color="#555")
|
||||
arrow((8.15, 3.49), (8.85, 3.29), color="#666")
|
||||
arrow((9.40, 3.49), (9.13, 3.29), color="#666")
|
||||
ax.text(9.0, 3.39, "merge (sex)", ha="center", fontsize=7, style="italic", color="#555",
|
||||
bbox=dict(boxstyle="round,pad=0.12", fc="white", ec="none"))
|
||||
ax.text(7.5, 2.08, "rare skill lost", ha="center", fontsize=6.8, style="italic",
|
||||
color="#a33")
|
||||
arrow((9.0, 2.24), (9.0, 2.06), color="#666")
|
||||
globe = (10.55, 2.10)
|
||||
ax.add_patch(Circle(globe, 0.32, fc="#eaf4fb", ec="#2c7fb8", lw=1.2))
|
||||
from matplotlib.patches import Arc as _Arc
|
||||
ax.add_patch(_Arc(globe, 0.32, 0.64, theta1=90, theta2=270, ec="#2c7fb8", lw=0.8))
|
||||
ax.add_patch(_Arc(globe, 0.32, 0.64, theta1=270, theta2=90, ec="#2c7fb8", lw=0.8))
|
||||
ax.plot([globe[0] - 0.32, globe[0] + 0.32], [globe[1], globe[1]], color="#2c7fb8", lw=0.8)
|
||||
ax.text(globe[0], globe[1] - 0.44, "reality\n(verifier)", ha="center", va="top", fontsize=7,
|
||||
color="#2c7fb8", linespacing=1.2)
|
||||
arrow((10.22, 1.95), (9.38, 1.70), color="#2c7fb8", lw=1.2)
|
||||
ax.text(9.82, 2.03, "ground\n(immigrate)", ha="center", va="bottom", fontsize=7,
|
||||
style="italic", color="#2c7fb8", linespacing=1.2)
|
||||
ax.text(8.9, 0.80, "a society in time", ha="center", fontsize=11, fontweight="bold")
|
||||
ax.text(8.9, 0.50, "information is inherited, evolutionarily selected, and passed on again \u2014",
|
||||
ha="center", fontsize=7.2, style="italic", color="#555")
|
||||
ax.text(8.9, 0.24, "from parent model to child model \u2014 where population genetics applies",
|
||||
ha="center", fontsize=7.2, style="italic", color="#555")
|
||||
ax.set_xlim(0, W)
|
||||
ax.set_ylim(0, H)
|
||||
save(fig, "fig1b")
|
||||
|
||||
# ---------------------------------------------------------------- fig 2: grounding + MNIST
|
||||
def fig2():
|
||||
from inheritance.analysis import critical_grounding, reduce_to_stationary
|
||||
from inheritance.metrics import heterozygosity
|
||||
from inheritance.truth import make_true_distribution
|
||||
|
||||
df, cfg = load_bundle("results/fig2_grounding_sweep")
|
||||
n = cfg["dynamics"]["n"]
|
||||
td = make_true_distribution(cfg["truth"]["K"], 1, "zipf", cfg["truth"]["tail_frac"],
|
||||
cfg["truth"]["zipf_s"], 0, tail_threshold=cfg["truth"]["tail_threshold"])
|
||||
H_star = heterozygosity(td.p_star)
|
||||
last = int(cfg["generations"] * 0.8)
|
||||
stat = df[df["generation"] >= last]
|
||||
|
||||
fig, axes = plt.subplots(1, 2, figsize=(10.6, 4.3), gridspec_kw={"width_ratios": [1.35, 1], "wspace": 0.28})
|
||||
fig.subplots_adjust(top=0.8)
|
||||
|
||||
ax = axes[1]
|
||||
st = reduce_to_stationary(stat, value_col="heterozygosity", replicate_col="replicate", last_frac=1.0)
|
||||
gg, Hm, Hci = mean_ci(stat, "g", "heterozygosity")
|
||||
nz = gg > 0
|
||||
ax.errorbar(gg[nz], Hm[nz], yerr=Hci[nz], fmt="o", color="#1f77b4", capsize=2,
|
||||
label="simulation (mean, 95% CI over 100 lineages)")
|
||||
ax.plot(gg[~nz], Hm[~nz], "o", mfc="white", mec="#1f77b4")
|
||||
m_of_g = stat.groupby("g")["m"].first().to_numpy()
|
||||
m_grid = np.linspace(0, m_of_g.max(), 400)
|
||||
|
||||
def H_eq(m):
|
||||
m = np.asarray(m, float)
|
||||
return np.where(m <= 0, 0.0, H_star * m * (2 * n + m - 1) / (n + 2 * n * m + m * m))
|
||||
|
||||
ax.plot(m_grid / (n + m_grid), H_eq(m_grid), "k--", lw=1, label="exact prediction (immigration–drift equilibrium)")
|
||||
ax.axhline(H_star, ls=":", color="gray", lw=1, label="diversity of the real data itself")
|
||||
r = critical_grounding(st, H_star=H_star, frac=0.95, seed=7)
|
||||
ax.axvspan(r["ci_low"], r["ci_high"], color="#d62728", alpha=0.15)
|
||||
ax.axvline(r["g_star"], color="#d62728", lw=1.1,
|
||||
label=f"threshold: 95% of real-data diversity kept ($g\\approx{r['g_star']:.3f}$)")
|
||||
ax.set(xlabel="share of real data in each generation's training sample, $g$",
|
||||
ylabel="diversity the population settles at, $H$")
|
||||
ax.legend(loc="lower right", fontsize=6.4)
|
||||
headline(ax, "About 5% real data per generation keeps 95% of the diversity", "inheritance model (simulation): 1,000 knowledge items, 100 lineages")
|
||||
letter(ax, "B")
|
||||
|
||||
ax = axes[0]
|
||||
from PIL import Image
|
||||
im = np.asarray(Image.open("results/fig2_mnist_collapse/mnist_montage.png"))
|
||||
# Strip the baked-in title band and left label margin (raster text is unreadable at panel
|
||||
# size); measured on the committed montage: boxes span y >= 69, x >= 75, row centres below.
|
||||
top, left = 60, 68
|
||||
ax.imshow(im[top:, left:], interpolation="bilinear")
|
||||
for yc, g in zip((101.5, 191.5, 282.0, 372.5, 462.5), (0, 4, 8, 12, 15)):
|
||||
ax.text(-10, yc - top, str(g), ha="right", va="center", fontsize=8.5)
|
||||
ax.text(-0.055, 0.5, "generation", transform=ax.transAxes, rotation=90,
|
||||
ha="center", va="center", fontsize=8.5)
|
||||
ax.set_axis_off()
|
||||
ax.text(0.5, -0.03, "each row is a later generation; every column a randomly drawn digit; no real data added",
|
||||
transform=ax.transAxes, ha="center", va="top", fontsize=7, color="#555", style="italic")
|
||||
headline(ax, "Trained only on its own output, an image model collapses to one shape",
|
||||
"image generator (VAE) re-trained each generation on its own drawings", x0=16)
|
||||
letter(ax, "A", x=-0.02)
|
||||
save(fig, "fig2")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- fig 6: the society
|
||||
def _load_curriculum():
|
||||
"""The six-generation language-model population, all curricula and seeds, one long-form frame.
|
||||
|
||||
Delegates to figures/stats_llm_curriculum.py, the single place where arm labels are assigned by
|
||||
experiment directory (the veto arm is recorded as `society`; never trust the arm column alone).
|
||||
"""
|
||||
from stats_llm_curriculum import load_curriculum
|
||||
return load_curriculum()
|
||||
|
||||
|
||||
def fig4():
|
||||
import pandas as pd
|
||||
from matplotlib.patches import FancyArrowPatch, FancyBboxPatch
|
||||
|
||||
df, _ = load_bundle("results/fig4_society_ablation")
|
||||
arms = [("full", "#2ca02c", "full system"),
|
||||
("no_sex", "#ff7f0e", "no recombination"),
|
||||
("no_diversity", "#9467bd", "no diversity preservation"),
|
||||
("no_grounding", "#d62728", "no grounded evaluation")]
|
||||
arms = [a for a in arms if a[0] in set(df["arm"].unique())]
|
||||
g_opt = df["global_opt"].mean()
|
||||
|
||||
fig = plt.figure(figsize=(11.4, 11.4))
|
||||
gs = fig.add_gridspec(3, 6, height_ratios=[1.25, 1, 1], hspace=0.62, wspace=0.6)
|
||||
|
||||
cur = _load_curriculum()
|
||||
acc = cur[(cur["metric"] == "all_families") & (cur["generation"] >= 0)]
|
||||
best = acc.groupby(["arm", "seed", "generation"])["value"].max().reset_index() # best lineage
|
||||
comp = (cur[(cur["arm"] == "veto") & (cur["metric"] == "complementarity")]
|
||||
.groupby("generation")["value"].mean())
|
||||
gens = sorted(comp.index)
|
||||
llm_arms = [("isolated", "#1f77b4", "-o", "never merge"),
|
||||
("veto", "#2ca02c", "-o", "merge only if it beats keeping the parent"),
|
||||
("society_stop3", "#ff7f0e", "--s", "merge through generation 2, then stop (control)"),
|
||||
("society", "#d62728", "-o", "always merge with a contemporary")]
|
||||
|
||||
# ---- A: how the population works (a schematic strip; the syllabus is read from the data)
|
||||
axB, axC = fig.add_subplot(gs[1, 0:4]), fig.add_subplot(gs[1, 4:6])
|
||||
# Reason: the strip is placed by hand so that it is flush with the B/D frames on the left, spans
|
||||
# to C's right edge, and sits a fixed 0.75 in above B's headline (a gridspec row would leave a
|
||||
# gap that scales with the row height). Its height follows the content's designed aspect.
|
||||
W, H = 11.4, 3.1
|
||||
pb, pc = axB.get_position(), axC.get_position()
|
||||
w_frac = pc.x1 - pb.x0
|
||||
h_frac = (w_frac * fig.get_figwidth()) * (H / W) / fig.get_figheight()
|
||||
ax = fig.add_axes([pb.x0, pb.y1 + 0.75 / fig.get_figheight(), w_frac, h_frac])
|
||||
ax.set_xlim(0, W); ax.set_ylim(0, H); ax.set_aspect("equal"); ax.set_axis_off()
|
||||
|
||||
def box(x, y, w, h, text, fc="#eef3f8", ec="#7a93ad", fs=6.3, bold_first=True):
|
||||
ax.add_patch(FancyBboxPatch((x, y), w, h, boxstyle="round,pad=0.04", fc=fc, ec=ec, lw=1.0))
|
||||
lines = text.split("\n")
|
||||
ax.text(x + w / 2, y + h - 0.1, lines[0], ha="center", va="top", fontsize=fs + 0.9,
|
||||
fontweight="bold" if bold_first else "normal")
|
||||
ax.text(x + w / 2, y + h - 0.1 - 0.27, "\n".join(lines[1:]), ha="center", va="top", fontsize=fs,
|
||||
color="#333", linespacing=1.25)
|
||||
|
||||
def arrow(p, q, color="#555", style="-|>", ls="-", lw=1.1):
|
||||
ax.add_patch(FancyArrowPatch(p, q, arrowstyle=style, mutation_scale=9, color=color, lw=lw,
|
||||
linestyle=ls, shrinkA=1, shrinkB=1))
|
||||
|
||||
ax.text(0.05, H - 0.02, "each generation, every lineage:", fontsize=8.0, fontweight="bold", va="top")
|
||||
bw, bh, by = 1.78, 1.2, 0.9
|
||||
bx = (0.05, 0.05 + bw + 0.12, 0.05 + 2 * (bw + 0.12))
|
||||
box(bx[0], by, bw, bh, "1 learn a new skill\ncontinue the parent's\nadapter: 300 new +\n150 replay examples")
|
||||
box(bx[1], by, bw, bh, "2 merge? (arm rule)\naverage weights with\na partner, ratio chosen\non validation data")
|
||||
box(bx[2], by, bw, bh, "3 test all six skills\na verifier marks each\nanswer; the child is\nthe next parent")
|
||||
arrow((bx[0] + bw + 0.05, by + bh / 2), (bx[1] - 0.05, by + bh / 2))
|
||||
arrow((bx[1] + bw + 0.05, by + bh / 2), (bx[2] - 0.05, by + bh / 2))
|
||||
ax.plot([bx[2] + bw / 2, bx[2] + bw / 2, bx[0] + bw / 2, bx[0] + bw / 2], [by - 0.05, by - 0.3, by - 0.3, by - 0.12],
|
||||
color="#555", lw=1.0)
|
||||
arrow((bx[0] + bw / 2, by - 0.14), (bx[0] + bw / 2, by - 0.06))
|
||||
ax.text(bx[1] + bw / 2, by - 0.42, "next generation (six in all)", ha="center", va="top", fontsize=6.8, style="italic", color="#555")
|
||||
|
||||
# the syllabus grid (from the config, so it matches the data)
|
||||
fams = ["mnli", "arc", "hellaswag", "squad", "boolq", "winogrande"]
|
||||
short = {"mnli": "NLI", "arc": "science", "hellaswag": "common\nsense", "squad": "reading",
|
||||
"boolq": "yes/no", "winogrande": "pronoun"}
|
||||
fam_col = {"mnli": "#c6dbef", "arc": "#c7e9c0", "hellaswag": "#fdd0a2", "squad": "#dadaeb",
|
||||
"boolq": "#fcbba1", "winogrande": "#fee391"}
|
||||
orders = [[fams[(i * 2 + k) % 6] for k in range(6)] for i in range(3)]
|
||||
gx0, gy0, cw, ch = 6.95, 0.9, 0.5, 0.4
|
||||
ax.text(gx0 + 3 * cw, H - 0.02, "the syllabus (six skills, rotated)",
|
||||
ha="center", va="top", fontsize=8.0, fontweight="bold")
|
||||
for k in range(6):
|
||||
ax.text(gx0 + (k + 0.5) * cw, gy0 + 3 * ch + 0.05, f"gen {k + 1}", ha="center", va="bottom", fontsize=6.4, color="#333")
|
||||
for i, o in enumerate(orders):
|
||||
yy = gy0 + (2 - i) * ch
|
||||
ax.text(gx0 - 0.06, yy + ch / 2, f"lineage {i + 1}", ha="right", va="center", fontsize=6.8, color="#333")
|
||||
for k, f in enumerate(o):
|
||||
ax.add_patch(FancyBboxPatch((gx0 + k * cw + 0.02, yy + 0.02), cw - 0.04, ch - 0.04,
|
||||
boxstyle="round,pad=0.01", fc=fam_col[f], ec="none"))
|
||||
ax.text(gx0 + (k + 0.5) * cw, yy + ch / 2, short[f], ha="center", va="center", fontsize=5.4, linespacing=0.95)
|
||||
ax.text(gx0 - 0.06, gy0 - 0.14, "complementarity:", ha="right", va="center", fontsize=6.8, color="#333")
|
||||
for k, g in enumerate(gens):
|
||||
ax.text(gx0 + (k + 0.5) * cw, gy0 - 0.14, f"{comp[g]:.2f}", ha="center", va="center", fontsize=6.8, color="#333")
|
||||
ax.text(gx0 + 3 * cw, gy0 - 0.3, "(partner complementarity: the share of a partner's skills\na lineage does not yet have; high early, zero at the end)",
|
||||
ha="center", va="top", fontsize=6.4, style="italic", color="#555", linespacing=1.2)
|
||||
|
||||
# the arms
|
||||
ax.text(10.0, H - 0.02, "the arms", fontsize=8.0, fontweight="bold", va="top")
|
||||
short_arm = {"isolated": "never merge", "veto": "merge only if it helps the child",
|
||||
"society_stop3": "merge until gen 2, then stop", "society": "always merge (contemporary)"}
|
||||
for r, (name, c, style, lab) in enumerate(llm_arms):
|
||||
yy = H - 0.5 - r * 0.36
|
||||
ax.plot([10.05, 10.35], [yy, yy], style[:-1] if style.endswith(("o", "s")) else style, color=c, lw=1.6)
|
||||
ax.plot([10.2], [yy], style[-1], color=c, ms=4.5)
|
||||
ax.text(10.43, yy, short_arm[name], ha="left", va="center", fontsize=6.6)
|
||||
headline(ax, "How the six-generation language-model population works",
|
||||
"3 lineages \u00b7 6 generations \u00b7 3 training seeds; Qwen2.5-1.5B base (1.5 billion parameters)")
|
||||
letter(ax, "A", x=-0.03)
|
||||
|
||||
# ---- B: the population's outcome
|
||||
ax = axB
|
||||
for name, c, style, lab in llm_arms:
|
||||
g, m, ci = mean_ci(best[best["arm"] == name], "generation", "value")
|
||||
ax.plot(g, m, style, color=c, lw=1.6, ms=4 if "s" in style else 6, label=lab)
|
||||
ax.fill_between(g, m - ci, m + ci, color=c, alpha=0.15)
|
||||
seq = best[best["arm"] == "sequential"]["value"].mean()
|
||||
ax.plot([gens[-1]], [seq], "D", color="gray", ms=5, label="one model taught the whole syllabus alone")
|
||||
ax.set(xlabel="generation\npartner complementarity", ylabel="accuracy on all six skills\n(best lineage)", ylim=(0.15, 0.9))
|
||||
ax.set_xticks(gens)
|
||||
ax.set_xticklabels([f"{g + 1}\n{comp[g]:.2f}" for g in gens])
|
||||
ax.legend(loc="lower left")
|
||||
headline(ax, "Forced merging collapses once partners stop knowing different things;\n"
|
||||
"optional merging stays level with never merging", "best lineage; mean over 3 seeds, 95% CI shaded")
|
||||
letter(ax, "B", x=-0.08)
|
||||
|
||||
# ---- C: merges declined under two syllabi with different complementarity schedules
|
||||
ax = axC
|
||||
w = 0.38
|
||||
for arm, off, cbar, cline, ls, lab in (("veto", -w / 2, "#2ca02c", "#1b5e20", "-", "rotated syllabus (as in A)"),
|
||||
("decor_veto", w / 2, "#ff7f0e", "#a04000", "--", "syllabus with complementarity\npeaking mid-way")):
|
||||
v = cur[(cur["arm"] == arm) & (cur["metric"] == "veto_used")]
|
||||
rate = v.groupby(["seed", "generation"])["value"].mean().groupby("generation").mean()
|
||||
c = cur[(cur["arm"] == arm) & (cur["metric"] == "complementarity")].groupby("generation")["value"].mean()
|
||||
ax.bar(np.array(gens) + 1 + off, rate.loc[gens], w, color=cbar, alpha=0.55, label=f"merges declined, {lab}")
|
||||
ax.plot(np.array(gens) + 1, c.loc[gens], ls, color=cline, lw=1.4, label=f"partner complementarity, {lab}")
|
||||
ax.set(xlabel="generation", ylabel="fraction", ylim=(0, 1.9), yticks=[0, 0.25, 0.5, 0.75, 1.0])
|
||||
ax.set_xticks(np.array(gens) + 1)
|
||||
ax.legend(loc="upper left", fontsize=5.6, ncol=1) # ylim headroom keeps it off the bars
|
||||
headline(ax, "Lineages decline merges more often\nas generations pass, whatever the partner offers",
|
||||
"declinable-merge arm, 3 seeds per syllabus")
|
||||
letter(ax, "C", x=-0.2)
|
||||
|
||||
# ---- D-F: the simulated society (the inheritance-model reference)
|
||||
axes = [fig.add_subplot(gs[2, 0:2]), fig.add_subplot(gs[2, 2:4]), fig.add_subplot(gs[2, 4:6])]
|
||||
panels = [("best_fitness", "real fitness of the best agent", "D", "the best agent's real fitness"),
|
||||
("diversity", "population diversity", "E", "how different the agents are from one another"),
|
||||
("conformity_true_gap", "conformity − true fitness", "F", "how far the crowd's consensus sits from the truth")]
|
||||
for ax, (col, ylab, L, sub) in zip(axes, panels):
|
||||
for name, c, lab in arms:
|
||||
sub_df = df[df["arm"] == name]
|
||||
g, m, ci = mean_ci(sub_df, "generation", col)
|
||||
ax.plot(g, m, "-", color=c, lw=1.6, label=lab)
|
||||
ax.fill_between(g, m - ci, m + ci, color=c, alpha=0.15)
|
||||
if col == "best_fitness":
|
||||
ax.axhline(g_opt, ls=":", color="gray", lw=1, label="best possible (global optimum)")
|
||||
ax.legend(fontsize=6.4)
|
||||
headline(ax, "Simulated society: remove one mechanism and it fails in its own way", sub)
|
||||
else:
|
||||
headline(ax, " ", sub)
|
||||
ax.set(xlabel="generation", ylabel=ylab)
|
||||
letter(ax, L)
|
||||
save(fig, "fig4")
|
||||
|
||||
|
||||
# ------------------------------------------------- fig 5: merge failure across the two real tiers
|
||||
def fig5():
|
||||
# wspace: panel B carries a right-hand twin axis whose label would otherwise collide with C
|
||||
fig, axes = plt.subplots(2, 3, figsize=(11.4, 8.4), gridspec_kw={"wspace": 0.45, "hspace": 0.75})
|
||||
fig.subplots_adjust(top=0.9)
|
||||
|
||||
bdm, _ = load_bundle("results/fig5_speciation_bdm")
|
||||
rhos = sorted(bdm["rho"].unique())
|
||||
colors = plt.cm.viridis(np.linspace(0.15, 0.85, len(rhos)))
|
||||
|
||||
def agg(df, keys, value):
|
||||
g = df.groupby(keys)[value].agg(["mean", "std", "count"]).reset_index()
|
||||
g["se"] = g["std"] / np.sqrt(g["count"].clip(lower=1))
|
||||
return g
|
||||
|
||||
ax = axes[1, 1]
|
||||
par = agg(bdm, "divergence", "parent_fitness")
|
||||
ax.plot(par["divergence"], par["mean"], "k--", lw=1.3, label="parents")
|
||||
for rho, c in zip(rhos, colors):
|
||||
g = agg(bdm[bdm["rho"] == rho], "divergence", "offspring_fitness")
|
||||
ax.plot(g["divergence"], g["mean"], "-o", color=c, label=f"hybrid, density {rho:g}")
|
||||
ax.fill_between(g["divergence"], g["mean"] - g["se"], g["mean"] + g["se"], color=c, alpha=0.15)
|
||||
ax.axhline(0, color="#999", lw=0.7, ls=":")
|
||||
ax.set(xlabel="parental divergence (substitutions)", ylabel="fitness of the hybrid")
|
||||
ax.legend()
|
||||
headline(ax, "Simulation: hybrids fail once\nlineages diverge far enough", "20-locus genotypes with incompatibilities")
|
||||
letter(ax, "E")
|
||||
|
||||
ax = axes[1, 2]
|
||||
for rho, c in zip(rhos, colors):
|
||||
g = agg(bdm[bdm["rho"] == rho], "divergence", "isolation")
|
||||
ax.plot(g["divergence"], g["mean"], "-o", color=c, label=f"{rho:g}")
|
||||
ax.set(xlabel="parental divergence (substitutions)", ylabel="probability the hybrid is non-viable", ylim=(-0.02, 1.02))
|
||||
ax.legend(title="incompatibility density")
|
||||
headline(ax, "Denser incompatibilities\nbring the cliff earlier", "same simulation")
|
||||
letter(ax, "F")
|
||||
|
||||
dec, _ = load_bundle("results/speciation_real")
|
||||
order = [c for c in ["shared", "independent", "conflict"] if c in set(dec["condition"])]
|
||||
g = dec.groupby("condition").agg(naive=("barrier_naive", "mean"),
|
||||
res=("residual_scale", "mean")).reindex(order)
|
||||
ax = axes[0, 0]
|
||||
x = np.arange(len(order)); w = 0.38
|
||||
ax.bar(x - w / 2, g["naive"], w, color="#9ecae1", label="barrier as trained")
|
||||
ax.bar(x + w / 2, g["res"], w, color="#d62728", label="barrier after undoing unit relabelling\n(what remains is functional conflict)")
|
||||
ax.set_xticks(x)
|
||||
ax.set_xticklabels(["same task,\nshared start", "same task,\ndifferent start", "conflicting\ntasks"])
|
||||
ax.set(ylabel="merge error barrier\n(how much worse the average is than its parents)")
|
||||
ax.legend(fontsize=6.4)
|
||||
headline(ax, "Alignment removes the barrier for compatible networks, not for conflicting ones",
|
||||
"pairs of small image classifiers forked from one base")
|
||||
letter(ax, "A")
|
||||
|
||||
cliff, _ = load_bundle("results/speciation_real_cliff")
|
||||
cg = cliff.groupby("conflict_frac").agg(res=("residual_scale", "mean"),
|
||||
hyb=("acc_merge_scale", "mean")).reset_index()
|
||||
ax = axes[0, 1]
|
||||
ax.plot(cg["conflict_frac"], cg["res"], "-o", color="#d62728", label="barrier left after alignment")
|
||||
ax2 = ax.twinx()
|
||||
ax2.plot(cg["conflict_frac"], cg["hyb"], "-s", color="#2c7fb8", label="accuracy of the merged model")
|
||||
ax2.set_ylabel("merged accuracy", color="#2c7fb8")
|
||||
ax2.tick_params(axis="y", labelcolor="#2c7fb8")
|
||||
ax2.spines["right"].set_visible(True)
|
||||
ax.set(xlabel="share of classes the parents label differently", ylabel="barrier left after alignment")
|
||||
l1, la1 = ax.get_legend_handles_labels(); l2, la2 = ax2.get_legend_handles_labels()
|
||||
ax.legend(l1 + l2, la1 + la2, loc="center left")
|
||||
headline(ax, "The more classes in conflict, the worse the merge", "same classifier pairs; conflict swept")
|
||||
letter(ax, "B")
|
||||
|
||||
rep, _ = load_seed_bundles("results/llm_speciation") # s{seed}/ layout; seeds 2-3 from CX3
|
||||
|
||||
def series(df, mode, model, metric):
|
||||
"""Seed mean and 95% CI half-width per x (a single seed gives a zero-width band)."""
|
||||
sub = df[(df["mode"] == mode) & (df["model"] == model) & (df["metric"] == metric)]
|
||||
per_seed = sub.groupby(["x", "seed"])["accuracy"].mean().reset_index()
|
||||
x, m, h = mean_ci(per_seed, "x", "accuracy")
|
||||
return x, m, np.nan_to_num(h)
|
||||
|
||||
def band(ax, x_, y_, h_, style, color, label):
|
||||
ax.plot(x_, y_, style, color=color, label=label)
|
||||
ax.fill_between(x_, y_ - h_, y_ + h_, color=color, alpha=0.18, linewidth=0)
|
||||
|
||||
ax = axes[0, 2]
|
||||
band(ax, *series(rep, "conflict", "parent_a", "ambig_asc"), "--o", "#9ecae1", "parent A, graded by its own convention")
|
||||
band(ax, *series(rep, "conflict", "parent_b", "ambig_desc"), "--o", "#a1d99b", "parent B, graded by its own convention")
|
||||
band(ax, *series(rep, "conflict", "merge_soup", "coherence"), "-s", "#d62728", "merged model, graded by whichever\nconvention it follows best")
|
||||
ax.set(xlabel="training share on the conflicting convention",
|
||||
ylabel="accuracy on the shared, ambiguous questions", ylim=(-0.02, 0.4))
|
||||
ax.legend(fontsize=6.0, loc="upper left")
|
||||
headline(ax, "Language models: contradictory\nconventions break the merged model", "Qwen2.5-0.5B specialists; 3 seeds, 95% CI shaded")
|
||||
letter(ax, "C")
|
||||
|
||||
ax = axes[1, 0]
|
||||
band(ax, *series(rep, "duration", "merge_soup", "mean_private"), "-o", "#d62728", "merged model, on both parents' tasks")
|
||||
band(ax, *series(rep, "duration", "parent_a", "strings"), "--o", "#9ecae1", "parent A, on its own task")
|
||||
band(ax, *series(rep, "duration", "parent_b", "arith"), "--o", "#a1d99b", "parent B, on its own task")
|
||||
ax.set(xlabel="how long each specialist was trained (epochs)", ylabel="accuracy", ylim=(0, 1.02))
|
||||
ax.legend(loc="lower right", fontsize=6.4)
|
||||
headline(ax, "Training specialists longer, apart,\ndoes not break merging", "same language models; parents share no data")
|
||||
letter(ax, "D")
|
||||
save(fig, "fig5")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- fig 3: the language-model tier
|
||||
def fig3():
|
||||
import matplotlib.transforms as mtrans
|
||||
import pandas as pd
|
||||
from matplotlib.patches import Circle, FancyArrowPatch, FancyBboxPatch
|
||||
from scipy.stats import spearmanr
|
||||
|
||||
from stats_llm_7b_seeds import with_best_specialist
|
||||
|
||||
fig = plt.figure(figsize=(11.4, 12.4))
|
||||
gs = fig.add_gridspec(3, 2, height_ratios=[1.0, 1, 1], hspace=0.9, wspace=0.34)
|
||||
|
||||
# ---- A: how the compared models are built (schematic), placed flush with B/D on the left and a
|
||||
# fixed 0.75 in above B's headline (see fig4 for the same rule)
|
||||
axB, axC = fig.add_subplot(gs[1, 0]), fig.add_subplot(gs[1, 1])
|
||||
W, H = 10.6, 3.2
|
||||
pb, pc = axB.get_position(), axC.get_position()
|
||||
w_frac = pc.x1 - pb.x0
|
||||
h_frac = (w_frac * fig.get_figwidth()) * (H / W) / fig.get_figheight()
|
||||
ax = fig.add_axes([pb.x0, pb.y1 + 0.75 / fig.get_figheight(), w_frac, h_frac])
|
||||
ax.set_xlim(0, W); ax.set_ylim(0, H); ax.set_aspect("equal"); ax.set_axis_off()
|
||||
rob = _icon("robot.svg")
|
||||
FAM = [GOLD, GREEN, BLUE] # lists, strings, arithmetic
|
||||
|
||||
def robot(x, y, size, dots=(), alpha=1.0, crossed=False):
|
||||
ax.imshow(rob, extent=(x - size / 2, x + size / 2, y - size / 2, y + size / 2),
|
||||
interpolation="none", zorder=2)
|
||||
n = len(dots)
|
||||
for k, c in enumerate(dots):
|
||||
cx, cy = x + (k - (n - 1) / 2) * 0.17, y - size / 2 - 0.11
|
||||
ax.add_patch(Circle((cx, cy), 0.065, fc=c, ec="none", alpha=alpha))
|
||||
if crossed:
|
||||
ax.plot([cx - 0.04, cx + 0.04], [cy - 0.04, cy + 0.04], color="white", lw=0.8, zorder=3)
|
||||
|
||||
def caption(x, y, title, body):
|
||||
ax.text(x, y, title, ha="center", va="top", fontsize=8.0, fontweight="bold")
|
||||
ax.text(x, y - 0.22, body, ha="center", va="top", fontsize=7.0, color="#333", linespacing=1.25)
|
||||
|
||||
def arrow(p, q, color="#555"):
|
||||
ax.add_patch(FancyArrowPatch(p, q, arrowstyle="-|>", mutation_scale=9, color=color, lw=1.1,
|
||||
shrinkA=1, shrinkB=1))
|
||||
|
||||
ry, rs = 2.0, 0.66
|
||||
xb, xs, xa, xt, xr = 0.65, (2.05, 2.7, 3.35), 5.05, 7.4, 9.65
|
||||
robot(xb, ry, rs)
|
||||
caption(xb, 1.32, "base model", "the shared “textbook”;\nno extra training")
|
||||
arrow((xb + 0.45, ry), (xs[0] - 0.4, ry))
|
||||
for k, x in enumerate(xs):
|
||||
robot(x, ry, 0.52, dots=(FAM[k],))
|
||||
caption(xs[1], 1.32, "three specialists", "the base plus one small adapter each,\ntrained on one task family\n(lists · strings · arithmetic)")
|
||||
ax.text(xs[1], 0.46, "“best specialist” = the best of the three,\nchosen per seed",
|
||||
ha="center", va="top", fontsize=6.8, style="italic", color="#555", linespacing=1.2)
|
||||
# the three ways of combining them
|
||||
ax.plot([xs[1], xs[1], xr, xr], [ry + 0.38, ry + 0.78, ry + 0.78, ry + 0.4], color="#555", lw=1.0)
|
||||
ax.text((xs[1] + xr) / 2, ry + 0.82, "combine the three specialists, three ways", ha="center", va="bottom",
|
||||
fontsize=7.4, style="italic", color="#555")
|
||||
for x in (xa, xt):
|
||||
ax.plot([x, x], [ry + 0.78, ry + 0.5], color="#555", lw=1.0)
|
||||
arrow((x, ry + 0.52), (x, ry + rs / 2 + 0.02))
|
||||
arrow((xr, ry + 0.52), (xr, ry + 0.26 + 0.02))
|
||||
robot(xa, ry, rs, dots=FAM, alpha=0.45)
|
||||
caption(xa, 1.32, "merged (average)", "the adapters averaged;\nevery parent's contribution\nis diluted")
|
||||
robot(xt, ry, rs, dots=FAM, crossed=True)
|
||||
caption(xt, 1.32, "merged (interference-aware)", "changes on which the parents\nconflict are dropped, then\nthe rest averaged (TIES)")
|
||||
for k, x in enumerate((xr - 0.46, xr, xr + 0.46)):
|
||||
robot(x, ry + 0.02, 0.44, dots=(FAM[k],))
|
||||
ax.add_patch(FancyBboxPatch((xr - 0.2, 1.36), 0.4, 0.2, boxstyle="round,pad=0.02", fc="white", ec="#555", lw=0.9))
|
||||
ax.text(xr, 1.46, "router", ha="center", va="center", fontsize=6.6)
|
||||
for x in (xr - 0.46, xr, xr + 0.46):
|
||||
ax.plot([xr, x], [1.56, ry - 0.22 - 0.09], color="#555", lw=0.7, ls=(0, (2, 1.5)))
|
||||
caption(xr, 1.16, "routed (kept separate)", "each question goes to the\nspecialist that owns it;\nnothing is averaged")
|
||||
ax.text(W / 2, 0.02, "All models share the same frozen base; only the small adapters differ. "
|
||||
"A verifier marks every answer right or wrong; accuracy is the share marked right.",
|
||||
ha="center", va="bottom", fontsize=7.4, color="#333")
|
||||
headline(ax, "How the models compared in B and C are built")
|
||||
letter(ax, "A", x=-0.03)
|
||||
|
||||
# ---- B, C: bars with per-seed CIs and paired-test brackets
|
||||
METRICS = ((-0.19, "overall", "#2c7fb8", "accuracy, mean over all task families"),
|
||||
(0.19, "worst_family", "#d62728", "accuracy on the model's weakest task family"))
|
||||
|
||||
def seed_bars(ax, df, models, labels, pairs):
|
||||
x = np.arange(len(models))
|
||||
tops = []
|
||||
for off, metric, c, lab in METRICS:
|
||||
vals, errs = [], []
|
||||
for m in models:
|
||||
v = df[(df["model"] == m) & (df["metric"] == metric)].groupby("seed")["accuracy"].mean()
|
||||
vals.append(v.mean())
|
||||
errs.append(1.96 * v.std(ddof=1) / np.sqrt(len(v)) if len(v) > 1 else 0.0)
|
||||
ax.bar(x + off, vals, 0.36, yerr=errs, capsize=2, color=c, label=lab)
|
||||
tops.append(max(v + e for v, e in zip(vals, errs)))
|
||||
specs = []
|
||||
for a, b in pairs:
|
||||
for off, metric, c, _ in METRICS:
|
||||
specs.append((models.index(a) + off, models.index(b) + off, paired_p(df, a, b, metric), c))
|
||||
ymax = sig_brackets(ax, specs, top=max(tops) + 0.035)
|
||||
ax.set_ylim(0, ymax + 0.02)
|
||||
ax.set_xticks(x); ax.set_xticklabels(labels, fontsize=7)
|
||||
ax.set(ylabel="verifier accuracy")
|
||||
ax.legend(loc="upper center", bbox_to_anchor=(0.5, -0.2), ncol=2, fontsize=6.4)
|
||||
ax.text(0.5, -0.33, "brackets: paired t-test over seeds; * p<0.05 ** p<0.01 *** p<0.001 ns not significant",
|
||||
transform=ax.transAxes, ha="center", va="top", fontsize=5.8, color="#555")
|
||||
|
||||
ax = axB
|
||||
dfm = with_best_specialist(load_bundle("results/llm_merge_seeds")[0])
|
||||
seed_bars(ax, dfm, ["base", "best_specialist", "merge_soup", "merge_ties"],
|
||||
["base", "best\nspecialist", "merged\n(average)", "merged\n(interference-aware)"],
|
||||
[("best_specialist", "merge_soup"), ("best_specialist", "merge_ties"), ("merge_soup", "merge_ties")])
|
||||
headline(ax, "Merged specialists beat the best single specialist",
|
||||
"Qwen2.5-0.5B (0.5 billion parameters), easy tasks, 5 training seeds")
|
||||
letter(ax, "B")
|
||||
|
||||
ax = axC
|
||||
df7 = with_best_specialist(load_seed_bundles("results/llm_moe_hard_hpc")[0])
|
||||
seed_bars(ax, df7, ["best_specialist", "merge_soup", "merge_ties", "moe_oracle"],
|
||||
["best\nspecialist", "merged\n(average)", "merged\n(interference-aware)", "routed\n(kept separate)"],
|
||||
[("best_specialist", "merge_soup"), ("merge_soup", "moe_oracle"), ("best_specialist", "moe_oracle")])
|
||||
headline(ax, "On hard tasks, keeping specialists separate beats averaging them",
|
||||
"Qwen2.5-7B (7 billion parameters), hard tasks, 3 training seeds")
|
||||
letter(ax, "C")
|
||||
|
||||
# ---- D: pre-merge disagreement predicts merge damage
|
||||
a = pd.read_parquet("results/llm_epistasis/results.parquet")
|
||||
b = pd.read_parquet("results/llm_epistasis_compat/results.parquet")
|
||||
dfe = pd.concat([a, b], ignore_index=True)
|
||||
ax = fig.add_subplot(gs[2, 0])
|
||||
for mode, c, mk, lab in (("conflict", "#d62728", "o", "parents taught contradictory conventions"),
|
||||
("duration", "#2c7fb8", "s", "parents merely trained longer, apart"),
|
||||
("compat", "#41ab5d", "^", "parents share training data, no conflict")):
|
||||
sub = dfe[dfe["mode"] == mode]
|
||||
ax.scatter(sub["epi_conf"], sub["merge_penalty"], c=c, marker=mk, s=26, alpha=0.75, label=lab)
|
||||
ax.axhline(0, color="#999", lw=0.6)
|
||||
ax.set(xlabel="how often the two parents confidently disagree (measured before merging)",
|
||||
ylabel="merge penalty\n(accuracy lost relative to using each\nparent for its own task)")
|
||||
ax.legend(loc="upper left", fontsize=6.4)
|
||||
headline(ax, "Disagreement between parents, measured\nbefore merging, predicts merge damage",
|
||||
"39 specialist pairs (13 conditions × 3 seeds), Qwen2.5-0.5B")
|
||||
letter(ax, "D")
|
||||
|
||||
# ---- E: which pre-merge measures carry the signal
|
||||
preds = [("dis_raw", "disagreement\n(raw)", "#fc9272"), ("epi_conf", "disagreement\n(confident)", "#d62728"),
|
||||
("cross_perf", "cross-task\naccuracy", "#fcbba1"),
|
||||
("grad_cos", "gradient\nalignment", "#9ecae1"), ("delta_cos", "weight\ncosine", "#9ecae1"),
|
||||
("delta_l2", "weight\ndistance", "#9ecae1")]
|
||||
ax = fig.add_subplot(gs[2, 1])
|
||||
rhos_ = [abs(spearmanr(dfe[c], dfe["merge_penalty"])[0]) for c, _, _ in preds]
|
||||
ax.bar(np.arange(len(preds)), rhos_, 0.6, color=[c for _, _, c in preds])
|
||||
ax.set_xticks(np.arange(len(preds)))
|
||||
ax.set_xticklabels([l for _, l, _ in preds], fontsize=6.2)
|
||||
ax.set(ylabel="association with merge penalty\n(|Spearman ρ|)", ylim=(0, 0.8))
|
||||
tr = mtrans.blended_transform_factory(ax.transData, ax.transAxes)
|
||||
for (x1, x2, lab) in ((-0.3, 2.3, "measured by asking the parents questions"), (2.7, 5.3, "measured on the parents' weights")):
|
||||
ax.plot([x1, x2], [-0.27, -0.27], transform=tr, color="#555", lw=0.9, clip_on=False)
|
||||
ax.text((x1 + x2) / 2, -0.30, lab, transform=tr, ha="center", va="top", fontsize=6.4, color="#333")
|
||||
headline(ax, "Behavioural measures predict the damage;\nweight-geometry measures do not",
|
||||
"same 39 pairs; rank correlation with the merge penalty")
|
||||
letter(ax, "E")
|
||||
save(fig, "fig3")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
for f in (fig1a, fig1b, fig2, fig3, fig4, fig5):
|
||||
f()
|
||||
1393
paper/manuscript/refs/Evolution of sex for AI.ris
Normal file
1393
paper/manuscript/refs/Evolution of sex for AI.ris
Normal file
File diff suppressed because it is too large
Load diff
37
paper/manuscript/refs/README.md
Normal file
37
paper/manuscript/refs/README.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Zotero library for the manuscript's references
|
||||
|
||||
`Evolution of sex for AI.ris` — all 80 references from `paper/manuscript/main.md`, with metadata
|
||||
fetched from the publisher of record rather than retyped.
|
||||
|
||||
**To import:** Zotero → File → Import… → choose this file → keep "Place imported collections and
|
||||
items into new collection" ticked. The collection takes its name from the file, so rename the file
|
||||
first if you want a different folder name.
|
||||
|
||||
## How it was built
|
||||
|
||||
`build_zotero_library.py` (run from the repo root) parses the numbered reference list, resolves a DOI
|
||||
for each entry, and fetches authoritative metadata by content negotiation against doi.org, which
|
||||
serves both Crossref and DataCite records. Each Zotero item carries its manuscript reference number
|
||||
in the Extra/Notes field, so an item can be traced back to its citation.
|
||||
|
||||
- **77 of 80 resolved from a DOI.** 53 DOIs were already printed in the manuscript; the rest were
|
||||
found by Crossref title search, accepted only when the returned title actually matched (a plain
|
||||
relevance score is not enough — Crossref answers confidently for pre-DOI works).
|
||||
- **2 needed a hand-verified DOI:** ref 17 (Brinkmann et al., *Machine culture*), where the search
|
||||
returned a different paper with a near-identical title, and ref 64 (Schwarz et al., *Progress &
|
||||
Compress*), a PMLR paper with no Crossref DOI, cited by its arXiv DOI instead.
|
||||
- **3 genuinely predate DOIs** and are written out by hand in the script: Jenkin 1867, Fisher 1930
|
||||
(book), Templeton 1986 (book chapter).
|
||||
|
||||
`resolution-report.tsv` records the outcome and source for every entry.
|
||||
`references.csl.json` is the same library as CSL-JSON, for any tool that prefers it.
|
||||
|
||||
## Notes on the records
|
||||
|
||||
arXiv DOIs come back from DataCite uppercased and with no venue; the script restores the canonical
|
||||
`10.48550/arXiv.NNNN` casing and sets the publication to *arXiv* with the identifier in the archive
|
||||
field, so those items do not import as untitled journal articles. Publisher abstracts arrive wrapped
|
||||
in JATS markup with HTML entities and hard line breaks, all of which are stripped — RIS is
|
||||
line-oriented, and an unescaped abstract silently corrupts the record that follows it.
|
||||
|
||||
Re-run the script after any change to the reference list; it is a pure function of `main.md`.
|
||||
15308
paper/manuscript/refs/references.csl.json
Normal file
15308
paper/manuscript/refs/references.csl.json
Normal file
File diff suppressed because it is too large
Load diff
15308
paper/manuscript/refs/references.json
Normal file
15308
paper/manuscript/refs/references.json
Normal file
File diff suppressed because it is too large
Load diff
1393
paper/manuscript/refs/references.ris
Normal file
1393
paper/manuscript/refs/references.ris
Normal file
File diff suppressed because it is too large
Load diff
80
paper/manuscript/refs/report.txt
Normal file
80
paper/manuscript/refs/report.txt
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
1 OK 10.48550/arXiv.2508.06811 Anatomy of a Machine Learning Ecosystem: 2 Million Models on Hug in manuscript
|
||||
2 OK 10.48550/arXiv.2405.18432 Unsupervised Model Tree Heritage Recovery in manuscript
|
||||
3 OK 10.48550/arXiv.2402.00699 PeaTMOSS: A Dataset and Initial Analysis of Pre-Trained Models i in manuscript
|
||||
4 OK 10.48550/arXiv.2306.01708 TIES-Merging: Resolving Interference When Merging Models in manuscript
|
||||
5 OK 10.1038/s42256-024-00975-8 Evolutionary optimization of model merging recipes crossref (matched: Evolutionary optimization of model merging recipes)
|
||||
6 OK 10.48550/arXiv.2403.13257 Arcee's MergeKit: A Toolkit for Merging Large Language Models in manuscript
|
||||
7 OK 10.48550/arXiv.2408.07666 Model Merging in LLMs, MLLMs, and Beyond: Methods, Theories, App in manuscript
|
||||
8 OK 10.48550/arXiv.2503.01155 Nature-Inspired Population-Based Evolution of Large Language Mod in manuscript
|
||||
9 OK 10.48550/arXiv.2508.16204 Competition and Attraction Improve Model Fusion in manuscript
|
||||
10 OK 10.48550/arXiv.2501.05707 Multiagent Finetuning: Self Improvement with Diverse Reasoning C in manuscript
|
||||
11 OK 10.48550/arXiv.2406.11704 Nemotron-4 340B Technical Report in manuscript
|
||||
12 OK 10.48550/arXiv.2412.08905 Phi-4 Technical Report in manuscript
|
||||
13 OK 10.48550/arXiv.2212.10560 Self-Instruct: Aligning Language Models with Self-Generated Inst in manuscript
|
||||
14 OK 10.48550/arXiv.2401.05749 A Shocking Amount of the Web is Machine Translated: Insights fro in manuscript
|
||||
15 OK 10.48550/arXiv.2403.07183 Monitoring AI-Modified Content at Scale: A Case Study on the Imp in manuscript
|
||||
16 OK 10.48550/arXiv.2211.04325 Will we run out of data? Limits of LLM scaling based on human-ge in manuscript
|
||||
17 OK 10.1038/s41562-023-01742-2 Machine culture verified by hand
|
||||
18 OK 10.48550/arXiv.2304.03442 Generative Agents: Interactive Simulacra of Human Behavior in manuscript
|
||||
19 OK 10.48550/arXiv.2402.01680 Large Language Model based Multi-Agents: A Survey of Progress an in manuscript
|
||||
20 OK 10.48550/arXiv.2509.10147 Virtual Agent Economies in manuscript
|
||||
21 OK 10.1038/s41586-024-07566-y AI models collapse when trained on recursively generated data crossref (matched: AI models collapse when trained on recursively generated data)
|
||||
22 OK 10.1371/journal.pcbi.1002510 Structural Drift: The Population Dynamics of Sequential Learning crossref (matched: Structural Drift: The Population Dynamics of Sequential Learning)
|
||||
23 OK 10.48550/arXiv.2604.08554 Drift and selection in LLM text ecosystems in manuscript
|
||||
24 OK 10.48550/arXiv.2509.20101 First-Extinction Law for Resampling Processes in manuscript
|
||||
25 OK 10.48550/arXiv.2407.17493 Model Collapse in the Self-Consuming Chain of Diffusion Finetuni in manuscript
|
||||
26 OK 10.1016/s0079-7421(08)60536-8 Catastrophic Interference in Connectionist Networks: The Sequent crossref (matched: Catastrophic Interference in Connectionist Networks: The Sequential Le)
|
||||
27 OK 10.1016/s1364-6613(99)01294-2 Catastrophic forgetting in connectionist networks crossref (matched: Catastrophic forgetting in connectionist networks)
|
||||
28 OK 10.1016/0027-5107(64)90047-8 The relation of recombination to mutational advance crossref (matched: The relation of recombination to mutational advance)
|
||||
29 OK 10.48550/arXiv.2510.16657 Escaping Model Collapse via Synthetic Data Verification: Near-te in manuscript
|
||||
30 OK 10.48550/arXiv.2404.01413 Is Model Collapse Inevitable? Breaking the Curse of Recursion by in manuscript
|
||||
31 OK 10.1093/genetics/16.2.97 EVOLUTION IN MENDELIAN POPULATIONS crossref (matched: EVOLUTION IN MENDELIAN POPULATIONS)
|
||||
32 OK 10.1046/j.1523-1739.1996.10061509.x The One‐Migrant‐per‐Generation Rule in Conservation and Manageme crossref (matched: The One‐Migrant‐per‐Generation Rule in Conservation and Management)
|
||||
33 HAND (pre-DOI source) [Review of] The Origin of Species written by hand
|
||||
34 OK 10.48550/arXiv.2411.02207 Collective Model Intelligence Requires Compatible Specialization in manuscript
|
||||
35 HAND (pre-DOI source) The Genetical Theory of Natural Selection written by hand
|
||||
36 OK 10.1086/280418 Some Genetic Aspects of Sex crossref (matched: Some Genetic Aspects of Sex)
|
||||
37 OK 10.48550/arXiv.2106.09685 LoRA: Low-Rank Adaptation of Large Language Models in manuscript
|
||||
38 OK 10.1016/s0022-5193(87)80029-2 Towards a general theory of adaptive walks on rugged landscapes crossref (matched: Towards a general theory of adaptive walks on rugged landscapes)
|
||||
39 HAND (pre-DOI source) Coadaptation and outbreeding depression written by hand
|
||||
40 OK 10.1162/evco_a_00025 Abandoning Objectives: Evolution Through the Search for Novelty crossref (matched: Abandoning Objectives: Evolution Through the Search for Novelty Alone)
|
||||
41 OK 10.48550/arXiv.2503.05683 WikiBigEdit: Understanding the Limits of Lifelong Knowledge Edit in manuscript
|
||||
42 OK 10.48550/arXiv.2502.04390 In Praise of Stubbornness: An Empirical Case for Cognitive-Disso in manuscript
|
||||
43 OK 10.48550/arXiv.2607.09202 Interference and Retention in Continual Learning in manuscript
|
||||
44 OK 10.1017/s0016672300033140 A general model for the evolution of recombination crossref (matched: A general model for the evolution of recombination)
|
||||
45 OK 10.1006/tpbi.1997.1301 Deleterious Mutations, Variable Epistatic Interactions, and the crossref (matched: Deleterious Mutations, Variable Epistatic Interactions, and the Evolut)
|
||||
46 OK 10.1038/nrg761 Resolving the paradox of sex and recombination crossref (matched: Resolving the paradox of sex and recombination)
|
||||
47 OK 10.1093/genetics/117.3.559 Selection, Generalized Transmission and the Evolution of Modifie crossref (matched: Selection, Generalized Transmission and the Evolution of Modifier Gene)
|
||||
48 OK 10.1093/genetics/139.4.1805 The population genetics of speciation: the evolution of hybrid i crossref (matched: The population genetics of speciation: the evolution of hybrid incompa)
|
||||
49 OK 10.1111/j.0014-3820.2001.tb00628.x THE EVOLUTION OF POSTZYGOTIC ISOLATION: ACCUMULATING DOBZHANSKY- crossref (matched: THE EVOLUTION OF POSTZYGOTIC ISOLATION: ACCUMULATING DOBZHANSKY-MULLER)
|
||||
50 OK 10.48550/arXiv.2209.04836 Git Re-Basin: Merging Models modulo Permutation Symmetries in manuscript
|
||||
51 OK 10.48550/arXiv.2606.23607 Scaling Linear Mode Connectivity and Merging to Billion Paramete in manuscript
|
||||
52 OK 10.48550/arXiv.2410.12766 The Non-Local Model Merging Problem: Permutation Symmetries and in manuscript
|
||||
53 OK 10.48550/arXiv.2607.11997 Are we Merging the Right Models? Impact of Expert Training Durat in manuscript
|
||||
54 OK 10.48550/arXiv.2601.22285 Demystifying Mergeability: Interpretable Properties to Predict M in manuscript
|
||||
55 OK 10.48550/arXiv.2205.12393 Fine-tuned Language Models are Continual Learners in manuscript
|
||||
56 OK 10.48550/arXiv.2403.08763 Simple and Scalable Strategies to Continually Pre-train Large La in manuscript
|
||||
57 OK 10.1080/09540099550039318 Catastrophic Forgetting, Rehearsal and Pseudorehearsal crossref (matched: Catastrophic Forgetting, Rehearsal and Pseudorehearsal)
|
||||
58 OK 10.48550/arXiv.1705.08690 Continual Learning with Deep Generative Replay in manuscript
|
||||
59 OK 10.48550/arXiv.2406.07515 Beyond Model Collapse: Scaling Up with Synthesized Data Requires in manuscript
|
||||
60 OK 10.48550/arXiv.1606.04671 Progressive Neural Networks in manuscript
|
||||
61 OK 10.48550/arXiv.2405.09673 LoRA Learns Less and Forgets Less in manuscript
|
||||
62 OK 10.1037/0033-295x.102.3.419 Why there are complementary learning systems in the hippocampus crossref (matched: Why there are complementary learning systems in the hippocampus and ne)
|
||||
63 OK 10.1016/j.tics.2016.05.004 What Learning Systems do Intelligent Agents Need? Complementary crossref (matched: What Learning Systems do Intelligent Agents Need? Complementary Learni)
|
||||
64 OK 10.48550/arXiv.1805.06370 Progress & Compress: A scalable framework for continual lear verified by hand
|
||||
65 OK 10.48550/arXiv.2212.04089 Editing Models with Task Arithmetic in manuscript
|
||||
66 OK 10.48550/arXiv.2407.06322 MagMax: Leveraging Model Merging for Seamless Continual Learning in manuscript
|
||||
67 OK 10.48550/arXiv.2407.08699 Mitigating Catastrophic Forgetting in Language Transfer via Mode in manuscript
|
||||
68 OK 10.48550/arXiv.2412.06712 How to Merge Your Multimodal Models Over Time? in manuscript
|
||||
69 OK 10.48550/arXiv.1812.05159 An Empirical Study of Example Forgetting during Deep Neural Netw in manuscript
|
||||
70 OK 10.48550/arXiv.2211.08411 Large Language Models Struggle to Learn Long-Tail Knowledge in manuscript
|
||||
71 OK 10.48550/arXiv.2210.00266 Long-Tailed Class Incremental Learning in manuscript
|
||||
72 OK 10.48550/arXiv.2309.10105 Understanding Catastrophic Forgetting in Language Models via Imp in manuscript
|
||||
73 OK 10.48550/arXiv.2311.03099 Language Models are Super Mario: Absorbing Abilities from Homolo in manuscript
|
||||
74 OK 10.48550/arXiv.2203.05482 Model soups: averaging weights of multiple fine-tuned models imp in manuscript
|
||||
75 OK 10.48550/arXiv.2603.09463 An Empirical Study and Theoretical Explanation on Task-Level Mod in manuscript
|
||||
76 OK 10.48550/arXiv.2506.14126 From Memorization to Parameter Interference: How Overtraining Ex in manuscript
|
||||
77 OK 10.1145/2934662 Sex as an algorithm crossref (matched: Sex as an algorithm)
|
||||
78 OK 10.48550/arXiv.2311.09807 The Curious Decline of Linguistic Diversity: Training Language M in manuscript
|
||||
79 OK 10.48550/arXiv.2309.05196 Does Writing with Language Models Reduce Content Diversity? in manuscript
|
||||
80 OK 10.1126/sciadv.adn5290 Generative AI enhances individual creativity but reduces the col crossref (matched: Generative AI enhances individual creativity but reduces the collectiv)
|
||||
80
paper/manuscript/refs/resolution-report.tsv
Normal file
80
paper/manuscript/refs/resolution-report.tsv
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
1 OK 10.48550/arXiv.2508.06811 Anatomy of a Machine Learning Ecosystem: 2 Million Models on Hug in manuscript
|
||||
2 OK 10.48550/arXiv.2405.18432 Unsupervised Model Tree Heritage Recovery in manuscript
|
||||
3 OK 10.48550/arXiv.2402.00699 PeaTMOSS: A Dataset and Initial Analysis of Pre-Trained Models i in manuscript
|
||||
4 OK 10.48550/arXiv.2306.01708 TIES-Merging: Resolving Interference When Merging Models in manuscript
|
||||
5 OK 10.1038/s42256-024-00975-8 Evolutionary optimization of model merging recipes crossref (matched: Evolutionary optimization of model merging recipes)
|
||||
6 OK 10.48550/arXiv.2403.13257 Arcee's MergeKit: A Toolkit for Merging Large Language Models in manuscript
|
||||
7 OK 10.48550/arXiv.2408.07666 Model Merging in LLMs, MLLMs, and Beyond: Methods, Theories, App in manuscript
|
||||
8 OK 10.48550/arXiv.2503.01155 Nature-Inspired Population-Based Evolution of Large Language Mod in manuscript
|
||||
9 OK 10.48550/arXiv.2508.16204 Competition and Attraction Improve Model Fusion in manuscript
|
||||
10 OK 10.48550/arXiv.2501.05707 Multiagent Finetuning: Self Improvement with Diverse Reasoning C in manuscript
|
||||
11 OK 10.48550/arXiv.2406.11704 Nemotron-4 340B Technical Report in manuscript
|
||||
12 OK 10.48550/arXiv.2412.08905 Phi-4 Technical Report in manuscript
|
||||
13 OK 10.48550/arXiv.2212.10560 Self-Instruct: Aligning Language Models with Self-Generated Inst in manuscript
|
||||
14 OK 10.48550/arXiv.2401.05749 A Shocking Amount of the Web is Machine Translated: Insights fro in manuscript
|
||||
15 OK 10.48550/arXiv.2403.07183 Monitoring AI-Modified Content at Scale: A Case Study on the Imp in manuscript
|
||||
16 OK 10.48550/arXiv.2211.04325 Will we run out of data? Limits of LLM scaling based on human-ge in manuscript
|
||||
17 OK 10.1038/s41562-023-01742-2 Machine culture verified by hand
|
||||
18 OK 10.48550/arXiv.2304.03442 Generative Agents: Interactive Simulacra of Human Behavior in manuscript
|
||||
19 OK 10.48550/arXiv.2402.01680 Large Language Model based Multi-Agents: A Survey of Progress an in manuscript
|
||||
20 OK 10.48550/arXiv.2509.10147 Virtual Agent Economies in manuscript
|
||||
21 OK 10.1038/s41586-024-07566-y AI models collapse when trained on recursively generated data crossref (matched: AI models collapse when trained on recursively generated data)
|
||||
22 OK 10.1371/journal.pcbi.1002510 Structural Drift: The Population Dynamics of Sequential Learning crossref (matched: Structural Drift: The Population Dynamics of Sequential Learning)
|
||||
23 OK 10.48550/arXiv.2604.08554 Drift and selection in LLM text ecosystems in manuscript
|
||||
24 OK 10.48550/arXiv.2509.20101 First-Extinction Law for Resampling Processes in manuscript
|
||||
25 OK 10.48550/arXiv.2407.17493 Model Collapse in the Self-Consuming Chain of Diffusion Finetuni in manuscript
|
||||
26 OK 10.1016/s0079-7421(08)60536-8 Catastrophic Interference in Connectionist Networks: The Sequent crossref (matched: Catastrophic Interference in Connectionist Networks: The Sequential Le)
|
||||
27 OK 10.1016/s1364-6613(99)01294-2 Catastrophic forgetting in connectionist networks crossref (matched: Catastrophic forgetting in connectionist networks)
|
||||
28 OK 10.1016/0027-5107(64)90047-8 The relation of recombination to mutational advance crossref (matched: The relation of recombination to mutational advance)
|
||||
29 OK 10.48550/arXiv.2510.16657 Escaping Model Collapse via Synthetic Data Verification: Near-te in manuscript
|
||||
30 OK 10.48550/arXiv.2404.01413 Is Model Collapse Inevitable? Breaking the Curse of Recursion by in manuscript
|
||||
31 OK 10.1093/genetics/16.2.97 EVOLUTION IN MENDELIAN POPULATIONS crossref (matched: EVOLUTION IN MENDELIAN POPULATIONS)
|
||||
32 OK 10.1046/j.1523-1739.1996.10061509.x The One‐Migrant‐per‐Generation Rule in Conservation and Manageme crossref (matched: The One‐Migrant‐per‐Generation Rule in Conservation and Management)
|
||||
33 HAND (pre-DOI source) [Review of] The Origin of Species written by hand
|
||||
34 OK 10.48550/arXiv.2411.02207 Collective Model Intelligence Requires Compatible Specialization in manuscript
|
||||
35 HAND (pre-DOI source) The Genetical Theory of Natural Selection written by hand
|
||||
36 OK 10.1086/280418 Some Genetic Aspects of Sex crossref (matched: Some Genetic Aspects of Sex)
|
||||
37 OK 10.48550/arXiv.2106.09685 LoRA: Low-Rank Adaptation of Large Language Models in manuscript
|
||||
38 OK 10.1016/s0022-5193(87)80029-2 Towards a general theory of adaptive walks on rugged landscapes crossref (matched: Towards a general theory of adaptive walks on rugged landscapes)
|
||||
39 HAND (pre-DOI source) Coadaptation and outbreeding depression written by hand
|
||||
40 OK 10.1162/evco_a_00025 Abandoning Objectives: Evolution Through the Search for Novelty crossref (matched: Abandoning Objectives: Evolution Through the Search for Novelty Alone)
|
||||
41 OK 10.48550/arXiv.2503.05683 WikiBigEdit: Understanding the Limits of Lifelong Knowledge Edit in manuscript
|
||||
42 OK 10.48550/arXiv.2502.04390 In Praise of Stubbornness: An Empirical Case for Cognitive-Disso in manuscript
|
||||
43 OK 10.48550/arXiv.2607.09202 Interference and Retention in Continual Learning in manuscript
|
||||
44 OK 10.1017/s0016672300033140 A general model for the evolution of recombination crossref (matched: A general model for the evolution of recombination)
|
||||
45 OK 10.1006/tpbi.1997.1301 Deleterious Mutations, Variable Epistatic Interactions, and the crossref (matched: Deleterious Mutations, Variable Epistatic Interactions, and the Evolut)
|
||||
46 OK 10.1038/nrg761 Resolving the paradox of sex and recombination crossref (matched: Resolving the paradox of sex and recombination)
|
||||
47 OK 10.1093/genetics/117.3.559 Selection, Generalized Transmission and the Evolution of Modifie crossref (matched: Selection, Generalized Transmission and the Evolution of Modifier Gene)
|
||||
48 OK 10.1093/genetics/139.4.1805 The population genetics of speciation: the evolution of hybrid i crossref (matched: The population genetics of speciation: the evolution of hybrid incompa)
|
||||
49 OK 10.1111/j.0014-3820.2001.tb00628.x THE EVOLUTION OF POSTZYGOTIC ISOLATION: ACCUMULATING DOBZHANSKY- crossref (matched: THE EVOLUTION OF POSTZYGOTIC ISOLATION: ACCUMULATING DOBZHANSKY-MULLER)
|
||||
50 OK 10.48550/arXiv.2209.04836 Git Re-Basin: Merging Models modulo Permutation Symmetries in manuscript
|
||||
51 OK 10.48550/arXiv.2606.23607 Scaling Linear Mode Connectivity and Merging to Billion Paramete in manuscript
|
||||
52 OK 10.48550/arXiv.2410.12766 The Non-Local Model Merging Problem: Permutation Symmetries and in manuscript
|
||||
53 OK 10.48550/arXiv.2607.11997 Are we Merging the Right Models? Impact of Expert Training Durat in manuscript
|
||||
54 OK 10.48550/arXiv.2601.22285 Demystifying Mergeability: Interpretable Properties to Predict M in manuscript
|
||||
55 OK 10.48550/arXiv.2205.12393 Fine-tuned Language Models are Continual Learners in manuscript
|
||||
56 OK 10.48550/arXiv.2403.08763 Simple and Scalable Strategies to Continually Pre-train Large La in manuscript
|
||||
57 OK 10.1080/09540099550039318 Catastrophic Forgetting, Rehearsal and Pseudorehearsal crossref (matched: Catastrophic Forgetting, Rehearsal and Pseudorehearsal)
|
||||
58 OK 10.48550/arXiv.1705.08690 Continual Learning with Deep Generative Replay in manuscript
|
||||
59 OK 10.48550/arXiv.2406.07515 Beyond Model Collapse: Scaling Up with Synthesized Data Requires in manuscript
|
||||
60 OK 10.48550/arXiv.1606.04671 Progressive Neural Networks in manuscript
|
||||
61 OK 10.48550/arXiv.2405.09673 LoRA Learns Less and Forgets Less in manuscript
|
||||
62 OK 10.1037/0033-295x.102.3.419 Why there are complementary learning systems in the hippocampus crossref (matched: Why there are complementary learning systems in the hippocampus and ne)
|
||||
63 OK 10.1016/j.tics.2016.05.004 What Learning Systems do Intelligent Agents Need? Complementary crossref (matched: What Learning Systems do Intelligent Agents Need? Complementary Learni)
|
||||
64 OK 10.48550/arXiv.1805.06370 Progress & Compress: A scalable framework for continual lear verified by hand
|
||||
65 OK 10.48550/arXiv.2212.04089 Editing Models with Task Arithmetic in manuscript
|
||||
66 OK 10.48550/arXiv.2407.06322 MagMax: Leveraging Model Merging for Seamless Continual Learning in manuscript
|
||||
67 OK 10.48550/arXiv.2407.08699 Mitigating Catastrophic Forgetting in Language Transfer via Mode in manuscript
|
||||
68 OK 10.48550/arXiv.2412.06712 How to Merge Your Multimodal Models Over Time? in manuscript
|
||||
69 OK 10.48550/arXiv.1812.05159 An Empirical Study of Example Forgetting during Deep Neural Netw in manuscript
|
||||
70 OK 10.48550/arXiv.2211.08411 Large Language Models Struggle to Learn Long-Tail Knowledge in manuscript
|
||||
71 OK 10.48550/arXiv.2210.00266 Long-Tailed Class Incremental Learning in manuscript
|
||||
72 OK 10.48550/arXiv.2309.10105 Understanding Catastrophic Forgetting in Language Models via Imp in manuscript
|
||||
73 OK 10.48550/arXiv.2311.03099 Language Models are Super Mario: Absorbing Abilities from Homolo in manuscript
|
||||
74 OK 10.48550/arXiv.2203.05482 Model soups: averaging weights of multiple fine-tuned models imp in manuscript
|
||||
75 OK 10.48550/arXiv.2603.09463 An Empirical Study and Theoretical Explanation on Task-Level Mod in manuscript
|
||||
76 OK 10.48550/arXiv.2506.14126 From Memorization to Parameter Interference: How Overtraining Ex in manuscript
|
||||
77 OK 10.1145/2934662 Sex as an algorithm crossref (matched: Sex as an algorithm)
|
||||
78 OK 10.48550/arXiv.2311.09807 The Curious Decline of Linguistic Diversity: Training Language M in manuscript
|
||||
79 OK 10.48550/arXiv.2309.05196 Does Writing with Language Models Reduce Content Diversity? in manuscript
|
||||
80 OK 10.1126/sciadv.adn5290 Generative AI enhances individual creativity but reduces the col crossref (matched: Generative AI enhances individual creativity but reduces the collectiv)
|
||||
|
131
paper/manuscript/renumber_refs.py
Normal file
131
paper/manuscript/renumber_refs.py
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
"""Renumber the manuscript's references to first-appearance order (PNAS style).
|
||||
|
||||
Reads paper/manuscript/main.md, finds every parenthesised citation group in the text above
|
||||
"## References", derives the order in which references first appear, and rewrites the citation
|
||||
groups in main.md, si.md, and the figure captions in build.py, then reorders the reference list.
|
||||
Citation groups are parentheses containing only reference numbers, commas, en-dash ranges, an optional
|
||||
"cf. " prefix, or a prose prefix ending in a semicolon ("...; 11, 12"). Four-digit numbers (years)
|
||||
never match, and any number above the list length is reported and left alone.
|
||||
|
||||
Usage: python paper/manuscript/renumber_refs.py # dry run: mapping + per-file counts
|
||||
python paper/manuscript/renumber_refs.py --apply # rewrite the three files in place
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
MAIN, SI, BUILD = (ROOT / "paper" / "manuscript" / n for n in ("main.md", "si.md", "build.py"))
|
||||
REF_HEADER = "## References"
|
||||
CIT = re.compile(
|
||||
r"\((?P<pre>[^()]*?;\s*)?(?P<cf>cf\.\s*)?"
|
||||
r"(?P<nums>\d{1,3}(?:\s*[–-]\s*\d{1,3})?(?:,\s*\d{1,3}(?:\s*[–-]\s*\d{1,3})?)*)\)"
|
||||
)
|
||||
REF_LINE = re.compile(r"^(\d+)\. (.*)$")
|
||||
|
||||
|
||||
def expand(nums: str) -> list[int]:
|
||||
out: list[int] = []
|
||||
for part in re.split(r",\s*", nums):
|
||||
if re.search(r"[–-]", part):
|
||||
a, b = (int(x) for x in re.split(r"\s*[–-]\s*", part))
|
||||
out.extend(range(a, b + 1))
|
||||
else:
|
||||
out.append(int(part))
|
||||
return out
|
||||
|
||||
|
||||
def compress(nums: list[int]) -> str:
|
||||
"""Ascending, with runs of three or more collapsed to an en-dash range."""
|
||||
nums = sorted(set(nums))
|
||||
runs: list[list[int]] = []
|
||||
for n in nums:
|
||||
if runs and n == runs[-1][-1] + 1:
|
||||
runs[-1].append(n)
|
||||
else:
|
||||
runs.append([n])
|
||||
return ", ".join(f"{r[0]}–{r[-1]}" if len(r) >= 3 else ", ".join(map(str, r)) for r in runs)
|
||||
|
||||
|
||||
def split_main(text: str) -> tuple[str, list[tuple[int, str]]]:
|
||||
body, _, refs = text.partition(REF_HEADER)
|
||||
entries = [(int(m.group(1)), m.group(2)) for line in refs.splitlines() if (m := REF_LINE.match(line))]
|
||||
return body, entries
|
||||
|
||||
|
||||
def first_appearance(body: str, n_refs: int) -> list[int]:
|
||||
order: list[int] = []
|
||||
for m in CIT.finditer(body):
|
||||
for n in expand(m.group("nums")):
|
||||
if n <= n_refs and n not in order:
|
||||
order.append(n)
|
||||
return order
|
||||
|
||||
|
||||
def rewrite(text: str, mapping: dict[int, int], n_refs: int, label: str) -> tuple[str, int, list[str]]:
|
||||
count, suspicious = 0, []
|
||||
|
||||
def sub(m: re.Match) -> str:
|
||||
nonlocal count
|
||||
nums = expand(m.group("nums"))
|
||||
if any(n > n_refs or n < 1 for n in nums):
|
||||
suspicious.append(m.group(0))
|
||||
return m.group(0)
|
||||
count += 1
|
||||
return f"({m.group('pre') or ''}{m.group('cf') or ''}{compress([mapping[n] for n in nums])})"
|
||||
|
||||
return CIT.sub(sub, text), count, suspicious
|
||||
|
||||
|
||||
def main(apply: bool) -> int:
|
||||
main_text = MAIN.read_text()
|
||||
body, entries = split_main(main_text)
|
||||
n_refs = len(entries)
|
||||
assert [n for n, _ in entries] == list(range(1, n_refs + 1)), "reference list is not 1..N"
|
||||
order = first_appearance(body, n_refs)
|
||||
orphans = sorted(set(range(1, n_refs + 1)) - set(order))
|
||||
if orphans:
|
||||
print(f"ERROR: never cited in main text: {orphans}")
|
||||
return 1
|
||||
mapping = {old: new for new, old in enumerate(order, start=1)}
|
||||
changed = {o: n for o, n in mapping.items() if o != n}
|
||||
print(f"{n_refs} references; {len(changed)} renumbered" + (":" if changed else "."))
|
||||
for o in sorted(changed):
|
||||
print(f" {o:3d} -> {mapping[o]:3d} {entries[o - 1][1][:70]}")
|
||||
|
||||
outputs: dict[Path, str] = {}
|
||||
new_body, c, sus = rewrite(body, mapping, n_refs, "main")
|
||||
print(f"main.md: {c} citation groups" + (f"; left alone: {sus}" if sus else ""))
|
||||
by_new = sorted(entries, key=lambda e: mapping[e[0]])
|
||||
new_refs = "\n".join(f"{mapping[o]}. {t}" for o, t in by_new)
|
||||
outputs[MAIN] = f"{new_body}{REF_HEADER}\n\n{new_refs}\n"
|
||||
text, c, sus = rewrite(SI.read_text(), mapping, n_refs, SI.name)
|
||||
print(f"{SI.name}: {c} citation groups" + (f"; left alone: {sus}" if sus else ""))
|
||||
outputs[SI] = text
|
||||
# build.py is Python: only its FIGURES caption block may carry citations, so rewrite that slice
|
||||
# alone — tuples like (0, 1) elsewhere in the code would otherwise look like citations.
|
||||
btext = BUILD.read_text()
|
||||
head = re.search(r"^FIGURES\b[^\n]*\{\s*$", btext, re.M)
|
||||
if head is None:
|
||||
print(f"{BUILD.name}: no FIGURES block found; skipped")
|
||||
else:
|
||||
start = head.start()
|
||||
end = btext.index("\n}\n", start) + 3
|
||||
block, c, sus = rewrite(btext[start:end], mapping, n_refs, BUILD.name)
|
||||
print(f"{BUILD.name} captions: {c} citation groups" + (f"; left alone: {sus}" if sus else ""))
|
||||
outputs[BUILD] = btext[:start] + block + btext[end:]
|
||||
|
||||
if apply:
|
||||
for path, text in outputs.items():
|
||||
path.write_text(text)
|
||||
print("applied.")
|
||||
else:
|
||||
print("dry run — pass --apply to write.")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main("--apply" in sys.argv))
|
||||
604
paper/manuscript/si.md
Normal file
604
paper/manuscript/si.md
Normal file
|
|
@ -0,0 +1,604 @@
|
|||
# Supplementary Information — The evolution of sex for artificial intelligence
|
||||
|
||||
## Contents
|
||||
|
||||
SI Text S1–S4, SI Tables S1–S2, SI Methods M1–M7, SI Statistics, SI Figures S1–S16, and a separate
|
||||
Appendix 1, *The figures explained* (`figure_legends_for_students.pdf`), which restates every main and
|
||||
supplementary figure with a plain-language account of the experiment behind it, for readers from biology.
|
||||
|
||||
## Reproducibility
|
||||
|
||||
Every experiment in this paper is defined by one committed configuration file under `configs/`.
|
||||
Running it produces three artifacts under `results/<name>/`: the results table (`results.parquet`),
|
||||
the fully resolved configuration, and a manifest recording content hashes, the master seed, and the
|
||||
git commit. Each experiment directory also contains a README with the figure legend and the current
|
||||
status of the experiment's falsifier — the outcome that would refute its claim (see Methods M1) —
|
||||
plus a figure that regenerates from the parquet file alone. The script `reproduce.sh` re-runs the
|
||||
entire study from the master seeds, and `REPRODUCING.md` maps every panel of the manuscript to the
|
||||
configuration and seed behind it.
|
||||
|
||||
## SI Text S1. The incompatibility floor: what no alignment can remove
|
||||
|
||||
**Setting.** Two models, A and B, are trained on the same input distribution. Their label functions
|
||||
`f_A` and `f_B` agree everywhere except on a *conflict set* `S`, whose size is its probability mass
|
||||
`μ(S)`. In the conflict condition of the trained-network speciation experiment, `S` consists of the
|
||||
cyclically relabelled classes, so `μ(S)` is approximately the configured conflict fraction, up to
|
||||
class-balance corrections.
|
||||
|
||||
A *function-preserving transformation* `T` is any change to a network's weights that leaves its
|
||||
outputs untouched. For a plain ReLU multilayer perceptron these transformations are exactly the
|
||||
permutations of hidden units and the positive rescalings of individual units: scaling a unit's
|
||||
incoming weights up and its outgoing weights down by the same factor does not change what the network
|
||||
computes. Together they form the *unit symmetry group* of the architecture. By construction `T(B)`
|
||||
computes the same function as B, that is `T(B)(x) = B(x)` for every input `x`.
|
||||
|
||||
**Proposition 1 (endpoint invariance).** Define the *chord* as the straight line connecting the two
|
||||
endpoint loss values, `(1−α)·L(A) + α·L(B)`. It depends only on the endpoints and is the baseline used
|
||||
in the definition of the interpolation barrier; it is not the loss along the interpolation path in
|
||||
weight space. For every function-preserving `T`, the pair `(A, T(B))` has the same endpoint losses as
|
||||
the pair `(A, B)`, and therefore the same chord. The interpolation path itself is generally not
|
||||
invariant: the losses along `(1−α)·A + α·T(B)` change with `T`. This is exactly the room an alignment
|
||||
has to lower a barrier. The proof is immediate from the definition of function-preserving.
|
||||
|
||||
*Scope of the alignment guarantee.* The aligner used here is guaranteed to recover a
|
||||
permuted-and-rescaled copy of a network exactly. That is an important special case, but it does not
|
||||
prove that the alignment is optimal over the whole symmetry group for independently trained networks.
|
||||
Consequently the share of the barrier attributed to removable coordinate mismatch is a lower bound,
|
||||
and the residual share an upper bound, on their true values.
|
||||
|
||||
**Proposition 2 (no merged model can serve both parents).** Let `h` be any single classifier; in
|
||||
particular, any interpolated or merged model, under any alignment. On every input `x ∈ S` the two
|
||||
parents disagree, `f_A(x) ≠ f_B(x)`, so `h` must disagree with at least one of them. Writing `ε_P(h)`
|
||||
for `h`'s error rate against parent `P`'s labels,
|
||||
|
||||
`ε_A(h) + ε_B(h) ≥ μ(S)`, hence `max(ε_A(h), ε_B(h)) ≥ μ(S)/2`.
|
||||
|
||||
When two models' conventions conflict on a set of mass `μ(S)`, any hybrid of the two is wrong on at
|
||||
least one parent's task at least `μ(S)/2` of the time. This floor is information-theoretic, holding
|
||||
regardless of the alignment group, the architecture, or the merging operator. In the fitness sense it
|
||||
is reproductive isolation: beyond a given functional conflict, no recombination operator can produce
|
||||
an offspring faithful to both lineages.
|
||||
|
||||
**What remains empirical, and how the experiment is designed.** Propositions 1 and 2 do not bound the
|
||||
single-task path barrier: the loss along the interpolation between A and `T(B)`, evaluated on one
|
||||
parent's task alone. In principle such a path could dip toward one parent's function and yield a low
|
||||
barrier even under conflict. Whether it does is an empirical question, and it is precisely what the
|
||||
experiment measures. The measured answer is that it does not. In the conflict condition the barrier is
|
||||
unchanged by permutation alignment (the `residual` readout) and by alignment modulo the full
|
||||
permutation-and-positive-rescaling group (the `residual_scale` readout), while the very same aligner
|
||||
removes almost all of the barrier between independently initialised networks, the positive control.
|
||||
Work on richer symmetry groups for transformers (83) strengthens the removable side of the
|
||||
decomposition and is therefore complementary to this result: the more barrier a larger group can
|
||||
remove for *compatible* models, the sharper the meaning of the barrier that survives for
|
||||
*incompatible* ones. Proposition 2 caps what any of these methods could ever achieve on the conflict
|
||||
set.
|
||||
|
||||
**Terminology used in the paper.** "Residual (after alignment)" denotes the estimated functional
|
||||
incompatibility: the part of the merge barrier that remains after the architecture's unit symmetries
|
||||
have been divided out. For ReLU MLPs I align modulo the full unit symmetry group, so the estimate is
|
||||
not confounded by symmetries of that architecture class that the aligner might have missed.
|
||||
|
||||
## SI Text S2. Emergent versus imposed incompatibility
|
||||
|
||||
The conflict condition *imposes* contradiction: the two label maps disagree on `S` by construction,
|
||||
which pins `μ(S) > 0` and activates Proposition 2. A genuine Bateson–Dobzhansky–Muller
|
||||
incompatibility is instead *emergent*. Each lineage's substitutions are harmless on their own
|
||||
background, so the training signals never contradict and `μ(S) = 0`; any incompatibility appears only
|
||||
when the two lineages are combined.
|
||||
|
||||
Two conditions realise this emergent setting. In `disjoint`, the parents are specialists on
|
||||
complementary classes. In `augment`, they learn divergent input conventions on the same task. Neither
|
||||
condition contains label conflict, so any barrier that survives alignment cannot be attributed to
|
||||
label conflict. Such a barrier would be the emergent-speciation signal proper.
|
||||
|
||||
Both readings were registered before the run. If the residual barrier grows with divergence, then
|
||||
model speciation is emergent in real weights, and the trajectory seen in the analytic speciation model
|
||||
is realised. If the residual stays at the level of the `shared` control, then within this regime
|
||||
trained networks are more merge-compatible than the biological analogy predicts. The second reading
|
||||
would bound the analogy, and be a useful design result in its own right: merging is safe
|
||||
whenever there is no functional conflict.
|
||||
|
||||
**Outcome.** Four replicates, with divergence up to 3,200 steps — up to 6.4× the shared base training
|
||||
— returned the second reading. The residual barrier was 0.000 at every divergence in both emergent
|
||||
conditions. Merging moreover *rescued* the `disjoint` specialists, which had forgotten the classes
|
||||
outside their specialty: at the longest divergence the parents score 0.535 and 0.474 on the full task,
|
||||
while the merged model holds approximately 0.955 at every divergence tested. This is a sustained
|
||||
Fisher–Muller rescue at zero barrier. Within this regime, reproductive isolation in real weights
|
||||
required functional conflict. The same question at language-model scale is answered by the duration
|
||||
arm of the language-model speciation experiment, which likewise found no isolation from over-training
|
||||
alone (1 to 12 epochs); whether still longer horizons erode mergeability (cf. 83) remains open.
|
||||
|
||||
## SI Text S3. Compatible loci and conflicting alleles in a multigenerational population
|
||||
|
||||
**The two kinds of new knowledge.** A *locus* is a position in the genome, and *alleles* are the
|
||||
alternative versions that can occupy it: one blood-group locus, three alleles A, B and O, of which any
|
||||
one chromosome carries exactly one. In a model population a locus is a slot for a capability ("how to
|
||||
answer a two-way question") and alleles are the incompatible conventions that could fill it ("yes/no",
|
||||
"true/false", "1/2"). A skill that conflicts with nothing a lineage already holds occupies a new locus
|
||||
and is simply added; a skill that demands a different convention for a question shape the lineage
|
||||
already answers is a competing allele, and a single model, like a single chromosome, carries one.
|
||||
Proposition S2 gives the cost: when two parents' conventions disagree on a share `μ(S)` of inputs, any
|
||||
merged child errs against at least one parent on at least `μ(S)/2` of them. In the six-generation
|
||||
population a lineage obliged to merge at generation `t` pays that floor against its partner's
|
||||
conflicting conventions; because the child continues the lineage, the loss is inherited, and the next
|
||||
generation's conflict adds to it. Under the Latin-square curriculum `μ_t(S)` is zero while partners are
|
||||
complementary (their skills occupy disjoint loci) and becomes positive once a partner carries a
|
||||
differently conventioned version of a skill the lineage already holds. Two of the six families —
|
||||
yes/no questions and two-way pronoun resolution — have the most idiosyncratic conventions and were
|
||||
measured in calibration at 0.00–0.04 accuracy on every other family, so they carry the largest `μ(S)`
|
||||
against every partner; the generation at which the curriculum hands them to a lineage's partner fixes
|
||||
when that lineage's collapse begins.
|
||||
|
||||
**Negative controls that isolate convention conflict.** Three alternative explanations of the
|
||||
obligate arm's collapse were tested directly and refuted. (i) *A destructive skill spreading through
|
||||
merges.* A single 50/50 merge of two clean single-skill adapters (science questions 0.838 / yes-no
|
||||
0.000; yes-no 0.800 / science 0.300) scored 0.863 and 0.787, mean 0.825 against 0.550 for the better
|
||||
parent: one merge is protective, not destructive. (ii) *Geometric dilution of an adapter's signal
|
||||
under repeated averaging.* Five chained convex merges left the first skill's accuracy unchanged even
|
||||
though its nominal weight fell to 1/32; but a scaling control showed the adapter alone delivers
|
||||
nothing at 1/32 (0.000; full effect down to 1/8), so what propagated through the chain was the answer
|
||||
format supplied by whichever partner carried enough weight, not the skill. Dilution is refuted, and
|
||||
the transmitted quantity is identified as the convention. (iii) *Continued training on merged
|
||||
weights.* Merging then training on the incoming family beat merging alone on the tracked skill in four
|
||||
of five rounds and on the incoming skill in all five, and absorbed the one format shock that dropped
|
||||
the merge-only chain (0.567 → 0.883). With capacity ruled out by the lifelong-editing benchmark (80)
|
||||
at three orders of magnitude more content, convention conflict is the mechanism that remains — the one
|
||||
the framework predicts, and the one single-model studies report (81, 82).
|
||||
|
||||
**Neutral and functional variation.** Three adapters trained on the same family, differing only in
|
||||
seed and data draw, were near-orthogonal in weight space (pairwise cosine +0.006) and disagreed on 24%
|
||||
of answers, yet merging two of them gave 0.887 against 0.800 for the better one — exactly the fraction
|
||||
of questions on which either was right (0.887). Decomposing the weight change across seeds, roughly
|
||||
85% of a LoRA delta is run-specific: shared signal power 6.2 (after correcting the finite-sample mean
|
||||
for its own noise) against noise power 35. That is why raw weight distance predicted nothing in the
|
||||
main text's controlled test: most of what it measures is the counterpart of *synonymous substitution*
|
||||
— sequence change without functional change — which averages out when adapters for the same skill
|
||||
are combined, while the fraction that conflicts lives in the answer conventions. Averaging same-skill
|
||||
adapters before crossing them with a different skill improved the cross modestly (0.825 → 0.850) while
|
||||
leaving each single skill unchanged, the inbred-line pattern: averaging within a line does not improve
|
||||
the line, it makes it cleaner to cross.
|
||||
|
||||
**Attenuation and the effectiveness cliff.** Scaling an adapter's weights down does not degrade its
|
||||
skill gracefully. Each skill holds full accuracy to a skill-specific fraction (1/8 for science
|
||||
questions, 1/4 for reading-comprehension spans, 1/2 for commonsense completion, 1/4 for yes/no) and
|
||||
then loses nearly everything within one further halving. Four of six adapters scored higher when
|
||||
attenuated (inference 0.40 → 0.68 at 1/4; completion 0.75 → 0.82 at 1/2; spans 0.72 → 0.78 at 1/4;
|
||||
science 0.87 → 0.92 at 1/8): they were over-trained at full strength — the effect reported for
|
||||
merging experts (84, 85) — and recoverable here by one scalar per adapter with no retraining (six
|
||||
separate specialists 0.678 → 0.755). Denoising across seeds does not move the cliff, so the limit is
|
||||
signal magnitude rather than signal-to-noise. Choosing per-skill merge weights from these solo curves
|
||||
failed (0.686–0.689 against 0.708 for uniform weights): in a six-way merge a skill's effective
|
||||
strength is its weight relative to the others — six conventions competing for one output — so raising
|
||||
one starves the rest.
|
||||
|
||||
## SI Text S4. Proof of the blending-inheritance proposition
|
||||
|
||||
**Setting.** `K` parents; each independently retains a given rare item with probability `q`, and a
|
||||
parent that retains it assigns it mass `p`. The child draws `n` samples from a *source distribution*
|
||||
and keeps the item if at least one draw is that item. Two sources are compared: (A) one parent chosen
|
||||
uniformly at random; (B) the mean of the `K` parents' distributions.
|
||||
|
||||
**Expected mass is conserved.** Let `J ~ Binomial(K, q)` be the number of parents retaining the
|
||||
item. Under (A) the source mass of the item is `p` with probability `q` and 0 otherwise, so its
|
||||
expectation is `pq`. Under (B) the source mass is `pJ/K`, whose expectation is `p·E[J]/K = pq`. The
|
||||
expected number of copies in the child's sample, `n` times the source mass, is therefore `npq` under
|
||||
both schemes (linearity of expectation).
|
||||
|
||||
**Survival agrees to first order.** Write `f(x) = 1 − (1 − x)^n` for the probability that at least one
|
||||
of `n` draws hits an item of source mass `x`; `f` is increasing and concave, with `f(x) = nx + O((nx)²)`.
|
||||
Survival is `E[f(M)]` with `M` the (random) source mass. Under (A), `E[f(M)] = q·f(p)`; under (B),
|
||||
`E[f(M)] = E[f(pJ/K)]`. When `n·p ≪ 1`, every realised mass satisfies `nM ≤ np ≪ 1`, so `f(M) ≈ nM`
|
||||
and both expectations reduce to `n·E[M] = npq`: the `1/K` dilution of scheme (B) is cancelled exactly
|
||||
by the item being present in the mixture whenever any of the `K` parents holds it. (Equivalently, in
|
||||
this regime the child's copy count is approximately Poisson with mean `nM`, and Poisson thinning by
|
||||
`1/K` composed with a `K`-fold union preserves the mean.)
|
||||
|
||||
**Boundary 1 (common items).** Away from the first-order regime the comparison is settled by
|
||||
Jensen's inequality. Both schemes give `M` the same mean `pq`; scheme (A) puts all its variance in
|
||||
the two-point distribution `{0, p}`, and scheme (B) has strictly smaller variance for `K > 1`. Since
|
||||
`f` is concave, `E[f(M)]` is larger for the less variable `M`, so averaging never lowers expected
|
||||
survival, and raises it once `np` is not small. The extinction probability `1 − f` is convex, which is
|
||||
the form in which the main text states this boundary. The proposition is thus a statement about rare
|
||||
items, where survival is linear in mass; it does not claim averaging is harmful in general.
|
||||
|
||||
**Boundary 2 (union operator).** Let the child instead draw from the distribution that assigns each
|
||||
item the largest mass any parent gives it, renormalised. The item's source mass is then `p` whenever
|
||||
`J ≥ 1`, an event of probability `1 − (1 − q)^K`, increasing in `K` for every `q ∈ (0, 1)`. Expected
|
||||
survival `(1 − (1 − q)^K)·f(p)` therefore rises with `K` in every regime, without a first-order
|
||||
restriction. The operator needs an oracle (a verifier) to say which parent holds each item most
|
||||
strongly, which is what routing supplies in the language-model tier.
|
||||
|
||||
Both statements are confirmed by simulation in Fig. S8, where mean-mixture survival is flat in `K`
|
||||
and the item-wise maximum rises with it.
|
||||
|
||||
## SI Table S1: the claims ledger (status / assumptions / evidence / limits)
|
||||
|
||||
| Claim | Status | Key assumptions | Evidence | Known limits |
|
||||
|---|---|---|---|---|
|
||||
| Population collapse in the inheritance model is Wright–Fisher drift | Closed form; the diagnosis itself is due to prior work | Knowledge is a categorical distribution; refitting means resampling | Closed forms reproduced to <0.5% | Real learners add a signed, architecture-specific estimator bias (measured) |
|
||||
| Grounding behaves like immigration, and the critical real-data fraction is far below one | Closed form, plus the sign confirmed empirically | Fresh samples from a fixed, non-drifting truth | Exact `H_eq`; `g*≈0.048`; sign holds in RNN/MLP/VAE and on MNIST | Deepest tail unrescuable at feasible budgets (`m ∼ 1/p`); sharp threshold softens in trained nets |
|
||||
| "Merge, don't average" conservation | Exact **for the output-mean operator** | Rare-item regime; an oracle/verifier identifies the strongest source | `figS8_multiparent_union` closed form + simulation; neural reproduction | Weight-averaging and routing are empirical cousins, not instances; budgets differ; bridge = the headroom rule |
|
||||
| Offspring exceed every parent (Fisher–Muller) | Interpretation + empirical | Complementary (decorrelated) parents; verifiable fitness | `figS9_specialist_superparent` (inheritance model); LoRA merges beat the best specialist overall in every seed at 0.5B (5 seeds) and 7B (3 seeds) | LLM tier: 3 lexically-distinct families |
|
||||
| Outbreeding depression on rugged landscapes; operator design rule | Biological-model result; hypothesis at LLM scale | NK epistasis stands in for skill entanglement | `figS10_rugged_landscapes`, `figS11_directed_recombination`; directed selection rescues | Not yet mapped onto a real task-entanglement measure |
|
||||
| Optimal mate-pool breadth shrinks with ruggedness | Biological-model result; hypothesis for merging populations | Ring population, local selection | `figS13_mating_breadth` | Phenomenon known to island-model evolutionary computation; the contribution here is the mapping and the diversity/mean decomposition |
|
||||
| Merge failure decomposes into a coordinate artefact plus a functional residual | Empirical at the trained-network and language-model tiers | Alignment enumerates the architecture's unit symmetries | Full-symmetry residual ≈ 0 for compatible parents versus ≈ the naive barrier under conflict; a cliff in hybrid fitness; function-specific breakdown at the LLM tier | Scoped to aligned linear interpolation; conflict floor is information-theoretic, not genetic |
|
||||
| Epistasis (not divergence) sets the cliff; snowball onset | Biological-model result; **hypothesis** at the neural tier | BDM incompatibility structure | `fig5_speciation_bdm` | Snowball count ≠ performance cliff without the effect-size link; neural test outstanding |
|
||||
| Pre-merge functional disagreement predicts merge penalty | Empirical, within a controlled grid (0.5B, 13 conditions × 3 seeds) | Constructed conflict/overlap/duration axes; oracle-potential outcome (pre-registered; ordering sensitive to reference) | Clustered CIs exclude 0; held-out LOCO ρ≈0.4; selected geometry baselines ≈ 0 | Head-to-head predictor differences not individually significant; only selected baselines; generalisation to real task pairs open |
|
||||
| Confidence weighting improves rank prediction over raw disagreement | Not supported (pre-registered internal prediction) | — | Paired contrast over the same bootstrap resamples: Δ\|ρ\| = −0.021, CI [−0.130, +0.059] | The weighting does sharpen the conflict-versus-compatible level contrast, so it is not useless — only no better as a rank predictor |
|
||||
| The predictor improves budget-matched operator choice | **Open** | — | Soup-vs-route gap readout noise-dominated at 0.5B | The practical payoff; untested |
|
||||
| Emergent speciation without label conflict | Not observed (pre-registered) | Shared ancestry; compatible tasks; the divergences tested | Residual 0.000 to 6.4× base training; the merge rescues the specialists | Bounds the hypothesis; longer horizons/distribution shift/capacity pressure untested |
|
||||
| Grounding, recombination, and diversity preservation make complementary contributions | Biological-model result; hypothesis at LLM scale | Conformity stands in for self-consumption | `fig4_society_ablation` four-arm ablation; each arm fails in a distinct way | General joint necessity is not established; the language-model population (Fig. 4B–C) lacks differential reproduction between lineages |
|
||||
| Obligate recombination collapses once partners carry conflicting conventions | Empirical (1.5B base, 3 lineages × 6 generations, 3 seeds) | Latin-square curriculum; replay present; linear merge; no culling of lineages | Best lineage 0.269 vs 0.796 never merging; onset at complementarity < 0.8; own-ancestor merge 0.663; three alternative mechanisms refuted (SI Text S3) | Six generations; one base; the arrival order of conflicting families is set by the curriculum |
|
||||
| A declinable merge reverts the population to asexual accumulation without advance knowledge of when to stop | Empirical (same population, plus two controls, 3 seeds each) | "Keep the parent" scored as one candidate on validation data | Fraction declined 0.44 → 1.00 across generations; finishes 0.792 vs 0.796 never merging. Forced stop after generation 2 finishes 0.793 (veto − stop3 per seed −0.008/−0.006/+0.011). Under a decorrelated curriculum (complementarity 0.00 → 0.70 → 0.00) declines still rise 0.44 → 0.89; pooled partial ρ(declined, complementarity \| generation) = −0.07, CI (−0.21, +0.09); partial ρ with generation +0.31 | The reduction-principle reading (declines track complementarity) is **not supported**; declines track generation, which here confounds adapter age, skill count and the arrival of conflicting conventions. Modifier set by evaluation, not evolved |
|
||||
| Recombination's net benefit across six generations is an early lead, not a final gain | Empirical (same population); consistent with the inheritance model's speed advantage | Every skill reaches every lineage by the curriculum regardless | +0.08 at generation 0; −0.005 at generation 5 (per-seed −0.03/+0.01/+0.01) | Replay present, so forgetting was not a live pressure; a curriculum that withholds skills from some lineages is untested |
|
||||
|
||||
## SI Table S2: headline quantitative results
|
||||
|
||||
Headline quantitative results with sample sizes, uncertainty, and outcome definitions (full
|
||||
per-experiment tables and falsifier status in the per-experiment documentation).
|
||||
|
||||
| Result | Setting / n | Outcome definition | Headline |
|
||||
|---|---|---|---|
|
||||
| Closed-form validation | Inheritance model; standing tests | Simulated vs closed-form H-decay, immigration equilibrium, multi-parent union | Agreement < 0.5% |
|
||||
| Grounding retention | Inheritance model (`fig2_grounding_sweep`); 100 lineages per grounding level | Fraction of equilibrium diversity retained at grounding `g` (operational threshold) | `g ≈ 0.05` retains ≥95% in the tested setting; smooth in `g` |
|
||||
| MNIST collapse & rescue | Conv-VAE, 4 replicates; frozen oracle (98.5% mode acc.) | Mode support / forward-KL over generations | Dry: 30→1 modes; 10% grounding: 30/30 held |
|
||||
| Fisher–Muller in LLMs | 5 seeds (0.5B) and 3 seeds (7B), fixed tests | Merged vs best-specialist accuracy (overall; worst family); ±: 95% CI over seeds | 0.5B ties 0.647±0.027 vs 0.592±0.009; 7B soup 0.873±0.004 vs 0.807±0.038 (soup − best +0.066±0.036, 3/3 seeds) |
|
||||
| Union vs blend (headroom) | 3 seeds (0.5B hard); 3 seeds (7B hard) | Paired per-seed ordering, routing vs weight-average | 0.5B: routing > blend in 3/3 seeds, one catastrophic blend failure avoided. 7B: routing 0.503±0.007 vs soup 0.408±0.021 (+0.094±0.015, 3/3); soup vs best specialist +0.001±0.041 (the seed-1 'soup below best parent' did not replicate). Directed − soup +0.073±0.031 (3/3) |
|
||||
| Speciation decomposition | MLPs, 3 replicates | LMC error barrier residual after permutation+rescaling alignment | Same-task 0.001; conflict 0.497 (naive 0.502) |
|
||||
| Emergent isolation | MLPs 4 reps to 6.4× base training; LLM 1→12 epochs | Residual barrier; merged vs parent accuracy | 0.000 everywhere; merge rescues parents (≈0.955 vs ≈0.50) |
|
||||
| LLM speciation, seeds | 0.5B; 3 training seeds; fixed test prompts | Conflict cliff: merge best-convention accuracy vs parents' own at full conflict. Duration null: merged private-task accuracy, 1 → 12 epochs | Cliff in 3/3 seeds (merge 0.02/0.12/0.16 vs parents 0.23–0.25); merged coherence over the sweep 0.147±0.013 → 0.100±0.082. No isolation in 3/3 (0.760±0.075 → 0.950±0.010) |
|
||||
| Predictive test | 13 conditions × 3 seeds (0.5B) | Merge penalty vs oracle parent potential (pre-registered; ±: clustered 95% CI) | Functional ρ +0.45/+0.46, CI excl. 0; LOCO ρ ≈ 0.4; geometry n.s.; paired differences n.s. |
|
||||
| Predictive test, seed sensitivity | Same; per-seed and leave-one-seed-out | Spearman ρ vs merge penalty within each seed alone (n = 13 conditions) | Functional +0.37 to +0.53 in every seed; weight geometry ≈ 0 in every seed; gradient alignment seed-unstable (−0.11 to −0.55) |
|
||||
| Six-generation population | 1.5B base; 3 lineages × 6 generations; 3 training seeds; fixed tests (60 per family) | Best-lineage accuracy over six families at the final generation (mean of seeds; per-seed contrasts) | Never merge 0.796; declinable merge 0.792 (Δ −0.03/+0.01/+0.01); forced stop after generation 2: 0.793 (declinable − stop −0.008/−0.006/+0.011); obligate merge 0.269 (declinable − obligate +0.57/+0.54/+0.45); own-ancestor merge 0.663; single model 0.802 |
|
||||
| Conflict-arrival curricula | Conflict-early / conflict-late (boolq + winogrande in generations 1–2 or 5–6); isolated, declinable and obligate arms; 3 seeds each | Decline rate and obligate-arm accuracy per generation; partial Spearman of declines on a conflict-present indicator controlling for generation (seed-clustered bootstrap) | Declines 0.56 → 0.78 (early), 0.44 → 0.89 (late); partial ρ(conflict | generation) −0.09, CI (−0.45, 0.15); ρ(generation | conflict) +0.45; pooled over four curricula −0.04, CI (−0.30, 0.15). Obligate final 0.280 / 0.386 vs isolated 0.796 / 0.781 (3/3 seeds); declinable 0.777 / 0.791 |
|
||||
| Differential reproduction | Latin square; truncation selection (worst lineage re-founded from the best each generation); isolated and declinable arms; 3 seeds | Final best-lineage accuracy; per-seed contrasts against the unselected arms | Never merge + selection 0.804, declinable + selection 0.793 (declinable − never merge −0.011±0.003, below in 3/3); unselected 0.796 / 0.792; selection − no selection +0.007±0.030 |
|
||||
| Second base lineage | SmolLM2-1.7B-Instruct; Fisher–Muller 5 seeds, headroom (hard) 3 seeds; fixed tests | Same contrasts as the Qwen rows | Soup − best specialist +0.049±0.022, TIES − best +0.097±0.020 (5/5 each; worst family +0.19 / +0.20). Routing − soup +0.162±0.036 (3/3); soup − best specialist −0.029±0.017 (below in 3/3) |
|
||||
| Declinable-merge acceptance | Latin-square and decorrelated curricula; 9 merge decisions per generation; 3 seeds each | Fraction of proposed merges declined vs partner complementarity, with generation controlled (partial Spearman, seed-clustered bootstrap CI) | Latin square: 0.44 → 1.00 (raw ρ with complementarity −0.57, n = 18). Decorrelated curriculum (complementarity 0.00, 0.67, 0.70, 0.58, 0.33, 0.00): 0.44 → 0.89. Pooled (n = 36): partial ρ with complementarity −0.07, CI (−0.21, +0.09); partial ρ with generation +0.31 |
|
||||
|
||||
## SI Methods: experimental procedures
|
||||
|
||||
Every experiment in this paper is one YAML config, one runner invocation, and one artifact triple
|
||||
(`results.parquet` + the resolved config + a manifest carrying the master seed, git commit, library
|
||||
versions, and a content hash). The configs named below are the authority on any parameter; this
|
||||
section gives the scientific reasoning behind the choices. `REPRODUCING.md` maps each manuscript
|
||||
panel to the config and seed that produced it.
|
||||
|
||||
### M1. Design principles
|
||||
|
||||
Four rules govern every choice that follows.
|
||||
|
||||
*Test each claim at the cheapest tier that can falsify it.* A closed form beats a simulation, a
|
||||
simulation beats a trained network, and a small network beats a language model, whenever the cheaper
|
||||
instrument can still return the answer "no". A costlier tier is entered only where it adds a
|
||||
discriminating test rather than a replication — which is why several cells of the programme (Fig. 1A)
|
||||
are deliberately empty.
|
||||
|
||||
*Match the precision of the claim to the precision of the instrument.* The inheritance model is exact,
|
||||
so it carries the paper's quantitative statements. Trained systems add optimisation noise and
|
||||
inductive bias, so at those tiers I claim signs and orderings, never magnitudes.
|
||||
|
||||
*Make reality able to refuse.* Every tier has an oracle that is independent of the model being
|
||||
measured: a fixed true distribution in the inheritance model, a lossless identity code or a frozen
|
||||
classifier in the neural tier, an exact-match verifier over procedurally generated tasks in the
|
||||
language-model tier.
|
||||
|
||||
*Declare the falsifier before running.* Each experiment states the outcome that would refute the
|
||||
claim it tests (per-experiment READMEs; SI Table S1). Two pre-registered predictions failed, and are
|
||||
reported as failures in the main text.
|
||||
|
||||
### M2. Replication: what a replicate is, and how many
|
||||
|
||||
A replicate means something different at each tier, and conflating the three would misstate what the
|
||||
error bars cover.
|
||||
|
||||
In the inheritance model a replicate is an independent lineage: a fresh random stream driving the same
|
||||
resolved config, with sub-seeds derived from the master seed by `SeedSequence.spawn`. Because drift
|
||||
*is* the object of study, the spread across replicates is signal rather than nuisance, and replicate
|
||||
counts are set so that the confidence interval on the summary statistic is small relative to the
|
||||
effect being reported.
|
||||
|
||||
In the trained-network tier a replicate is an independent lineage including fresh weight
|
||||
initialisation and data ordering, so it carries optimisation noise on top of drift.
|
||||
|
||||
In the language-model tier a replicate is an independent *training* seed evaluated on *fixed* test
|
||||
sets. Holding the evaluation data constant while varying the training seed isolates training
|
||||
stochasticity, which is the quantity in doubt; it also means the seed-to-seed spread I report is not
|
||||
inflated by resampling the benchmark.
|
||||
|
||||
Replicate counts, and why each is what it is:
|
||||
|
||||
| Experiment | Replicates | Reasoning |
|
||||
|---|---|---|
|
||||
| `fig2_grounding_sweep`, `figS5_aimed_grounding`, `figS12_quality_diversity`, `figS3_rebaselining` | 100 lineages | Long horizons (400–600 generations) with drift-dominated variance; 100 lineages put the CI on stationary diversity well inside the effect being resolved |
|
||||
| `figS8_multiparent_union` | 200 | Outcomes are per-item binary retentions, the highest-variance quantity in the paper |
|
||||
| `figS9_specialist_superparent` | 40 | The vertical claim; the headline separation, so the most replicated of the genotype experiments |
|
||||
| `figS10_rugged_landscapes`, `figS11_directed_recombination` | 24 | Landscape sweeps where each point aggregates 200 offspring internally |
|
||||
| `fig4_society_ablation` | 12 | Four-arm ablation over 80 generations; arms separate by margins far exceeding the CI |
|
||||
| `fig5_speciation_bdm` | 15 | Each point already averages 500 offspring |
|
||||
| `figS13_mating_breadth` | 20 | Breadth × ruggedness grid, 60 generations per cell |
|
||||
| `figS2_kernel_sharpen`, `figS2_kernel_smooth` | 24 | Two-parameter kernel fits against neural reference endpoints |
|
||||
| `bridge` | 60 | The harness gate: must detect *any* departure from the inheritance model, so the most replicated neural run |
|
||||
| `figS6_grounding_rnn` | 18 | Nine-point grounding sweep with per-generation network retraining |
|
||||
| `collapse`, `figS1_architectures` | 5 | Sign-level demonstrations across architectures; each lineage retrains a network 22–25 times |
|
||||
| recombination | 8 | Operator contrast in trained weights |
|
||||
| `fig2_mnist_collapse` | 4 | 15 generations × a conv-VAE retrained from scratch each generation; the contrast (30 modes vs 1) is categorical |
|
||||
| speciation_real, _cliff | 3 | Barrier decomposition; the quantity is a near-deterministic function of the training condition (residual 0.001 vs 0.497) |
|
||||
| speciation_real_emergent | 4 | A null: replicates are spent on longer divergence horizons rather than more repeats |
|
||||
| llm_merge_seeds | 5 training seeds | The Fisher–Muller signature, the most-replicated language-model claim |
|
||||
| llm_moe_hard_seeds, llm_directed_hard_seeds, llm_epistasis(+compat), llm_speciation_add | 3 training seeds | Per-seed orderings reported individually rather than averaged |
|
||||
| 7B runs (llm_merge_hpc, llm_moe_hard_hpc, llm_directed_hard_hpc) | 3 training seeds | Seeds 2–3 added 2026-09-11 (`hpc/llm_7b_seeds.pbs`, ~33 min per seed on one L40S); per-seed contrasts in `figures/stats_llm_7b_seeds.py` |
|
||||
| llm_curriculum_v5_{early,late}(_obl) | 3 training seeds each | Conflict-arrival curricula; per-seed contrasts and the pooled partial-correlation test |
|
||||
| llm_curriculum_v5_cull | 3 training seeds | Differential reproduction; per-seed contrasts against the unselected arms |
|
||||
| llm_merge_seeds_smol, llm_moe_hard_seeds_smol | 5 and 3 training seeds | Second base lineage; per-seed orderings as for the Qwen runs |
|
||||
| llm_speciation | 3 training seeds | Conflict cliff and duration null checked seed by seed (`figures/stats_llm_speciation_seeds.py`); seeds 2–3 added 2026-09-12 |
|
||||
| llm_curriculum_v5, llm_curriculum_v5_veto, llm_curriculum_v5_stop3, llm_curriculum_v5_decor | 3 training seeds | The six-generation population; arm separations (≈0.5) far exceed seed spread (≈0.02), and the declinable-vs-never contrast is reported per seed because its mean is near zero |
|
||||
|
||||
The asymmetry is deliberate: replicates are cheap exactly where the quantitative claims live, and the
|
||||
expensive tiers are asked only for the sign of an effect the cheap tier has already quantified. Where
|
||||
a single run is all there is, the manuscript says so.
|
||||
|
||||
### M3. The inheritance-model tier
|
||||
|
||||
Knowledge is a distribution over `K` discrete items; reality is a fixed Zipf-tailed distribution
|
||||
`p*`; one generation resamples `n` draws from the parent, optionally mixes in `m` verified draws from
|
||||
`p*`, and refits. Implementation: NumPy/SciPy, no GPU, bitwise reproducible.
|
||||
|
||||
*Parameter choices.* `K = 500`–`1000` with `zipf_s = 1.1` and half the items designated tail: large
|
||||
enough that the rare tail contains hundreds of items (so tail statistics are not dominated by a
|
||||
handful of them) and small enough to sweep densely. `n = 100`–`200` sets drift strength; it is the
|
||||
population size in the Wright–Fisher correspondence and the distillation sample size in the AI
|
||||
reading. Horizons of 400–600 generations were chosen so that ungrounded lineages reach fixation and
|
||||
grounded ones reach stationarity within the run, which the trajectories confirm.
|
||||
|
||||
*Sweeps.* The grounding sweep (`fig2_grounding_sweep`) sweeps `g ∈ {0, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.4}`;
|
||||
the aimed-grounding experiment (`figS5_aimed_grounding`) contrasts uniform against region-matched
|
||||
grounding allocation; the multi-parent union experiment (`figS8_multiparent_union`) crosses parent count
|
||||
`K_T ∈ {1,2,3,5}` with parent correlation `ρ ∈ {0, 0.25, 0.5, 0.75, 1}` and `g ∈ {0, 0.02, 0.05}`; the
|
||||
selection experiment (`figS12_quality_diversity`) crosses selection mode (none / greedy /
|
||||
quality-diversity) with novelty weight; the re-baselining experiment (`figS3_rebaselining`) compares
|
||||
four re-minting arms.
|
||||
|
||||
*The correlated-parent construction (`figS8_multiparent_union`).* Parent correlation is constructed directly rather than
|
||||
obtained by tuning drift, so that `ρ` is not confounded with `n`, `m`, tail size, or generation
|
||||
count. For each tail item a shared switch `z ~ Bern(ρ)`, a shared retention `s ~ Bern(q)`, and
|
||||
per-parent `u⁽ᵏ⁾ ~ Bern(q)` give parent `k` retention `s` if `z` else `u⁽ᵏ⁾`. This yields exact
|
||||
marginal retention `q` and exact pairwise correlation `ρ`, and is exchangeable, so `ρ` is a single
|
||||
scalar knob.
|
||||
|
||||
*Multi-locus experiments* (`figS9_specialist_superparent`, `figS10_rugged_landscapes`,
|
||||
`figS11_directed_recombination`, `fig4_society_ablation`, `figS13_mating_breadth`). Genotypes are `L = 12` biallelic loci (4096 genotypes —
|
||||
effectively open-ended relative to the population sizes used), with fitness either additive or a
|
||||
Kauffman NK landscape whose interaction count `K` tunes ruggedness from 0 to 10. The landscape and directed-recombination experiments breed
|
||||
from `n_parents = 6` local optima into populations of 200 offspring; the directed one additionally
|
||||
screens offspring and iterates (5 rounds, keeping 8). The society ablation runs a population of `N = 60` agents for 80
|
||||
generations at ruggedness `K = 8`, with mutation `μ = 0.03`, 120 offspring per generation, and
|
||||
selection weighting true fitness against consensus conformity at `g = 0.85`. The mating-breadth experiment sweeps mate-pool
|
||||
breadth on a ring of `N = 48` against ruggedness.
|
||||
|
||||
*Speciation (`fig5_speciation_bdm`).* `L = 20` loci, incompatibility density `ρ ∈ {0.1, 0.25, 0.5}`,
|
||||
parental divergence swept 0–20 substitutions, 500 offspring per cell at recombination rate 0.5.
|
||||
|
||||
*Validation.* Three closed forms are asserted as standing tests to within 0.5%: neutral
|
||||
heterozygosity decay `E[H_t] = H_0(1 − 1/n)^t`, the exact immigration–drift equilibrium, and the
|
||||
multi-parent union formula. These run in CI alongside the correctness tests. If they fail, the
|
||||
science is wrong rather than merely the code.
|
||||
|
||||
### M4. The trained-network tier
|
||||
|
||||
*Why a synthetic universe.* Measuring collapse requires knowing the true distribution exactly. Each
|
||||
mode is rendered as a token sequence carrying an identity segment (base-2 digits encoding the mode
|
||||
index losslessly, so the oracle reads the mode back with zero error) followed by style tokens drawn
|
||||
uniformly at random. The style segment gives genuine within-mode entropy, so a generative model must
|
||||
learn a distribution rather than memorise `K` fixed strings, while the identity segment keeps the
|
||||
measurement noise-free. Mode truth comes from the same `make_true_distribution` used by the
|
||||
inheritance model, so "mode", "region", and "tail" denote the same objects at both tiers.
|
||||
|
||||
*The bridge gate.* Before any trained model is interpreted, a histogram generator is run through the
|
||||
identical harness; it must reproduce the inheritance model exactly. This separates harness bugs from
|
||||
model behaviour, and is why the bridge run carries 60 replicates.
|
||||
|
||||
*Architectures and training.* The recurrent generator is an embedding (26) → GRU (128 hidden; 192 in
|
||||
the architecture-generality run) → linear readout, trained each generation from scratch with Adam,
|
||||
learning rate 2×10⁻³, batch size 256, 25 epochs, and evaluated by sampling 12,000–15,000 sequences.
|
||||
Feedforward and variational autoencoder generators share the harness. Retraining from scratch each
|
||||
generation (rather than fine-tuning) makes the generational step a clean refit, matching the
|
||||
inheritance model's operator.
|
||||
|
||||
*MNIST tier.* Dataset: MNIST via torchvision (60,000 training images). Modes are digit class ×
|
||||
stroke-thickness bin (10 × 3 = 30 modes) with a Zipf frequency profile, so roughly eighteen modes are
|
||||
rare. The generator is a convolutional variational autoencoder (latent 32, β = 1), retrained from
|
||||
scratch each generation with Adam, learning rate 10⁻³, batch 256, 30 epochs, on 6,000 images drawn
|
||||
from the previous generation's own samples, for 15 generations, at `g ∈ {0, 0.1}`. The oracle is a
|
||||
frozen two-convolution classifier trained once (5 epochs) combined with a deterministic thickness
|
||||
measure; it reaches 98.5% mode accuracy and its 30 × 30 confusion matrix is recorded in the manifest
|
||||
as the measurement floor. Build gates: the oracle's accuracy, and generation-0 recovery of all 30
|
||||
modes.
|
||||
|
||||
*Speciation in trained weights.* Two multilayer perceptrons (784–512–512–10, ReLU, no batch
|
||||
normalisation — batch statistics would break the permutation correspondence the analysis depends on)
|
||||
are forked from a shared base trained for 500 steps, then trained apart for 100–3,200 further steps
|
||||
(up to 6.4× the shared base) under SGD at learning rate 0.05, batch 128. Merges are weight averages;
|
||||
the readout is the linear-mode-connectivity error barrier before and after alignment. Alignment
|
||||
composes deterministic Re-Basin permutation matching with exact per-unit scale canonicalisation —
|
||||
the unit symmetry group of this architecture — and is gated by a control that must recover a
|
||||
permuted-and-rescaled copy exactly. Since the search space is that group rather than all
|
||||
possible alignments, the removable share is a lower bound and the residual an upper bound.
|
||||
|
||||
### M5. The language-model tier
|
||||
|
||||
*Base models.* Qwen2.5-Instruct at 0.5B and 7B, open weights under a permissive licence, with the
|
||||
revision pinned. Using two sizes from one family makes scale the only variable that changes between
|
||||
the small and large runs; the 0.5B model carries five-seed protocols on the easy families; the 7B
|
||||
runs are replicated over three training seeds.
|
||||
|
||||
*Task families, and why they are procedural.* Three deliberately disjoint families — list
|
||||
operations, string transformations, and small-integer arithmetic — are generated procedurally from a
|
||||
seed. Procedural generation buys four things that a standard benchmark cannot: an exact-match
|
||||
verifier that plays the role of reality (an answer is right or it is not, with no judge model in the
|
||||
loop); freedom from train/test contamination, since every evaluation item is generated fresh from a
|
||||
disjoint seed offset; control over family disjointness, which is the precondition for specialists to
|
||||
be genuinely decorrelated parents; and a difficulty knob. A `hard` variant (multi-step list
|
||||
operations, Caesar ciphers and letter transforms, multi-step and larger arithmetic) exists because
|
||||
the easy families saturate a 7B base at ceiling, and saturation removes the headroom in which
|
||||
recombination operators can differ — a control that proved necessary, since two null results at 7B
|
||||
turned out to be saturation artefacts rather than scale effects.
|
||||
|
||||
*Data splits.* Training, validation, routing-calibration, and test items are drawn from
|
||||
non-overlapping seed offsets by construction (test from 1000 + family index, routing from 2000 +,
|
||||
validation from 3000 +, training from the run seed). Test sets are fixed across seeds in the
|
||||
multi-seed protocols. Selection of merge weights uses validation only; the winners are then reported
|
||||
on the untouched test split.
|
||||
|
||||
*Specialisation.* Each parent is a LoRA adapter (rank 16, α = 32) on the frozen base, applied to all
|
||||
attention and MLP projection matrices, trained with a manual supervised fine-tuning loop: answer-only
|
||||
cross-entropy (prompt tokens masked out of the loss), AdamW at 2×10⁻⁴, batch size 8, 3 epochs,
|
||||
bfloat16, 400–800 training items per family. Low-rank adaptation is the right instrument here for a
|
||||
structural reason rather than a computational one: it confines each parent's specialisation to an
|
||||
additive low-rank delta over an identical frozen base, which is what makes weight-space recombination
|
||||
between parents well defined.
|
||||
|
||||
*Recombination operators.* Fusion by uniform weight averaging (soup) and by sign-reconciled,
|
||||
magnitude-pruned task arithmetic (TIES); union by keeping specialists intact and selecting per input
|
||||
(oracle routing, and a training-free nearest-centroid router over the base model's own prompt
|
||||
embeddings) or per module (winner-take-all by delta norm); and directed recombination, which breeds a
|
||||
population of Dirichlet-weighted merges, scores each on validation, and keeps the fittest.
|
||||
|
||||
*Evaluation.* Greedy decoding, exact match after canonicalisation. Alongside overall accuracy I
|
||||
report worst-family accuracy, because the Fisher–Muller claim is about competence across all
|
||||
families rather than an average that a single strong specialty can carry.
|
||||
|
||||
*The controlled predictive test.* Thirty-nine parent pairs (13 conditions × 3 seeds) span three axes
|
||||
that are decorrelated by construction: conflict (contradictory conventions on shared prompts, with
|
||||
private training budgets held fixed), compatible overlap (the same shared prompts under the same
|
||||
convention — overlap and volume without conflict), and duration (weight divergence with no conflict,
|
||||
1 to 12 epochs). Six predictors are computed before any merge: confidence-weighted functional
|
||||
conflict, raw disagreement, gradient alignment at the shared base, LoRA-delta cosine and L2 distance,
|
||||
and a cross-task performance baseline. Probes are drawn blind to where the conflict lives. The
|
||||
outcome is the merge penalty against oracle parent potential, pre-registered, and also reported
|
||||
against best-parent and mean-parent references because the predictor ordering is sensitive to that
|
||||
choice.
|
||||
|
||||
*The six-generation population.* Base model Qwen2.5-1.5B (base weights, not the instruction-tuned
|
||||
variant; 0.006 accuracy on the families untrained). Six public datasets with per-family verifiers:
|
||||
natural-language inference (MNLI; label), science questions (ARC; letter), commonsense completion
|
||||
(HellaSwag; letter), reading-comprehension spans (SQuAD; normalised span with aliases), yes/no
|
||||
questions (BoolQ), and pronoun resolution (WinoGrande; 1/2). Each family's pool is split into disjoint
|
||||
training, validation, and test items before any sampling, so validation and test never share an item.
|
||||
Two further curricula, conflict-early and conflict-late, are given as explicit orders: the two families
|
||||
whose answer conventions conflict (BoolQ yes/no, WinoGrande 1/2) occupy generations 1–2 or 5–6 of
|
||||
every lineage and the four compatible families fill the remaining generations in rotated orders, so
|
||||
adapter age and skill count rise one family per generation in both and only the arrival of conflict
|
||||
differs (`configs/llm/curriculum_v5_{early,late}.yaml`; obligate arms in the `_obl` configs; three
|
||||
training seeds each; `hpc/llm_curriculum_timing.pbs`). The conflict-timing readout is the partial
|
||||
Spearman correlation of the per-generation decline rate with an indicator of conflict presence,
|
||||
controlling for generation, with a seed-clustered percentile bootstrap (`figures/stats_llm_curriculum.py`).
|
||||
Differential reproduction (`cull: true`) applies truncation selection after each generation's
|
||||
measurement: the lineage with the lowest all-families accuracy is re-founded from the one with the
|
||||
highest (adapter, taught families, example budget and ancestry archive are copied; the slot keeps its
|
||||
curriculum order; ties leave the population unchanged), recorded as `culled` and `cull_source` rows
|
||||
(`configs/llm/curriculum_v5_cull.yaml`; three training seeds; `hpc/llm_cull.pbs`).
|
||||
The second base lineage is `HuggingFaceTB/SmolLM2-1.7B-Instruct` (Apache-2.0; Llama architecture),
|
||||
run through the unchanged `merge_seeds` and `moe_hard_seeds` protocols with its own adapter cache
|
||||
(`configs/llm/{merge_seeds,moe_hard_seeds}_smol.yaml`; `hpc/llm_smol.pbs`; `figures/stats_llm_smol.py`).
|
||||
Three lineages take the six families in a cyclic Latin square (each lineage's order is the previous
|
||||
lineage's shifted by two), which fixes partner complementarity — the fraction of the partner's families
|
||||
a lineage has not yet seen — at 1.0, 1.0, 0.8, 0.67, 0.33, 0.0 across the six generations. Each
|
||||
generation a lineage draws 300 new items from its scheduled family and 150 replay items split evenly
|
||||
across families already seen; the child adapter (rank 16) is initialised from the parent's and trained
|
||||
for 3 epochs at learning rate 10⁻⁴ (founders from the base at 2×10⁻⁴). Recombination averages two
|
||||
adapters at each weight in {0.5/0.5, 0.3/0.7, 0.7/0.3}; the winner is chosen on 20 validation items
|
||||
per family seen and then trains on the generation's new family. In the declinable arm the unchanged
|
||||
parent is a fourth candidate scored identically. The contemporary partner is the next lineage in the
|
||||
square; the ancestor partner is the lineage's own adapter three generations earlier; the self-replay
|
||||
variant draws its replay from the parent's own answers rather than from the datasets. Reporting uses
|
||||
60 test items per family. Because two of the families are binary, an accuracy threshold at 0.5 is
|
||||
chance, so the text reports mean accuracy over the families a lineage has been taught and the
|
||||
trajectory of its first-learned family rather than a count of families above a threshold.
|
||||
|
||||
*The composed society.* A population of `N` LoRA agents on a shared frozen base evolves for `G`
|
||||
non-overlapping generations. Each generation every agent answers a fixed validation pool (verifier
|
||||
scored) and a fresh conformity pool (whose modal answer defines the population consensus); selection
|
||||
scores agents by `g·fitness + (1−g)·conformity`; parents are chosen with or without a
|
||||
quality-diversity term over behavioural distance; offspring are bred by screened recombination; and
|
||||
each child is a fresh adapter distilled from its source model's own answers, which makes the
|
||||
inheritance channel literally self-consuming. The verifier enters the loop only where `g > 0`, but is
|
||||
used for reporting in every arm. The four-arm ablation removes grounded evaluation, recombination,
|
||||
or diversity preservation in turn.
|
||||
|
||||
### M6. Negative controls
|
||||
|
||||
The design leans on controls that can remove a result rather than support one, and one of them did.
|
||||
|
||||
The compatible-overlap axis was added to the predictive test specifically to expose overlap-and-volume
|
||||
artefacts, and it did: the initial two-axis grid's best predictor (LoRA-delta cosine, ρ = +0.60)
|
||||
collapsed to ρ = +0.03 once compatible overlap was present, identifying it as an artefact rather than
|
||||
a signal. The duration axis supplies divergence without conflict. The emergent-speciation condition
|
||||
supplies divergence with no conflicting signal anywhere, and returns a null. The budget-controlled
|
||||
speciation design (`conflict_mode: add`) removes the confound between conflict fraction and private
|
||||
training budget. The histogram bridge is a harness control. In the inheritance model, `m = 0` arms and
|
||||
`ρ = 1` (fully correlated parents) are the null conditions against which the corresponding effects
|
||||
are read. In the six-generation population, three arms are controls — a single model taught the
|
||||
curriculum alone (no population), the never-merge population (no recombination), and merging with
|
||||
one's own ancestor (shared conventions, partial complementarity) — and the self-replay variant of the
|
||||
obligate arm controls the replay channel; SI Text S3 records the three direct tests that refuted
|
||||
alternative mechanisms for the obligate arm's collapse.
|
||||
|
||||
### M7. Statistical procedures
|
||||
|
||||
Error bars on replicate means are normal-approximation 95% confidence intervals unless stated
|
||||
otherwise. For the predictive test, where rows share task-data seeds across conditions and are
|
||||
therefore not independent, inference uses a condition-clustered bootstrap (13 clusters, 4,000
|
||||
resamples); predictors are compared by paired contrasts on the same resamples; generalisation is
|
||||
assessed by leave-one-condition-out prediction; and per-seed and leave-one-seed-out sensitivity are
|
||||
reported alongside, since three seeds cannot settle seed generalisation on their own. Outcome-
|
||||
reference sensitivity is reported rather than resolved. Where a difference is not significant at the
|
||||
sample size available, the manuscript says so rather than reporting the point estimate alone.
|
||||
|
||||
## SI Statistics
|
||||
|
||||
Output of `figures/stats_llm_epistasis.py` (clustered CIs, paired predictor contrasts, LOCO held-out
|
||||
prediction, outcome-reference sensitivity, within/between-axis decomposition) — reproduced verbatim at
|
||||
submission. Chronology of the predictive test (prospective / adaptive / post-hoc) as disclosed in
|
||||
`results/llm_epistasis/README.md`.
|
||||
|
||||
## SI Figures
|
||||
|
||||
Sixteen figures are cited from the main text by number. Each is the per-experiment figure
|
||||
regenerated from the committed results artifact (`figures/plot_*.py`), reproduced here without
|
||||
re-plotting, so panel titles still carry the experiment's working name. Five of them are
|
||||
inheritance-model results with no real-model counterpart in this paper, reported here because each
|
||||
reproduces an established result: blending versus union retention (Fig. S8), the Fisher–Muller
|
||||
super-parent (Fig. S9), outbreeding depression on rugged landscapes (Fig. S10), directed
|
||||
recombination (Fig. S11), and the mate-pool breadth optimum (Fig. S13).
|
||||
|
||||
*(FIG:s1)*
|
||||
|
||||
*(FIG:s2)*
|
||||
|
||||
*(FIG:s3)*
|
||||
|
||||
*(FIG:s4)*
|
||||
|
||||
*(FIG:s5)*
|
||||
|
||||
*(FIG:s6)*
|
||||
|
||||
*(FIG:s7)*
|
||||
|
||||
*(FIG:s8)*
|
||||
|
||||
*(FIG:s9)*
|
||||
|
||||
*(FIG:s10)*
|
||||
|
||||
*(FIG:s11)*
|
||||
|
||||
*(FIG:s12)*
|
||||
|
||||
*(FIG:s13)*
|
||||
|
||||
*(FIG:s14)*
|
||||
|
||||
*(FIG:s15)*
|
||||
|
||||
*(FIG:s16)*
|
||||
BIN
paper/manuscript/si.pdf
Normal file
BIN
paper/manuscript/si.pdf
Normal file
Binary file not shown.
29
paper/manuscript/si.tex
Normal file
29
paper/manuscript/si.tex
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
% Supplementary Information — readable single-column build (tectonic/XeLaTeX). Content is generated from si.md
|
||||
% by `python paper/manuscript/build.py si`; journal-template reflow happens at submission.
|
||||
\ifdefined\XeTeXversion\else\ifdefined\pdfoutput\pdfoutput=1\fi\fi
|
||||
\documentclass[11pt]{article}
|
||||
|
||||
\usepackage[a4paper, margin=1.0in]{geometry}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{amsmath, amssymb}
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
\usepackage{microtype}
|
||||
|
||||
\setlength{\parskip}{0.35em}
|
||||
\renewcommand{\thesection}{S\arabic{section}}
|
||||
\renewcommand{\thefigure}{S\arabic{figure}}
|
||||
|
||||
\title{\textbf{Supplementary Information}\\[0.5em]
|
||||
\large The evolution of sex for artificial intelligence:\\
|
||||
a population-genetic framework for multigenerational model populations}
|
||||
\author{Giorgio F.\ Gilestro\\[0.2em]
|
||||
\normalsize Department of Life Sciences, Imperial College London\\
|
||||
\normalsize \href{mailto:giorgio@gilest.ro}{giorgio@gilest.ro}}
|
||||
\date{Draft}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\input{si_body}
|
||||
|
||||
\end{document}
|
||||
316
paper/manuscript/si_body.tex
Normal file
316
paper/manuscript/si_body.tex
Normal file
|
|
@ -0,0 +1,316 @@
|
|||
\section*{Contents}
|
||||
|
||||
SI Text S1--S4, SI Tables S1--S2, SI Methods M1--M7, SI Statistics, SI Figures S1--S16, and a separate Appendix 1, \emph{The figures explained} (\texttt{figure\_legends\_for\_students.pdf}), which restates every main and supplementary figure with a plain-language account of the experiment behind it, for readers from biology.
|
||||
|
||||
\section*{Reproducibility}
|
||||
|
||||
Every experiment in this paper is defined by one committed configuration file under \texttt{configs/}. Running it produces three artifacts under \texttt{results/<name>/}: the results table (\texttt{results.parquet}), the fully resolved configuration, and a manifest recording content hashes, the master seed, and the git commit. Each experiment directory also contains a README with the figure legend and the current status of the experiment's falsifier --- the outcome that would refute its claim (see Methods M1) --- plus a figure that regenerates from the parquet file alone. The script \texttt{reproduce.sh} re-runs the entire study from the master seeds, and \texttt{REPRODUCING.md} maps every panel of the manuscript to the configuration and seed behind it.
|
||||
|
||||
\section*{SI Text S1. The incompatibility floor: what no alignment can remove}
|
||||
|
||||
\textbf{Setting.} Two models, A and B, are trained on the same input distribution. Their label functions \texttt{f\_A} and \texttt{f\_B} agree everywhere except on a \emph{conflict set} \texttt{S}, whose size is its probability mass \texttt{\(\mu\)(S)}. In the conflict condition of the trained-network speciation experiment, \texttt{S} consists of the cyclically relabelled classes, so \texttt{\(\mu\)(S)} is approximately the configured conflict fraction, up to class-balance corrections.
|
||||
|
||||
A \emph{function-preserving transformation} \texttt{T} is any change to a network's weights that leaves its outputs untouched. For a plain ReLU multilayer perceptron these transformations are exactly the permutations of hidden units and the positive rescalings of individual units: scaling a unit's incoming weights up and its outgoing weights down by the same factor does not change what the network computes. Together they form the \emph{unit symmetry group} of the architecture. By construction \texttt{T(B)} computes the same function as B, that is \texttt{T(B)(x) = B(x)} for every input \texttt{x}.
|
||||
|
||||
\textbf{Proposition 1 (endpoint invariance).} Define the \emph{chord} as the straight line connecting the two endpoint loss values, \texttt{(1\(-\)\(\alpha\))\(\cdot\)L(A) + \(\alpha\)\(\cdot\)L(B)}. It depends only on the endpoints and is the baseline used in the definition of the interpolation barrier; it is not the loss along the interpolation path in weight space. For every function-preserving \texttt{T}, the pair \texttt{(A, T(B))} has the same endpoint losses as the pair \texttt{(A, B)}, and therefore the same chord. The interpolation path itself is generally not invariant: the losses along \texttt{(1\(-\)\(\alpha\))\(\cdot\)A + \(\alpha\)\(\cdot\)T(B)} change with \texttt{T}. This is exactly the room an alignment has to lower a barrier. The proof is immediate from the definition of function-preserving.
|
||||
|
||||
\emph{Scope of the alignment guarantee.} The aligner used here is guaranteed to recover a permuted-and-rescaled copy of a network exactly. That is an important special case, but it does not prove that the alignment is optimal over the whole symmetry group for independently trained networks. Consequently the share of the barrier attributed to removable coordinate mismatch is a lower bound, and the residual share an upper bound, on their true values.
|
||||
|
||||
\textbf{Proposition 2 (no merged model can serve both parents).} Let \texttt{h} be any single classifier; in particular, any interpolated or merged model, under any alignment. On every input \texttt{x \(\in\) S} the two parents disagree, \texttt{f\_A(x) \(\neq\) f\_B(x)}, so \texttt{h} must disagree with at least one of them. Writing \texttt{\(\varepsilon\)\_P(h)} for \texttt{h}'s error rate against parent \texttt{P}'s labels,
|
||||
|
||||
\texttt{\(\varepsilon\)\_A(h) + \(\varepsilon\)\_B(h) \(\geq\) \(\mu\)(S)}, hence \texttt{max(\(\varepsilon\)\_A(h), \(\varepsilon\)\_B(h)) \(\geq\) \(\mu\)(S)/2}.
|
||||
|
||||
When two models' conventions conflict on a set of mass \texttt{\(\mu\)(S)}, any hybrid of the two is wrong on at least one parent's task at least \texttt{\(\mu\)(S)/2} of the time. This floor is information-theoretic, holding regardless of the alignment group, the architecture, or the merging operator. In the fitness sense it is reproductive isolation: beyond a given functional conflict, no recombination operator can produce an offspring faithful to both lineages.
|
||||
|
||||
\textbf{What remains empirical, and how the experiment is designed.} Propositions 1 and 2 do not bound the single-task path barrier: the loss along the interpolation between A and \texttt{T(B)}, evaluated on one parent's task alone. In principle such a path could dip toward one parent's function and yield a low barrier even under conflict. Whether it does is an empirical question, and it is precisely what the experiment measures. The measured answer is that it does not. In the conflict condition the barrier is unchanged by permutation alignment (the \texttt{residual} readout) and by alignment modulo the full permutation-and-positive-rescaling group (the \texttt{residual\_scale} readout), while the very same aligner removes almost all of the barrier between independently initialised networks, the positive control. Work on richer symmetry groups for transformers (83) strengthens the removable side of the decomposition and is therefore complementary to this result: the more barrier a larger group can remove for \emph{compatible} models, the sharper the meaning of the barrier that survives for \emph{incompatible} ones. Proposition 2 caps what any of these methods could ever achieve on the conflict set.
|
||||
|
||||
\textbf{Terminology used in the paper.} ``Residual (after alignment)'' denotes the estimated functional incompatibility: the part of the merge barrier that remains after the architecture's unit symmetries have been divided out. For ReLU MLPs I align modulo the full unit symmetry group, so the estimate is not confounded by symmetries of that architecture class that the aligner might have missed.
|
||||
|
||||
\section*{SI Text S2. Emergent versus imposed incompatibility}
|
||||
|
||||
The conflict condition \emph{imposes} contradiction: the two label maps disagree on \texttt{S} by construction, which pins \texttt{\(\mu\)(S) > 0} and activates Proposition 2. A genuine Bateson--Dobzhansky--Muller incompatibility is instead \emph{emergent}. Each lineage's substitutions are harmless on their own background, so the training signals never contradict and \texttt{\(\mu\)(S) = 0}; any incompatibility appears only when the two lineages are combined.
|
||||
|
||||
Two conditions realise this emergent setting. In \texttt{disjoint}, the parents are specialists on complementary classes. In \texttt{augment}, they learn divergent input conventions on the same task. Neither condition contains label conflict, so any barrier that survives alignment cannot be attributed to label conflict. Such a barrier would be the emergent-speciation signal proper.
|
||||
|
||||
Both readings were registered before the run. If the residual barrier grows with divergence, then model speciation is emergent in real weights, and the trajectory seen in the analytic speciation model is realised. If the residual stays at the level of the \texttt{shared} control, then within this regime trained networks are more merge-compatible than the biological analogy predicts. The second reading would bound the analogy, and be a useful design result in its own right: merging is safe whenever there is no functional conflict.
|
||||
|
||||
\textbf{Outcome.} Four replicates, with divergence up to 3,200 steps --- up to 6.4\(\times\) the shared base training --- returned the second reading. The residual barrier was 0.000 at every divergence in both emergent conditions. Merging moreover \emph{rescued} the \texttt{disjoint} specialists, which had forgotten the classes outside their specialty: at the longest divergence the parents score 0.535 and 0.474 on the full task, while the merged model holds approximately 0.955 at every divergence tested. This is a sustained Fisher--Muller rescue at zero barrier. Within this regime, reproductive isolation in real weights required functional conflict. The same question at language-model scale is answered by the duration arm of the language-model speciation experiment, which likewise found no isolation from over-training alone (1 to 12 epochs); whether still longer horizons erode mergeability (cf. 83) remains open.
|
||||
|
||||
\section*{SI Text S3. Compatible loci and conflicting alleles in a multigenerational population}
|
||||
|
||||
\textbf{The two kinds of new knowledge.} A \emph{locus} is a position in the genome, and \emph{alleles} are the alternative versions that can occupy it: one blood-group locus, three alleles A, B and O, of which any one chromosome carries exactly one. In a model population a locus is a slot for a capability (``how to answer a two-way question'') and alleles are the incompatible conventions that could fill it (``yes/no'', ``true/false'', ``1/2''). A skill that conflicts with nothing a lineage already holds occupies a new locus and is simply added; a skill that demands a different convention for a question shape the lineage already answers is a competing allele, and a single model, like a single chromosome, carries one. Proposition S2 gives the cost: when two parents' conventions disagree on a share \texttt{\(\mu\)(S)} of inputs, any merged child errs against at least one parent on at least \texttt{\(\mu\)(S)/2} of them. In the six-generation population a lineage obliged to merge at generation \texttt{t} pays that floor against its partner's conflicting conventions; because the child continues the lineage, the loss is inherited, and the next generation's conflict adds to it. Under the Latin-square curriculum \texttt{\(\mu\)\_t(S)} is zero while partners are complementary (their skills occupy disjoint loci) and becomes positive once a partner carries a differently conventioned version of a skill the lineage already holds. Two of the six families --- yes/no questions and two-way pronoun resolution --- have the most idiosyncratic conventions and were measured in calibration at 0.00--0.04 accuracy on every other family, so they carry the largest \texttt{\(\mu\)(S)} against every partner; the generation at which the curriculum hands them to a lineage's partner fixes when that lineage's collapse begins.
|
||||
|
||||
\textbf{Negative controls that isolate convention conflict.} Three alternative explanations of the obligate arm's collapse were tested directly and refuted. (i) \emph{A destructive skill spreading through merges.} A single 50/50 merge of two clean single-skill adapters (science questions 0.838 / yes-no 0.000; yes-no 0.800 / science 0.300) scored 0.863 and 0.787, mean 0.825 against 0.550 for the better parent: one merge is protective, not destructive. (ii) \emph{Geometric dilution of an adapter's signal under repeated averaging.} Five chained convex merges left the first skill's accuracy unchanged even though its nominal weight fell to 1/32; but a scaling control showed the adapter alone delivers nothing at 1/32 (0.000; full effect down to 1/8), so what propagated through the chain was the answer format supplied by whichever partner carried enough weight, not the skill. Dilution is refuted, and the transmitted quantity is identified as the convention. (iii) \emph{Continued training on merged weights.} Merging then training on the incoming family beat merging alone on the tracked skill in four of five rounds and on the incoming skill in all five, and absorbed the one format shock that dropped the merge-only chain (0.567 \(\rightarrow\) 0.883). With capacity ruled out by the lifelong-editing benchmark (80) at three orders of magnitude more content, convention conflict is the mechanism that remains --- the one the framework predicts, and the one single-model studies report (81, 82).
|
||||
|
||||
\textbf{Neutral and functional variation.} Three adapters trained on the same family, differing only in seed and data draw, were near-orthogonal in weight space (pairwise cosine +0.006) and disagreed on 24\% of answers, yet merging two of them gave 0.887 against 0.800 for the better one --- exactly the fraction of questions on which either was right (0.887). Decomposing the weight change across seeds, roughly 85\% of a LoRA delta is run-specific: shared signal power 6.2 (after correcting the finite-sample mean for its own noise) against noise power 35. That is why raw weight distance predicted nothing in the main text's controlled test: most of what it measures is the counterpart of \emph{synonymous substitution} --- sequence change without functional change --- which averages out when adapters for the same skill are combined, while the fraction that conflicts lives in the answer conventions. Averaging same-skill adapters before crossing them with a different skill improved the cross modestly (0.825 \(\rightarrow\) 0.850) while leaving each single skill unchanged, the inbred-line pattern: averaging within a line does not improve the line, it makes it cleaner to cross.
|
||||
|
||||
\textbf{Attenuation and the effectiveness cliff.} Scaling an adapter's weights down does not degrade its skill gracefully. Each skill holds full accuracy to a skill-specific fraction (1/8 for science questions, 1/4 for reading-comprehension spans, 1/2 for commonsense completion, 1/4 for yes/no) and then loses nearly everything within one further halving. Four of six adapters scored higher when attenuated (inference 0.40 \(\rightarrow\) 0.68 at 1/4; completion 0.75 \(\rightarrow\) 0.82 at 1/2; spans 0.72 \(\rightarrow\) 0.78 at 1/4; science 0.87 \(\rightarrow\) 0.92 at 1/8): they were over-trained at full strength --- the effect reported for merging experts (84, 85) --- and recoverable here by one scalar per adapter with no retraining (six separate specialists 0.678 \(\rightarrow\) 0.755). Denoising across seeds does not move the cliff, so the limit is signal magnitude rather than signal-to-noise. Choosing per-skill merge weights from these solo curves failed (0.686--0.689 against 0.708 for uniform weights): in a six-way merge a skill's effective strength is its weight relative to the others --- six conventions competing for one output --- so raising one starves the rest.
|
||||
|
||||
\section*{SI Text S4. Proof of the blending-inheritance proposition}
|
||||
|
||||
\textbf{Setting.} \texttt{K} parents; each independently retains a given rare item with probability \texttt{q}, and a parent that retains it assigns it mass \texttt{p}. The child draws \texttt{n} samples from a \emph{source distribution} and keeps the item if at least one draw is that item. Two sources are compared: (A) one parent chosen uniformly at random; (B) the mean of the \texttt{K} parents' distributions.
|
||||
|
||||
\textbf{Expected mass is conserved.} Let \texttt{J \textasciitilde{} Binomial(K, q)} be the number of parents retaining the item. Under (A) the source mass of the item is \texttt{p} with probability \texttt{q} and 0 otherwise, so its expectation is \texttt{pq}. Under (B) the source mass is \texttt{pJ/K}, whose expectation is \texttt{p\(\cdot\)E[J]/K = pq}. The expected number of copies in the child's sample, \texttt{n} times the source mass, is therefore \texttt{npq} under both schemes (linearity of expectation).
|
||||
|
||||
\textbf{Survival agrees to first order.} Write \texttt{f(x) = 1 \(-\) (1 \(-\) x)\textasciicircum{}n} for the probability that at least one of \texttt{n} draws hits an item of source mass \texttt{x}; \texttt{f} is increasing and concave, with \texttt{f(x) = nx + O((nx)\(^{2}\))}. Survival is \texttt{E[f(M)]} with \texttt{M} the (random) source mass. Under (A), \texttt{E[f(M)] = q\(\cdot\)f(p)}; under (B), \texttt{E[f(M)] = E[f(pJ/K)]}. When \texttt{n\(\cdot\)p \(\ll\) 1}, every realised mass satisfies \texttt{nM \(\leq\) np \(\ll\) 1}, so \texttt{f(M) \(\approx\) nM} and both expectations reduce to \texttt{n\(\cdot\)E[M] = npq}: the \texttt{1/K} dilution of scheme (B) is cancelled exactly by the item being present in the mixture whenever any of the \texttt{K} parents holds it. (Equivalently, in this regime the child's copy count is approximately Poisson with mean \texttt{nM}, and Poisson thinning by \texttt{1/K} composed with a \texttt{K}-fold union preserves the mean.)
|
||||
|
||||
\textbf{Boundary 1 (common items).} Away from the first-order regime the comparison is settled by Jensen's inequality. Both schemes give \texttt{M} the same mean \texttt{pq}; scheme (A) puts all its variance in the two-point distribution \texttt{{0, p}}, and scheme (B) has strictly smaller variance for \texttt{K > 1}. Since \texttt{f} is concave, \texttt{E[f(M)]} is larger for the less variable \texttt{M}, so averaging never lowers expected survival, and raises it once \texttt{np} is not small. The extinction probability \texttt{1 \(-\) f} is convex, which is the form in which the main text states this boundary. The proposition is thus a statement about rare items, where survival is linear in mass; it does not claim averaging is harmful in general.
|
||||
|
||||
\textbf{Boundary 2 (union operator).} Let the child instead draw from the distribution that assigns each item the largest mass any parent gives it, renormalised. The item's source mass is then \texttt{p} whenever \texttt{J \(\geq\) 1}, an event of probability \texttt{1 \(-\) (1 \(-\) q)\textasciicircum{}K}, increasing in \texttt{K} for every \texttt{q \(\in\) (0, 1)}. Expected survival \texttt{(1 \(-\) (1 \(-\) q)\textasciicircum{}K)\(\cdot\)f(p)} therefore rises with \texttt{K} in every regime, without a first-order restriction. The operator needs an oracle (a verifier) to say which parent holds each item most strongly, which is what routing supplies in the language-model tier.
|
||||
|
||||
Both statements are confirmed by simulation in Fig. S8, where mean-mixture survival is flat in \texttt{K} and the item-wise maximum rises with it.
|
||||
|
||||
\section*{SI Table S1: the claims ledger (status / assumptions / evidence / limits)}
|
||||
|
||||
\medskip\noindent\begin{center}\footnotesize
|
||||
\begin{tabular}{p{0.184\textwidth} p{0.184\textwidth} p{0.184\textwidth} p{0.184\textwidth} p{0.184\textwidth}}
|
||||
\hline
|
||||
Claim & Status & Key assumptions & Evidence & Known limits \\ \hline
|
||||
Population collapse in the inheritance model is Wright--Fisher drift & Closed form; the diagnosis itself is due to prior work & Knowledge is a categorical distribution; refitting means resampling & Closed forms reproduced to <0.5\% & Real learners add a signed, architecture-specific estimator bias (measured) \\[3pt]
|
||||
Grounding behaves like immigration, and the critical real-data fraction is far below one & Closed form, plus the sign confirmed empirically & Fresh samples from a fixed, non-drifting truth & Exact \texttt{H\_eq}; \texttt{g*\(\approx\)0.048}; sign holds in RNN/MLP/VAE and on MNIST & Deepest tail unrescuable at feasible budgets (\texttt{m \(\sim\) 1/p}); sharp threshold softens in trained nets \\[3pt]
|
||||
``Merge, don't average'' conservation & Exact \textbf{for the output-mean operator} & Rare-item regime; an oracle/verifier identifies the strongest source & \texttt{figS8\_multiparent\_union} closed form + simulation; neural reproduction & Weight-averaging and routing are empirical cousins, not instances; budgets differ; bridge = the headroom rule \\[3pt]
|
||||
Offspring exceed every parent (Fisher--Muller) & Interpretation + empirical & Complementary (decorrelated) parents; verifiable fitness & \texttt{figS9\_specialist\_superparent} (inheritance model); LoRA merges beat the best specialist overall in every seed at 0.5B (5 seeds) and 7B (3 seeds) & LLM tier: 3 lexically-distinct families \\[3pt]
|
||||
Outbreeding depression on rugged landscapes; operator design rule & Biological-model result; hypothesis at LLM scale & NK epistasis stands in for skill entanglement & \texttt{figS10\_rugged\_landscapes}, \texttt{figS11\_directed\_recombination}; directed selection rescues & Not yet mapped onto a real task-entanglement measure \\[3pt]
|
||||
Optimal mate-pool breadth shrinks with ruggedness & Biological-model result; hypothesis for merging populations & Ring population, local selection & \texttt{figS13\_mating\_breadth} & Phenomenon known to island-model evolutionary computation; the contribution here is the mapping and the diversity/mean decomposition \\[3pt]
|
||||
Merge failure decomposes into a coordinate artefact plus a functional residual & Empirical at the trained-network and language-model tiers & Alignment enumerates the architecture's unit symmetries & Full-symmetry residual \(\approx\) 0 for compatible parents versus \(\approx\) the naive barrier under conflict; a cliff in hybrid fitness; function-specific breakdown at the LLM tier & Scoped to aligned linear interpolation; conflict floor is information-theoretic, not genetic \\[3pt]
|
||||
Epistasis (not divergence) sets the cliff; snowball onset & Biological-model result; \textbf{hypothesis} at the neural tier & BDM incompatibility structure & \texttt{fig5\_speciation\_bdm} & Snowball count \(\neq\) performance cliff without the effect-size link; neural test outstanding \\[3pt]
|
||||
Pre-merge functional disagreement predicts merge penalty & Empirical, within a controlled grid (0.5B, 13 conditions \(\times\) 3 seeds) & Constructed conflict/overlap/duration axes; oracle-potential outcome (pre-registered; ordering sensitive to reference) & Clustered CIs exclude 0; held-out LOCO \(\rho\)\(\approx\)0.4; selected geometry baselines \(\approx\) 0 & Head-to-head predictor differences not individually significant; only selected baselines; generalisation to real task pairs open \\[3pt]
|
||||
Confidence weighting improves rank prediction over raw disagreement & Not supported (pre-registered internal prediction) & --- & Paired contrast over the same bootstrap resamples: \(\Delta\)\textbackslash{} & \(\rho\)\textbackslash{} \\[3pt]
|
||||
The predictor improves budget-matched operator choice & \textbf{Open} & --- & Soup-vs-route gap readout noise-dominated at 0.5B & The practical payoff; untested \\[3pt]
|
||||
Emergent speciation without label conflict & Not observed (pre-registered) & Shared ancestry; compatible tasks; the divergences tested & Residual 0.000 to 6.4\(\times\) base training; the merge rescues the specialists & Bounds the hypothesis; longer horizons/distribution shift/capacity pressure untested \\[3pt]
|
||||
Grounding, recombination, and diversity preservation make complementary contributions & Biological-model result; hypothesis at LLM scale & Conformity stands in for self-consumption & \texttt{fig4\_society\_ablation} four-arm ablation; each arm fails in a distinct way & General joint necessity is not established; the language-model population (Fig. 4B--C) lacks differential reproduction between lineages \\[3pt]
|
||||
Obligate recombination collapses once partners carry conflicting conventions & Empirical (1.5B base, 3 lineages \(\times\) 6 generations, 3 seeds) & Latin-square curriculum; replay present; linear merge; no culling of lineages & Best lineage 0.269 vs 0.796 never merging; onset at complementarity < 0.8; own-ancestor merge 0.663; three alternative mechanisms refuted (SI Text S3) & Six generations; one base; the arrival order of conflicting families is set by the curriculum \\[3pt]
|
||||
A declinable merge reverts the population to asexual accumulation without advance knowledge of when to stop & Empirical (same population, plus two controls, 3 seeds each) & ``Keep the parent'' scored as one candidate on validation data & Fraction declined 0.44 \(\rightarrow\) 1.00 across generations; finishes 0.792 vs 0.796 never merging. Forced stop after generation 2 finishes 0.793 (veto \(-\) stop3 per seed \(-\)0.008/\(-\)0.006/+0.011). Under a decorrelated curriculum (complementarity 0.00 \(\rightarrow\) 0.70 \(\rightarrow\) 0.00) declines still rise 0.44 \(\rightarrow\) 0.89; pooled partial \(\rho\)(declined, complementarity \textbackslash{} & generation) = \(-\)0.07, CI (\(-\)0.21, +0.09); partial \(\rho\) with generation +0.31 \\[3pt]
|
||||
Recombination's net benefit across six generations is an early lead, not a final gain & Empirical (same population); consistent with the inheritance model's speed advantage & Every skill reaches every lineage by the curriculum regardless & +0.08 at generation 0; \(-\)0.005 at generation 5 (per-seed \(-\)0.03/+0.01/+0.01) & Replay present, so forgetting was not a live pressure; a curriculum that withholds skills from some lineages is untested \\[3pt]
|
||||
\hline\end{tabular}\end{center}\medskip
|
||||
|
||||
\section*{SI Table S2: headline quantitative results}
|
||||
|
||||
Headline quantitative results with sample sizes, uncertainty, and outcome definitions (full per-experiment tables and falsifier status in the per-experiment documentation).
|
||||
|
||||
\medskip\noindent\begin{center}\footnotesize
|
||||
\begin{tabular}{p{0.230\textwidth} p{0.230\textwidth} p{0.230\textwidth} p{0.230\textwidth}}
|
||||
\hline
|
||||
Result & Setting / n & Outcome definition & Headline \\ \hline
|
||||
Closed-form validation & Inheritance model; standing tests & Simulated vs closed-form H-decay, immigration equilibrium, multi-parent union & Agreement < 0.5\% \\[3pt]
|
||||
Grounding retention & Inheritance model (\texttt{fig2\_grounding\_sweep}); 100 lineages per grounding level & Fraction of equilibrium diversity retained at grounding \texttt{g} (operational threshold) & \texttt{g \(\approx\) 0.05} retains \(\geq\)95\% in the tested setting; smooth in \texttt{g} \\[3pt]
|
||||
MNIST collapse \& rescue & Conv-VAE, 4 replicates; frozen oracle (98.5\% mode acc.) & Mode support / forward-KL over generations & Dry: 30\(\rightarrow\)1 modes; 10\% grounding: 30/30 held \\[3pt]
|
||||
Fisher--Muller in LLMs & 5 seeds (0.5B) and 3 seeds (7B), fixed tests & Merged vs best-specialist accuracy (overall; worst family); \(\pm\): 95\% CI over seeds & 0.5B ties 0.647\(\pm\)0.027 vs 0.592\(\pm\)0.009; 7B soup 0.873\(\pm\)0.004 vs 0.807\(\pm\)0.038 (soup \(-\) best +0.066\(\pm\)0.036, 3/3 seeds) \\[3pt]
|
||||
Union vs blend (headroom) & 3 seeds (0.5B hard); 3 seeds (7B hard) & Paired per-seed ordering, routing vs weight-average & 0.5B: routing > blend in 3/3 seeds, one catastrophic blend failure avoided. 7B: routing 0.503\(\pm\)0.007 vs soup 0.408\(\pm\)0.021 (+0.094\(\pm\)0.015, 3/3); soup vs best specialist +0.001\(\pm\)0.041 (the seed-1 'soup below best parent' did not replicate). Directed \(-\) soup +0.073\(\pm\)0.031 (3/3) \\[3pt]
|
||||
Speciation decomposition & MLPs, 3 replicates & LMC error barrier residual after permutation+rescaling alignment & Same-task 0.001; conflict 0.497 (naive 0.502) \\[3pt]
|
||||
Emergent isolation & MLPs 4 reps to 6.4\(\times\) base training; LLM 1\(\rightarrow\)12 epochs & Residual barrier; merged vs parent accuracy & 0.000 everywhere; merge rescues parents (\(\approx\)0.955 vs \(\approx\)0.50) \\[3pt]
|
||||
LLM speciation, seeds & 0.5B; 3 training seeds; fixed test prompts & Conflict cliff: merge best-convention accuracy vs parents' own at full conflict. Duration null: merged private-task accuracy, 1 \(\rightarrow\) 12 epochs & Cliff in 3/3 seeds (merge 0.02/0.12/0.16 vs parents 0.23--0.25); merged coherence over the sweep 0.147\(\pm\)0.013 \(\rightarrow\) 0.100\(\pm\)0.082. No isolation in 3/3 (0.760\(\pm\)0.075 \(\rightarrow\) 0.950\(\pm\)0.010) \\[3pt]
|
||||
Predictive test & 13 conditions \(\times\) 3 seeds (0.5B) & Merge penalty vs oracle parent potential (pre-registered; \(\pm\): clustered 95\% CI) & Functional \(\rho\) +0.45/+0.46, CI excl. 0; LOCO \(\rho\) \(\approx\) 0.4; geometry n.s.; paired differences n.s. \\[3pt]
|
||||
Predictive test, seed sensitivity & Same; per-seed and leave-one-seed-out & Spearman \(\rho\) vs merge penalty within each seed alone (n = 13 conditions) & Functional +0.37 to +0.53 in every seed; weight geometry \(\approx\) 0 in every seed; gradient alignment seed-unstable (\(-\)0.11 to \(-\)0.55) \\[3pt]
|
||||
Six-generation population & 1.5B base; 3 lineages \(\times\) 6 generations; 3 training seeds; fixed tests (60 per family) & Best-lineage accuracy over six families at the final generation (mean of seeds; per-seed contrasts) & Never merge 0.796; declinable merge 0.792 (\(\Delta\) \(-\)0.03/+0.01/+0.01); forced stop after generation 2: 0.793 (declinable \(-\) stop \(-\)0.008/\(-\)0.006/+0.011); obligate merge 0.269 (declinable \(-\) obligate +0.57/+0.54/+0.45); own-ancestor merge 0.663; single model 0.802 \\[3pt]
|
||||
Conflict-arrival curricula & Conflict-early / conflict-late (boolq + winogrande in generations 1--2 or 5--6); isolated, declinable and obligate arms; 3 seeds each & Decline rate and obligate-arm accuracy per generation; partial Spearman of declines on a conflict-present indicator controlling for generation (seed-clustered bootstrap) & Declines 0.56 \(\rightarrow\) 0.78 (early), 0.44 \(\rightarrow\) 0.89 (late); partial \(\rho\)(conflict \\[3pt]
|
||||
Differential reproduction & Latin square; truncation selection (worst lineage re-founded from the best each generation); isolated and declinable arms; 3 seeds & Final best-lineage accuracy; per-seed contrasts against the unselected arms & Never merge + selection 0.804, declinable + selection 0.793 (declinable \(-\) never merge \(-\)0.011\(\pm\)0.003, below in 3/3); unselected 0.796 / 0.792; selection \(-\) no selection +0.007\(\pm\)0.030 \\[3pt]
|
||||
Second base lineage & SmolLM2-1.7B-Instruct; Fisher--Muller 5 seeds, headroom (hard) 3 seeds; fixed tests & Same contrasts as the Qwen rows & Soup \(-\) best specialist +0.049\(\pm\)0.022, TIES \(-\) best +0.097\(\pm\)0.020 (5/5 each; worst family +0.19 / +0.20). Routing \(-\) soup +0.162\(\pm\)0.036 (3/3); soup \(-\) best specialist \(-\)0.029\(\pm\)0.017 (below in 3/3) \\[3pt]
|
||||
Declinable-merge acceptance & Latin-square and decorrelated curricula; 9 merge decisions per generation; 3 seeds each & Fraction of proposed merges declined vs partner complementarity, with generation controlled (partial Spearman, seed-clustered bootstrap CI) & Latin square: 0.44 \(\rightarrow\) 1.00 (raw \(\rho\) with complementarity \(-\)0.57, n = 18). Decorrelated curriculum (complementarity 0.00, 0.67, 0.70, 0.58, 0.33, 0.00): 0.44 \(\rightarrow\) 0.89. Pooled (n = 36): partial \(\rho\) with complementarity \(-\)0.07, CI (\(-\)0.21, +0.09); partial \(\rho\) with generation +0.31 \\[3pt]
|
||||
\hline\end{tabular}\end{center}\medskip
|
||||
|
||||
\section*{SI Methods: experimental procedures}
|
||||
|
||||
Every experiment in this paper is one YAML config, one runner invocation, and one artifact triple (\texttt{results.parquet} + the resolved config + a manifest carrying the master seed, git commit, library versions, and a content hash). The configs named below are the authority on any parameter; this section gives the scientific reasoning behind the choices. \texttt{REPRODUCING.md} maps each manuscript panel to the config and seed that produced it.
|
||||
|
||||
\subsection*{M1. Design principles}
|
||||
|
||||
Four rules govern every choice that follows.
|
||||
|
||||
\emph{Test each claim at the cheapest tier that can falsify it.} A closed form beats a simulation, a simulation beats a trained network, and a small network beats a language model, whenever the cheaper instrument can still return the answer ``no''. A costlier tier is entered only where it adds a discriminating test rather than a replication --- which is why several cells of the programme (Fig. 1A) are deliberately empty.
|
||||
|
||||
\emph{Match the precision of the claim to the precision of the instrument.} The inheritance model is exact, so it carries the paper's quantitative statements. Trained systems add optimisation noise and inductive bias, so at those tiers I claim signs and orderings, never magnitudes.
|
||||
|
||||
\emph{Make reality able to refuse.} Every tier has an oracle that is independent of the model being measured: a fixed true distribution in the inheritance model, a lossless identity code or a frozen classifier in the neural tier, an exact-match verifier over procedurally generated tasks in the language-model tier.
|
||||
|
||||
\emph{Declare the falsifier before running.} Each experiment states the outcome that would refute the claim it tests (per-experiment READMEs; SI Table S1). Two pre-registered predictions failed, and are reported as failures in the main text.
|
||||
|
||||
\subsection*{M2. Replication: what a replicate is, and how many}
|
||||
|
||||
A replicate means something different at each tier, and conflating the three would misstate what the error bars cover.
|
||||
|
||||
In the inheritance model a replicate is an independent lineage: a fresh random stream driving the same resolved config, with sub-seeds derived from the master seed by \texttt{SeedSequence.spawn}. Because drift \emph{is} the object of study, the spread across replicates is signal rather than nuisance, and replicate counts are set so that the confidence interval on the summary statistic is small relative to the effect being reported.
|
||||
|
||||
In the trained-network tier a replicate is an independent lineage including fresh weight initialisation and data ordering, so it carries optimisation noise on top of drift.
|
||||
|
||||
In the language-model tier a replicate is an independent \emph{training} seed evaluated on \emph{fixed} test sets. Holding the evaluation data constant while varying the training seed isolates training stochasticity, which is the quantity in doubt; it also means the seed-to-seed spread I report is not inflated by resampling the benchmark.
|
||||
|
||||
Replicate counts, and why each is what it is:
|
||||
|
||||
\medskip\noindent\begin{center}\footnotesize
|
||||
\begin{tabular}{p{0.307\textwidth} p{0.307\textwidth} p{0.307\textwidth}}
|
||||
\hline
|
||||
Experiment & Replicates & Reasoning \\ \hline
|
||||
\texttt{fig2\_grounding\_sweep}, \texttt{figS5\_aimed\_grounding}, \texttt{figS12\_quality\_diversity}, \texttt{figS3\_rebaselining} & 100 lineages & Long horizons (400--600 generations) with drift-dominated variance; 100 lineages put the CI on stationary diversity well inside the effect being resolved \\[3pt]
|
||||
\texttt{figS8\_multiparent\_union} & 200 & Outcomes are per-item binary retentions, the highest-variance quantity in the paper \\[3pt]
|
||||
\texttt{figS9\_specialist\_superparent} & 40 & The vertical claim; the headline separation, so the most replicated of the genotype experiments \\[3pt]
|
||||
\texttt{figS10\_rugged\_landscapes}, \texttt{figS11\_directed\_recombination} & 24 & Landscape sweeps where each point aggregates 200 offspring internally \\[3pt]
|
||||
\texttt{fig4\_society\_ablation} & 12 & Four-arm ablation over 80 generations; arms separate by margins far exceeding the CI \\[3pt]
|
||||
\texttt{fig5\_speciation\_bdm} & 15 & Each point already averages 500 offspring \\[3pt]
|
||||
\texttt{figS13\_mating\_breadth} & 20 & Breadth \(\times\) ruggedness grid, 60 generations per cell \\[3pt]
|
||||
\texttt{figS2\_kernel\_sharpen}, \texttt{figS2\_kernel\_smooth} & 24 & Two-parameter kernel fits against neural reference endpoints \\[3pt]
|
||||
\texttt{bridge} & 60 & The harness gate: must detect \emph{any} departure from the inheritance model, so the most replicated neural run \\[3pt]
|
||||
\texttt{figS6\_grounding\_rnn} & 18 & Nine-point grounding sweep with per-generation network retraining \\[3pt]
|
||||
\texttt{collapse}, \texttt{figS1\_architectures} & 5 & Sign-level demonstrations across architectures; each lineage retrains a network 22--25 times \\[3pt]
|
||||
recombination & 8 & Operator contrast in trained weights \\[3pt]
|
||||
\texttt{fig2\_mnist\_collapse} & 4 & 15 generations \(\times\) a conv-VAE retrained from scratch each generation; the contrast (30 modes vs 1) is categorical \\[3pt]
|
||||
speciation\_real, \_cliff & 3 & Barrier decomposition; the quantity is a near-deterministic function of the training condition (residual 0.001 vs 0.497) \\[3pt]
|
||||
speciation\_real\_emergent & 4 & A null: replicates are spent on longer divergence horizons rather than more repeats \\[3pt]
|
||||
llm\_merge\_seeds & 5 training seeds & The Fisher--Muller signature, the most-replicated language-model claim \\[3pt]
|
||||
llm\_moe\_hard\_seeds, llm\_directed\_hard\_seeds, llm\_epistasis(+compat), llm\_speciation\_add & 3 training seeds & Per-seed orderings reported individually rather than averaged \\[3pt]
|
||||
7B runs (llm\_merge\_hpc, llm\_moe\_hard\_hpc, llm\_directed\_hard\_hpc) & 3 training seeds & Seeds 2--3 added 2026-09-11 (\texttt{hpc/llm\_7b\_seeds.pbs}, \textasciitilde{}33 min per seed on one L40S); per-seed contrasts in \texttt{figures/stats\_llm\_7b\_seeds.py} \\[3pt]
|
||||
llm\_curriculum\_v5\_{early,late}(\_obl) & 3 training seeds each & Conflict-arrival curricula; per-seed contrasts and the pooled partial-correlation test \\[3pt]
|
||||
llm\_curriculum\_v5\_cull & 3 training seeds & Differential reproduction; per-seed contrasts against the unselected arms \\[3pt]
|
||||
llm\_merge\_seeds\_smol, llm\_moe\_hard\_seeds\_smol & 5 and 3 training seeds & Second base lineage; per-seed orderings as for the Qwen runs \\[3pt]
|
||||
llm\_speciation & 3 training seeds & Conflict cliff and duration null checked seed by seed (\texttt{figures/stats\_llm\_speciation\_seeds.py}); seeds 2--3 added 2026-09-12 \\[3pt]
|
||||
llm\_curriculum\_v5, llm\_curriculum\_v5\_veto, llm\_curriculum\_v5\_stop3, llm\_curriculum\_v5\_decor & 3 training seeds & The six-generation population; arm separations (\(\approx\)0.5) far exceed seed spread (\(\approx\)0.02), and the declinable-vs-never contrast is reported per seed because its mean is near zero \\[3pt]
|
||||
\hline\end{tabular}\end{center}\medskip
|
||||
|
||||
The asymmetry is deliberate: replicates are cheap exactly where the quantitative claims live, and the expensive tiers are asked only for the sign of an effect the cheap tier has already quantified. Where a single run is all there is, the manuscript says so.
|
||||
|
||||
\subsection*{M3. The inheritance-model tier}
|
||||
|
||||
Knowledge is a distribution over \texttt{K} discrete items; reality is a fixed Zipf-tailed distribution \texttt{p*}; one generation resamples \texttt{n} draws from the parent, optionally mixes in \texttt{m} verified draws from \texttt{p*}, and refits. Implementation: NumPy/SciPy, no GPU, bitwise reproducible.
|
||||
|
||||
\emph{Parameter choices.} \texttt{K = 500}--\texttt{1000} with \texttt{zipf\_s = 1.1} and half the items designated tail: large enough that the rare tail contains hundreds of items (so tail statistics are not dominated by a handful of them) and small enough to sweep densely. \texttt{n = 100}--\texttt{200} sets drift strength; it is the population size in the Wright--Fisher correspondence and the distillation sample size in the AI reading. Horizons of 400--600 generations were chosen so that ungrounded lineages reach fixation and grounded ones reach stationarity within the run, which the trajectories confirm.
|
||||
|
||||
\emph{Sweeps.} The grounding sweep (\texttt{fig2\_grounding\_sweep}) sweeps \texttt{g \(\in\) {0, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.4}}; the aimed-grounding experiment (\texttt{figS5\_aimed\_grounding}) contrasts uniform against region-matched grounding allocation; the multi-parent union experiment (\texttt{figS8\_multiparent\_union}) crosses parent count \texttt{K\_T \(\in\) {1,2,3,5}} with parent correlation \texttt{\(\rho\) \(\in\) {0, 0.25, 0.5, 0.75, 1}} and \texttt{g \(\in\) {0, 0.02, 0.05}}; the selection experiment (\texttt{figS12\_quality\_diversity}) crosses selection mode (none / greedy / quality-diversity) with novelty weight; the re-baselining experiment (\texttt{figS3\_rebaselining}) compares four re-minting arms.
|
||||
|
||||
\emph{The correlated-parent construction (\texttt{figS8\_multiparent\_union}).} Parent correlation is constructed directly rather than obtained by tuning drift, so that \texttt{\(\rho\)} is not confounded with \texttt{n}, \texttt{m}, tail size, or generation count. For each tail item a shared switch \texttt{z \textasciitilde{} Bern(\(\rho\))}, a shared retention \texttt{s \textasciitilde{} Bern(q)}, and per-parent \texttt{u\(^{(k)}\) \textasciitilde{} Bern(q)} give parent \texttt{k} retention \texttt{s} if \texttt{z} else \texttt{u\(^{(k)}\)}. This yields exact marginal retention \texttt{q} and exact pairwise correlation \texttt{\(\rho\)}, and is exchangeable, so \texttt{\(\rho\)} is a single scalar knob.
|
||||
|
||||
\emph{Multi-locus experiments} (\texttt{figS9\_specialist\_superparent}, \texttt{figS10\_rugged\_landscapes}, \texttt{figS11\_directed\_recombination}, \texttt{fig4\_society\_ablation}, \texttt{figS13\_mating\_breadth}). Genotypes are \texttt{L = 12} biallelic loci (4096 genotypes --- effectively open-ended relative to the population sizes used), with fitness either additive or a Kauffman NK landscape whose interaction count \texttt{K} tunes ruggedness from 0 to 10. The landscape and directed-recombination experiments breed from \texttt{n\_parents = 6} local optima into populations of 200 offspring; the directed one additionally screens offspring and iterates (5 rounds, keeping 8). The society ablation runs a population of \texttt{N = 60} agents for 80 generations at ruggedness \texttt{K = 8}, with mutation \texttt{\(\mu\) = 0.03}, 120 offspring per generation, and selection weighting true fitness against consensus conformity at \texttt{g = 0.85}. The mating-breadth experiment sweeps mate-pool breadth on a ring of \texttt{N = 48} against ruggedness.
|
||||
|
||||
\emph{Speciation (\texttt{fig5\_speciation\_bdm}).} \texttt{L = 20} loci, incompatibility density \texttt{\(\rho\) \(\in\) {0.1, 0.25, 0.5}}, parental divergence swept 0--20 substitutions, 500 offspring per cell at recombination rate 0.5.
|
||||
|
||||
\emph{Validation.} Three closed forms are asserted as standing tests to within 0.5\%: neutral heterozygosity decay \texttt{E[H\_t] = H\_0(1 \(-\) 1/n)\textasciicircum{}t}, the exact immigration--drift equilibrium, and the multi-parent union formula. These run in CI alongside the correctness tests. If they fail, the science is wrong rather than merely the code.
|
||||
|
||||
\subsection*{M4. The trained-network tier}
|
||||
|
||||
\emph{Why a synthetic universe.} Measuring collapse requires knowing the true distribution exactly. Each mode is rendered as a token sequence carrying an identity segment (base-2 digits encoding the mode index losslessly, so the oracle reads the mode back with zero error) followed by style tokens drawn uniformly at random. The style segment gives genuine within-mode entropy, so a generative model must learn a distribution rather than memorise \texttt{K} fixed strings, while the identity segment keeps the measurement noise-free. Mode truth comes from the same \texttt{make\_true\_distribution} used by the inheritance model, so ``mode'', ``region'', and ``tail'' denote the same objects at both tiers.
|
||||
|
||||
\emph{The bridge gate.} Before any trained model is interpreted, a histogram generator is run through the identical harness; it must reproduce the inheritance model exactly. This separates harness bugs from model behaviour, and is why the bridge run carries 60 replicates.
|
||||
|
||||
\emph{Architectures and training.} The recurrent generator is an embedding (26) \(\rightarrow\) GRU (128 hidden; 192 in the architecture-generality run) \(\rightarrow\) linear readout, trained each generation from scratch with Adam, learning rate 2\(\times\)10\(^{-3}\), batch size 256, 25 epochs, and evaluated by sampling 12,000--15,000 sequences. Feedforward and variational autoencoder generators share the harness. Retraining from scratch each generation (rather than fine-tuning) makes the generational step a clean refit, matching the inheritance model's operator.
|
||||
|
||||
\emph{MNIST tier.} Dataset: MNIST via torchvision (60,000 training images). Modes are digit class \(\times\) stroke-thickness bin (10 \(\times\) 3 = 30 modes) with a Zipf frequency profile, so roughly eighteen modes are rare. The generator is a convolutional variational autoencoder (latent 32, \(\beta\) = 1), retrained from scratch each generation with Adam, learning rate 10\(^{-3}\), batch 256, 30 epochs, on 6,000 images drawn from the previous generation's own samples, for 15 generations, at \texttt{g \(\in\) {0, 0.1}}. The oracle is a frozen two-convolution classifier trained once (5 epochs) combined with a deterministic thickness measure; it reaches 98.5\% mode accuracy and its 30 \(\times\) 30 confusion matrix is recorded in the manifest as the measurement floor. Build gates: the oracle's accuracy, and generation-0 recovery of all 30 modes.
|
||||
|
||||
\emph{Speciation in trained weights.} Two multilayer perceptrons (784--512--512--10, ReLU, no batch normalisation --- batch statistics would break the permutation correspondence the analysis depends on) are forked from a shared base trained for 500 steps, then trained apart for 100--3,200 further steps (up to 6.4\(\times\) the shared base) under SGD at learning rate 0.05, batch 128. Merges are weight averages; the readout is the linear-mode-connectivity error barrier before and after alignment. Alignment composes deterministic Re-Basin permutation matching with exact per-unit scale canonicalisation --- the unit symmetry group of this architecture --- and is gated by a control that must recover a permuted-and-rescaled copy exactly. Since the search space is that group rather than all possible alignments, the removable share is a lower bound and the residual an upper bound.
|
||||
|
||||
\subsection*{M5. The language-model tier}
|
||||
|
||||
\emph{Base models.} Qwen2.5-Instruct at 0.5B and 7B, open weights under a permissive licence, with the revision pinned. Using two sizes from one family makes scale the only variable that changes between the small and large runs; the 0.5B model carries five-seed protocols on the easy families; the 7B runs are replicated over three training seeds.
|
||||
|
||||
\emph{Task families, and why they are procedural.} Three deliberately disjoint families --- list operations, string transformations, and small-integer arithmetic --- are generated procedurally from a seed. Procedural generation buys four things that a standard benchmark cannot: an exact-match verifier that plays the role of reality (an answer is right or it is not, with no judge model in the loop); freedom from train/test contamination, since every evaluation item is generated fresh from a disjoint seed offset; control over family disjointness, which is the precondition for specialists to be genuinely decorrelated parents; and a difficulty knob. A \texttt{hard} variant (multi-step list operations, Caesar ciphers and letter transforms, multi-step and larger arithmetic) exists because the easy families saturate a 7B base at ceiling, and saturation removes the headroom in which recombination operators can differ --- a control that proved necessary, since two null results at 7B turned out to be saturation artefacts rather than scale effects.
|
||||
|
||||
\emph{Data splits.} Training, validation, routing-calibration, and test items are drawn from non-overlapping seed offsets by construction (test from 1000 + family index, routing from 2000 +, validation from 3000 +, training from the run seed). Test sets are fixed across seeds in the multi-seed protocols. Selection of merge weights uses validation only; the winners are then reported on the untouched test split.
|
||||
|
||||
\emph{Specialisation.} Each parent is a LoRA adapter (rank 16, \(\alpha\) = 32) on the frozen base, applied to all attention and MLP projection matrices, trained with a manual supervised fine-tuning loop: answer-only cross-entropy (prompt tokens masked out of the loss), AdamW at 2\(\times\)10\(^{-4}\), batch size 8, 3 epochs, bfloat16, 400--800 training items per family. Low-rank adaptation is the right instrument here for a structural reason rather than a computational one: it confines each parent's specialisation to an additive low-rank delta over an identical frozen base, which is what makes weight-space recombination between parents well defined.
|
||||
|
||||
\emph{Recombination operators.} Fusion by uniform weight averaging (soup) and by sign-reconciled, magnitude-pruned task arithmetic (TIES); union by keeping specialists intact and selecting per input (oracle routing, and a training-free nearest-centroid router over the base model's own prompt embeddings) or per module (winner-take-all by delta norm); and directed recombination, which breeds a population of Dirichlet-weighted merges, scores each on validation, and keeps the fittest.
|
||||
|
||||
\emph{Evaluation.} Greedy decoding, exact match after canonicalisation. Alongside overall accuracy I report worst-family accuracy, because the Fisher--Muller claim is about competence across all families rather than an average that a single strong specialty can carry.
|
||||
|
||||
\emph{The controlled predictive test.} Thirty-nine parent pairs (13 conditions \(\times\) 3 seeds) span three axes that are decorrelated by construction: conflict (contradictory conventions on shared prompts, with private training budgets held fixed), compatible overlap (the same shared prompts under the same convention --- overlap and volume without conflict), and duration (weight divergence with no conflict, 1 to 12 epochs). Six predictors are computed before any merge: confidence-weighted functional conflict, raw disagreement, gradient alignment at the shared base, LoRA-delta cosine and L2 distance, and a cross-task performance baseline. Probes are drawn blind to where the conflict lives. The outcome is the merge penalty against oracle parent potential, pre-registered, and also reported against best-parent and mean-parent references because the predictor ordering is sensitive to that choice.
|
||||
|
||||
\emph{The six-generation population.} Base model Qwen2.5-1.5B (base weights, not the instruction-tuned variant; 0.006 accuracy on the families untrained). Six public datasets with per-family verifiers: natural-language inference (MNLI; label), science questions (ARC; letter), commonsense completion (HellaSwag; letter), reading-comprehension spans (SQuAD; normalised span with aliases), yes/no questions (BoolQ), and pronoun resolution (WinoGrande; 1/2). Each family's pool is split into disjoint training, validation, and test items before any sampling, so validation and test never share an item. Two further curricula, conflict-early and conflict-late, are given as explicit orders: the two families whose answer conventions conflict (BoolQ yes/no, WinoGrande 1/2) occupy generations 1--2 or 5--6 of every lineage and the four compatible families fill the remaining generations in rotated orders, so adapter age and skill count rise one family per generation in both and only the arrival of conflict differs (\texttt{configs/llm/curriculum\_v5\_{early,late}.yaml}; obligate arms in the \texttt{\_obl} configs; three training seeds each; \texttt{hpc/llm\_curriculum\_timing.pbs}). The conflict-timing readout is the partial Spearman correlation of the per-generation decline rate with an indicator of conflict presence, controlling for generation, with a seed-clustered percentile bootstrap (\texttt{figures/stats\_llm\_curriculum.py}). Differential reproduction (\texttt{cull: true}) applies truncation selection after each generation's measurement: the lineage with the lowest all-families accuracy is re-founded from the one with the highest (adapter, taught families, example budget and ancestry archive are copied; the slot keeps its curriculum order; ties leave the population unchanged), recorded as \texttt{culled} and \texttt{cull\_source} rows (\texttt{configs/llm/curriculum\_v5\_cull.yaml}; three training seeds; \texttt{hpc/llm\_cull.pbs}). The second base lineage is \texttt{HuggingFaceTB/SmolLM2-1.7B-Instruct} (Apache-2.0; Llama architecture), run through the unchanged \texttt{merge\_seeds} and \texttt{moe\_hard\_seeds} protocols with its own adapter cache (\texttt{configs/llm/{merge\_seeds,moe\_hard\_seeds}\_smol.yaml}; \texttt{hpc/llm\_smol.pbs}; \texttt{figures/stats\_llm\_smol.py}). Three lineages take the six families in a cyclic Latin square (each lineage's order is the previous lineage's shifted by two), which fixes partner complementarity --- the fraction of the partner's families a lineage has not yet seen --- at 1.0, 1.0, 0.8, 0.67, 0.33, 0.0 across the six generations. Each generation a lineage draws 300 new items from its scheduled family and 150 replay items split evenly across families already seen; the child adapter (rank 16) is initialised from the parent's and trained for 3 epochs at learning rate 10\(^{-4}\) (founders from the base at 2\(\times\)10\(^{-4}\)). Recombination averages two adapters at each weight in {0.5/0.5, 0.3/0.7, 0.7/0.3}; the winner is chosen on 20 validation items per family seen and then trains on the generation's new family. In the declinable arm the unchanged parent is a fourth candidate scored identically. The contemporary partner is the next lineage in the square; the ancestor partner is the lineage's own adapter three generations earlier; the self-replay variant draws its replay from the parent's own answers rather than from the datasets. Reporting uses 60 test items per family. Because two of the families are binary, an accuracy threshold at 0.5 is chance, so the text reports mean accuracy over the families a lineage has been taught and the trajectory of its first-learned family rather than a count of families above a threshold.
|
||||
|
||||
\emph{The composed society.} A population of \texttt{N} LoRA agents on a shared frozen base evolves for \texttt{G} non-overlapping generations. Each generation every agent answers a fixed validation pool (verifier scored) and a fresh conformity pool (whose modal answer defines the population consensus); selection scores agents by \texttt{g\(\cdot\)fitness + (1\(-\)g)\(\cdot\)conformity}; parents are chosen with or without a quality-diversity term over behavioural distance; offspring are bred by screened recombination; and each child is a fresh adapter distilled from its source model's own answers, which makes the inheritance channel literally self-consuming. The verifier enters the loop only where \texttt{g > 0}, but is used for reporting in every arm. The four-arm ablation removes grounded evaluation, recombination, or diversity preservation in turn.
|
||||
|
||||
\subsection*{M6. Negative controls}
|
||||
|
||||
The design leans on controls that can remove a result rather than support one, and one of them did.
|
||||
|
||||
The compatible-overlap axis was added to the predictive test specifically to expose overlap-and-volume artefacts, and it did: the initial two-axis grid's best predictor (LoRA-delta cosine, \(\rho\) = +0.60) collapsed to \(\rho\) = +0.03 once compatible overlap was present, identifying it as an artefact rather than a signal. The duration axis supplies divergence without conflict. The emergent-speciation condition supplies divergence with no conflicting signal anywhere, and returns a null. The budget-controlled speciation design (\texttt{conflict\_mode: add}) removes the confound between conflict fraction and private training budget. The histogram bridge is a harness control. In the inheritance model, \texttt{m = 0} arms and \texttt{\(\rho\) = 1} (fully correlated parents) are the null conditions against which the corresponding effects are read. In the six-generation population, three arms are controls --- a single model taught the curriculum alone (no population), the never-merge population (no recombination), and merging with one's own ancestor (shared conventions, partial complementarity) --- and the self-replay variant of the obligate arm controls the replay channel; SI Text S3 records the three direct tests that refuted alternative mechanisms for the obligate arm's collapse.
|
||||
|
||||
\subsection*{M7. Statistical procedures}
|
||||
|
||||
Error bars on replicate means are normal-approximation 95\% confidence intervals unless stated otherwise. For the predictive test, where rows share task-data seeds across conditions and are therefore not independent, inference uses a condition-clustered bootstrap (13 clusters, 4,000 resamples); predictors are compared by paired contrasts on the same resamples; generalisation is assessed by leave-one-condition-out prediction; and per-seed and leave-one-seed-out sensitivity are reported alongside, since three seeds cannot settle seed generalisation on their own. Outcome- reference sensitivity is reported rather than resolved. Where a difference is not significant at the sample size available, the manuscript says so rather than reporting the point estimate alone.
|
||||
|
||||
\section*{SI Statistics}
|
||||
|
||||
Output of \texttt{figures/stats\_llm\_epistasis.py} (clustered CIs, paired predictor contrasts, LOCO held-out prediction, outcome-reference sensitivity, within/between-axis decomposition) --- reproduced verbatim at submission. Chronology of the predictive test (prospective / adaptive / post-hoc) as disclosed in \texttt{results/llm\_epistasis/README.md}.
|
||||
|
||||
\section*{SI Figures}
|
||||
|
||||
Sixteen figures are cited from the main text by number. Each is the per-experiment figure regenerated from the committed results artifact (\texttt{figures/plot\_*.py}), reproduced here without re-plotting, so panel titles still carry the experiment's working name. Five of them are inheritance-model results with no real-model counterpart in this paper, reported here because each reproduces an established result: blending versus union retention (Fig. S8), the Fisher--Muller super-parent (Fig. S9), outbreeding depression on rugged landscapes (Fig. S10), directed recombination (Fig. S11), and the mate-pool breadth optimum (Fig. S13).
|
||||
|
||||
\begin{figure}[p]\centering % s1
|
||||
\includegraphics[width=\textwidth]{figs/si/s1_figS1_architectures.pdf}
|
||||
\caption{Collapse, and its arrest by real data, in three kinds of generator. The generational loop of Fig.~2 (train a child only on its parent's output, with or without 5\% real data) is run with an exact frequency count (a histogram, no network), a recurrent network and a feed-forward network, on a synthetic universe of 256 knowledge items whose true frequencies are known exactly; 200 samples per generation, 22 generations, 5 replicates. (A) Distance from the true distribution (forward KL divergence, which grows the more of the truth a model fails to cover) against generation: solid lines, with no real data, climb in every architecture; dashed lines, with 5\% real data, stay low. (B) The same distance at the end of the run (error bars over replicates): real data lowers it in all three. (C) The fraction of rare items still alive at the end: real data raises it in all three. The histogram's bars in C are small because a frequency count drops a rare item outright once it is unseen, whereas the networks keep some alive by smoothing (the subject of Fig.~S2). A variational autoencoder was excluded because it failed the generation-0 fidelity check on this task.}\label{s1}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s2
|
||||
\includegraphics[width=\textwidth]{figs/si/s2_kernel.pdf}
|
||||
\caption{Why trained networks deviate from the ideal copier, in opposite directions. The inheritance model assumes a child's frequencies are exactly those it sampled from its parent. Two knobs are added to that copying step: a smoothing knob (a small pull toward treating every item as possible; mutation rate $u$) and a sharpening knob (a temperature $\tau < 1$ that concentrates probability on the commonest items). Blue: the ideal copier; red: the copier with one knob turned; green dashed: the level the real trained network reached with no real data; 24 replicates per regime. (A, B) The image network of Fig.~2 (6,000 samples per generation, 30 items): heterozygosity (A) and the number of distinct items still produced (B) against generation. The ideal copier barely drifts at this sample size, yet the real network collapsed to a single item; sharpening at $\tau = 0.8$ reproduces the collapse. (C, D) The recurrent network (200 samples, 256 items): heterozygosity (C) and forward KL divergence (D). The ideal copier drives diversity to zero, yet the real network keeps a floor near 0.68; smoothing at $u = 0.006$ reproduces the floor, though it overshoots the network's divergence (about 5 against 1.8), so the network's implicit prior is closer to the truth than a uniform one. In population-genetic terms the smoothing knob is recurrent mutation (variants appear without being inherited) and the sharpening knob is positive frequency-dependent selection (the majority gains, nothing new appears); a trained network behaves as drift plus one of these two biases, set by its architecture.}\label{s2}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s3
|
||||
\includegraphics[width=\textwidth]{figs/si/s3_figS3_rebaselining.pdf}
|
||||
\caption{Re-baselining a collapsed population locks in its losses. A tempting shortcut is to declare a model's current output the new reference and discard the original data. In the inheritance model (500 items, 200 samples per generation, 400 generations, 100 replicates) the population's current frequencies are frozen as the new grounding reference at generations 150 and 300 (dotted verticals) and the original truth is kept only for measurement. Four arms: re-baseline while still diverse, under generous real data (green); re-baseline after collapse, under starved real data (red); the same starvation with re-baselining allowed only while heterozygosity is above 0.75 (blue); never re-baseline (grey). (A) Distance from the original truth against generation (bands over replicates): the red arm steps up at each re-baselining and never returns; the healthy arm shows small steps; the gated and never arms coincide. (B) Heterozygosity, with the gate's threshold dashed: the gated arm never re-baselines because it stays below the line. Once rare knowledge is gone from every copy it cannot be rebuilt (Muller's ratchet); a diversity gate prevents the shortcut from making the loss permanent.}\label{s3}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s4
|
||||
\includegraphics[width=\textwidth]{figs/si/s4_fig2_grounding_sweep.pdf}
|
||||
\caption{The full real-data sweep in the inheritance model (the experiment summarised in Fig.~2B). 1,000 knowledge items with a long tail of rare ones, 200 samples per generation, 500 generations, 100 lineages; each generation also receives $m$ fresh real samples, so the real-data share is $g = m/(n+m)$, swept from 0 to 0.4. (A) Heterozygosity against generation, one line per $g$: with no real data it declines steadily; with any real data it levels off. (B) The level it settles at against $g$ (points, simulation) with the exact prediction (dashed) and the real data's own diversity (dotted); the red line marks $g^* = 0.048$ (95\% CI 0.047--0.050), where 95\% of the real data's diversity is kept. The hollow point at $g = 0$ has not converged (its equilibrium is zero). (C) The fraction of the rare tail retained, counted by items (red) and by their share of the truth (purple): both rise with $g$ but stay below 0.1 even at $g = 0.4$. (D) Survival by band of rarity, from the rarest (band 0) to the least rare (band 3): the rarest recover last. Overall diversity is cheap to protect; a rare item persists only once about one real example of it arrives per generation, so protecting it costs about one over its frequency in real samples.}\label{s4}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s5
|
||||
\includegraphics[width=\textwidth]{figs/si/s5_figS5_aimed_grounding.pdf}
|
||||
\caption{Real data protects only the topics it covers. The 1,000 items are divided into ten topics (regions) and the same total budget of real data is spent either evenly over all ten or concentrated on one topic the experimenter wants to protect; 200 samples per generation, 400 generations, 100 replicates. (A) The fraction of that topic's rare items still alive against generation, with real data aimed at it (blue) or spread evenly (red), bands 95\% CI: aimed grounding holds about half the topic's rare items, spread grounding lets it fall to about 0.07. (B) Survival per topic at the end, same colours, the protected topic marked by the dotted line: aimed grounding protects its topic and leaves the others with no surviving rare items; spread grounding gives every topic the same low survival. Per-topic heterozygosity is confounded by how much of the truth each topic carries, so rare-item survival is the readout. A fixed budget of real data should be aimed at the knowledge one wants to keep.}\label{s5}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s6
|
||||
\includegraphics[width=\textwidth]{figs/si/s6_figS6_grounding_rnn.pdf}
|
||||
\caption{The real-data response in a trained recurrent network. The sweep of Fig.~S4 repeated in a recurrent generator rather than the exact simulation: 256 items, 200 samples per generation, 30 generations, $g$ swept over nine values from 0 to 0.2, 18 replicates. (A) Distance from the truth (forward KL divergence) against generation, one line per $g$: more real data suppresses the climb. (B) The final distance against $g$ (error bars 95\% CI), falling steadily from 2.08 with no real data to 0.75 at $g = 0.2$ (paired $t = 3.3$ at $g = 0.2$). (C) The fraction of the achievable improvement each $g$ buys: half of it arrives by $g = 0.040$ (red line; bootstrap 95\% CI 0.004--0.116 shaded), close to the simulation's $g^* = 0.048$ (black dashed), but the full improvement needs $g$ near 0.19. (D) Three ways of measuring collapse on one 0--1 scale: heterozygosity relative to the truth (blue) is flat near 0.8; the count of surviving rare items (orange) rises and falls with no pattern; the divergence-based recovery (green) rises cleanly. The direction of the effect matches the simulation, the threshold softens, and counting surviving items is the wrong ruler for a smoothing network, which keeps inventing rare items that are not in the truth; distance from the truth is the measure used for such networks.}\label{s6}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s7
|
||||
\includegraphics[width=\textwidth]{figs/si/s7_fig2_mnist_collapse.pdf}
|
||||
\caption{Collapse and rescue on real handwritten digits, in numbers (the experiment whose drawings are in Fig.~2A). A convolutional variational autoencoder is retrained from scratch each generation on the previous generation's drawings plus a fraction $g$ of real MNIST digits; the 30 kinds of digit (digit $\times$ stroke thickness, resampled to a long tail with about 18 rare kinds) are read out by a frozen classifier plus a thickness measure at 98.5\% accuracy. Two arms, $g = 0$ (red) and $g = 0.1$ (green); 6,000 drawings per generation, 15 generations, 4 replicates, bands 95\% CI. (A) Distance from the truth rises from about 0.5 to about 18 with no real data and stays near the floor with 10\%. (B) The number of distinct kinds still drawn falls from 30 to about 1 with no real data; with 10\% all 30 survive (dotted line). (C) The share of the rare kinds still alive falls to 0.06 with no real data; with 10\% all of it is kept. (D) Heterozygosity falls to zero with no real data and stays near 0.9 with 10\% (the truth's value dotted). Everything the simulation predicts appears on real images with an independent judge; the dose of real data needed is about twice the simulation's, for the reason shown in Fig.~S2.}\label{s7}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s8
|
||||
\includegraphics[width=\textwidth]{figs/si/s8_figS8_multiparent_union.pdf}
|
||||
\caption{Averaging several parents cancels the benefit of having several; keeping each parent's strongest contribution does not. In the inheritance model (500 items) $K_T$ parents each remember a random share of the rare items, with the similarity of their shares controlled directly by a correlation $\rho$ (0 fully complementary, 1 identical); $K_T \in \{1, 2, 3, 5\}$, $\rho \in \{0, 0.25, 0.5, 0.75, 1\}$, 200 replicates. A child is built either by averaging the parents' output frequencies or by keeping, for each item, the largest frequency any parent gives it (a union), and then resamples as every generation does. (A) The fraction of the rare tail held by at least one parent against $\rho$, one curve per $K_T$: points are simulation, lines an exact formula, and they match. (B) The fraction that survives in the child: solid lines (union) rise with more and less similar parents; dashed lines (averaging) stay flat near 0.08 whatever the number of parents. (C) The same at $\rho = 0$ against the number of parents (error bars 95\% CI). Averaging dilutes each rare item by the number of parents, which exactly cancels the gain of having more parents to draw on (blending inheritance, the scheme Jenkin showed would swamp rare variants); the union realises the gain, and needs a judge to say which parent holds each item.}\label{s8}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s9
|
||||
\includegraphics[width=\textwidth]{figs/si/s9_figS9_specialist_superparent.pdf}
|
||||
\caption{Many complementary parents can produce an offspring better than any of them. A capability is a string of twelve yes/no positions (a genotype of twelve loci) and fitness is the number of correct positions; each parent is a specialist, confident and correct (0.9) on the positions it has mastered and unsure (0.45) elsewhere, and no parent has mastered them all. Which positions a parent masters is drawn so that the number of parents $K_T$ and their correlation $\rho$ are independent knobs; the deployed capability is the fitness of the most probable genotype; 40 replicates, error bars 95\% CI. (A) Capability against the number of parents when parents master different positions ($\rho = 0$): position-wise recombination (red) reaches the perfect score of 12 with eight parents; the best single parent (grey) sits near 8.7; the average of the parents (blue) reaches about 11.6 at twelve parents. (B) Recombination against the number of parents at $\rho \in \{0, 0.5, 1\}$: complementary parents climb to the optimum, identical parents stay flat near 6. This is the Fisher--Muller effect, unbounded because a model population is not limited to two parents; Fig.~3B is its counterpart in language models.}\label{s9}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s10
|
||||
\includegraphics[width=\textwidth]{figs/si/s10_figS10_rugged_landscapes.pdf}
|
||||
\caption{When skills are entangled, blind recombination harms the offspring. The twelve-position genotypes now sit on a rugged landscape (Kauffman's NK model) in which a position's value depends on its neighbours, with ruggedness $K$ from 0 (positions independent) to 8 (highly entangled). Parents are local optima found by hill-climbing, the model of a trained specialist; offspring are made from them at recombination rates from 0 (copy a parent) to 0.5 (free shuffling); 24 replicate landscapes, 200 offspring per point. (A) Mean offspring fitness minus the best parent against recombination rate, one curve per $K$: on a smooth landscape the difference is zero; as $K$ grows the curves fall, more steeply at higher rates, to about $-0.23$ at $K = 8$ under free recombination. (B) The fitness of the best offspring in a brood (parental level dotted): on rugged landscapes it peaks at an intermediate rate and falls back toward the parents under free shuffling. This is outbreeding depression; the optimal amount of recombination shrinks as skills become more entangled.}\label{s10}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s11
|
||||
\includegraphics[width=\textwidth]{figs/si/s11_figS11_directed_recombination.pdf}
|
||||
\caption{Choosing mates and screening offspring rescues recombination on rugged landscapes. On the landscapes of Fig.~S10 three strategies are compared, all reported as deployed fitness in $[0, 1]$; 24 replicate landscapes, error bars 95\% CI: the best single parent (grey); random recombination, as in biology (blue: random parents, free recombination, offspring taken as they come); and directed recombination, which a model population can do and a living one cannot (red: complementary parents chosen, many offspring generated at rate 0.2, the fittest kept, for five rounds). (A) Capability against ruggedness $K$ with the global optimum dotted: random recombination falls from 0.66 at $K = 2$ to 0.51 at $K = 10$; directed recombination tracks the best parent and the optimum at every $K$. (B) The same as a difference from the best parent: directed stays at or above zero throughout; random falls to about $-0.2$. In language models this is ``breed many merges, keep the best'' (Table~S2).}\label{s11}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s12
|
||||
\includegraphics[width=\textwidth]{figs/si/s12_figS12_quality_diversity.pdf}
|
||||
\caption{Selecting for the best destroys diversity; rewarding novelty preserves it. Each generation of the inheritance model (500 items, 200 samples per generation, 400 generations, 100 replicates, the same real data in every arm) now selects which items to keep, under three rules: no selection; greedy, keeping the items of highest true probability; and quality-diversity, which rewards an item for being rare as well as good, weighting item $i$ by $f_i p_i^{-\alpha}$ with $\alpha \in \{0.5, 1, 2\}$. (A) Heterozygosity against generation: greedy (red) collapses within a few generations to about 0.01; quality-diversity at $\alpha = 1$ (orange) and $\alpha = 2$ (blue) and no selection (green) hold a plateau above 0.85. (B) The settled heterozygosity against $\alpha$ (orange), with greedy (red dashed) and no selection (green dashed) as references: it rises from about 0.48 at $\alpha = 0.5$ to about 0.88 at $\alpha = 2$. (C) The number of distinct items alive at the end: about 9 under greedy, 14 to 28 under quality-diversity, about 32 with no selection. Chasing the best outputs is a directional pressure on top of drift; diversity has to be an objective in its own right, which is the diversity-preservation ingredient of Fig.~4D--F.}\label{s12}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s13
|
||||
\includegraphics[width=\textwidth]{figs/si/s13_figS13_mating_breadth.pdf}
|
||||
\caption{Who should mate with whom: the best mating breadth narrows as skills become more entangled. Forty-eight agents carrying twelve-locus genotypes sit on a ring and evolve for 60 generations on an NK landscape of ruggedness $K \in \{0, 3, 6, 10\}$; an offspring's second parent is drawn from a neighbourhood of half-width $\approx bN/2$, so the breadth $b$ runs from mating only with neighbours ($b = 0.03$) to mating with anyone ($b = 1$), and an offspring replaces the agent at its position only if fitter (mutation 0.003, crossover rate 0.5, 20 replicates, error bars 95\% CI, breadth on a logarithmic axis). (A) The best fitness reached, relative to the optimum, against breadth, per $K$: on a smooth landscape every breadth reaches the optimum; at $K = 3$ the best breadth is 0.6, at $K = 6$ and 10 it is 0.35, and mating with everyone falls below it. (B) The population's mean fitness rises with breadth at every $K > 0$. (C) Standing diversity (mean pairwise Hamming distance) falls with breadth, fastest on rugged landscapes. Wide mixing spreads a good variant fast but homogenises the population, so on entangled problems it loses the ability to explore several solutions in parallel (Wright's argument for structured populations).}\label{s13}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s14
|
||||
\includegraphics[width=\textwidth]{figs/si/s14_curriculum_timing.pdf}
|
||||
\caption{Conflict arrival does not set the timing of declines or of collapse. Four syllabi of the six-generation language-model population of Fig.~4 (three lineages, Qwen2.5-1.5B base, three training seeds each; mean $\pm$ 95\% CI): the rotated syllabus, the syllabus with complementarity peaking mid-way, and two that differ only in when the two skills with clashing answer conventions (BoolQ yes/no, WinoGrande 1/2) arrive, in generations 1--2 (conflict-early) or 5--6 (conflict-late), the four compatible skills filling the rest in rotated orders so that adapter age and skill count rise one per generation in all four. The filled marker on each curve is the first generation at which both clashing skills are present in every lineage. (A) The fraction of proposed merges declined per generation in the declinable arm: declines rise with generation on the same schedule in every syllabus (partial Spearman with generation controlled: conflict present $\rho = -0.09$, 95\% CI $-0.45$ to $0.15$; generation $\rho = 0.45$; early and late pooled, $n = 36$). (B) Best-lineage accuracy over all six skills in the obligate-merge arm: the conflict-early population dips when the pair arrives, recovers by generation 3 and collapses from generation 5; the conflict-late population collapses from generation 4 with its clashing pair still to come. Final accuracy 0.28 (early) and 0.39 (late) against 0.80 and 0.78 for never merging. Moving the conflict by four generations moved neither the declines nor the collapse.}\label{s14}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s15
|
||||
\includegraphics[width=\textwidth]{figs/si/s15_curriculum_cull.pdf}
|
||||
\caption{Survival of the fittest did not give merging lineages the edge. The rotated-syllabus population of Fig.~4 with truncation selection added: after every generation's test the lowest-scoring lineage is re-founded from the highest-scoring one, keeping its own place in the syllabus ($N = 3$); the never-merge and declinable-merge arms are run with this selection (dashed) beside the same arms without it; three training seeds, mean $\pm$ 95\% CI. (A) Best-lineage accuracy over all six skills: all four populations end within 0.01 of each other, near 0.80 (never merge + selection 0.804, declinable + selection 0.793, below in 3/3 seeds by $0.011 \pm 0.003$; 0.796 and 0.792 without selection). (B) Population mean over the three lineages: selection lifts the mean early (generation 2: 0.58 against 0.48 for the unselected never-merge arm) but the final means converge. (C) Selection acted every generation (one replacement per generation in every selected population, dashed) and declines in the selected declinable arm rose with generation as before. Recombination's early lead (generation 1: 0.68 against 0.60) is present with and without selection and gone by generation 5 in both; under a syllabus that delivers every skill to every lineage, sex and selection each reach the same ceiling sooner and neither raises it.}\label{s15}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]\centering % s16
|
||||
\includegraphics[width=\textwidth]{figs/si/s16_llm_smol.pdf}
|
||||
\caption{The two most-cited language-model results on a second, unrelated family of base models. The experiments of Fig.~3B and 3C re-run, with protocol, task families, test sets and seeds unchanged, on HuggingFaceTB/SmolLM2-1.7B-Instruct (Apache-2.0; Llama architecture; a different laboratory and pretraining corpus from Qwen), shown beside the Qwen2.5-0.5B-Instruct originals; bars are means over training seeds with 95\% CI, overall accuracy (lighter) and worst-family accuracy (darker). (A) Easy tasks, five seeds per lineage: on SmolLM2 the averaged and interference-aware merges exceed the best single specialist in every seed (overall $+0.049 \pm 0.022$ and $+0.097 \pm 0.020$; worst family $+0.19$ and $+0.20$), matching the Qwen margins. (B) Hard tasks, three seeds per lineage: routing among intact specialists beats the weight average in every seed on both families, by a larger margin on SmolLM2 ($+0.162 \pm 0.036$ overall, $+0.221 \pm 0.029$ worst family), where the average falls below the best single specialist in every seed. The learned router equals the oracle router on both families because the families are lexically separable.}\label{s16}
|
||||
\end{figure}
|
||||
|
||||
238
paper/manuscript/si_figures.py
Normal file
238
paper/manuscript/si_figures.py
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
"""Supplementary-figure inventory: key -> (source PDF under results/, caption).
|
||||
|
||||
Keys are cited in si.md as `*(FIG:s<n>)*` in numerical order, so the LaTeX figure counter (prefixed
|
||||
"S" in si.tex) reproduces the numbers the main text quotes. build.py copies each source into figs/si/.
|
||||
Captions are LaTeX-ready (maths in $...$, percent escaped) and follow the main-figure format: a
|
||||
headline sentence, the set-up in plain words, then the panels by letter with the key number and its
|
||||
reading.
|
||||
"""
|
||||
|
||||
SI_FIGURES: dict[str, tuple[str, str]] = {
|
||||
"s1": ("results/figS1_architectures/figS1_architectures.pdf",
|
||||
"Collapse, and its arrest by real data, in three kinds of generator. The generational loop of "
|
||||
"Fig.~2 (train a child only on its parent's output, with or without 5\\% real data) is run with an "
|
||||
"exact frequency count (a histogram, no network), a recurrent network and a feed-forward network, "
|
||||
"on a synthetic universe of 256 knowledge items whose true frequencies are known exactly; 200 "
|
||||
"samples per generation, 22 generations, 5 replicates. (A) Distance from the true distribution "
|
||||
"(forward KL divergence, which grows the more of the truth a model fails to cover) against "
|
||||
"generation: solid lines, with no real data, climb in every architecture; dashed lines, with 5\\% "
|
||||
"real data, stay low. (B) The same distance at the end of the run (error bars over replicates): "
|
||||
"real data lowers it in all three. (C) The fraction of rare items still alive at the end: real data "
|
||||
"raises it in all three. The histogram's bars in C are small because a frequency count drops a "
|
||||
"rare item outright once it is unseen, whereas the networks keep some alive by smoothing (the "
|
||||
"subject of Fig.~S2). A variational autoencoder was excluded because it failed the generation-0 "
|
||||
"fidelity check on this task."),
|
||||
"s2": ("results/figS2_kernel_sharpen/kernel.pdf",
|
||||
"Why trained networks deviate from the ideal copier, in opposite directions. The inheritance model "
|
||||
"assumes a child's frequencies are exactly those it sampled from its parent. Two knobs are added to "
|
||||
"that copying step: a smoothing knob (a small pull toward treating every item as possible; mutation "
|
||||
"rate $u$) and a sharpening knob (a temperature $\\tau < 1$ that concentrates probability on the "
|
||||
"commonest items). Blue: the ideal copier; red: the copier with one knob turned; green dashed: the "
|
||||
"level the real trained network reached with no real data; 24 replicates per regime. (A, B) The "
|
||||
"image network of Fig.~2 (6,000 samples per generation, 30 items): heterozygosity (A) and the number "
|
||||
"of distinct items still produced (B) against generation. The ideal copier barely drifts at this "
|
||||
"sample size, yet the real network collapsed to a single item; sharpening at $\\tau = 0.8$ "
|
||||
"reproduces the collapse. (C, D) The recurrent network (200 samples, 256 items): heterozygosity (C) "
|
||||
"and forward KL divergence (D). The ideal copier drives diversity to zero, yet the real network keeps "
|
||||
"a floor near 0.68; smoothing at $u = 0.006$ reproduces the floor, though it overshoots the "
|
||||
"network's divergence (about 5 against 1.8), so the network's implicit prior is closer to the truth "
|
||||
"than a uniform one. In population-genetic terms the smoothing knob is recurrent mutation (variants "
|
||||
"appear without being inherited) and the sharpening knob is positive frequency-dependent selection "
|
||||
"(the majority gains, nothing new appears); a trained network behaves as drift plus one of these two "
|
||||
"biases, set by its architecture."),
|
||||
"s3": ("results/figS3_rebaselining/figS3_rebaselining.pdf",
|
||||
"Re-baselining a collapsed population locks in its losses. A tempting shortcut is to declare a "
|
||||
"model's current output the new reference and discard the original data. In the inheritance model "
|
||||
"(500 items, 200 samples per generation, 400 generations, 100 replicates) the population's current "
|
||||
"frequencies are frozen as the new grounding reference at generations 150 and 300 (dotted "
|
||||
"verticals) and the original truth is kept only for measurement. Four arms: re-baseline while still "
|
||||
"diverse, under generous real data (green); re-baseline after collapse, under starved real data "
|
||||
"(red); the same starvation with re-baselining allowed only while heterozygosity is above 0.75 "
|
||||
"(blue); never re-baseline (grey). (A) Distance from the original truth against generation (bands "
|
||||
"over replicates): the red arm steps up at each re-baselining and never returns; the healthy arm "
|
||||
"shows small steps; the gated and never arms coincide. (B) Heterozygosity, with the gate's threshold "
|
||||
"dashed: the gated arm never re-baselines because it stays below the line. Once rare knowledge is "
|
||||
"gone from every copy it cannot be rebuilt (Muller's ratchet); a diversity gate prevents the "
|
||||
"shortcut from making the loss permanent."),
|
||||
"s4": ("results/fig2_grounding_sweep/fig2_grounding_sweep.pdf",
|
||||
"The full real-data sweep in the inheritance model (the experiment summarised in Fig.~2B). 1,000 "
|
||||
"knowledge items with a long tail of rare ones, 200 samples per generation, 500 generations, 100 "
|
||||
"lineages; each generation also receives $m$ fresh real samples, so the real-data share is "
|
||||
"$g = m/(n+m)$, swept from 0 to 0.4. (A) Heterozygosity against generation, one line per $g$: with "
|
||||
"no real data it declines steadily; with any real data it levels off. (B) The level it settles at "
|
||||
"against $g$ (points, simulation) with the exact prediction (dashed) and the real data's own "
|
||||
"diversity (dotted); the red line marks $g^* = 0.048$ (95\\% CI 0.047--0.050), where 95\\% of the "
|
||||
"real data's diversity is kept. The hollow point at $g = 0$ has not converged (its equilibrium is "
|
||||
"zero). (C) The fraction of the rare tail retained, counted by items (red) and by their share of "
|
||||
"the truth (purple): both rise with $g$ but stay below 0.1 even at $g = 0.4$. (D) Survival by band "
|
||||
"of rarity, from the rarest (band 0) to the least rare (band 3): the rarest recover last. Overall "
|
||||
"diversity is cheap to protect; a rare item persists only once about one real example of it arrives "
|
||||
"per generation, so protecting it costs about one over its frequency in real samples."),
|
||||
"s5": ("results/figS5_aimed_grounding/figS5_aimed_grounding.pdf",
|
||||
"Real data protects only the topics it covers. The 1,000 items are divided into ten topics "
|
||||
"(regions) and the same total budget of real data is spent either evenly over all ten or "
|
||||
"concentrated on one topic the experimenter wants to protect; 200 samples per generation, 400 "
|
||||
"generations, 100 replicates. (A) The fraction of that topic's rare items still alive against "
|
||||
"generation, with real data aimed at it (blue) or spread evenly (red), bands 95\\% CI: aimed "
|
||||
"grounding holds about half the topic's rare items, spread grounding lets it fall to about 0.07. "
|
||||
"(B) Survival per topic at the end, same colours, the protected topic marked by the dotted line: "
|
||||
"aimed grounding protects its topic and leaves the others with no surviving rare items; spread "
|
||||
"grounding gives every topic the same low survival. Per-topic heterozygosity is confounded by how "
|
||||
"much of the truth each topic carries, so rare-item survival is the readout. A fixed budget of real "
|
||||
"data should be aimed at the knowledge one wants to keep."),
|
||||
"s6": ("results/figS6_grounding_rnn/figS6_grounding_rnn.pdf",
|
||||
"The real-data response in a trained recurrent network. The sweep of Fig.~S4 repeated in a "
|
||||
"recurrent generator rather than the exact simulation: 256 items, 200 samples per generation, 30 "
|
||||
"generations, $g$ swept over nine values from 0 to 0.2, 18 replicates. (A) Distance from the truth "
|
||||
"(forward KL divergence) against generation, one line per $g$: more real data suppresses the "
|
||||
"climb. (B) The final distance against $g$ (error bars 95\\% CI), falling steadily from 2.08 with "
|
||||
"no real data to 0.75 at $g = 0.2$ (paired $t = 3.3$ at $g = 0.2$). (C) The fraction of the "
|
||||
"achievable improvement each $g$ buys: half of it arrives by $g = 0.040$ (red line; bootstrap 95\\% "
|
||||
"CI 0.004--0.116 shaded), close to the simulation's $g^* = 0.048$ (black dashed), but the full "
|
||||
"improvement needs $g$ near 0.19. (D) Three ways of measuring collapse on one 0--1 scale: "
|
||||
"heterozygosity relative to the truth (blue) is flat near 0.8; the count of surviving rare items "
|
||||
"(orange) rises and falls with no pattern; the divergence-based recovery (green) rises cleanly. The "
|
||||
"direction of the effect matches the simulation, the threshold softens, and counting surviving items "
|
||||
"is the wrong ruler for a smoothing network, which keeps inventing rare items that are not in the "
|
||||
"truth; distance from the truth is the measure used for such networks."),
|
||||
"s7": ("results/fig2_mnist_collapse/fig2_mnist_collapse.pdf",
|
||||
"Collapse and rescue on real handwritten digits, in numbers (the experiment whose drawings are in "
|
||||
"Fig.~2A). A convolutional variational autoencoder is retrained from scratch each generation on the "
|
||||
"previous generation's drawings plus a fraction $g$ of real MNIST digits; the 30 kinds of digit "
|
||||
"(digit $\\times$ stroke thickness, resampled to a long tail with about 18 rare kinds) are read out "
|
||||
"by a frozen classifier plus a thickness measure at 98.5\\% accuracy. Two arms, $g = 0$ (red) and "
|
||||
"$g = 0.1$ (green); 6,000 drawings per generation, 15 generations, 4 replicates, bands 95\\% CI. "
|
||||
"(A) Distance from the truth rises from about 0.5 to about 18 with no real data and stays near the "
|
||||
"floor with 10\\%. (B) The number of distinct kinds still drawn falls from 30 to about 1 with no real "
|
||||
"data; with 10\\% all 30 survive (dotted line). (C) The share of the rare kinds still alive falls to "
|
||||
"0.06 with no real data; with 10\\% all of it is kept. (D) Heterozygosity falls to zero with no real "
|
||||
"data and stays near 0.9 with 10\\% (the truth's value dotted). Everything the simulation predicts "
|
||||
"appears on real images with an independent judge; the dose of real data needed is about twice the "
|
||||
"simulation's, for the reason shown in Fig.~S2."),
|
||||
"s8": ("results/figS8_multiparent_union/figS8_multiparent_union.pdf",
|
||||
"Averaging several parents cancels the benefit of having several; keeping each parent's strongest "
|
||||
"contribution does not. In the inheritance model (500 items) $K_T$ parents each remember a random "
|
||||
"share of the rare items, with the similarity of their shares controlled directly by a correlation "
|
||||
"$\\rho$ (0 fully complementary, 1 identical); $K_T \\in \\{1, 2, 3, 5\\}$, "
|
||||
"$\\rho \\in \\{0, 0.25, 0.5, 0.75, 1\\}$, 200 replicates. A child is built either by averaging the "
|
||||
"parents' output frequencies or by keeping, for each item, the largest frequency any parent gives it "
|
||||
"(a union), and then resamples as every generation does. (A) The fraction of the rare tail held by "
|
||||
"at least one parent against $\\rho$, one curve per $K_T$: points are simulation, lines an exact "
|
||||
"formula, and they match. (B) The fraction that survives in the child: solid lines (union) rise with "
|
||||
"more and less similar parents; dashed lines (averaging) stay flat near 0.08 whatever the number of "
|
||||
"parents. (C) The same at $\\rho = 0$ against the number of parents (error bars 95\\% CI). Averaging "
|
||||
"dilutes each rare item by the number of parents, which exactly cancels the gain of having more "
|
||||
"parents to draw on (blending inheritance, the scheme Jenkin showed would swamp rare variants); the "
|
||||
"union realises the gain, and needs a judge to say which parent holds each item."),
|
||||
"s9": ("results/figS9_specialist_superparent/figS9_specialist_superparent.pdf",
|
||||
"Many complementary parents can produce an offspring better than any of them. A capability is a "
|
||||
"string of twelve yes/no positions (a genotype of twelve loci) and fitness is the number of correct "
|
||||
"positions; each parent is a specialist, confident and correct (0.9) on the positions it has "
|
||||
"mastered and unsure (0.45) elsewhere, and no parent has mastered them all. Which positions a parent "
|
||||
"masters is drawn so that the number of parents $K_T$ and their correlation $\\rho$ are independent "
|
||||
"knobs; the deployed capability is the fitness of the most probable genotype; 40 replicates, error "
|
||||
"bars 95\\% CI. (A) Capability against the number of parents when parents master different positions "
|
||||
"($\\rho = 0$): position-wise recombination (red) reaches the perfect score of 12 with eight "
|
||||
"parents; the best single parent (grey) sits near 8.7; the average of the parents (blue) reaches "
|
||||
"about 11.6 at twelve parents. (B) Recombination against the number of parents at "
|
||||
"$\\rho \\in \\{0, 0.5, 1\\}$: complementary parents climb to the optimum, identical parents stay "
|
||||
"flat near 6. This is the Fisher--Muller effect, unbounded because a model population is not limited "
|
||||
"to two parents; Fig.~3B is its counterpart in language models."),
|
||||
"s10": ("results/figS10_rugged_landscapes/figS10_rugged_landscapes.pdf",
|
||||
"When skills are entangled, blind recombination harms the offspring. The twelve-position genotypes "
|
||||
"now sit on a rugged landscape (Kauffman's NK model) in which a position's value depends on its "
|
||||
"neighbours, with ruggedness $K$ from 0 (positions independent) to 8 (highly entangled). Parents are "
|
||||
"local optima found by hill-climbing, the model of a trained specialist; offspring are made from them "
|
||||
"at recombination rates from 0 (copy a parent) to 0.5 (free shuffling); 24 replicate landscapes, 200 "
|
||||
"offspring per point. (A) Mean offspring fitness minus the best parent against recombination rate, "
|
||||
"one curve per $K$: on a smooth landscape the difference is zero; as $K$ grows the curves fall, more "
|
||||
"steeply at higher rates, to about $-0.23$ at $K = 8$ under free recombination. (B) The fitness of "
|
||||
"the best offspring in a brood (parental level dotted): on rugged landscapes it peaks at an "
|
||||
"intermediate rate and falls back toward the parents under free shuffling. This is outbreeding "
|
||||
"depression; the optimal amount of recombination shrinks as skills become more entangled."),
|
||||
"s11": ("results/figS11_directed_recombination/figS11_directed_recombination.pdf",
|
||||
"Choosing mates and screening offspring rescues recombination on rugged landscapes. On the "
|
||||
"landscapes of Fig.~S10 three strategies are compared, all reported as deployed fitness in "
|
||||
"$[0, 1]$; 24 replicate landscapes, error bars 95\\% CI: the best single parent (grey); random "
|
||||
"recombination, as in biology (blue: random parents, free recombination, offspring taken as they "
|
||||
"come); and directed recombination, which a model population can do and a living one cannot (red: "
|
||||
"complementary parents chosen, many offspring generated at rate 0.2, the fittest kept, for five "
|
||||
"rounds). (A) Capability against ruggedness $K$ with the global optimum dotted: random recombination "
|
||||
"falls from 0.66 at $K = 2$ to 0.51 at $K = 10$; directed recombination tracks the best parent and "
|
||||
"the optimum at every $K$. (B) The same as a difference from the best parent: directed stays at or "
|
||||
"above zero throughout; random falls to about $-0.2$. In language models this is ``breed many "
|
||||
"merges, keep the best'' (Table~S2)."),
|
||||
"s12": ("results/figS12_quality_diversity/figS12_quality_diversity.pdf",
|
||||
"Selecting for the best destroys diversity; rewarding novelty preserves it. Each generation of the "
|
||||
"inheritance model (500 items, 200 samples per generation, 400 generations, 100 replicates, the same "
|
||||
"real data in every arm) now selects which items to keep, under three rules: no selection; greedy, "
|
||||
"keeping the items of highest true probability; and quality-diversity, which rewards an item for "
|
||||
"being rare as well as good, weighting item $i$ by $f_i p_i^{-\\alpha}$ with "
|
||||
"$\\alpha \\in \\{0.5, 1, 2\\}$. (A) Heterozygosity against generation: greedy (red) collapses within "
|
||||
"a few generations to about 0.01; quality-diversity at $\\alpha = 1$ (orange) and $\\alpha = 2$ "
|
||||
"(blue) and no selection (green) hold a plateau above 0.85. (B) The settled heterozygosity against "
|
||||
"$\\alpha$ (orange), with greedy (red dashed) and no selection (green dashed) as references: it rises "
|
||||
"from about 0.48 at $\\alpha = 0.5$ to about 0.88 at $\\alpha = 2$. (C) The number of distinct items "
|
||||
"alive at the end: about 9 under greedy, 14 to 28 under quality-diversity, about 32 with no "
|
||||
"selection. Chasing the best outputs is a directional pressure on top of drift; diversity has to be "
|
||||
"an objective in its own right, which is the diversity-preservation ingredient of Fig.~4D--F."),
|
||||
"s13": ("results/figS13_mating_breadth/figS13_mating_breadth.pdf",
|
||||
"Who should mate with whom: the best mating breadth narrows as skills become more entangled. "
|
||||
"Forty-eight agents carrying twelve-locus genotypes sit on a ring and evolve for 60 generations on "
|
||||
"an NK landscape of ruggedness $K \\in \\{0, 3, 6, 10\\}$; an offspring's second parent is drawn "
|
||||
"from a neighbourhood of half-width $\\approx bN/2$, so the breadth $b$ runs from mating only with "
|
||||
"neighbours ($b = 0.03$) to mating with anyone ($b = 1$), and an offspring replaces the agent at its "
|
||||
"position only if fitter (mutation 0.003, crossover rate 0.5, 20 replicates, error bars 95\\% CI, "
|
||||
"breadth on a logarithmic axis). (A) The best fitness reached, relative to the optimum, against "
|
||||
"breadth, per $K$: on a smooth landscape every breadth reaches the optimum; at $K = 3$ the best "
|
||||
"breadth is 0.6, at $K = 6$ and 10 it is 0.35, and mating with everyone falls below it. (B) The "
|
||||
"population's mean fitness rises with breadth at every $K > 0$. (C) Standing diversity (mean "
|
||||
"pairwise Hamming distance) falls with breadth, fastest on rugged landscapes. Wide mixing spreads a "
|
||||
"good variant fast but homogenises the population, so on entangled problems it loses the ability to "
|
||||
"explore several solutions in parallel (Wright's argument for structured populations)."),
|
||||
"s14": ("results/llm_curriculum_v5_early/curriculum_timing.pdf",
|
||||
"Conflict arrival does not set the timing of declines or of collapse. Four syllabi of the "
|
||||
"six-generation language-model population of Fig.~4 (three lineages, Qwen2.5-1.5B base, three "
|
||||
"training seeds each; mean $\\pm$ 95\\% CI): the rotated syllabus, the syllabus with complementarity "
|
||||
"peaking mid-way, and two that differ only in when the two skills with clashing answer conventions "
|
||||
"(BoolQ yes/no, WinoGrande 1/2) arrive, in generations 1--2 (conflict-early) or 5--6 "
|
||||
"(conflict-late), the four compatible skills filling the rest in rotated orders so that adapter age "
|
||||
"and skill count rise one per generation in all four. The filled marker on each curve is the first "
|
||||
"generation at which both clashing skills are present in every lineage. (A) The fraction of proposed "
|
||||
"merges declined per generation in the declinable arm: declines rise with generation on the same "
|
||||
"schedule in every syllabus (partial Spearman with generation controlled: conflict present "
|
||||
"$\\rho = -0.09$, 95\\% CI $-0.45$ to $0.15$; generation $\\rho = 0.45$; early and late pooled, "
|
||||
"$n = 36$). (B) Best-lineage accuracy over all six skills in the obligate-merge arm: the "
|
||||
"conflict-early population dips when the pair arrives, recovers by generation 3 and collapses from "
|
||||
"generation 5; the conflict-late population collapses from generation 4 with its clashing pair still "
|
||||
"to come. Final accuracy 0.28 (early) and 0.39 (late) against 0.80 and 0.78 for never merging. "
|
||||
"Moving the conflict by four generations moved neither the declines nor the collapse."),
|
||||
"s15": ("results/llm_curriculum_v5_cull/curriculum_cull.pdf",
|
||||
"Survival of the fittest did not give merging lineages the edge. The rotated-syllabus population of "
|
||||
"Fig.~4 with truncation selection added: after every generation's test the lowest-scoring lineage is "
|
||||
"re-founded from the highest-scoring one, keeping its own place in the syllabus ($N = 3$); the "
|
||||
"never-merge and declinable-merge arms are run with this selection (dashed) beside the same arms "
|
||||
"without it; three training seeds, mean $\\pm$ 95\\% CI. (A) Best-lineage accuracy over all six "
|
||||
"skills: all four populations end within 0.01 of each other, near 0.80 (never merge + selection "
|
||||
"0.804, declinable + selection 0.793, below in 3/3 seeds by $0.011 \\pm 0.003$; 0.796 and 0.792 "
|
||||
"without selection). (B) Population mean over the three lineages: selection lifts the mean early "
|
||||
"(generation 2: 0.58 against 0.48 for the unselected never-merge arm) but the final means converge. "
|
||||
"(C) Selection acted every generation (one replacement per generation in every selected population, "
|
||||
"dashed) and declines in the selected declinable arm rose with generation as before. Recombination's "
|
||||
"early lead (generation 1: 0.68 against 0.60) is present with and without selection and gone by "
|
||||
"generation 5 in both; under a syllabus that delivers every skill to every lineage, sex and selection "
|
||||
"each reach the same ceiling sooner and neither raises it."),
|
||||
"s16": ("results/llm_merge_seeds_smol/llm_smol.pdf",
|
||||
"The two most-cited language-model results on a second, unrelated family of base models. The "
|
||||
"experiments of Fig.~3B and 3C re-run, with protocol, task families, test sets and seeds unchanged, "
|
||||
"on HuggingFaceTB/SmolLM2-1.7B-Instruct (Apache-2.0; Llama architecture; a different laboratory and "
|
||||
"pretraining corpus from Qwen), shown beside the Qwen2.5-0.5B-Instruct originals; bars are means "
|
||||
"over training seeds with 95\\% CI, overall accuracy (lighter) and worst-family accuracy (darker). "
|
||||
"(A) Easy tasks, five seeds per lineage: on SmolLM2 the averaged and interference-aware merges exceed "
|
||||
"the best single specialist in every seed (overall $+0.049 \\pm 0.022$ and $+0.097 \\pm 0.020$; "
|
||||
"worst family $+0.19$ and $+0.20$), matching the Qwen margins. (B) Hard tasks, three seeds per "
|
||||
"lineage: routing among intact specialists beats the weight average in every seed on both families, "
|
||||
"by a larger margin on SmolLM2 ($+0.162 \\pm 0.036$ overall, $+0.221 \\pm 0.029$ worst family), "
|
||||
"where the average falls below the best single specialist in every seed. The learned router equals "
|
||||
"the oracle router on both families because the families are lexically separable."),
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue