Что такое синтетические данные и зачем они бизнесу
Синтетические данные - искусственно созданные записи, которые имитируют нужную структуру, правила или статистические свойства данных, но не должны описывать конкретных реальных людей и компании. Это могут быть клиенты, заказы, платежи, обращения поддержки, медицинские события, логи и изображения.
Они позволяют разрабатывать интерфейсы до подключения production-базы, демонстрировать продукт без показа клиентов, тестировать редкие ошибки и выдавать подрядчику безопаснее подготовленный набор. Но слово «синтетический» не является гарантией приватности.
Синтетические, обезличенные и замаскированные данные - не одно и то же
| Подход | Что происходит | Главный риск |
|---|---|---|
| Маскирование | Часть реальной записи заменяется или скрывается | Остальные поля могут идентифицировать человека |
| Псевдонимизация | Прямой идентификатор заменяется ключом | Обратная связь сохраняется отдельно |
| Анонимизация | Применяется процесс снижения риска идентификации | Неполная оценка атак и внешних данных |
| Синтез | Генератор создаёт новые записи | Запоминание, редкие комбинации и вывод о реальных данных |
Случайно перемешанные строки или заменённые имена остаются производными реальных записей. ONS прямо указывает: случайная выборка строк из исходного набора не считается синтетическими данными.
Четыре уровня полезности: не всем нужен цифровой двойник базы
ONS описывает спектр от структурных наборов для базового тестирования до детальных синтетически дополненных наборов с высоким риском раскрытия. Не сохраняйте сложные связи, если тесту достаточно типов и ограничений.
Шаг 1. Опишите use case и запретите неподходящее использование
Один набор редко подходит одновременно для демонстрации, нагрузочного теста, финансовой аналитики и обучения модели. Запишите решение, которое должен поддержать набор, и то, для чего его нельзя использовать.
- Кто и где будет использовать данные.
- Какой код, отчёт или модель тестируется.
- Какие таблицы и поля необходимы.
- Какие распределения и связи действительно важны.
- Какие редкие случаи требуется воспроизвести.
- Допустимая статистическая погрешность.
- Недопустимые виды анализа.
- Уровень доступа и возможность экспорта.
- Кто принимает набор и оценивает приватность.
Шаг 2. Постройте схему и словарь данных
Для каждого поля определите тип, формат, диапазон, допустимый null, уникальность, источник справочника и связи. Для таблиц укажите первичные и внешние ключи. Для текста - язык, длину, тон и запрещённые сущности.
Создай спецификацию синтетического набора для [сценарий]. Таблицы и поля: [перечень]. Не используй реальные персональные данные и не придумывай статистику исходной базы. Для каждого поля предложи: тип, формат, nullable, уникальность, допустимый диапазон или enum, зависимости, негативные тесты и способ программной проверки. Отдельно перечисли предположения, которые должен подтвердить владелец процесса.
Генеративная модель помогает оформить черновик правил, но значения лимитов и связи утверждает владелец системы.
Шаг 3. Выберите генератор по задаче
| Метод | Подходит для | Ограничение |
|---|---|---|
| Правила и библиотеки fake data | Формы, API, QA, demo | Не повторяет реальную статистику |
| LLM по схеме | Тексты, диалоги, сложные сценарии | Нужны validators и контроль фактов |
| Статистическая модель | Табличная аналитика | Риск потерять зависимости |
| Генеративная модель, обученная на microdata | Исследования и ML | Требует оценки запоминания и раскрытия |
| Дифференциально приватный синтез | Формализованная защита приватности | Компромисс точности и privacy budget |
NIST отмечает, что недифференциально приватные методы дают лишь неформальные гарантии и не обладают той же устойчивостью к новым privacy-атакам. Это не значит, что differential privacy нужна каждому UI-тесту: простые данные из метаданных могут вообще не касаться реальной базы.
Как генерировать связанные таблицы: клиенты, заказы и позиции
Создавайте данные сверху вниз. Сначала справочники и клиенты, затем заказы со ссылками на существующих клиентов, после - позиции и платежи. Иначе появятся orphan records и невозможные состояния.
- Сгенерировать стабильные идентификаторы, не похожие на production ID.
- Создать справочники допустимых статусов и продуктов.
- Создать родительские записи.
- Создать дочерние записи только по существующим ключам.
- Вычислить итоги обычным кодом из позиций.
- Добавить управляемые ошибки в отдельный negative-набор.
- Прогнать referential integrity и бизнес-инварианты.
Не просите LLM одновременно придумать тысячи строк и точно свести бухгалтерские итоги. Пусть она создаёт сценарии и текстовые поля, а вычисления выполняет детерминированный код.
Как использовать ИИ для обращений поддержки и диалогов
Для текста важны не только темы, но и длина, шум, пропуски, опечатки, разные уровни вежливости и попытки изменить поведение системы. Сначала создайте матрицу сценариев, затем генерируйте независимые варианты по каждой ячейке.
Создай синтетические обращения поддержки строго по матрице. Продукт: [описание без закрытых данных]. Категории и доли: [утверждённые параметры]. Каналы: [email/chat/form]. Уровни сложности: [список]. Верни JSON по схеме [schema]. Не используй настоящие бренды, людей, телефоны, адреса, номера договоров и платёжные реквизиты. Добавь scenario_id и ground_truth_label. Не выводи доли из памяти - используй только параметры выше.
Чтобы избежать однообразного «стерильного» текста, отдельно задайте контролируемые вариации. Затем проверьте, что модель не вставила реальные контакты или узнаваемые фрагменты из примера.
Негативные данные нужны не меньше идеальных
Набор, где каждая форма заполнена правильно, проверит только happy path. Реальная система сталкивается с дубликатами, пропущенными полями, неверной кодировкой и нарушенным порядком событий.
- Пустое обязательное поле.
- Значение за границей диапазона.
- Неизвестный enum и неправильный регистр.
- Дубликат уникального ключа.
- Несуществующий внешний ключ.
- Дата окончания раньше начала.
- Итог не сходится с позициями.
- Смешанные локали и разделители.
- Повреждённый Unicode или HTML.
- Очень длинный текст и вложенная инструкция.
- Повтор события после timeout.
- Запрещённое сочетание ролей и прав.
Храните позитивные и намеренно ошибочные записи раздельно и маркируйте ожидаемую ошибку. Иначе команда начнёт «исправлять» полезные negative cases.
Разделите генератор и oracle
Oracle - независимый механизм, который определяет ожидаемый результат. Если одна и та же модель генерирует запись, label и подтверждает собственную правильность, ошибка может согласованно пройти все этапы.
Схему и арифметику проверяйте кодом. Часть labels задавайте правилами или экспертами. Для сложной семантики используйте независимую разметку и контрольную выборку. Сохраняйте seed и конфигурацию генератора, чтобы воспроизводить сбои.
Проверка структурной и сценарной валидности
Отчёт должен показывать не только процент прошедших строк, но и нарушение по каждому правилу и сегменту.
Как измерять статистическую полезность
Если набор нужен только для интерфейса, совпадение реальных распределений не является целью и даже создаёт лишний риск. Для аналитики сравните свойства, от которых зависит конкретный отчёт: частоты, пропуски, квантили, корреляции, условные распределения и результат целевой модели.
ONS советует заранее выбрать несколько важных отношений: с ростом числа переменных сохранить всю многомерную структуру становится сложнее. Синтетика может хорошо передавать один показатель и искажать другой.
Составь план utility evaluation для синтетического набора. Целевая задача: [отчёт/модель/тест]. Важные поля и сегменты: [список]. Доступные агрегаты исходных данных: [список]. Предложи проверки структуры, одномерных распределений, важных связей и результата целевой задачи. Для каждой укажи, почему она нужна и кто утверждает допустимое отклонение. Не придумывай пороги.
Почему похожесть на реальные данные повышает риск
Редкая комбинация возраста, географии, профессии и события может указывать на конкретного человека даже без имени. Модель также способна воспроизвести близкую или точную запись, особенно если она уникальна или многократно встречалась.
Проверьте точные совпадения, расстояние до ближайшей реальной записи, уникальные комбинации и редкие категории. Для моделей, обученных на закрытых microdata, рассматривают membership inference и attribute inference. Набор нельзя объявлять безопасным по одному отсутствию совпадающих строк.
Differential privacy и синтетические данные
Дифференциальная приватность даёт формальный способ ограничить влияние одной записи на результат алгоритма. При синтезе она может обеспечить более устойчивую защиту, чем неформальные методы, но требует выбора privacy parameters и обычно снижает точность некоторых статистик.
Это не кнопка «анонимизировать». Нужно проверить реализацию, учёт privacy budget, композицию выпусков и пригодность данных. NIST SP 800-226 рекомендует оценивать заявленные гарантии и подчёркивает различие между дифференциально приватным синтезом и методами без формальной гарантии.
Доступ и публикация: синтетический файл всё равно проходит review
Если данные создавались из закрытой базы, не переносите их автоматически в публичное хранилище. ONS требует оценивать disclosure risk перед более широким распространением и отмечает, что публичные копии трудно отозвать.
- Подтверждён владелец исходных данных.
- Описан метод синтеза и использованные поля.
- Проверены точные и близкие совпадения.
- Оценены редкие записи и inference-риски.
- Документирована utility по разрешённым задачам.
- Определены лицензия, аудитория и срок доступа.
- Сырые training data и модель защищены.
- Публичный выпуск одобрен ответственным за данные.
Частые ошибки проектов синтетических данных
| Ошибка | Последствие | Исправление |
|---|---|---|
| Перемешали реальные колонки | Комбинации могут остаться идентифицируемыми | Генерировать новые записи и оценивать риск |
| Оптимизировали одну similarity-метрику | Скрыты искажения важных сегментов | Оценивать целевую задачу и подгруппы |
| Сохранили только идеальные строки | QA не видит реальные сбои | Добавить маркированный negative-набор |
| LLM сама подтвердила labels | Согласованные ошибки | Независимый oracle и human sample |
| Назвали файл анонимным | Ложное чувство безопасности | Формальная disclosure assessment |
План пилота на четыре недели
Финальный чек-лист качественного набора
- Цель и запрещённые применения записаны.
- Выбран минимально необходимый уровень похожести.
- Схема, единицы, enum и null документированы.
- Первичные и внешние ключи валидны.
- Суммы и производные поля вычислены кодом.
- Positive и negative cases разделены.
- Labels проверены независимым oracle.
- Utility измерена на целевой задаче и сегментах.
- Проверены совпадения и редкие комбинации.
- Оценены релевантные privacy-атаки.
- Версии генератора, seed и правил сохранены.
- Исходные данные и модель защищены.
- Ограничения набора опубликованы вместе с ним.
- Уровень доступа одобрен владельцем данных.
- Production-ошибки пополняют regression-набор.
Лучший синтетический набор не тот, который максимально похож на закрытую базу. Он достаточно реалистичен для заявленной задачи, воспроизводим, проверен и не сохраняет лишнюю информацию.
Что такое синтетические данные простыми словами?
Можно ли считать синтетические данные анонимными?
Чем синтетические данные отличаются от обезличенных?
Можно ли создать тестовые данные с ChatGPT или другой нейросетью?
Как проверить качество синтетических данных?
Зачем добавлять ошибки в синтетический набор?
Что такое differential privacy в синтетических данных?
Можно ли публиковать синтетическую клиентскую базу?
- Office for National Statistics: Synthetic data policy
- Office for National Statistics: Synthetic data pilot
- NIST SP 800-226: Guidelines for Evaluating Differential Privacy Guarantees
- NIST: SDNist Synthetic Data Report Tool
- UK ICO: Privacy-enhancing technologies guidance
- ONS Data Science Campus: Evaluating synthetic data using SynthGauge