Как устроены слои в CNN: руководство DeepLearning.AI

DeepLearning.AI 182 тыс. 16 мин 2 мин 07.11.2017
Главное

🧩 Как работает один слой сверточной нейронной сети 0:03

Понимание того, как функционирует отдельный слой сверточной нейронной сети (Convolutional Neural Network, CNN), является фундаментом для построения глубоких архитектур. В этом процессе исходный трехмерный объем данных проходит через серию фильтров, преобразуясь в активации следующего слоя.

Механика преобразования данных 0:15

Процесс перехода от входа к выходу внутри одного слоя можно разделить на несколько последовательных этапов:

  1. Операция свертки: Исходный объем (например, $6 \times 6 \times 3$) свертывается с заданным количеством фильтров. Каждый фильтр порождает двумерный выходной массив. Например, использование двух фильтров приведет к созданию двух массивов.
  2. Добавление смещения (Bias): К каждому полученному результату свертки добавляется смещение — вещественное число. Оно транслируется на все элементы матрицы (broadcasting).
  3. Применение нелинейности: К сумме свертки и смещения применяется функция активации, например, ReLU (Rectified Linear Unit).
  4. Стекинг (объединение): После применения нелинейности полученные карты признаков объединяются в единый выходной объем (например, $4 \times 4 \times 2$).

Этот вычислительный процесс аналогичен прямому распространению (forward propagation) в стандартных полносвязных нейронных сетях, где фильтры играют роль весов $W$, а операция свертки — роль линейного преобразования $Z = W \cdot A + b$.

Параметры и эффективность 5:07

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

Нотация сверточного слоя 7:07

Для описания слоев в DeepLearning.AI используется систематизированная нотация, которая помогает отслеживать размеры данных:

Формула для вычисления размерности выхода по высоте и ширине остается классической: $$\frac{n + 2p - f}{s} + 1$$ (результат округляется вниз).

Количество каналов в выходе ($n_C^{[l]}$) всегда равно количеству фильтров, используемых в данном слое. Важно учитывать, что глубина фильтра всегда должна соответствовать количеству каналов входного объема.

Нюансы реализации 14:13

Несмотря на наличие стандартов, в индустрии нет универсального соглашения об индексации (порядок: высота-ширина-каналы или каналы-высота-ширина). В зависимости от используемого программного фреймворка, порядок следования параметров может отличаться.

Автор отмечает, что запоминание всей нотации сразу не требуется — практический опыт работы с упражнениями поможет закрепить эти концепции естественным образом.

💬 Цитаты

«Неважно, насколько велико входное изображение, количество параметров остается фиксированным.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Свертка
Математическая операция, при которой фильтр «скользит» по входному изображению, выделяя признаки.
ReLU
Функция активации, которая заменяет все отрицательные значения на ноль.
Padding
Дополнение границ входного массива данными (обычно нулями) для контроля размера выходной карты.
Stride
Шаг, с которым фильтр передвигается по входному изображению.
Broadcasting
Механизм, позволяющий применять арифметические операции к массивам разных размеров.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Convolutional Neural Networks DeepLearning.AI ReLU Forward Propagation