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

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

English Convolutional layer, Conv layer
Синонимы Конв-слой, Convolution layer, слой свёртки

Свёрточный слой — слой нейросети, который применяет фильтры к входным данным для извлечения признаков — границ, текстур, форм — с сохранением пространственной структуры.

Что такое свёрточный слой

Свёрточный слой — это тип слоя в нейронной сети, который выполняет операцию свёртки: применяет небольшой фильтр (ядро) к входным данным, вычисляя взвешенную сумму значений под фильтром. В отличие от полносвязного слоя, где каждый нейрон соединён со всеми элементами предыдущего слоя, свёрточный слой использует разделяемые веса и локальные связи.

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

Фильтр — это матрица весов, например 3×3 или 5×5. Он «скользит» по входным данным с определённым шагом (stride), и в каждой позиции вычисляется скалярное произведение значений фильтра и соответствующих входных значений. Результат записывается в новую матрицу — карту признаков.

Ключевая идея: один и тот же фильтр применяется ко всем участкам входа. Это даёт два преимущества. Во-первых, резко сокращается число параметров по сравнению с полносвязным слоем. Во-вторых, сеть учится распознавать признак независимо от его положения на изображении — фильтр, обучившийся находить вертикальные границы, найдёт их и в левом верхнем углу, и в правом нижнем.

Обычно свёрточный слой содержит несколько фильтров (например, 32, 64 или 128). Каждый фильтр создаёт свою карту признаков, и все они передаются на следующий слой. После свёртки часто применяется нелинейная функция активации, чаще всего ReLU, которая обнуляет отрицательные значения.

Зачем это нужно

Свёрточные слои — основа компьютерного зрения. Они позволяют нейросети автоматически извлекать иерархию признаков: первые слои находят простые элементы (грани, углы, цветовые переходы), более глубокие — сложные структуры (текстуры, части объектов, целые объекты). Это устраняет необходимость в ручном проектировании признаков, которое было стандартом до эпохи глубокого обучения.

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

Примеры

  • Распознавание рукописных цифр (MNIST). Первый свёрточный слой с 6 фильтрами 5×5 выделяет базовые элементы цифр. Второй свёрточный слой с 16 фильтрами комбинирует их в более сложные паттерны. После нескольких слоёв сеть отличает «3» от «8».
  • Классификация изображений (ImageNet). В сети VGG16 первый свёрточный слой содержит 64 фильтра 3×3. Каждый фильтр учится реагировать на свой тип градиента — горизонтальный, вертикальный, диагональный.
  • Медицинская визуализация. Свёрточные слои помогают выделять патологические изменения на рентгеновских снимках: фильтры обучаются находить затемнения и аномальные контуры, характерные для пневмонии или опухолей.
  • Детекция объектов. В архитектурах типа YOLO свёрточные слои последовательно уменьшают пространственную размерность и увеличивают число каналов, формируя признаки для предсказания координат и классов объектов.

Формула или метрика

Размер выходной карты признаков для одного измерения:

W₂ = (W₁ − F + 2P) / S + 1

Где:

  • W₁ — размер входа по данной оси
  • F — размер ядра (фильтра)
  • P — размер padding (заполнения нулями по краям)
  • S — stride (шаг)

Число обучаемых параметров в свёрточном слое: F² × C × K + K, где C — число входных каналов, K — число фильтров.

Типичные ошибки

  • Слишком большое ядро без необходимости. Ядро 7×7 или 11×11 увеличивает число параметров квадратично и замедляет обучение. В большинстве случаев стек из двух слоёв 3×3 даёт то же рецептивное поле с меньшим числом параметров.
  • Игнорирование padding. Без padding каждый слой «съедает» края изображения. После нескольких слоёв от исходного разрешения остаётся небольшая центральная область. Padding=same сохраняет размер.
  • Слишком много фильтров на ранних слоях. Первые слои извлекают простые признаки, для которых достаточно 32–64 фильтров. Увеличение до 512 на входе ведёт к переобучению и росту вычислений без выигрыша в качестве.
  • Отсутствие нормализации. Без batch normalization или адекватной инициализации весов глубокие свёрточные сети плохо обучаются из-за затухания или взрыва градиентов.

Как улучшить

  • Используйте ядра 3×3. Это стандарт де-факто: два слоя 3×3 имеют рецептивное поле 5×5, но меньше параметров и больше нелинейности, чем один слой 5×5.
  • Добавляйте padding. padding='same' сохраняет пространственные размеры, что упрощает проектирование архитектуры и предотвращает потерю информации на краях.
  • Увеличивайте число фильтров по мере углубления. Типичная схема: 32 → 64 → 128 → 256. Ранние слои извлекают простые признаки, поздние комбинируют их в сложные концепции.
  • Применяйте batch normalization после свёртки. Это стабилизирует распределение активаций и позволяет использовать более высокий learning rate.
  • Экспериментируйте с 1×1 свёртками. Они не увеличивают рецептивное поле, но меняют число каналов и добавляют нелинейность между слоями. Используются в архитектурах Inception и ResNet для снижения вычислительной сложности.

Источники

Microsoft Learn — Сверточная нейронная сеть (курс по глубокому обучению)

Stanford CS231n — Lecture 5: Convolutional Neural Networks (курс по компьютерному зрению)

Google for Developers — Machine Learning Glossary: Convolutional Layer