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

Что такое сверточные нейронные сети CNN?

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

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

Что делает сверточную нейронную сеть (CNN) уникальной?

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

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

Архитектура сверточных нейронных сетей

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

Ниже приведены три основные архитектуры сверточных нейронных сетей:

  1. Сверточные слои: это строительные блоки CNN. Эти слои выполняют операции свертки над входным изображением, что включает в себя применение набора обучаемых фильтров для извлечения таких элементов, как края, углы и текстуры. Выходные данные сверточного слоя представляют собой набор карт объектов, которые отражают наличие различных характеристик на входном изображении.
  2. Слои объединения. Они используются для уменьшения пространственной размерности карт объектов, создаваемых сверточными слоями. Это уменьшает количество параметров в сети и делает ее более эффективной в вычислительном отношении. Наиболее распространенной операцией объединения является максимальное объединение, которое принимает максимальное значение в пределах области карты объектов.
  3. Полностью подключено. Используется для классификации входного изображения на основе функций, полученных сверточными слоями и слоями объединения. Эти слои соединяют все нейроны одного слоя со всеми нейронами следующего слоя, подобно традиционной нейронной сети. Метка проецируемого класса для входного изображения — это выходные данные последнего полностью связанного слоя.

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

Типы сверточных нейронных сетей

В этой части будут рассмотрены некоторые наиболее распространенные архитектуры CNN.

  1. LeNet-5: — одна из самых ранних и влиятельных архитектур CNN. Он был разработан в 1990-х годах Яном ЛеКуном и его коллегами для распознавания рукописных цифр. Архитектура LeNet-5 состоит из семи уровней, включая два сверточных уровня, два уровня пула и три полносвязных уровня. Несмотря на свою простую архитектуру, LeNet-5 достиг самой современной производительности в наборе данных MNIST и помог установить эффективность CNN для задач классификации изображений.
  2. AlexNet — это более глубокая и сложная архитектура CNN, разработанная Алексом Крижевским, Ильей Суцкевером и Джеффри Хинтоном в 2012 году. Она имеет восемь слоев, пять из которых являются сверточными, а три полностью связанными. AlexNet был создан для классификации фотографий в наборе данных ImageNet, который содержит около 1 миллиона изображений, разделенных на 1000 категорий. AlexNet значительно улучшил производительность по сравнению с предыдущими подходами и помог популяризировать глубокое обучение и CNN.
  3. VGG-16: разрабатывает ли группа визуальной геометрии интенсивную архитектуру CNN в Оксфордском университете? Он состоит из 16 слоев, все из которых являются сверточными или полностью связанными слоями. VGG-16 использует крошечные фильтры 3x3 в сверточных слоях, что позволяет улавливать более мелкие детали входного изображения. VGG-16 достиг высочайшего уровня производительности в наборе данных ImageNet и известен своей простотой и элегантностью.
  4. GoogLeNet — это высокооптимизированная архитектура CNN, разработанная исследователями Google в 2014 году. Она состоит из 22 уровней, включая новый «начальный модуль», позволяющий сети параллельно изучать несколько масштабов функций. Начальный модуль использует комбинацию сверточных фильтров 1x1, 3x3 и 5x5 для захвата функций в разных масштабах. GoogLeNet достигла высочайшего уровня производительности в наборе данных ImageNet, используя при этом меньше параметров, чем другие сети.
  5. ResNet — это глубокая архитектура CNN, разработанная Каймингом Хе и его коллегами из Microsoft Research в 2015 году. Она состоит из 152 уровней и использует новую архитектуру «остаточных блоков», которая позволяет сети изучать остаточные соединения. между слоями. Это помогает избежать исчезновения градиентов в очень глубоких сетях, позволяя ResNet достичь высочайшей производительности в широком спектре приложений компьютерного зрения.

Обучение сверточных нейронных сетей

Обучение сверточной нейронной сети (CNN) включает в себя несколько этапов:

  1. Подготовка данных. Этот метод включает в себя сбор, очистку и подготовку данных, которые будут использоваться для обучения CNN. Данные следует разделить на наборы для обучения, проверки и тестирования.
  2. Проектирование архитектуры. Архитектура CNN разрабатывается на основе проблемы, которую необходимо решить. Архитектура состоит из сверточных, пулирующих и полностью связанных слоев.
  3. Инициализация: веса CNN инициализируются случайным образом.
  4. Проход вперед: входные данные передаются через сеть и генерируются выходные данные.
  5. Расчет потерь: рассчитывается разница между прогнозируемым и точным выходом, и эта разница называется потерями. Используемая функция потерь зависит от проблемы, которую необходимо решить.
  6. Обратный проход: ошибка распространяется обратно по сети, а градиенты потерь рассчитываются с учетом весов сети.
  7. Оптимизация. Для обновления весов сети используется метод оптимизации, такой как стохастический градиентный спуск (SGD), Adam или RMSProp.
  8. Проверка: производительность CNN оценивается на наборе проверки.
  9. Тестирование: окончательная производительность CNN оценивается на тестовом наборе.

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

Приложения сверточных нейронных сетей

Сверточные нейронные сети (CNN) используются в различных областях, включая компьютерное зрение, обработку естественного языка, распознавание голоса и анализ звука. Вот некоторые конкретные применения CNN:

  1. Классификация изображений. CNN широко используются в задачах классификации изображений, таких как идентификация объектов, распознавание лиц и обнаружение заболеваний на медицинских изображениях.
  2. Обнаружение объектов. CNN использовались для обнаружения и локализации объектов на изображениях, например, в системах автономного вождения и системах наблюдения.
  3. Сегментация изображения. CNN использовались для разделения изображений на различные области или объекты, например, при медицинской визуализации, для идентификации различных тканей или органов.
  4. Перенос стиля. CNN можно использовать для переноса стиля одного изображения на другое и создания художественных эффектов.
  5. Обработка естественного языка: CNN были реализованы для анализа настроений и категоризации текста в задачах обработки естественного языка.
  6. Распознавание речи. CNN используются для повышения точности систем распознавания речи.
  7. Анализ аудио: CNN использовались в задачах анализа аудио, таких как классификация музыкальных жанров и транскрипция речи в текст.

Лучшие практики использования сверточных нейронных сетей

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

  1. Предварительная обработка данных. Качество данных, используемых для обучения CNN, имеет решающее значение для ее производительности. Крайне важно предварительно обработать данные перед их подачей в сеть. Шаги предварительной обработки могут включать нормализацию, изменение размера и увеличение данных. Нормализация гарантирует, что входные данные имеют нулевое среднее значение и единичную дисперсию, что помогает сети обучаться более эффективно. Изменение размера изображений до фиксированного размера также может повысить производительность, поскольку уменьшает различия в размерах изображений. Расширение данных, такое как вращение, переворот и масштабирование, может увеличить разнообразие обучающих данных и улучшить производительность обобщения сети.
  2. Выбор архитектуры. Выбор архитектуры имеет решающее значение для производительности CNN. Различные архитектуры имеют разные сильные и слабые стороны в зависимости от задачи. Очень важно выбрать подходящую архитектуру для поставленной задачи. Например, сеть с небольшими сверточными фильтрами может оказаться более подходящей, если задача включает в себя распознавание мелких деталей изображения. Сеть с начальным модулем может оказаться более подходящей, если задача предполагает обнаружение объектов в нескольких масштабах.
  3. Настройка гиперпараметров. CNN имеют несколько гиперпараметров, которые необходимо настроить, например скорость обучения, размер пакета и параметры регуляризации. Очень важно поэкспериментировать с различными значениями гиперпараметров, чтобы найти оптимальную комбинацию для задачи. Это может включать выполнение сетки или случайного поиска по диапазону гиперпараметров. Также важно отслеживать процесс обучения и соответствующим образом корректировать гиперпараметры.
  4. Регуляризация. Чтобы избежать недостаточного или переобучения, необходимо правильно использовать методы регуляризации; переоснащение может произойти в CNN, когда модель хорошо работает на обучающих данных, но плохо на проверочных или тестовых данных. Подходы к регуляризации выпадения и снижения веса позволяют избежать переобучения за счет снижения пропускной способности сети или добавления штрафного члена к функции потерь.
  5. Перенос обучения.Этотметод использует предварительно обученную модель CNN в качестве отправной точки для новой задачи. Путем точной настройки предварительно обученной модели на новых данных трансферное обучение может значительно сократить объем необходимых обучающих данных и повысить производительность модели. Крайне важно выбрать предварительно обученную модель, соответствующую новой задаче, и соответствующим образом настроить ее.

Заключение

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

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

Независимый от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему приглашению к участию. Вы также можете подписаться на нашу еженедельную рассылку новостей (Deep Learning Weekly), посетить блог Comet, присоединиться к нам в Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов и событий. и многое другое, что поможет вам быстрее создавать более качественные модели машинного обучения.