Допустим, вы хотели создать классификатор изображений из реального мира, но обнаружили, что можно получить только 20 изображений. Вы думали, что сможете собрать больше изображений и получить в сумме 100. Вы знаете, что если вы потратите больше времени, вы сможете получить 150, 200, 250, но это медленно и сложно ... Что вы можете сделать, чтобы получить достаточно обучающих изображений для вашего классификатора?

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

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

  • Когда использовать увеличение данных?
  • Увеличение изображений
  • Дополнение к текстам
  • Дополнительные звуки и видео
  • Дополнение структурированных данных
  • Заключение

Когда использовать увеличение данных?

Даже если увеличение данных может увеличить и улучшить качество данных, важно подчеркнуть, что это не то, что всегда будет работать гарантированно.

Вот разные сценарии, в которых вы можете надеяться, что это поможет:

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

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

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

Увеличение изображений

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

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

На фотографии ниже показаны улучшения в изображениях.

Дополнение текстов

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

  • В саду сидит собака.
  • Во дворе сидит собака.
  • «На заднем дворе сидит собака.

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

  • В саду сидит животное.
  • Во дворе сидит питомец

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

Идеи, обсуждаемые в этом разделе, заимствованы из книги Андрея Буркова Машинное обучение.

Улучшение звука и видео

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

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

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

Дополнение структурированных данных

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

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

Возьмем простой пример. Функция даты в формате (день-месяц-год) может иметь три отдельные функции: день, месяц и год. Вы также можете выполнять некоторые операции с объектами, например, умножать или делить 2 объекта или около того.

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

Вывод

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

Дальнейшее обучение и ссылки

Я активно делюсь контентом об идеях, советах и ​​лучших практиках машинного обучения в Твиттере. Если вы хотите подключиться, добро пожаловать. Каждый день я делюсь одной или двумя вещами, которые покажутся вам интересными.