Рубрики
Без рубрики

Мои мысли о синтетических данных

(относительно) краткий вводный анализ эффективности синтеза данных для машинного обучения.

Автор оригинала: Eric Le Fort.

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

Мотивация

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

Необходимые знания

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

  • Базовые статистические знания, такие как значение термина “стандартное отклонение”
  • Знакомство с нейронными сетями, SVM и Деревьями принятия решений (если вы знакомы только с одним или двумя из них, это, вероятно, будет хорошо)
  • Понимание базовой терминологии машинного обучения, такой как значение “тренировать/тестировать/проверять разделение”

Общие сведения о синтетических данных

Двумя распространенными методами генерации синтетических данных являются:

  1. Рисование значений в соответствии с некоторым распределением или коллекцией распределений
  2. Моделирование на основе агентов

В этом исследовании мы будем изучать первую категорию. Чтобы помочь закрепить эту идею, давайте начнем с примера!

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

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

Первая особенность-их средняя длина (7,5 см ± 1,5 см) может быть получена путем извлечения значений из нормального распределения со средним значением 7,5 и стандартным отклонением 1,5. Аналогичная методика может быть использована для прогнозирования их веса. Однако информация, которой мы располагаем, не включает в себя типичный диапазон их веса, просто средний показатель составляет 22,7 г. Идея состояла бы в том, чтобы использовать произвольное стандартное отклонение в 10% (2,27 г). К сожалению, это всего лишь результат чистой спекуляции и поэтому, скорее всего, неточен.

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

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

“Органические” данные

Каждая категория будет следовать определенным нормальным распределениям для каждой из своих функций. Например, первый признак будет иметь среднее значение 1500 и стандартное отклонение 360 для выборок из первой категории и среднее значение 1300 и стандартное отклонение 290 для выборок из второй категории. Распределения для остальных функций можно найти ниже:

1500.000 1300.000 1 360.000 290.000
5924.000 5924.000 2 1200.000 1500.000
9.200 12.100 3 3.000 3.800
29.000 68.000 4 12.000 15.000
18.000 18.500 5 4.200 4.000
62.400 73.200 6 11.100 13.000
0.420 0.420 7 0.020 0.030
635.000 840.000 8 76.000 89.000
0.052 0.063 9 0.021 0.027
87.010 87.030 10 25.000 25.000

Эта таблица довольно плотная, но ее можно суммировать как имеющую:

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

Будет создано два таких набора данных: один набор данных с 1000 образцами, который будет зарезервирован в качестве набора проверки, и другой набор данных с 1000 образцами, который может быть использован для обучения/тестирования.

Это создает набор данных, который делает классификацию достаточно жесткой .

Синтетические данные

Вот тут-то и начинается самое интересное! Синтетические данные будут следовать одному из двух пользовательских распределений. Первый-это то, что я буду называть ” Распределение шипов .” Это распределение позволит только синтетическим функциям принимать несколько дискретных значений с определенными вероятностями для каждого значения. Например, если исходное распределение имело среднее значение 3 и стандартное отклонение 1, у вас может быть всплеск в 2 (27%), 3 (46%), и 4 (27%).

Второе пользовательское распределение-это то, что я буду называть ” Распределение плато .” Это распределение является просто кусочно-равномерным распределением. Вероятность плато определяется с использованием вероятности нормального распределения в центре плато. Можно использовать любое количество шипов или плато, и по мере добавления большего количества распределение будет все больше напоминать нормальное распределение.

Чтобы внести ясность, на следующем рисунке показаны эти распределения: ( Примечание: график распределения спайков не является функцией плотности вероятности )

Чтобы внести ясность, на следующем рисунке показаны эти распределения: || ( || Примечание: график распределения спайков не является функцией плотности вероятности || )

Процесс синтеза данных для этой проблемы сделает одно очень важное предположение, которое ошибается в пользу того, чтобы синтетические данные более напоминали “органические” данные. Это предположение состоит в том, что известно истинное среднее и стандартное отклонение каждой пары признаков/категорий. На самом деле, если синтетические данные слишком далеки от этих значений, это может серьезно повлиять на точность обученной модели.

Хорошо, но зачем использовать эти дистрибутивы? Как они соотносятся с реальностью?

Я рад, что вы спросили! В ограниченном наборе данных вы можете заметить, что для определенной категории объект принимает несколько значений. Представьте себе, что эти значения были:

(50, 75, 54, 49, 24, 58, 49, 64, 43, 36)

Или если мы отсортируем список:

(24, 36, 43, 49, 49, 50, 54, 58, 64, 75)

Чтобы сгенерировать данные для этой функции, вы можете разделить ее на три раздела, где первый раздел будет наименьшим 20%, 60% в середине будет вторым разделом, а третий раздел будет самым большим 20%. Используя эти три раздела, вы можете затем вычислить их средние значения и стандартные отклонения: (30, 6.0), (50.5, 4.6), и (69,5, 5,5) соответственно. Если стандартные отклонения, как правило, довольно низкие, скажем, около 10% или менее от соответствующего среднего значения, вы можете рассматривать этот раздел как всплеск этого среднего значения. В противном случае вы можете рассматривать этот участок как плато с шириной, вдвое превышающей стандартное отклонение этого участка, и с центром в среднем по этому участку.

Или, другими словами, они выполняют достойную работу по эмуляции несовершенного синтеза данных.

С использованием этих распределений будут созданы два набора данных из 800 образцов-один с использованием пиков, а другой с использованием плато. Модели будут обучены с использованием четырех различных наборов данных, чтобы сравнить полезность каждого из них:

  • Полный – Полный набор данных из 1000 образцов (используется для получения представления о верхнем пределе)
  • Реальный – Только 20% образца органического набора данных (имитация ситуации без добавления синтетических данных)
  • Спайки – “Реальный” набор данных в сочетании с набором данных спайка (1000 образцов)
  • Плато – “Реальный” набор данных в сочетании с набором данных плато (1000 образцов)

А теперь самое интересное!

Для проверки прочности каждого из этих наборов данных были использованы три различных метода машинного обучения: Многослойные персептроны (MLPS), Машины опорных векторов (SVM) и Деревья решений. Чтобы помочь обучению, поскольку некоторые функции намного больше по величине, чем другие, масштабирование функций было использовано для нормализации данных. Гиперпараметры различных моделей были настроены с помощью поиска по сетке, чтобы максимизировать вероятность получения наиболее сильного набора гиперпараметров.

В общей сложности 24 различные модели были обучены на восьми различных наборах данных, чтобы получить представление о том, какое влияние синтетические данные оказали на эффективность обучения. Не стесняйтесь проверить код здесь !

Барабанную Дробь, Пожалуйста…

После многих часов настройки гиперпараметров и записи точных измерений появились некоторые противоречивые результаты! Полный набор результатов можно найти в таблицах ниже:

MLP

97.0 95.3 95.3 97.7 97.8 97.4 98.0 95.8

SVM

97.3 96.3 95.9 97.2 97.2 97.3 97.1 97.5

Дерево решений

94.8 91.1 85.1 91.7 90.4 93.2 94.7 94.5

В этих таблицах “Спайк 9” или “Плато 9” относятся к распределению и количеству используемых спайков/плато. Значения в ячейках представляют собой результирующую точность моделей, которые были обучены/протестированы с использованием соответствующих данных обучения/тестирования, а затем проверены на основе данных проверки. Помните также, что “Полная” категория должна быть теоретическим потолком точности, а “Реальная” категория-это наш базовый уровень, которого мы могли бы достичь без синтетических данных.

Важно отметить, что точность обучения/тестирования для (почти) каждого испытания была значительно выше, чем точность валидации. Например, несмотря на то, что MLP набрал 97,7% на spikes-5, он набрал 100% и 99% соответственно на данных поезда/теста для того же испытания. Это может привести к значительному завышению эффективности модели при использовании в реальном мире. Полный набор этих измерений можно найти на GitHub для этого проекта.

Давайте подробнее рассмотрим эти результаты.

Во-первых, давайте рассмотрим межмодельные тенденции (т. Е. Влияние типа синтетического набора данных на все методы машинного обучения). Похоже, что добавление большего количества шипов/плато не обязательно помогало обучению. Вы можете увидеть улучшение в целом между наличием 3 против 5 шипов/плато, но это либо выравнивается, либо немного падает, когда вы смотрите на 5 против 9.

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

Теперь давайте рассмотрим внутримодельные тенденции (т. Е. Влияние различных синтетических наборов данных на конкретные методы машинного обучения). Для MLPS, казалось, было трудно определить, приведут ли шипы или плато к лучшей производительности. Для SVM и шипы, и плато, казалось, работали примерно одинаково хорошо. Однако для Деревьев решений плато являются явным победителем.

В целом, однако, при использовании синтетических наборов данных постоянно наблюдались явные улучшения!

Будущая Работа

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

Одно из предположений, которое было сделано, состоит в том, что каждый класс имеет только один “тип”, но это не всегда верно в реальном мире. Например, доберман и чихуахуа-обе собаки, но их распределение веса будет выглядеть очень по-разному.

Кроме того, это, по сути, всего лишь один тип набора данных. Еще один аспект, который следует рассмотреть, – это попытка аналогичных экспериментов, за исключением наборов данных, которые имеют разные размеры пространственных объектов. Это может означать наличие 15 объектов вместо 10 или наборов данных, которые, например, эмулируют изображения.

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

Об авторе

Эрик получил степень бакалавра в области разработки программного обеспечения и степень магистра в области машинного обучения. В настоящее время он работает инженером по машинному обучению в Торонто, Канада. Он работал над проблемами, связанными с НЛП, компьютерным зрением и системами бизнес-аналитики, используя LSTMS, CNNS, ансамбли дерева решений, SVM и многое другое!

Если вы хотите узнать о нем больше, изучите его сайт .