Синтетические данные: как расширить выборку без самообмана
Синтетические данные — это искусственно созданные примеры, которые имитируют структуру реальной выборки. Они помогают добавить редкие ошибки, проверить отказ модели или подготовить безопасный стенд без передачи клиентских записей. Но генератор может повторить собственные шаблоны, скопировать фрагмент источника или создать слишком удобный мир без опечаток и конфликтов. Поэтому синтетика не заменяет реальность: это управляемый слой эксперимента с отдельной приёмкой.
Начните с измеримого пробела
Не просите «сделать тысячу реалистичных примеров». Сначала укажите, чего не хватает в текущем наборе: коротких раздражённых сообщений, редкого класса ошибок, смешанных языков, пустых полей или отказов при запрещённой просьбе. Запишите, как выглядит хороший пример и какие признаки нельзя придумывать.
Например, для поддержки нужно добавить обращения о возврате после истечения срока. Допустимая запись должна содержать дату, товар и вопрос клиента, но не настоящие имя, номер заказа или адрес. Такая граница не даёт генератору заполнить пропуски правдоподобными персональными деталями.
Разделите роли
Генератор создаёт черновик, а независимый проверяющий решает, попадёт ли он в датасет. Не поручайте одной модели автоматически одобрять все собственные ответы: она будет считать привычную формулировку правильной. Сохраните для каждого примера версию генератора, промпт, дату, причину принятия и отметку ручной правки.
Полезно завести три статуса: draft, reviewed, rejected. Отклонённые примеры не удаляйте сразу: причина отказа показывает, какие ограничения генератор нарушает. Если человек изменил половину текста, храните это как отдельный класс, а не как «чистую» синтетику.
Составьте квоты разнообразия
До генерации задайте небольшую матрицу: язык, длина, класс, тон, наличие ошибки и уровень сложности. Квоты не обязаны копировать реальное распределение один к одному; их задача — закрыть пробелы, а не создать новую иллюзию статистики. Если в реальности 80% обращений короткие, не делайте все синтетические примеры короткими: добавьте длинные цепочки и неполные сообщения для проверки границ.
| Измерение | Варианты для теста | Контроль |
|---|---|---|
| Длина | короткая, средняя, длинная | распределение сравнимо с реальным |
| Язык | русский, смешанный, сокращения | термины не меняют смысл |
| Состояние | обычное, неполное, конфликтное | есть корректный отказ |
| Класс | частый и редкий | редкий класс не доминирует |
| Источник | шаблон, свободный текст | нет дословных совпадений |
После партии посчитайте фактические доли. Если генератор сделал тысячу вежливых сообщений, следующая партия должна исправлять конкретный перекос, а не просто увеличивать объём.
Проверьте утечку исходных записей
Синтетический файл не становится анонимным автоматически. Сначала удалите из входа имена, контакты, номера и токены. Затем ищите повторяющиеся длинные фразы, редкие последовательности и комбинации признаков, которые могут указать на человека. Совпадение с исходником — основание отклонить пример и изменить промпт или набор входных статистик.
Не просите генератор «сохранить настоящую реалистичность» за счёт копирования. Структуру можно оставить, а значения заменить маркерами и диапазонами. Для промежуточных файлов задайте срок удаления и ограниченный доступ.
Приёмка по чек-листу
Проверяющий оценивает каждый пример по четырём вопросам: соблюдена ли структура, нет ли выдуманного факта, относится ли он к нужному классу и не содержит ли персональной детали. Для задач классификации добавьте эталонную метку и краткое объяснение. Для кода — ожидаемую ошибку и безопасный тест, а не готовый вредный сценарий.
Используйте выборку из 50 примеров на ручную приёмку для каждой новой партии. Если доля отклонений растёт, остановите генерацию и разберите причины. Автоматический фильтр может ускорить поиск совпадений, но финальное решение для чувствительных наборов оставляйте человеку.
Обучение и закрытая оценка
Разделите синтетические записи на обучение и внутренний контроль, а итоговую оценку проводите на отдельном закрытом наборе реальных или тщательно обезличенных данных. Сравните три версии: базовую модель, модель на реальных примерах и модель с добавлением синтетики. Измеряйте среднюю точность, редкие классы, корректные отказы и устойчивость к новым формулировкам.
Если улучшение появляется только на синтетическом тесте, это признак подгонки. Проверьте также ухудшение на обычных случаях: добавление искусственных примеров не должно ломать базовые навыки. Датасет, версию генератора и параметры сохраняйте в журнале; без этого эксперимент нельзя повторить.
Смещения и границы применения
Генератор может предпочитать один регион, имя, стиль общения или тип решения. Сравнивайте распределение с реальной обезличенной статистикой и привлекайте проверяющего, который знает предметную область. Не исправляйте перекос простым добавлением ещё тысячи похожих записей: сначала выясните, какого реального случая не хватает.
Синтетика полезна для тестов отказа, редких ошибок, форматных вариантов и предварительной проверки пайплайна. Она не должна быть единственным основанием для медицинского, юридического, финансового или кадрового решения. Для таких областей искусственные примеры лишь дополняют проверенную выборку.
Лицензия и происхождение
Зафиксируйте модель, которой создавались примеры, условия её использования и дату генерации. Проверьте, разрешено ли применять результаты для обучения и коммерческого продукта. Отдельно пометьте ручные правки и источники статистических шаблонов. Происхождение данных должно быть понятно человеку, который будет отвечать за датасет через полгода.
Итоговый план
Сначала описать пробел, затем задать квоты, сгенерировать небольшую партию, проверить совпадения и разнообразие, провести независимую приёмку, обучить отдельную версию и сравнить её на закрытом наборе. После решения сохраните отчёт, условия удаления и дату повторной проверки.
Рабочий протокол партии
Перед каждой генерацией назначьте номер партии и оставьте неизменными цель, квоты и закрытый тест. После создания примеров посчитайте не только количество, но и долю ручных правок, совпадений с исходниками и отказов проверяющего. Если менялись промпт или версия генератора, начинайте новый номер: смешивать результаты разных условий в одном отчёте нельзя.
Для спорного примера сохраняйте причину решения короткой фразой: «выдумана дата», «не тот класс», «слишком узнаваемая формулировка» или «нет корректного отказа». Через несколько партий такие причины превращаются в список ограничений для следующего промпта. Это практичнее, чем просить модель абстрактно «повысить качество».
Синтетические данные дают пользу, когда закрывают конкретный измеримый пробел и проходят строгую приёмку. Они опасны, когда удобные искусственные примеры подменяют реальность и создают ложное ощущение качества. Надёжный набор сочетает синтетику, проверенные данные и честную проверку новых случаев.