Генерация документов, лиц и даже симуляция целых атак: как далеко можно зайти в создании и использовании синтетических данных?
В этой статье Артур Казукевич, Data Science Engineer в Data Light, расскажет, почему синтетика становится крупнейшей тенденцией в сфере ML, как такие данные можно использовать и какие ограничения для генерации существуют, а также поделится своим опытом.
Небольшое введение: что такое синтетические данные?
Синтетические данные — это искусственно созданные данные, которые отражают особенности реальных наблюдений и используются для обучения моделей машинного обучения в случаях, когда получить реальные данные сложно или дорого. Такие данные отличаются от аугментированных и рандомизированных данных, но где именно проходят границы между ними? Давайте рассмотрим простейший пример генерации изображений лиц.
Допустим, у нас есть набор данных с фотографиями настоящих людей. Аугментация данных — это процесс, при котором к набору добавляются слегка измененные копии уже существующих элементов. Если применить аугментацию к нашему набору, мы получим те же лица, но с небольшими изменениями, например, с разными оттенками глаз или кожи, с шумами на фото и цветовым фильтром.
Рандомизация, в отличие от этого, лишь перемешивает элементы внутри набора данных, не создавая новых. Так, используя рандомизацию, мы могли бы «поменять местами» черты лиц: взять волосы одного человека, рот другого и глаза третьего. В итоге мы получаем новые лица, не тратя ресурсы на сбор дополнительных данных.
Синтетические данные не копируют реальные данные, а создают новые примеры, основанные на характеристиках оригинала. Они как бы "переосмысливают" реальность, улавливая её основные черты и закономерности, но генерируя совершенно новые, уникальные экземпляры. Представьте, что вы описываете художнику портрет: он не скопирует фотографию, а напишет новую картину, передающую суть человека, сохраняя при этом индивидуальный стиль. Так и синтетические данные — это не копии, а новая интерпретация реальности, сохраняющая её статистические свойства и структуру.
Почему выбирают именно синтетические данные? 6 главных причин
Нам кажется, про синтетические данные недостаточно говорят в индустрии. А ведь это мощный инструмент и один из главных трендов в ML на ближайшие годы. Он не просто позволяет решить проблему нехватки данных, делая обучение моделей и анализ данных проще, дешевле и эффективнее, но и отвечает требованиям конфиденциальности, устраняя риски, связанные с использованием реальных данных.
А когда сбор реальных данных затруднен или небезопасен, синтетические данные могут стать настоящей находкой. Представьте себе ситуацию, в которой организации необходимо провести анализ рисков события, которое случается очень редко, или которое происходит в условиях, в настоящий момент недоступных, или опасных для здоровья человека. Синтетические данные позволяют создавать такие сценарии без риска для существующих систем или без угрозы здоровью реальных людей.
Вот 6 главных причин использовать такие данные:
Кастомизация данных. Специалисты могут адаптировать синтетические данные под конкретные требования, даже когда с реальными данными это невозможно. Например, для тестирования ПО можно создать уникальные сценарии, охватывающие редкие или критические ситуации, которые сложно собрать из реальных данных.
Экономичность. Очевидно, что стоимость создания синтетических данных значительно ниже, чем сбор и обработка реальных данных, например, в некоторых отраслях. К примеру, в автомобилестроении, где необходимо моделировать аварии, или испытывать новые, часто неотлаженные технологии, это может стоить миллионы долларов.
Разметка данных. Разметка для синтетических данных может быть выполнена уже на этапе генерации этих данных, часто в автоматическом режиме, что сильно ускоряет ввод в эксплуатацию (Но все-таки не забываем про валидацию созданных данных)
Быстрота генерации. Реальные данные требуют времени для сбора и обработки, а синтетические могут быть созданы мгновенно с помощью соответствующих алгоритмов и программных решений.
Конфиденциальность данных. Синтетические данные не содержат информации, по которой можно идентифицировать реальных людей или события. Это делает их отличным вариантом для использования в, к примеру, медицинской или финансовой областях
Полный контроль. Вы можете настраивать параметры данных в соответствии с задачами, изменять частоту событий, распределение объектов. Только представьте, какую свободу это дает в моделировании!
Как используются синтетические данные
Чтобы синтетические данные приносили пользу, они должны качественно имитировать оригинальные данные и быть адаптированными под конкретные задачи, в которых их планируется использовать. Приведем примеры применения синтетических данных в разных сферах:
Тестирование. В тестировании ПО (кстати, как и в анализе данных) синтетические данные могут использоваться для создания условий, сценарий которых будет гибко подстроен под конкретные задачи. Это обеспечивает высокую реалистичность таких условий.
Обучение AI/ML моделей. Использование синтетических данных в обучении моделей машинного обучения становится стандартом. Такие данные увеличивают обучающую выборку, расширяют вариативность (часто решая проблему дисбаланса классов) благодаря возможности моделировать более редкие сценарии. Это позволяет избежать предвзятость моделей к отдельным классам и в целом улучшить их производительность.
Соблюдение законодательства о конфиденциальности. В условиях жестких требований к конфиденциальности синтетические данные становятся идеальным решением, позволяя использовать данные, не нарушая законы и обеспечивая защиту персональных данных.
Медицина и конфиденциальность. В медицине синтетические данные могут использоваться для моделирования профиля пациента, что позволяет проводить исследования без угрозы конфиденциальности.
Синтетические данные уже сейчас используются компаниями по всему миру:
Erste Bank применил синтетические тестовые данные для разработки успешного мобильного банковского приложения.
JPMorgan использует “песочницу” с синтетическими данными для ускорения пилотных проектов, требующих большого объема данных, с внешними поставщиками.
Anthem и American Express внедряют синтетические данные, чтобы определить мошенничество и персонализацию обслуживания клиентов.
Кейсы Data Light: Как наши клиенты применяют синтетические данные
Про создание синтетических данных уже написано множество отличных статей — например, очень советуем ознакомиться с переводом статьи от Marcus Sena, где описываются методы от scikit-learn до Synthetic Data Vault (SDV). А мы хотели подробнее рассказать о нашем опыте: когда нашими клиентами применялись синтетические данные, а когда было рациональнее самостоятельно собрать и разметить данные.
Создание синтетических паспортов и документов для клиентов
Один из недавних проектов включал создание синтетических паспортов Объединенных Арабских Эмиратов. Наш клиент столкнулся с проблемой: ему нужно было обучить модель на документах, но их сбор противоречил бы законодательству. Изначально работа велась вручную: требовалось закрасить нужные поля, самостоятельно подбирать шрифты и координаты полей, а после подставлять из таблички Excel сгенерированные данные.
Генерация позволила ускорить этот процесс. С помощью специальных шаблонов в формате PSD мы настроили содержимое: поля заполняются текстом, сгенерированным через языковые модели, и вставляются искусственно созданные фотографии.
Так мы смогли создать реалистичные, детализированные копии документов: паспорта, визы, удостоверения личности, водительские права и даже паспорта животных. Это решение удобно, безопасно и позволяет избежать использования реальных персональных данных.
Генерация синтетических лиц для анонимных данных
Генерация изображений лиц — один из самых востребованных запросов наших клиентов. Многие приходят к нам с одинаковой проблемой: когда надо сгенерировать, например, миллион фотографий разных людей. Если написать только один запрос, естественно, по этому запросу будут генерироваться очень похожие, если не одинаковые фотографии. А вот в нашем случае решением стал wildcard.
Мы использовали метод "шаблонов-паттернов", когда мы, вместо строго определенного слова в промпте (инструкции для генерации) указывали нужную характеристику со специальным синтаксисом, который автоматически подставлял рандомное значение из наших, заранее подготовленных сборников шаблонов.
Например, мы добавили слово-шаблон "age", который при каждой генерации динамически подменялся на рандомный возраст. С его помощью система автоматически создает фотографии людей различных возрастов, национальностей и стилей.
Так мы можем настраивать этнос, эмоции, а также фон, прически, одежду, макияж и аксессуары, это позволяет создавать обширные и разнообразные базы данных. Например, если требуется только определённая этническая группа, мы подбираем модели и параметры для точного соответствия требованиям клиента. Такой подход идеально подходит для задач в сфере биометрии, анонимизации данных и создания обучающих наборов данных.
Когда синтетики недостаточно?
Но не всегда синтетические данные могут быть полезны. Несколько раз клиенты приходили к нам с запросом на синтетические данные, но мы понимали, что проще будет собрать самостоятельно. Например, один из клиентов пришел к нам с необычным запросом: Нужно было сгененировать машины с разных углов, с открытой одной, двумя, четырьмя дверьми. Детали машины были принципиально важны.
В случае таких специфических данных, в которых принципиальны детали и повторяемость модели (т.е. там важно было, чтобы машина была на серии фоток одна и та же, вот это было основной проблемой), легче бывает просто организовать сбор данных.
Бывали и другие сложности с генерацией лиц: иногда требуются специфические группы людей, которые бывает сложно найти. Недавно, например, был проект, в котором требовался большой объем исключительно взрослых чернокожих, но не пожилых и не слишком молодых.
В итоге изображения получались довольно однотипными — потому, что большинство генеративных моделей были обучены на небольшом количестве изображений людей этой расы и теперь она лучше справляется с людьми из Азии и Индии, которых в обучающих данных встречалось значительно больше.
А если ваш бизнес нуждается в высококачественных и безопасных наборах данных, мы будем рады обсудить задачи и предложить решение. Свяжитесь с нами, чтобы узнать, как Data Light может помочь в достижении ваших целей с использованием синтетических данных.
Артур Казукевич
Data Science Engineer