Сверточные нейронные сети
Материал из MachineLearning.
| | Статья написана с использованием LLM GPT-4 Turbo и проверена участником Amir Baidanov 02:54, 19 июля 2026 (MSD) |
Свёрточные нейронные сети (Convolutional Neural Networks, CNN) — класс нейронных сетей, специализированный для обработки данных с известной сетчатой структурой, таких как изображения, видео, временные ряды и трёхмерные данные. CNN используют операцию свёртки вместо полносвязных слоёв, что позволяет эффективно выделять пространственные иерархические признаки. Благодаря инвариантности к сдвигу, локальным связям и разделению параметров CNN стали стандартом в компьютерном зрении и нашли применение в распознавании образов, детекции объектов, сегментации и многих других задачах.
Интуитивная картина
Представьте, что вы хотите найти на фотографии кошку. Вместо того чтобы анализировать каждый пиксель по отдельности, вы используете небольшой шаблон (фильтр), который сканирует изображение и ищет характерные признаки: края, углы, текстуры. На первом уровне фильтры находят простые структуры (горизонтальные и вертикальные линии). На следующем уровне эти структуры объединяются в более сложные (морда, уши, лапы). На более глубоких уровнях сеть распознаёт целые объекты. Этот иерархический подход и лежит в основе CNN.
Свёрточные сети принципиально отличаются от полносвязных тем, что каждый нейрон обрабатывает лишь небольшую локальную область изображения (рецептивное поле), а не все пиксели сразу. Это делает их эффективными и устойчивыми к небольшим смещениям объектов в кадре.
Историческая справка
Истоки свёрточных сетей восходят к 1980-м годам, когда Кунихико Фукусима предложил Neocognitron — архитектуру, вдохновлённую зрительной корой млекопитающих [1]. В 1998 году Ян Лекун и его коллеги разработали LeNet-5 для распознавания рукописных цифр [1].
Настоящий прорыв произошёл в 2012 году, когда архитектура AlexNet (Алекс Крижевский, Илья Суцкевер, Джеффри Хинтон) выиграла соревнование ImageNet, превзойдя все традиционные методы [1]. Это событие ознаменовало начало эры глубокого обучения в компьютерном зрении. Последующие архитектуры — VGG, Inception, ResNet, DenseNet — последовательно улучшали точность и глубину сетей.
Свёрточная операция
Математическая формулировка
Свёртка для двумерного изображения размера
с ядром (фильтром)
размера
определяется как:
В случае многоканального изображения (например, RGB) свёртка выполняется по всем каналам с суммированием результатов.
Основные понятия
- Ядро свёртки — матрица весов небольшого размера (обычно 3×3, 5×5, 7×7), которая скользит по изображению.
- Карта признаков (feature map) — результат применения одного ядра ко всему изображению. Количество карт признаков в слое равно числу ядер.
- Шаг (stride) — расстояние между позициями ядра при скольжении.
- Дополнение (padding) — добавление нулей по краям изображения для сохранения размерности или обработки краёв.
Пример работы свёртки
Рассмотрим изображение 5×5 пикселей и ядро 3×3. При шаге 1 без дополнения результирующая карта признаков будет иметь размер 3×3. Каждое значение карты вычисляется как сумма поэлементных произведений ядра и соответствующей области изображения.
Например, ядро, выделяющее вертикальные края:
Это ядро даёт высокие значения там, где интенсивность пикселей резко меняется по горизонтали, и низкие — на однородных участках. На первом слое сеть обучается таким простым детекторам краёв. На последующих слоях комбинации таких фильтров дают более сложные признаки (углы, текстуры, формы).
Операция пулинга
Пулинг (pooling) — операция сжатия карт признаков, уменьшающая их пространственную размерность. Основные типы:
- Max pooling — выбирается максимальное значение в окне. Обеспечивает инвариантность к малым сдвигам и выделяет наиболее значимые признаки.
- Average pooling — вычисляется среднее значение в окне. Даёт более плавное сжатие.
Пулинг уменьшает размерность, снижает вычислительную нагрузку и помогает бороться с переобучением.
Ключевые архитектуры
LeNet-5 (1998)
Первая успешная архитектура CNN для распознавания рукописных цифр (MNIST). Состояла из двух свёрточных слоёв, чередующихся с субдискретизацией, и трёх полносвязных слоёв. Использовала средние пулы и сигмоидные активации.
AlexNet (2012)
Революционная архитектура, выигравшая ImageNet 2012 с ошибкой 15.3% против 26.2% у второго места. Ключевые инновации:
- Использование ReLU вместо сигмоида для ускорения обучения;
- Dropout для регуляризации;
- Аугментация данных;
- Обучение на двух GPU с параллелизацией.
VGG (2014)
Архитектура, продемонстрировавшая, что глубина имеет значение. Использовала только ядра 3×3 с шагом 1 и пулинг 2×2 с шагом 2, что позволило создать сети глубиной 16–19 слоёв. Простота и унифицированность стали её главным достоинством [1].
ResNet (2015)
Внедрение остаточных связей (skip connections) позволило обучать сети глубиной до 152 слоёв, решая проблему деградации (ухудшение качества при увеличении глубины). Остаточный блок имеет вид:
Это нововведение обеспечило победу в ImageNet 2015 с ошибкой 3.57% [1].
Другие важные архитектуры
- Inception (GoogLeNet) — использование модулей с параллельными свёртками разных размеров для захвата признаков на разных масштабах [1];
- DenseNet — прямые соединения между всеми слоями, что улучшает поток градиентов и уменьшает число параметров [1];
- MobileNet — лёгкие архитектуры с depthwise separable convolution для мобильных устройств.
Transfer learning и использование предобученных моделей
Одним из ключевых преимуществ CNN является возможность использования предобученных на больших данных моделей (например, ImageNet) для решения новых задач. Подход включает: 1. Использование CNN как экстрактора признаков (заморозка весов всех свёрточных слоёв); 2. Дообучение полносвязных слоёв для новой задачи; 3. Тонкая настройка всех слоёв (fine-tuning) с малой скоростью обучения.
Это значительно сокращает время обучения и позволяет достигать высокого качества даже при небольшом объёме размеченных данных.
Практические приложения
Классификация изображений
Основная задача — отнесение изображения к одному из классов. CNN достигли сверхчеловеческой точности на многих датасетах (ImageNet, CIFAR).
Детекция объектов
Поиск и локализация объектов на изображении с использованием архитектур:
- R-CNN и его улучшения (Fast R-CNN, Faster R-CNN) — двухэтапные детекторы;
- YOLO и SSD — одноэтапные детекторы для реального времени.
Сегментация изображений
Попиксельная классификация:
- FCN — полностью свёрточные сети для семантической сегментации;
- U-Net — архитектура с пропускающими соединениями для медицинской сегментации [1];
- Mask R-CNN — для экземплярной сегментации.
Другие применения
- Обработка видео (распознавание действий, трекинг);
- Медицинская диагностика (анализ снимков МРТ, КТ, рентгена);
- Автономное вождение (распознавание дорожных знаков, пешеходов);
- Генерация изображений (GAN, вариационные автокодировщики).
Современные направления
Архитектуры для мобильных устройств
Разработка лёгких и быстрых моделей (MobileNet, ShuffleNet, EfficientNet) с использованием depthwise separable convolution, групповых свёрток и нейронного поиска архитектур.
Нейронный поиск архитектур (NAS)
Автоматический поиск оптимальных архитектур CNN с использованием обучения с подкреплением или эволюционных алгоритмов. Примеры: EfficientNet, AmoebaNet [1].
Трансформеры в компьютерном зрении
Архитектуры на основе механизма внимания (ViT, DETR) начинают конкурировать с традиционными CNN, особенно при больших объёмах данных [1]. Однако CNN остаются доминирующими для многих практических задач благодаря эффективности и проверенной надёжности.
Обучение без учителя и самообучение
Методы контрастивного обучения (SimCLR, MoCo) позволяют обучать CNN на неразмеченных данных, что особенно актуально при ограниченной разметке.
Преимущества и недостатки
Преимущества
- Инвариантность к сдвигу, масштабу и частичным искажениям;
- Разделение параметров (значительно меньше весов, чем у полносвязных сетей);
- Иерархическое извлечение признаков;
- Эффективность обработки изображений любого размера.
Недостатки
- Требуют больших объёмов данных для качественного обучения;
- Высокие вычислительные затраты (особенно при обучении);
- Сложность интерпретации работы внутренних слоёв;
- Чувствительность к аугментации и предобработке.
Краткий вывод
Свёрточные нейронные сети стали основой компьютерного зрения благодаря способности эффективно извлекать иерархические пространственные признаки из изображений. Эволюция от LeNet-5 до современных архитектур (ResNet, EfficientNet, ViT) демонстрирует непрерывное улучшение точности и эффективности. CNN применяются в классификации, детекции, сегментации и других задачах, а концепция предобучения (transfer learning) сделала их доступными для широкого круга приложений. Несмотря на появление трансформеров, CNN остаются стандартом для задач с ограниченными вычислительными ресурсами и данными, продолжая развиваться в направлении эффективных архитектур для мобильных устройств и методов обучения с ограниченной разметкой.
См. также
Примечания
Литература
- Fukushima K. (1980). Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4): 193–202.
- LeCun Y., Bottou L., Bengio Y., Haffner P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11): 2278–2324.
- Krizhevsky A., Sutskever I., Hinton G. E. (2012). ImageNet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems, 25: 1097–1105.
- Simonyan K., Zisserman A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv:1409.1556.
- Szegedy C., Liu W., Jia Y., et al. (2015). Going deeper with convolutions. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 1–9.
- He K., Zhang X., Ren S., Sun J. (2016). Deep residual learning for image recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 770–778.
- Huang G., Liu Z., Van Der Maaten L., Weinberger K. Q. (2017). Densely connected convolutional networks. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 4700–4708.
- Ronneberger O., Fischer P., Brox T. (2015). U-Net: Convolutional networks for biomedical image segmentation. International Conference on Medical Image Computing and Computer-Assisted Intervention, 234–241.
- Zoph B., Vasudevan V., Shlens J., Le Q. V. (2018). Learning transferable architectures for scalable image recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 8697–8710.
- Dosovitskiy A., Beyer L., Kolesnikov A., et al. (2020). An image is worth 16x16 words: Transformers for image recognition at scale. arXiv:2010.11929.
Ссылки
- CS231n Convolutional Neural Networks — отличный курс с подробным объяснением.
- CNN на PyTorch — туториал по обучению свёрточной сети.
- CNN в TensorFlow — примеры и документация.
- Сравнение архитектур на Papers with Code

