Включая встроенные наборы данных с открытым исходным кодом, интерфейс генератора синтетических данных и показатели точности / конфиденциальности

По оценкам Gartner, к 2022 году 40% моделей AI / ML будут обучаться на синтетических данных. [1]

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

Итак, основы. Синтетические данные создаются с помощью генератора синтетических данных. Генератор или синтезатор синтетических данных принимает свои так называемые входные или целевые данные и возвращает выходные или синтетические данные, содержащие ту же схему и статистические отношения, что и входные или целевые данные.

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

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

Рекомендации по выбору генератора синтетических данных

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

Нет недостатка в инструментах или практических руководствах по созданию синтетических данных, но очень мало о том, как точно измерить аспект полезности / конфиденциальности синтетических данных. Один из таких ресурсов - SDGym - от MIT Data до AI Lab. Однако мы обнаружили, что нам нужно больше возможностей, чем предлагает библиотека, поэтому мы создали Virtual Data Lab.

Представляем Virtual Data Lab
VDL - это среда Python для тестирования последовательных генераторов синтетических данных с точки зрения точности и конфиденциальности.

Мы хотели:

  • Работа с пандами (библиотека фреймов данных Python)
  • Используйте любой возможный целевой источник данных для генерации
  • Обеспечьте общий интерфейс для добавления новых синтезаторов
  • Создание фиктивных данных, заполненных случайно сгенерированными числовыми типами и категориальными типами
  • Работа с последовательными данными
  • Интуитивно понятные показатели конфиденциальности
  • Предоставьте набор реальных наборов данных для сравнения

Моя команда в MOSTLY AI часто использует Virtual Data Lab для быстрой оценки модификаций нашего генератора синтетических данных. Это дало нам возможность проводить стандартизированный анализ тестирования и, как результат, сэкономило нам бесчисленное количество часов на создание специального одноразового отчета. Таким образом, примером использования Virtual Data Lab может быть тестирование различных генераторов синтетических данных для последующей задачи машинного обучения. Вместо того, чтобы развертывать несколько дорогостоящих для обучения моделей машинного обучения с несколькими различными синтетическими наборами данных, VDL можно использовать в качестве прокси для выбора набора данных, ближайшего к исходному, но не слишком близкого.

Что внутри?

В текущем выпуске включены три разных синтезатора. Два из трех синтезаторов тривиальны и предназначены для использования в качестве основы для показателей. Один синтезатор - это простой вариационный автоэнкодер, реализованный в PyTorch. Вы можете написать свой собственный синтезатор, следуя этим инструкциям.

Далее мы переходим к показателям точности и конфиденциальности. Для более глубокого погружения посетите readme.md

Точность измеряется разницей в эмпирических распределениях по столбцам. Мы суммируем ошибки с помощью MAX Error или L1 Distance / Sum (L1D). MAX Error сообщает нам, какая самая большая ошибка, которую мы видели в наборах данных, тогда как L1D дает общую оценку того, сколько ошибок мы видели. Анализ эмпирических распределений дает нам уверенность в том, насколько хорошо синтетические данные отражают статистические тенденции из целевых данных. Измерение распределения также используется NIST в их задаче синтетических данных.

Конфиденциальность измеряется путем разделения целевых данных на набор ссылок и набор задержек.

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

Расстояние до ближайшей записи (DCR) измеряет расстояние между точкой в ​​удерживающем наборе и точкой в ​​эталонном наборе. Плохие синтетические данные - это когда исходные целевые данные искажены шумом. DCR предназначен для регистрации таких сценариев.

Отношение ближайшего соседа (NNDR) измеряет расстояние до первого и второго соседа удерживаемой точки. NNDR точки может находиться в диапазоне от 0 до 1. Значение, близкое к 1, означает, что точка, вероятно, находится в кластере. Значение, близкое к 0, означает, что точка, вероятно, будет близка к выбросу. Мы вычисляем NNDR для каждой пары точек между целевым и удерживающим набором, чтобы получить распределение NNDR. В идеале мы хотим, чтобы синтетическое распределение NNDR соответствовало целевому распределению NNDR. Проверяя расхождения в них, мы можем гарантировать, что синтетические данные не находятся ближе к точкам обучения, чем мы ожидали бы, основываясь на задержке.

Эти две метрики конфиденциальности были разработаны для обеспечения гарантий конфиденциальности для наборов данных. Мы можем сравнить эти два показателя с дифференциальной конфиденциальностью, популярным математическим пределом степени потери конфиденциальности. В дизайн алгоритма должны быть встроены дифференциально частные механизмы. Однако не всем генераторам синтетических данных требуется дифференцированная конфиденциальность для создания высококачественных и конфиденциальных данных. Используя эти две метрики, мы получаем возможность сравнивать на равных условиях дифференциально частные генераторы синтетических данных с недифференциально частными генераторами синтетических данных.

Вам также не нужно писать какой-либо код для генерации синтетических данных. В MOSTLY AI мы выпустили версию нашего продукта для сообщества. Синтезировать данные так же просто, как перетащить исходные данные в браузер.

Демонстрация кода

Код также доступен в блокноте Google Colab.

И вот оно! Генерация синтетических данных и сравнение их с исходными синтетическими данными менее чем в 5 строках кода.

Анализ результатов

Так же легко интерпретировать результаты. Здесь мы смотрим на сгенерированные результаты сравнения для IdentitySynthesizer и FlatAutoEncoderSynthesizer в наборе данных cdnow, предоставленном в VDL. Эта таблица была создана с помощью функции virtualdatalab.benchmark.benchmark. Пример этой функции в действии с большим количеством синтезаторов + наборов данных можно найти в этом Блокноте Google Colab.

Все столбцы, помеченные MAX или L1D, являются показателями погрешности. Высокая точность соответствует низким значениям в этих столбцах. Мы замечаем, что IdentitySynthesizer имеет значения, близкие к 0. Это неудивительно, поскольку IdentitySynthesizer просто возвращает части целевых данных. Однако именно по этой причине он не прошел оба теста конфиденциальности. Напротив, FlatAutoEncoderSynthesizer имеет немного худшую ошибку, но прошел оба теста. Это имеет смысл, поскольку FlatAutoEncoderSynthesizer генерирует совершенно новые данные, но поддерживает статистическую связь с целевыми данными.

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

Попробуйте сами

Чтобы начать работу с Virtual Data Lab, разветвите репозиторий или попробуйте один из наших блокнотов Google Colab! Если вы заинтересованы в участии в репо, свяжитесь со мной!

Благодарности

Это исследование было поддержано программой финансирования «ИКТ будущего» Федерального министерства по вопросам климата, окружающей среды, энергетики, мобильности, инноваций и технологий Австрии.

[1] Gartner. 2018. Maverick * Research: Используйте симуляции, чтобы дать машинам воображение.