Авторы: Бошика Тара, Ашна Арья, Леонард Со

ВВЕДЕНИЕ

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

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

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

Увеличение данных:

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

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

Например, случайные перевороты и отражения в наборе данных MNIST могут привести к тому, что обучающие данные будут содержать перевернутое изображение 6, которое выглядит как 9, но имеет метку 6.

Источник изображения: https://towardsdatascience.com/improving-accuracy-on-mnist-using-data-augmentation-b5c38eb5a903

Мы можем использовать TensorFlow для реализации основных манипуляций с изображениями двумя способами: для предварительной обработки данных и в качестве слоя внутри модели. Можно использовать методы TensorFlow (tf.image), слои предварительной обработки или пользовательские функции обработки изображений для применения преобразований изображений, которые затем можно применять к наборам данных TensorFlow через tf.data.Dataset. карта.

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

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

Нормализация данных

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

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

Класс ImageDataGenerator в Keras предоставляет различные методы масштабирования значений пикселей перед передачей изображений в модель. К трем наиболее популярным относятся нормализация пикселей (масштабирование значений в диапазоне от 0 до 1), центрирование (масштабирование значений с нулевым средним значением) и стандартизация (масштабирование значений с нулевым средним значением и единичной дисперсией). Фрагмент кода ниже показывает, как настроить генератор для выполнения каждого типа стандартизации:

После настройки генератора следующими шагами являются вычисление среднего значения в обучающем наборе и подготовка итераторов для масштабирования изображений:

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

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

Резюме

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

Справочник

Опрос по расширению графических данных для глубокого обучения — Journal of Big Data

[1712.04621] Эффективность увеличения данных при классификации изображений с использованием глубокого обучения

ML Studio (классика): нормализация данных — Azure

Нормализация в глубоком обучении

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

https://towardsdatascience.com/deep-learning-3-more-on-cnns-handling-overfitting-2bd5d99abe5d