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

Что такое synthetic eval collapse и как его предотвратить?

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

Synthetic eval collapse — это деградация качества оценки модели, когда синтетические тестовые данные перестают отражать реальное распределение задач]], и метрики на них перестают коррелировать с качеством на реальных данных. Причина — модель «подстраивается» под синтетическое распределение в процессе обучения или дообучения. Предотвратить коллапс можно регулярным обновлением синтетических данных, смешиванием с реальными примерами, использованием holdout-наборов и внедрением человеческой валидации.


1. Термин: Synthetic eval collapse (коллапс синтетической оценки)

Synthetic eval collapse — это явление, при котором метрики, полученные на синтетических тестовых наборах, перестают быть надёжным индикатором реального качества модели. Термин «коллапс» подчёркивает резкое падение корреляции между синтетической оценкой и реальной производительностью.

Почему это происходит

  • Модель (особенно LLM) в процессе обучения или fine-tuning видит много синтетических примеров, сгенерированных тем же или похожим способом.
  • Она начинает «запоминать» паттерны синтетического распределения, а не обобщать на реальные данные.
  • В результате accuracy на синтетическом тесте растёт, а на реальных данных падает — это классический признак overfitting на синтетику.

Ключевые признаки коллапса

  • Accuracy на синтетическом eval-set стабильно высокая (например, >95%), но на реальных пользовательских запросах падает на 10–20%.
  • Низкая корреляция с human judgments — люди оценивают ответы модели значительно ниже, чем синтетические метрики.
  • Модель начинает выдавать «шаблонные» ответы, похожие на синтетические примеры, но не отвечающие на суть вопроса.

2. Почему синтетические данные так популярны в eval?

Синтетические данные — это искусственно сгенерированные примеры (вопрос-ответ, диалоги, инструкции), созданные с помощью LLM или шаблонов. Их преимущества:

  • Масштабируемость: можно сгенерировать тысячи примеров за минуты.
  • Контроль: можно покрыть редкие сценарии (edge cases).
  • Дешевизна: не нужно нанимать аннотаторов.

Однако у них есть фундаментальный недостаток: синтетическое распределение почти всегда уже, чем реальное. LLM-генератор вносит систематические смещения (bias), и если модель обучается на таких же синтетических данных, eval-set перестаёт быть репрезентативным.

Пример:
Если вы генерируете вопросы к документам с помощью GPT-4, а затем fine-tune свою модель на этих же вопросах, то на тесте из таких же GPT-4-вопросов модель покажет 98% accuracy. Но на реальных вопросах пользователей (с опечатками, разговорным стилем, неявными отсылками) accuracy упадёт до 70%.


3. Механизм коллапса: от обучения к оценке

Рассмотрим типичный pipeline:

  1. Генерация синтетических данных: LLM (например, GPT-4) создаёт пары (вопрос, ответ) на основе корпуса документов.
  2. Fine-tuning: ваша модель обучается на этих данных.
  3. Оценка: вы используете другой набор синтетических данных (или тот же, но с разбивкой train/test) для вычисления метрик.
  4. Развёртывание: модель попадает к реальным пользователям.

Коллапс возникает на этапе 3, если:

  • Синтетический тестовый набор сгенерирован тем же способом, что и обучающий.
  • Модель «выучила» стиль генерации, а не содержание.
  • Реальные запросы отличаются по длине, тону, сложности.

Математическая интуиция
Пусть $P_{synth}$ — распределение синтетических данных, $P_{real}$ — реальное. Модель минимизирует loss на $P_{synth}$, но мы хотим, чтобы она работала хорошо на $P_{real}$. Если $P_{synth}$ и $P_{real}$ сильно различаются, то минимизация loss на $P_{synth}$ может даже увеличить loss на $P_{real}$ (negative transfer).


4. Как диагностировать synthetic eval collapse?

4.1 Мониторинг расхождения метрик

Сравнивайте accuracy / F1 / BLEU / ROUGE на синтетическом тесте и на небольшом реальном валидационном наборе (50–200 примеров, размеченных людьми). Если расхождение растёт со временем — это тревожный сигнал.

4.2 Корреляция с human evaluation

Периодически проводите A/B-тестирование с участием людей. Пусть аннотаторы оценивают ответы модели по шкале 1–5. Считайте корреляцию Спирмена между синтетической метрикой и человеческой оценкой. Если корреляция падает ниже 0.5 — коллапс.

4.3 Тест на «узнавание» синтетики

Попробуйте обучить классификатор, отличающий синтетические примеры от реальных. Если классификатор легко разделяет их (accuracy >90%), значит распределения сильно разошлись.


5. Стратегии предотвращения коллапса

5.1 Регулярное обновление синтетических данных

  • Используйте разные LLM-генераторы (GPT-4, Claude, Llama) для создания eval-наборов.
  • Меняйте промпты, добавляйте вариации (разные стили, длины, сложность).
  • Обновляйте синтетический тест каждые 2–4 недели.

5.2 Перемешивание с реальными примерами

  • Создайте гибридный eval-set: 50% синтетики + 50% реальных запросов (собранных из логов или краудсорсинга).
  • Реальные примеры должны быть свежими (не старше 1–2 месяцев), чтобы отражать текущее распределение.

5.3 Holdout синтетических данных

  • Никогда не используйте в eval те примеры, которые были сгенерированы тем же пайплайном, что и обучающие.
  • Держите отдельный holdout-набор, сгенерированный другим способом (другая LLM, другие промпты, другой корпус документов).

5.4 Человеческая валидация (Human-in-the-loop)

  • Раз в месяц проводите human evaluation на 100–200 примерах.
  • Используйте эти оценки для калибровки синтетических метрик (например, взвешивайте их по корреляции).

5.5 Метрики устойчивости (robustness metrics)

  • Добавьте в eval-set adversarial примеры: запросы с опечатками, перефразирования, вопросы вне домена.
  • Следите за метрикой distribution shift (например, MMD — Maximum Mean Discrepancy) между синтетическим и реальным распределением.

6. Пример кода: простой детектор коллапса

import numpy as np
from scipy.stats import spearmanr

# Пример: синтетические accuracy и человеческие оценки за 5 недель
weeks = [1, 2, 3, 4, 5]
synth_acc = [0.95, 0.96, 0.97, 0.98, 0.99]  # растёт
human_score = [4.2, 4.1, 3.9, 3.7, 3.5]     # падает

corr, p_value = spearmanr(synth_acc, human_score)
print(f"Корреляция Спирмена: {corr:.2f} (p={p_value:.3f})")
if corr < 0.5:
    print("⚠️ Возможный synthetic eval collapse!")
else:
    print("✅ Корреляция приемлема.")

Вывод при корреляции 0.3 (как в примере) — коллапс.


7. Сравнение подходов к предотвращению

СтратегияСложностьЭффективностьНедостатки
Обновление генератораНизкаяСредняяТребует доступа к разным LLM
Гибридный eval-setСредняяВысокаяНужны реальные данные
Holdout-наборНизкаяВысокаяМожет устареть
Human-in-the-loopВысокаяОчень высокаяДорого, медленно
Adversarial тестыСредняяСредняяСложно автоматизировать

8. Связь с другими концепциями

  • Overfitting — модель подстраивается под синтетическое распределение, теряя обобщающую способность.
  • Distribution shift — различие между $P_{synth}$ и $P_{real}$.
  • Concept drift — изменение реального распределения со временем (например, пользователи начинают задавать вопросы по-новому).
  • Data contamination — если синтетические примеры случайно попали в обучающую выборку, коллапс ускоряется.
  • Evaluation leakage — когда eval-данные пересекаются с train-данными (даже косвенно через генератор).

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

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

Инструменты Python, LangChain, OpenAI API, Streamlit (дашборд).

Шаги:

  1. Сгенерируйте 500 синтетических вопросов к документам с помощью GPT-4 (промпт: «Создай вопрос по документу, на который можно ответить цитатой»).
  2. Соберите 100 реальных вопросов из логов (или попросите друзей задать вопросы).
  3. Обучите простую модель (например, fine-tune BERT) на синтетических данных.
  4. Каждую неделю замеряйте accuracy на синтетическом тесте (100 примеров) и на реальном тесте (50 примеров).
  5. Стройте график расхождения метрик.
  6. Добавьте human evaluation: 2–3 человека оценивают ответы по шкале 1–5.
  7. Реализуйте алерт, если корреляция Спирмена падает ниже 0.6.

Ожидаемый результат Вы увидите, как accuracy на синтетике растёт, а на реальных данных падает — это и есть synthetic eval collapse. Затем примените стратегии предотвращения (обновление генератора, гибридный тест) и убедитесь, что расхождение уменьшилось.


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

ВопросТема
493Как оценивать RAG-систему без золотого стандарта?
495Что такое LLM-as-a-judge и какие у него ограничения?
496Как бороться с contamination данных в eval?
497Метрики faithfulness и answer relevance
498Human evaluation vs автоматические метрики
499Стратегии краудсорсинга для оценки RAG

Навигация