Введение в сверточные нейронные сети

Зачем нам нужен CNN?

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

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

Требуется хорошее решение CNN:

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

Структура

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

В процессе глубокого обучения мы можем видеть следующие фазы:

  • Предварительная обработка входных данных.
  • Обучение модели глубокого обучения
  • Вывод и развертывание модели.

Архитектура

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

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

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

Мы можем использовать ReLu (выпрямленная линейная единица) в качестве функций активации поверх узлов в слое свертки. ReLu - это нелинейная функция активации, которая используется для увеличения нелинейных свойств решающей функции, отображая ее на значения от 0 до 1.

Чтобы уменьшить дискретизацию выходных данных ReLu, мы используем другой слой, Max-Pooling. «Max-Pooling» - это операция, которая находит максимальные значения и упрощает ввод, то есть уменьшает количество параметров в модели.

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

Здесь мы снова можем использовать активацию ReLu, чтобы сопоставить значение от 0 до 1 и, наконец, использовать Softmax для классификации. Softmax генерирует выходные многоклассовые категориальные распределения вероятностей.

Обучение

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

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

Старая проблема

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

Как это решить?

Есть несколько способов преодолеть проблему:

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