Свёрточные нейронные сети (CNN, Convolutional Neural Networks) — это тип глубоких нейронных сетей, которые лучше всего подходят для обработки данных с пространственной структурой — это и изображения и видео, а так же некоторые виды аудио (например, спектрограмм).
Для чего они нужны
Обычные (полносвязные) нейросети воспринимают изображение как длинный список чисел (значений пикселей) и не учитывают, что рядом находящиеся пиксели связаны между собой. CNN же специально устроены так, чтобы «видеть» локальные паттерны: края, углы, текстуры — а потом из них собирать более сложные объекты (шар, камень, лицо и т. д.).
Как устроена CNN: ключевые слои
- Свёрточный слой (Convolutional Layer) — ядро CNN. Здесь применяется функция свёртки: небольшой фильтр (ядро, kernel) «скользит» по картинке и выделяет локальные признаки.
Например, фильтр 3×3 будет искать вертикальные линии. Математически это скалярное произведение фильтра с участком изображения; результат — карта признаков (feature map).
2. Функция активации (чаще всего ReLU — Rectified Linear Unit) добавляет нелинейность: отрицательные значения убираются, положительные остаются. Это позволяет сети обучаться более сложным зависимостям.
3. Слой подвыборки (Pooling Layer) снижает размер карт признаков, сохраняя важные детали. Самый популярный вариант — max pooling: в окне 2×2 берётся максимальное значение. Это снижает вычислительную нагрузку и делает сеть устойчивее к небольшим сдвигам объекта на изображении.
4. Полносвязный слой (Fully Connected Layer) появляется ближе к выходу: данные «разворачиваются» в вектор и обрабатываются как в обычной нейросети, чтобы выдать итоговый результат (например, класс объекта: «дом», «дерево» и т. п.).
Что такое операция свёртки более проще
Представь, что у Вас есть фотография и маленькое «увеличительное стекло» (фильтр), которое вы методично двигаете по всему изображению. В каждой позиции вы смотрите, насколько фрагмент под стеклом похож на какой‑то шаблон (например, на угол или границу). Если похож — в соответствующей ячейке карты признаков будет большое число. Так сеть учится распознавать простые элементы, а на следующих слоях — комбинировать их в сложные образы.
Важные параметры свёртки
- Размер ядра (3×3, 5×5 и другие) — определяет, какой участок картинки анализируется за раз.
- Шаг (stride) — на сколько пикселей сдвигается фильтр после каждого шага.
- Дополнение (padding) — добавление нулей по краям картинки, чтобы сохранить его размер после свёртки.
Примеры известных архитектур CNN
- LeNet-5 (Янн Лекун, конец 1990‑х) — одна из первых CNN, использовалась для распознавания рукописных цифр.
- AlexNet (2012) — прорывная сеть, которая показала силу глубоких CNN на конкурсе ImageNet.
- VGG, ResNet, EfficientNet — более современные архитектуры, где ResNet использует «остаточные связи» для обучения очень глубоких сетей.
Где применяют CNN
- Распознавание и классификация картинок: определение объектов, лиц, видов животных и т. д.
- Медицинская диагностика: анализ рентгеновских снимков, МРТ, выявление патологий.
- Автономные системы: беспилотники и автопилоты анализируют дорожную обстановку.
- Видеонаблюдение и безопасность: детекция людей, отслеживание движений.
- Промышленность: контроль качества продукции, поиск дефектов в промышленности (конвейере).
Ограничения CNN
- Слабее справляются с задачами, где важен глобальный контекст или длинные последовательности (для этого лучше подходят трансформеры).
- Чувствительны к размеру и ориентации входных данных (хотя аугментация и специальные приёмы помогают это компенсировать).
- Нужно много данных и вычислительных ресурсов для обучения.
CNN — отличный пример, где видна разница между «просто нейросетью» и специализированной архитектурой: она не просто перемножает числа, а использует структуру данных (соседство пикселей) для более эффективного обучения.
Если скажешь, какой уровень тебе ближе (совсем для новичков, с примерами кода или с упором на математику) — могу разобрать подробнее.