Объясните архитектуру сверточной нейронной сети (CNN).
Сверточная нейронная сеть (CNN, Convolutional Neural Network) — это тип глубокой нейронной сети, специально разработанный для обработки данных с сеточной структурой, например изображений, которые можно представить в виде двумерной решетки пикселей. CNN широко используется в задачах компьютерного зрения, таких как классификация изображений, детекция объектов, сегментация и др. Архитектура CNN состоит из последовательности слоев, каждый из которых выполняет определенные функции. Ниже подробно рассматриваются основные компоненты архитектуры CNN:
1. Входной слой
Это первый слой сети, принимающий входные данные. Например, цветное изображение размером 128×128 пикселей будет иметь размерность входного тензора (128, 128, 3), где 3 — это количество цветовых каналов (RGB). Этот тензор передается в сеть как многомерный массив чисел с плавающей точкой.
2. Сверточный слой (Convolutional Layer)
Основной строительный блок CNN. Он применяет к входному изображению набор фильтров (ядра свертки). Каждый фильтр скользит по изображению (обычно с шагом 1 или 2) и вычисляет свёртку — поэлементное произведение значений фильтра и участка входа, с последующим суммированием. Это позволяет обнаруживать такие признаки, как края, углы, текстуры.
Параметры:
-
Размер фильтра (обычно 3×3 или 5×5)
-
Количество фильтров (например, 32 или 64 — задаёт глубину выходного тензора)
-
Stride (шаг) — насколько фильтр сдвигается при сканировании
-
Padding — добавление рамки нулей по краям, чтобы сохранить размерность выходного изображения
Результатом свёртки является набор карт признаков (feature maps), каждая из которых активируется при обнаружении соответствующего паттерна на изображении.
3. Функция активации (обычно ReLU)
После каждой свёртки применяют нелинейную функцию активации, чаще всего ReLU (Rectified Linear Unit):
f(x)=max(0,x)f(x) = \max(0, x)
Она убирает отрицательные значения, сохраняя положительные, тем самым добавляя в сеть нелинейность и помогая лучше моделировать сложные зависимости.
4. Субдискретизирующий слой / слой подвыборки (Pooling Layer)
Этот слой уменьшает пространственные размеры карты признаков, сокращая количество параметров и вычислений, а также делая признаки более устойчивыми к смещениям.
Виды pooling:
-
Max pooling — выбирает максимум из каждого окна (например, 2×2)
-
Average pooling — берёт среднее значение
Например, 2×2 max pooling с шагом 2 уменьшает размер карты признаков с 128×128 до 64×64.
Pooling не изменяет глубину (количество каналов), но уменьшает ширину и высоту тензора.
5. Комбинации сверточных и pooling слоев
Сеть обычно включает несколько блоков из чередующихся сверточных и pooling слоев. Это позволяет сначала извлекать низкоуровневые признаки (границы, углы), а затем — более абстрактные (формы, объекты). С увеличением глубины сети количество фильтров увеличивается, а размер карты признаков — уменьшается.
6. Выравнивание (Flattening)
После нескольких сверточных и pooling слоев многомерный тензор преобразуется в одномерный вектор — операция называется flatten. Например, тензор размером (4, 4, 128) превращается в вектор длиной 2048. Это необходимо для подачи данных в полносвязный слой.
7. Полносвязный слой (Fully Connected Layer)
Классический слой из обычной нейронной сети, где каждый нейрон соединён со всеми выходами предыдущего слоя. Здесь происходит интеграция признаков, извлечённых сверточными слоями, и принятие решений (например, к какому классу принадлежит изображение).
Может быть один или несколько таких слоёв. Чем их больше, тем выше способность к обучению, но и риск переобучения.
8. Выходной слой
Обычно это полносвязный слой с числом нейронов, равным числу классов. Он применяет функцию активации softmax:
softmax(zi)=ezi∑j=1Kezj\\text{softmax}(z_i) = \\frac{e^{z_i}}{\\sum_{j=1}^K e^{z_j}}
Softmax превращает выходы в вероятностное распределение, где сумма всех значений равна 1. Выход с наибольшей вероятностью интерпретируется как предсказанный класс.
9. Обучаемые параметры
Основные параметры, которые обучаются во время тренировки:
-
веса фильтров в сверточных слоях
-
веса и смещения в полносвязных слоях
Обучение происходит с помощью обратного распространения ошибки (backpropagation) и градиентного спуска, где функция потерь показывает, насколько предсказание отклоняется от истинного значения.
10. Регуляризация и нормализация
Чтобы повысить устойчивость и обобщающую способность сети, часто используют:
-
Dropout — случайное "выключение" нейронов в полносвязных слоях во время обучения
-
Batch Normalization — нормализация входов слоя, ускоряет обучение и стабилизирует сеть
-
L2-регуляризация — штраф за слишком большие веса
11. Примеры архитектур CNN
Существуют классические архитектуры CNN, каждая из которых использует различные комбинации вышеперечисленных слоёв:
-
LeNet-5 — одна из первых CNN, применялась к распознаванию цифр
-
AlexNet — победитель ImageNet 2012, первая глубокая CNN
-
VGGNet — использует последовательные 3×3 свёртки
-
ResNet — использует остаточные соединения (residual blocks), решая проблему затухающего градиента
-
Inception — применяет сверточные фильтры разного размера параллельно
Таким образом, CNN трансформирует входные изображения в многомерные абстрактные признаки и принимает решения о содержимом изображения через последовательные преобразования в сверточных, pooling и полносвязных слоях.