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

Источник: https://www.youtube.com/watch?v=jPOAS7uCODQ
Канал: DeepLearning.AI
Опубликовано: 07.11.2017

---

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

[[JUMP:00:03]]

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

### Механика преобразования данных
[[JUMP:00: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$.

### Параметры и эффективность
[[JUMP:05:07]]

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

* **Расчет параметров:** Если у нас есть 10 фильтров размером $3 \times 3 \times 3$, каждый фильтр содержит 27 весов плюс 1 параметр смещения. Итого: $28 \times 10 = 280$ параметров.
* **Масштабируемость:** Даже если входное изображение увеличится с $1000 \times 1000$ до $5000 \times 5000$, количество обучаемых параметров останется равным 280. Это позволяет эффективно детектировать признаки, такие как края или формы, в любом месте изображения с минимальными вычислительными затратами.

### Нотация сверточного слоя
[[JUMP:07: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]}$) всегда равно количеству фильтров, используемых в данном слое. Важно учитывать, что глубина фильтра всегда должна соответствовать количеству каналов входного объема.

### Нюансы реализации
[[JUMP:14:13]]

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

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