Допустим, вы хотели создать классификатор изображений из реального мира, но обнаружили, что можно получить только 20 изображений. Вы думали, что сможете собрать больше изображений и получить в сумме 100. Вы знаете, что если вы потратите больше времени, вы сможете получить 150, 200, 250, но это медленно и сложно ... Что вы можете сделать, чтобы получить достаточно обучающих изображений для вашего классификатора?
Поскольку ML успешно решает сложные проблемы, существует потребность в достаточном количестве данных, а получить их вообще редко. Хорошая новость заключается в том, что с появлением методов и передовых методов машинного обучения мы можем синтезировать искусственные данные, которые потенциально могут повысить точность производительности или другие желаемые показатели. Техника создания новых данных из существующих данных называется увеличением данных.
В этом посте я расскажу об увеличении данных, в частности о следующих моментах:
- Когда использовать увеличение данных?
- Увеличение изображений
- Дополнение к текстам
- Дополнительные звуки и видео
- Дополнение структурированных данных
- Заключение
Когда использовать увеличение данных?
Даже если увеличение данных может увеличить и улучшить качество данных, важно подчеркнуть, что это не то, что всегда будет работать гарантированно.
Вот разные сценарии, в которых вы можете надеяться, что это поможет:
- Когда вы выполнили анализ ошибок и обнаружили, что модель не работает из-за недостатка данных, и есть явные доказательства того, что добавление дополнительных данных поможет.
- Когда модель не работает в одном конкретном классе из-за дисбаланса данных и путем добавления дополнительных данных в этот конкретный класс, модель может хорошо работать для обоих классов.
Как видите, дополнительные данные помогут, если они понадобятся. Возьмем пример для второго сценария. Если вы создаете классификатор моделей автомобилей, и ваш классификатор хорошо работает для модели автомобиля A, потому что он доминирует в наборе данных, и слишком плохо для модели B, потому что у нее мало изображений в наборе данных, добавление дополнительных данных в модель автомобиля A не приведет к улучшить модель. Вместо этого вы создадите больше изображений модели автомобиля B.
Кроме того, важно создавать реалистичные данные, достаточно реалистичные, чтобы их можно было легко распознать. Возьмем пример классификатора кошек / собак, если вы создадите одно подобное изображение, оно все равно будет похоже на кошку, но вполне вероятно, что ваш классификатор не будет протестирован на кошках в таких положениях, поэтому, добавив его в обучающий набор , это может запутать модель и, таким образом, упустить реальные кошачьи сценарии. Это не обязательно может быть правдой, но модель может пострадать при классификации кошек в этих положениях, особенно если они недостаточно представлены на обучающих изображениях.
Увеличение изображений
Компьютерное зрение, вероятно, является одной из областей, в которых использование увеличения данных может хорошо работать. Это связано с двумя причинами: для большинства реальных проектов изображений недостаточно, и их сбор может быть дорогостоящим. Вторая причина заключается в том, что стало нормой, что искусственное создание новых изображений из существующих обучающих изображений может значительно повысить точность производительности.
Есть верные техники, которые можно использовать для создания изображений. К ним относятся отражение, обрезка, поворот изображений, изменение контрастности и цвета, а также добавление шума к изображениям.
На фотографии ниже показаны улучшения в изображениях.
Дополнение текстов
При попытке дополнить тексты есть несколько вариантов. Первый - заменить некоторые случайные слова их синонимами. Возьмем пример: предложение «Собака сидит во дворе» может иметь значение, аналогичное следующему:
- В саду сидит собака.
- Во дворе сидит собака.
- «На заднем дворе сидит собака.
Другой вариант - использовать слова с широким значением (также известные как гиперонимы). Например, собака может означать животное или домашнее животное. Возвращаясь к нашему примеру, следующие предложения имеют семантическое значение, близкое к исходному предложению:
- В саду сидит животное.
- Во дворе сидит питомец
Последний вариант - использовать обратный перевод. При переводе с одного языка на другой контекст предложения имеет более высокий приоритет, чем значение отдельных слов. Это означает, что если вы переводите слова с одного языка на другой, есть вероятность, что слова будут другими. Если да, то у вас есть новые, но похожие слова. Переведите их обратно на первый язык и присвойте им метку, аналогичную исходному предложению.
Идеи, обсуждаемые в этом разделе, заимствованы из книги Андрея Буркова Машинное обучение.
Улучшение звука и видео
При работе со звуками вы можете взять существующие звуки и добавить шум, замедлить их, сделать их достаточно быстрыми, чтобы сообщение все еще было слышно, сместить время звука, сузить или расширить голос и т. Д.
Видео также можно дополнять так же, как и звуки. Вы можете замедлить или ускорить их, сместить время, разделить видео и применить некоторые преобразования к отдельным клипам. Например, у некоторых клипов может быть пониженная яркость, другой цвет и т. Д.
Нет никаких ограничений на то, какие типы преобразований вы можете попробовать, но они должны быть реалистичными, как мы упоминали в начале этой статьи.
Дополнение структурированных данных
Структурированные данные - это обычные данные в табличной форме, такие как данные, содержащие информацию о клиентах (имена, возраст, местонахождение и т. Д.). В отличие от других типов данных, структурированные данные сложно дополнить. Возьмем, к примеру, данные о клиентах: вы не захотите создавать фальшивых клиентов. Можно, но это будет плохой ход!
Вместо того, чтобы создавать новые точки данных в этом случае, мы можем максимизировать традиционную конструкцию признаков. Разработка функций - это творческая задача, требующая некоторых форм знания предметной области, но если есть очевидный способ создания новых функций, это может быть здорово.
Возьмем простой пример. Функция даты в формате (день-месяц-год) может иметь три отдельные функции: день, месяц и год. Вы также можете выполнять некоторые операции с объектами, например, умножать или делить 2 объекта или около того.
При создании дополнительных функций цель состоит в том, чтобы создать функции с высокой предсказательной способностью. Часто вы не знаете, прежде чем обучать и оценивать модель, но иногда это может быть очевидно. Возьмем пример: если вы прогнозируете, захочет ли кто-то обновить свой старый смартфон до новейшей модели, прежде чем показывать ему рекламу, очевидно, что информация об их росте не будет учитываться в этом конкретном решении.
Вывод
Во многих случаях увеличение данных улучшает качество данных и производительность модели, если все сделано правильно.
Дальнейшее обучение и ссылки
- Приведенные в тексте примеры заимствованы из книги Андрея Буркова Машинное обучение, Глава 3, Сбор и подготовка данных.
- Подробнее о данных и операциях машинного обучения можно узнать в новейшей статье DeepLearning.AI, специализирующаяся на машинном обучении, операционная инженерия. Отличный курс!
Я активно делюсь контентом об идеях, советах и лучших практиках машинного обучения в Твиттере. Если вы хотите подключиться, добро пожаловать. Каждый день я делюсь одной или двумя вещами, которые покажутся вам интересными.