Синтетические данные заполняют важный пробел не только в проектах AI / ML, но и во многих других аспектах разработки программного обеспечения. Окунитесь в эту область и узнайте, почему сейчас так жарко.

Ваша первая мысль: «Что за синтетические данные?» Это искусственные данные, созданные с целью сохранения конфиденциальности, систем тестирования или создания обучающих данных для алгоритмов машинного обучения или других программных систем.

Вы думаете - «Постой! Искусственный ?!" «Что ж, если это не настоящие данные, я не вижу смысла говорить об этом!»

Конечно, хорошо.

Но серьезно, прежде чем я отвечу на это, давайте сделаем шаг назад и разберемся с типичными проблемами, с которыми сталкиваются при создании общих программных систем и систем AI / ML.

  • Недостаточно данных - здесь несколько примеров. а) Достаточно много времени доступен правильный набор данных, но он не содержит достаточного количества примеров реальных данных, которые вы пытаетесь смоделировать. б) Данные доступны, но их получение слишком дорого, или вы не можете обосновать доступ к ним (закрытые наборы данных). c) Слишком много времени и / или затрат на преобразование имеющихся данных в полезную для вас форму (помеченную / помеченную / категоризированную).
  • Конфиденциальность. Данные, с которыми вы работаете, содержат конфиденциальную информацию, которую нельзя раскрыть в результатах и ​​отчетах.
  • Предвзятость. Известно, что данные смещены в сторону некоторых классов или вероятностей, или вы просто хотите убедиться, что они максимально беспристрастны.
  • Данные, подверженные ошибкам - данные доступны в достаточном количестве вариаций и в большом количестве, но содержат слишком много ошибок, чтобы быть полезными для вас как есть.
  • Отсутствующие точки данных. В наборе данных существует множество пробелов, которые делают его бесполезным.
  • Расширение данных не помогает. Методы увеличения объема данных не помогают достичь требуемой точности в реальных тестах.
  • Нет данных для гипотетических (но важных) сценариев - вы хотите смоделировать сценарии, которые находятся в пределах правдоподобия, но ваши данные не попадают в эти возможности. Некоторые из ваших тестовых сценариев мертвы.

Важно усвоить, что вышеупомянутые проблемы применимы не только к области машинного обучения, но и к общим программным системам.

Таким образом, синтез данных - это наука и, что не менее важно, искусство создания искусственных данных, которые моделируют реальные данные. Это управляемое создание, которое имитирует статистические свойства реальных данных и поэтому одинаково полезно, как и реальные данные. Есть много способов его создания:

  • На основе статистического распределения - генерировать данные из статистического распределения после определения диапазонов значений и некоторых других свойств.
  • Агентное моделирование - создается модель, которая объясняет наблюдаемое поведение, а затем воспроизводит случайные данные с использованием той же модели.
  • Модели на основе глубокого обучения - модели вариационного автоэнкодера и генерирующей состязательной сети (GAN) можно использовать в качестве методов генерации синтетических данных, которые улучшают полезность данных за счет добавления в модели большего количества данных.

Спрос на синтетические данные неуклонно растет. Компании осознали полезность этого и бесполезность выпуска программного обеспечения для ограничения данных.

Эта статья от Businesswire рассказывает о рынке. Вот отрывок:

Вот лишь несколько отраслевых примеров поставщиков синтетических данных:

  • Edgecase.ai - Маркировка данных как услуга для систем AI / ML.
  • Faker - библиотека Python с открытым исходным кодом для общих программных систем.
  • CA Test Data Manager - генерирует синтетические тестовые данные для общих программных систем и помогает управлять ими.
  • OneView - синтетические наборы данных для обучения модели алгоритмов машинного обучения. Ориентирован на спутниковые и аэрофотоснимки.

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

  • Важно помнить, что математически невозможно полностью воспроизвести реальное распределение данных или попытаться достичь идеальной конфиденциальности. Ваши синтетические данные должны стремиться найти здесь баланс. Более высокая конфиденциальность приводит к снижению полезности синтетических данных.
  • Исключительное поколение может страдать от несоответствия. Крайние случаи необходимо моделировать тщательно и в консультации с экспертами в предметной области.
  • Качество синтетических данных сильно коррелирует с качеством входных данных и модели генерации данных.
  • Синтетические данные могут отражать предвзятость исходных данных.
  • Синтетические данные должны сопровождаться достоверными показателями как их полезности, так и риска.

Используйте методы ансамбля для генерации синтетических данных. Они могут в значительной степени помочь справиться с проблемами.

У меня есть личный опыт использования синтетических данных:

  • На нашей платформе здравоохранения SVPT мы создаем так называемую SVPT Advisory. Когда физиотерапевт сохраняет профиль пациента в приложении SVPT, Advisory после анализа профиля пациента передает терапевту полезные данные, чтобы помочь в выборе схемы лечения. Эти сообщения выглядят примерно так: Состояние пациента A X было замечено 76% терапевтов наряду с состоянием Y или Режим лечения ABC помог 64% пациентов с состоянием Z получить Восстановление на 81% быстрее . Как вы понимаете, для таких заявлений требуется много данных. Однако невозможно контролировать условия, которые SVPT видит в реальном мире. Обычно мы получаем фрагменты данных для определенного состояния и профиля пациента. Синтетические данные являются для нас критически важным инструментом для включения рекомендаций.
  • В предыдущей статье я продемонстрировал, как отслеживать контакты для Covid19. Для этого критически важны история местоположения, профиль здоровья и другая демографическая информация. Однако это конфиденциальные данные, и их нелегко получить. Я закончил тем, что написал генератор синтетических данных для построения необходимого корпуса данных.

Если вы хотите глубже погрузиться в синтетические данные, вот несколько ссылок, которые я нашел полезными. Быстрый поиск в Интернете подбросит еще много.

Спасибо, что прочитали эту статью! Я приветствую любые комментарии или вопросы, которые могут у вас возникнуть. Я независимый консультант по технологиям, имеющий опыт работы в области мобильных приложений, облачных и микросервисных архитектур, машинного обучения и анализа больших данных. Совсем недавно я: а) загрузил, спроектировал и построил платформу биологической обратной связи в сфере здравоохранения, б) построил конвейер анализа больших данных и в) ввел новые методы в области обработки естественного языка, г) помог автоматизировать бизнес-процессы с помощью машинного обучения, и д) Стабилизирован и доработан продукт тестирования ETL, в котором сообщалось об основных проблемах на местах. Если вам или вашей организации нужна помощь в цифровых преобразованиях, напишите мне!