🧩 Как работает один слой сверточной нейронной сети 0:03
Понимание того, как функционирует отдельный слой сверточной нейронной сети (Convolutional Neural Network, CNN), является фундаментом для построения глубоких архитектур. В этом процессе исходный трехмерный объем данных проходит через серию фильтров, преобразуясь в активации следующего слоя.
Механика преобразования данных 0:15
Процесс перехода от входа к выходу внутри одного слоя можно разделить на несколько последовательных этапов:
- Операция свертки: Исходный объем (например, $6 \times 6 \times 3$) свертывается с заданным количеством фильтров. Каждый фильтр порождает двумерный выходной массив. Например, использование двух фильтров приведет к созданию двух массивов.
- Добавление смещения (Bias): К каждому полученному результату свертки добавляется смещение — вещественное число. Оно транслируется на все элементы матрицы (broadcasting).
- Применение нелинейности: К сумме свертки и смещения применяется функция активации, например, ReLU (Rectified Linear Unit).
- Стекинг (объединение): После применения нелинейности полученные карты признаков объединяются в единый выходной объем (например, $4 \times 4 \times 2$).
Этот вычислительный процесс аналогичен прямому распространению (forward propagation) в стандартных полносвязных нейронных сетях, где фильтры играют роль весов $W$, а операция свертки — роль линейного преобразования $Z = W \cdot A + b$.
Параметры и эффективность 5:07
Одной из важнейших особенностей сверточных сетей является фиксированное количество параметров, что делает их устойчивыми к переобучению, независимо от размера входного изображения.
- Расчет параметров: Если у нас есть 10 фильтров размером $3 \times 3 \times 3$, каждый фильтр содержит 27 весов плюс 1 параметр смещения. Итого: $28 \times 10 = 280$ параметров.
- Масштабируемость: Даже если входное изображение увеличится с $1000 \times 1000$ до $5000 \times 5000$, количество обучаемых параметров останется равным 280. Это позволяет эффективно детектировать признаки, такие как края или формы, в любом месте изображения с минимальными вычислительными затратами.
Нотация сверточного слоя 7:07
Для описания слоев в DeepLearning.AI используется систематизированная нотация, которая помогает отслеживать размеры данных:
- $F^{[l]}$: размер фильтра в слое $l$.
- $P^{[l]}$: количество дополнения (padding).
- $S^{[l]}$: размер шага (stride).
- $n_H^{[l]}, n_W^{[l]}, n_C^{[l]}$: высота, ширина и количество каналов выходного объема слоя $l$.
Формула для вычисления размерности выхода по высоте и ширине остается классической: $$\frac{n + 2p - f}{s} + 1$$ (результат округляется вниз).
Количество каналов в выходе ($n_C^{[l]}$) всегда равно количеству фильтров, используемых в данном слое. Важно учитывать, что глубина фильтра всегда должна соответствовать количеству каналов входного объема.
Нюансы реализации 14:13
Несмотря на наличие стандартов, в индустрии нет универсального соглашения об индексации (порядок: высота-ширина-каналы или каналы-высота-ширина). В зависимости от используемого программного фреймворка, порядок следования параметров может отличаться.
Автор отмечает, что запоминание всей нотации сразу не требуется — практический опыт работы с упражнениями поможет закрепить эти концепции естественным образом.