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

CNN не страдают от« проклятия размерности

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

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

Почему CNN имеет значение?

Большая часть последних исследований, проводимых в сообществе специалистов по науке о данных и машинному обучению, вращается вокруг нейронных сетей, таких как CNN. CNNS может помочь нам понять текущее состояние нашей окружающей среды (например, с помощью спутниковых изображений, которые могут помочь демократизировать способность принимать обоснованные решения относительно ресурсов / политических решений страны), решить проблемы обнаружения изображений (например, беспилотные автомобили или анализ изображений в реальном времени). поведение или описание фотографии) и переходите к настоящему моменту, даже заставляя вас танцевать без вашего реального танца. ( "Танцуют все" )

Архитектура CNN

Поскольку CNN является разновидностью многослойного прецептрона, он состоит из множества скрытых слоев. Итак, дизайн CNN

Входной слой + несколько скрытых слоев + выходной слой

Скрытые слои - это сверточные слои, объединяющие слои, полносвязные слои и слои нормализации.

Сверточный слой

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

Что делает CNN лучше?

Хотя полностью связанные нейронные сети с прямой связью можно использовать для изучения функций, а также для классификации данных, применять эту архитектуру к изображениям непрактично. Было бы необходимо очень большое количество нейронов, даже в мелкой (противоположной глубокой) архитектуре, из-за очень больших входных размеров, связанных с изображениями, где каждый пиксель является релевантной переменной. Например, полностью связанный слой для (маленького) изображения размером 100 x 100 имеет 10000 весов для каждого нейрона во втором слое. Операция свертки решает эту проблему, так как уменьшает количество свободных параметров, позволяя сети быть более глубокой с меньшим количеством параметров. (Лучшее объяснение можно найти здесь.)

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

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

Функция ReLu:

f (x) = x для x≥0; 0 в противном случае.

Таким образом, ReLu отменяет все отрицательные значения и распространяет только неотрицательные. Принимая во внимание, что сигмоидальная функция требует больше вычислительной мощности и времени для вычисления.

Сигмоидальная функция:

Уровень объединения

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

Чтобы лучше понять это, рассмотрим следующую архитектуру VGG16. (VGG16, он же OxfordNet - еще одна разновидность CNN)

Слои, нарисованные красным, являются слоями maxpooling. Обратите внимание, как размер слоя становится меньше на каждом уровне maxpooling? Вот и происходит дискретизация.

Как это работает? →

Допустим, у нас есть матрица 4x4, представляющая наш исходный ввод.
Допустим также, что у нас есть фильтр 2x2, который мы будем пропускать по нашему вводу. У нас будет шаг 2 (это означает, что (dx, dy) для перехода через наш ввод будет (2, 2)), и области не будут перекрывать друг друга.

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

Таким образом, для рассмотрения / изучения выносятся только самые важные или актуальные функции.

Это самые основные и несколько фундаментальных идей, лежащих в основе концепции CNN. Есть много интересных вариаций этого. Подробнее об этом позже!

Я выйду (0) сейчас.

Использованная литература :

  1. Стэнфордский CS231n github
  2. Https://en.wikipedia.org/wiki/Convolutional_neural_network
  3. Https://www.coursera.org/learn/convolutional-neural-networks
  4. Https://medium.com/technologymadeeasy/the-best-explanation-of-convolutional-neural-networks-on-the-internet-fbb8b1ad5df8