中文翻译暂不可用,显示俄语原文。

Что такое synthetic data collapse (когда синтетические данные деградируют со временем)?

Краткий тезис

Synthetic data collapse — это явление, при котором модели, обученные на данных, сгенерированных другой LLM, постепенно теряют качество: уменьшается разнообразие ответов, усиливаются систематические ошибки (bias), а ошибки накапливаются от поколения к поколению. Это критическая проблема для RAG и RAG|Agentic RAG, где синтетические данные часто используются для дообучения или создания контекстов. Основные причины — потеря diversity, усиление bias и накопление ошибок; профилактика включает смешивание с реальными данными, ансамблевые генерации и регулярное обновление промптов.


1. Термин: Synthetic data collapse (коллапс синтетических данных)

Synthetic data collapse (также известен как model collapse или data degeneration) — это процесс, при котором модель, обученная на данных, порождённых другой моделью (или самой собой), со временем деградирует. Каждое новое поколение модели становится менее разнообразным, более зашумлённым и менее точным.

Термин «Коллапс» (collapse) означает резкое ухудшение качества, часто нелинейное — после нескольких итераций модель может «схлопнуться» до узкого набора шаблонных ответов.

Ключевая идея: синтетические данные не содержат новой информации, они лишь перерабатывают уже известное. Если использовать их как единственный источник обучения, модель начинает «зацикливаться» на собственных ошибках и теряет способность к обобщению.


2. Причины synthetic data collapse

2.1 Потеря разнообразия (loss of diversity)

Синтетические данные, сгенерированные одной LLM, имеют ограниченное разнообразие — модель склонна к повторению типичных паттернов, особенно если используется temperature < 1.0 или top-p < 1.0. Со временем редкие, но важные варианты ответов исчезают.

Пример: если первая модель генерирует только три варианта ответа на вопрос о погоде («солнечно», «дождливо», «облачно»), то следующая модель, обученная на этих данных, никогда не увидит «снег» или «туман». Через несколько поколений разнообразие сужается до одного-двух вариантов.

2.2 Усиление систематических ошибок (bias amplification)

Любая LLM имеет неотъемлемые bias (смещения) — например, культурные, гендерные, стилистические. Когда синтетические данные генерируются моделью с bias, следующая модель учится на этих искажённых данных и усиливает bias. Каждое поколение делает смещение более выраженным.

Пример: если первая модель чаще генерирует ответы с мужскими местоимениями для профессий, то вторая модель будет делать это ещё чаще, третья — ещё, пока женские варианты не исчезнут полностью.

2.3 Накопление ошибок (error accumulation)

Модели не идеальны — они допускают фактические ошибки, логические нестыковки, грамматические погрешности. Когда такие ошибки попадают в обучающие данные следующей модели, та учится их повторять и может добавить новые. Со временем ошибки накапливаются, и качество ответов падает.

Пример: первая модель неправильно указывает дату события. Вторая модель, обученная на этом, не только повторяет дату, но и добавляет неверные детали. Третья модель уже «знает» целую вымышленную историю.


3. Механизм коллапса: поколения моделей

Процесс можно описать как итеративный цикл:

  1. Поколение 0 исходная модель (например, GPT-4) генерирует синтетический датасет.
  2. Поколение 1 новая модель (например, LLaMA) обучается на этом датасете. Она наследует bias и ошибки исходной модели, но теряет часть diversity из-за ограниченного размера выборки и дискретизации.
  3. Поколение 2 модель поколения 1 генерирует новый датасет, который используется для обучения поколения 2. Diversity ещё меньше, bias ещё сильнее, ошибки множатся.
  4. Поколение N модель «схлопывается» — выдаёт однообразные, часто бессмысленные или повторяющиеся ответы.

Исследование работа «The Curse of Recursion: Training on Generated Data Makes Models Forget» (Shumailov et al., 2023) показала, что даже небольшая доля синтетических данных в обучающей выборке может привести к коллапсу после нескольких итераций.


4. Примеры synthetic data collapse

4.1 Эксперимент с Gaussian mixture

В статье Shumailov et al. авторы смоделировали коллапс на простом примере: исходные данные — смесь двух гауссиан. После нескольких итераций обучения на сгенерированных данных распределение «схлопывается» в одну гауссиану, теряя вторую моду.

4.2 Текстовый пример

Предположим, исходная модель генерирует короткие биографии известных людей. После нескольких поколений:

  • Поколение 0: «Альберт Эйнштейн родился в 1879 году в Германии. Он разработал теорию относительности.»
  • Поколение 1: «Эйнштейн родился в 1879 году. Он создал теорию относительности.»
  • Поколение 2: «Эйнштейн родился в 1879. Теория относительности.»
  • Поколение 3: «Эйнштейн 1879 относительность.»
  • Поколение 4: «1879 относительность.»

Теряется не только грамматика, но и факты (страна, имя).


5. Связь с RAG и Agentic RAG

В контексте RAG (Retrieval-Augmented Generation) и Agentic RAG синтетические данные часто используются для:

  • Дообучения (fine-tuning) retriever или generator на специфическую предметную область.
  • Создания синтетических вопросов и ответов для оценки качества retrieval.
  • Генерации контекстов для агентов (например, при автоматическом создании инструкций).

Проблема если синтетические данные, используемые для fine-tuning, содержат коллапс, то модель может:

  • Ухудшить качество retrieval (retriever будет хуже находить релевантные документы).
  • Генерировать менее разнообразные и более шаблонные ответы.
  • Усилить bias в ответах агента.

Особенно опасно в Agentic RAG, где агент может многократно использовать собственные сгенерированные данные для самообучения (self-play, iterative refinement). Без контроля коллапс наступает быстрее.


6. Профилактика synthetic data collapse

6.1 Смешивание с реальными данными (real data mixing)

Самый надёжный способ — всегда добавлять некоторую долю реальных, человеческих данных в обучающую выборку. Рекомендуемая пропорция: 10–30% реальных данных от общего объёма.

Почему это работает реальные данные содержат естественное разнообразие, редкие паттерны и меньше систематических ошибок. Они «разбавляют» синтетику и не дают модели схлопнуться.

6.2 Ансамблевая генерация (ensemble generation)

Использовать несколько разных LLM для генерации синтетических данных, а затем объединять их. Каждая модель имеет свои bias и ошибки, поэтому ансамбль даёт более разнообразный и сбалансированный датасет.

Пример: генерация данных с помощью GPT-4, Claude и LLaMA, затем перемешивание и дедупликация.

6.3 Регулярное обновление промптов генерации

Промпты, используемые для генерации синтетических данных, должны периодически меняться. Это предотвращает «застревание» модели в одном стиле или тематике.

Практика каждые N итераций менять формулировку, добавлять случайные элементы (например, рандомизировать примеры в few-shot), использовать разные уровни детализации.

6.4 Фильтрация и контроль качества

После генерации синтетических данных необходимо фильтровать:

  • Удалять дубликаты и near-duplicates.
  • Проверять факты (factuality) с помощью внешних источников.
  • Оценивать diversity (например, через n-gram разнообразие или эмбеддинг-расстояния).

6.5 Использование нескольких поколений с оценкой

Не стоит обучать модель на многих поколениях синтетических данных подряд. Лучше после каждого поколения оценивать качество (например, на бенчмарке) и останавливаться, если метрики начинают падать.


7. Метрики для обнаружения коллапса

МетрикаОписаниеКак измерять
PerplexityРастёт при ухудшении качества генерацииНа валидационном наборе реальных данных
Self-BLEUПоказывает разнообразие внутри сгенерированного датасетаЧем выше Self-BLEU, тем меньше diversity
Distinct-nДоля уникальных n-грамм в сгенерированных текстахПадение distinct-1,2,3 указывает на коллапс
Accuracy на бенчмаркеПадение точности на стандартных тестах (MMLU, HellaSwag)Сравнение поколений
Embedding diversityСреднее попарное косинусное расстояние между эмбеддингами ответовУменьшение расстояния → коллапс

8. Пример кода: симуляция коллапса на простом датасете

import random
from collections import Counter

# Исходный набор фраз (имитация реальных данных)
real_phrases = [
    "сегодня солнечно",
    "идет дождь",
    "облачно с прояснениями",
    "снегопад",
    "туман",
    "ветрено",
    "гроза",
    "град",
]

# Функция генерации синтетических данных (имитация LLM)
def generate_synthetic(phrases, n=100):
    # Модель "запоминает" только самые частые фразы
    counter = Counter(phrases)
    # Выбираем топ-3 по частоте, остальные с малой вероятностью
    top = [p for p, _ in counter.most_common(3)]
    result = []
    for _ in range(n):
        if random.random() < 0.8:
            result.append(random.choice(top))
        else:
            result.append(random.choice(phrases))
    return result

# Симуляция поколений
phrases = real_phrases.copy()
for gen in range(5):
    synthetic = generate_synthetic(phrases, n=200)
    # Оценка diversity: количество уникальных фраз
    unique = len(set(synthetic))
    print(f"Поколение {gen}: уникальных фраз = {unique}")
    # Новое поколение "обучается" на синтетике
    phrases = synthetic

Ожидаемый вывод количество уникальных фраз будет уменьшаться с каждым поколением, пока не останется 1–2 фразы.


Пет-проект для закрепления

Задача разработать систему мониторинга synthetic data collapse для RAG-пайплайна.

Инструменты Python, Hugging Face Transformers, FAISS, RAGAS.

Шаги:

  1. Создайте небольшой корпус реальных документов (например, 100 статей из Википедии).
  2. Используйте LLM (например, Mistral-7B) для генерации синтетических вопросов и ответов по этим документам.
  3. Обучите простой retriever (например, Sentence-BERT) на реальных данных, затем дообучите на синтетических.
  4. После каждой итерации дообучения оценивайте:
  5. Внедрите профилактику: на каждой итерации добавляйте 20% реальных данных в обучающую выборку.
  6. Сравните динамику метрик с и без профилактики.

Ожидаемый результат вы увидите, что без смешивания с реальными данными метрики падают после 2–3 итераций, а с профилактикой — стабильны.


Связь с другими вопросами

ВопросТема
687Что такое synthetic data generation и как её использовать в RAG?
689Как оценивать качество синтетических данных?
45Что такое data contamination и как её избежать?
120Как дообучать (fine-tune) LLM на синтетических данных?
310Какие метрики diversity используются для оценки генерации?
512Как работает self-play в обучении агентов?

Навигация