Сверточные нейронные сети

Материал из 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 — последовательно улучшали точность и глубину сетей.

Свёрточная операция

Математическая формулировка

Свёртка для двумерного изображения I размера H \times W с ядром (фильтром) K размера h \times w определяется как:

(I * K)(i, j) = \sum_{m=0}^{h-1} \sum_{n=0}^{w-1} I(i + m, j + n) \cdot K(m, n)

В случае многоканального изображения (например, RGB) свёртка выполняется по всем каналам с суммированием результатов.

Основные понятия

  • Ядро свёртки — матрица весов небольшого размера (обычно 3×3, 5×5, 7×7), которая скользит по изображению.
  • Карта признаков (feature map) — результат применения одного ядра ко всему изображению. Количество карт признаков в слое равно числу ядер.
  • Шаг (stride) — расстояние между позициями ядра при скольжении.
  • Дополнение (padding) — добавление нулей по краям изображения для сохранения размерности или обработки краёв.

Пример работы свёртки

Рассмотрим изображение 5×5 пикселей и ядро 3×3. При шаге 1 без дополнения результирующая карта признаков будет иметь размер 3×3. Каждое значение карты вычисляется как сумма поэлементных произведений ядра и соответствующей области изображения.

Например, ядро, выделяющее вертикальные края:


K = \begin{bmatrix}
-1 & 0 & 1 \\
-1 & 0 & 1 \\
-1 & 0 & 1
\end{bmatrix}

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

Операция пулинга

Пулинг (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 слоёв, решая проблему деградации (ухудшение качества при увеличении глубины). Остаточный блок имеет вид:

y = F(x, \{W_i\}) + x

Это нововведение обеспечило победу в 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 остаются стандартом для задач с ограниченными вычислительными ресурсами и данными, продолжая развиваться в направлении эффективных архитектур для мобильных устройств и методов обучения с ограниченной разметкой.

См. также

Примечания


Литература

  1. 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.
  2. LeCun Y., Bottou L., Bengio Y., Haffner P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11): 2278–2324.
  3. Krizhevsky A., Sutskever I., Hinton G. E. (2012). ImageNet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems, 25: 1097–1105.
  4. Simonyan K., Zisserman A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv:1409.1556.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Dosovitskiy A., Beyer L., Kolesnikov A., et al. (2020). An image is worth 16x16 words: Transformers for image recognition at scale. arXiv:2010.11929.

Ссылки

Личные инструменты