5D Library › The Algorithmic Mirror · 中文

Chapter 5 Echo Chambers and Model Collapse

When models learn from models

As generated text spreads across the internet, future models will be trained on data that partly comes from earlier models. What happens when a model is trained, generation after generation, on its own output?

Evidence

Shumailov and colleagues showed that indiscriminate training on model-generated content causes irreversible defects that they called model collapse: the tails of the original distribution disappear, and over generations the learned distribution narrows. They demonstrated it in Gaussian mixture models, variational autoencoders and language models, and argued that data from genuine human interaction will become more valuable as generated content spreads (Shumailov et al. 2024).

Evidence

Gerstgrasser and colleagues showed that the outcome depends on what happens to the original data. When each generation’s synthetic data replaces the previous data, models collapse; when the synthetic data is accumulated alongside the original real data, collapse is avoided, across language models, diffusion models and autoencoders. In a linear model they proved that with accumulation the test error stays bounded, however many generations pass (Gerstgrasser et al. 2024).

The mechanism in miniature

Calculation

Fit a Gaussian to 20 samples, draw the next 20 from the fit, and repeat for 300 generations, either replacing the data each time or keeping all earlier data, including the original real samples. The program reports the median fitted standard deviation over 20 runs.

import math, random, statistics

# Recursive training in miniature: fit a Gaussian to 20 samples, draw the next
# generation's 20 samples from the fit, and repeat. "Replace" fits only the latest
# synthetic samples; "accumulate" fits all data so far, including the original real data.
def run(mode, gens, n=20, seed=0):
    rnd = random.Random(seed)
    data = [rnd.gauss(0, 1) for _ in range(n)]
    s, s2, m = sum(data), sum(x * x for x in data), n          # running totals
    sds = []
    for _ in range(gens):
        mu = s / m
        sd = math.sqrt(max(s2 - m * mu * mu, 0) / (m - 1))
        sds.append(sd)
        new = [rnd.gauss(mu, sd) for _ in range(n)]
        if mode == "replace":
            s, s2, m = sum(new), sum(x * x for x in new), n
        else:
            s, s2, m = s + sum(new), s2 + sum(x * x for x in new), m + n
    return sds

checkpoints = (1, 30, 100, 300)
for mode in ("replace", "accumulate"):
    runs = [run(mode, 300, seed=k) for k in range(20)]
    med = [statistics.median(r[g - 1] for r in runs) for g in checkpoints]
    print(f"{mode:10s} median fitted SD (20 runs) at generation "
          + ", ".join(f"{g}: {v:.3f}" for g, v in zip(checkpoints, med)))
# replace    median fitted SD (20 runs) at generation 1: 1.042, 30: 0.463, 100: 0.069, 300: 0.000
# accumulate median fitted SD (20 runs) at generation 1: 1.042, 30: 1.006, 100: 0.997, 300: 1.000
The fitted spread over 300 generations, on a logarithmic scale. Training only on the previous generation’s samples drives the spread towards zero; keeping the original data holds it near its true value.

Each fit is slightly wrong, and the errors compound because each generation learns only from the last. Estimating a spread from a small sample tends to underestimate it slightly, and the extremes of a sample are the first things a new sample fails to reproduce, so the drift is towards narrowness. Keeping the original data anchors every fit.

Calculation

The same process on a vocabulary: 5,000 word types with Zipf frequencies, each generation learning the word frequencies of 20,000 tokens and producing the next 20,000. A word not sampled in one generation is gone for good, unless fresh real text is mixed in.

import random

# Rare words disappear first. A vocabulary of 5,000 word types with Zipf frequencies;
# each generation "learns" the empirical frequencies of 20,000 tokens and generates
# the next 20,000 tokens from them. A word that happens not to be sampled is gone for good,
# unless some fresh real text is mixed in.
random.seed(11)
V = 5000
w = [1 / (r + 1) for r in range(V)]
types = list(range(V))

def generations(fresh_share, gens=30, n=20000):
    counts = None
    alive = []
    for g in range(gens):
        n_fresh = int(n * fresh_share) if g else n
        sample = random.choices(types, weights=w, k=n_fresh)
        if counts and n - n_fresh:
            words = list(counts)
            sample += random.choices(words, weights=[counts[x] for x in words], k=n - n_fresh)
        counts = {}
        for t in sample:
            counts[t] = counts.get(t, 0) + 1
        alive.append(len(counts))
    return alive

for share in (0.0, 0.1):
    a = generations(share)
    print(f"fresh real text {share:4.0%}: word types still in use at generations 1, 10, 30: "
          f"{a[0]}, {a[9]}, {a[29]}")
# fresh real text   0%: word types still in use at generations 1, 10, 30: 3201, 1117, 559
# fresh real text  10%: word types still in use at generations 1, 10, 30: 3196, 2004, 1976

Rare words disappear first, and without fresh text the vocabulary keeps shrinking. A tenth of fresh real text each generation is enough to keep the number of word types in use stable, at a level set by how much text is sampled.

Where new information comes from

The simulations, and the published results, point to a simple principle: a closed loop of generation and retraining loses information, and what keeps it alive is a supply of data from outside the loop. That data can come from many sources: new human writing, measurements, experiments, records of events, conversations, sensor data. Human experience of the physical world, and the judgement that connects distant fields, are among the most valuable of these sources, because they are hard to substitute; but they are not the only ones, and a laboratory instrument recording new measurements breaks the loop as surely as a person does.

Hypothesis · not established

Not established. In knowledge work with language models, outputs grounded in new first-hand observation (an experiment run, a measurement made, a field visit) are rated by blinded experts as more novel than outputs produced from the model and existing literature alone, at equal rigour. The hypothesis predicts higher novelty ratings, with no loss of rigour, for the first-hand condition in a randomised comparison of matched projects. It would be refuted if the novelty ratings did not differ, or were bought at the cost of rigour.

References

Gerstgrasser, Matthias, Rylan Schaeffer, Apratim Dey, et al. 2024. Is Model Collapse Inevitable? Breaking the Curse of Recursion by Accumulating Real and Synthetic Data. arXiv preprint arXiv:2404.01413.
Shumailov, Ilia, Zakhar Shumaylov, Yiren Zhao, Nicolas Papernot, Ross Anderson, and Yarin Gal. 2024. “AI Models Collapse When Trained on Recursively Generated Data.” Nature 631: 755–59.

Fan, Y. (2026). The Algorithmic Mirror: Self-Attention Geometry, Ashby's Requisite Variety and Cognitive Projection in Information Theory and East Asian Philosophy of Mind [算法之镜] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23723557 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).