Запись №3 в «Дневнике машиниста-самоучки»

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

Идея действительно гениальна.

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

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

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

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

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

Если бы размер фильтра был таким же, как у изображения, он был бы таким же, как у обычной нейронной сети.

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

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

Объединение

Размерность изображений все еще относительно велика, поэтому должен быть способ еще больше уменьшить пространство признаков после каждой свертки. Вот тут-то и появляется объединение.

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

Активация

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

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

Некоторые общие функции активации показаны ниже:

Урок также знакомит студентов с функцией активации ReLU, которая выглядит следующим образом:

С функцией ReLU градиент имеет постоянное значение при z> 0, в отличие от сигмовидной функции, где градиент становится все меньше по мере увеличения величины входа в нейрон. Этот постоянный градиент с ReLU приводит к более быстрому обучению.