Свёрточные нейронные сети
Свёрточная нейронная сеть (ConvNet, CNN) — это класс искусственных нейронных сетей, архитектура которых специально спроектирована для эффективного распознавания пространственных иерархий признаков в данных, имеющих решётчатую топологию, наиболее часто — в изображениях. Основной операцией в таких сетях является математическая свёртка, которая позволяет автоматически извлекать локальные, инвариантные к сдвигу признаки, такие как рёбра, текстуры и формы, без необходимости ручного проектирования фильтров.
История
Предпосылки и ранние работы
Идеи, лежащие в основе свёрточных сетей, восходят к исследованиям нейрофизиологов Дэвида Хьюбела и Торстена Визеля, которые в 1959 году описали простые и сложные клетки в зрительной коре кошек. Эти клетки реагировали на локальные участки поля зрения (рецептивные поля) и были чувствительны к ориентации линий. В 1980 году японский исследователь Кунихико Фукусима разработал неокогнитрон — первую искусственную нейронную сеть, вдохновлённую этой биологической моделью. Неокогнитрон использовал иерархию слоёв с чередованием свёрточных и субдискретизирующих (pooling) операций, что стало прототипом современных CNN.
Ключевые прорывы
В 1989 году Ян Лекун и его коллеги из Bell Labs применили алгоритм обратного распространения ошибки к свёрточным сетям для распознавания рукописных цифр. Они создали сеть LeNet-5, которая успешно обрабатывала изображения почтовых индексов. Однако широкое распространение CNN сдерживалось ограниченными вычислительными мощностями и малыми объёмами данных. Второй прорыв произошёл в 2012 году, когда команда Джеффри Хинтона (Алекс Крижевский, Илья Суцкевер) представила сеть AlexNet на конкурсе ImageNet. AlexNet, обученная на двух графических процессорах (GPU), показала значительно более высокую точность классификации изображений по сравнению с традиционными методами машинного зрения, что положило начало «глубокой революции» в компьютерном зрении.
Архитектура
Свёрточная нейронная сеть состоит из трёх основных типов слоёв: свёрточного, субдискретизирующего (пулинг) и полносвязного. Эти слои организуются в последовательную или более сложную (например, остаточную) архитектуру.
Свёрточный слой
Свёрточный слой является основным строительным блоком CNN. Он содержит набор обучаемых фильтров (ядер свёртки) — небольших матриц весов (например, 3×3 или 5×5 пикселей). Каждый фильтр сканирует входное изображение (или карту признаков предыдущего слоя), выполняя поэлементное умножение и суммирование (свёртку). Результатом является карта признаков, которая активируется при обнаружении определённого шаблона (например, вертикальной границы или угла). Ключевыми параметрами являются:
- Размер ядра — определяет локальность признака.
- Шаг (stride) — шаг перемещения фильтра по изображению.
- Паддинг (padding) — добавление нулей по краям для сохранения пространственных размеров.
Субдискретизирующий слой (Pooling)
Слой пулинга уменьшает пространственную размерность карт признаков, снижая вычислительную нагрузку и количество параметров, а также обеспечивая инвариантность к небольшим сдвигам и искажениям. Наиболее распространённый тип — максимальный пулинг (max pooling), который выбирает максимальное значение из окна (например, 2×2). Другие варианты включают средний пулинг (average pooling) и глобальный средний пулинг.
Функция активации
После свёртки или полносвязного слоя применяется нелинейная функция активации. В современных CNN стандартом является ReLU (Rectified Linear Unit, выпрямленный линейный блок), вычисляющая f(x) = max(0, x). Она решает проблему исчезающего градиента, характерную для сигмоиды или гиперболического тангенса, и ускоряет обучение.
Полносвязный слой
В конце сети, после нескольких блоков свёртки и пулинга, обычно располагаются один или несколько полносвязных слоёв. Они выполняют роль «классификатора», преобразуя двумерные карты признаков в одномерный вектор и сопоставляя его с целевыми классами (например, «кошка», «собака», «автомобиль»). Выходной слой часто использует функцию Softmax для получения вероятностей принадлежности к каждому классу.
Классификация архитектур
За годы развития было предложено множество архитектур CNN, которые можно условно разделить на несколько поколений:
Классические архитектуры
- LeNet-5 (1998): 7 слоёв, включая два свёрточных и два пулинговых. Предназначена для распознавания рукописных цифр размером 32×32.
- AlexNet (2012): 8 слоёв (5 свёрточных, 3 полносвязных). Использовала ReLU, Dropout (регуляризация) и обучение на GPU. Впервые применила локальную нормализацию ответа.
- VGGNet (2014): Унифицированная архитектура с ядрами 3×3 и глубиной до 16–19 слоёв. Показала, что увеличение глубины улучшает точность, но требовала больших вычислительных ресурсов.
Архитектуры с остаточными связями
- ResNet (2015): Ввела концепцию остаточного обучения (residual learning) с помощью «коротких замыканий» (skip connections), позволяющих градиенту напрямую проходить через несколько слоёв. Это позволило строить сети глубиной до 152 слоёв и более (например, ResNet-152). ResNet стала победителем конкурса ILSVRC 2015.
- DenseNet (2017): Каждый слой соединяется со всеми последующими слоями (плотные связи), что улучшает распространение градиента и повторное использование признаков.
Лёгкие и мобильные архитектуры
- MobileNet (2017): Использует разделимые по глубине свёртки (depthwise separable convolutions), которые значительно снижают количество параметров и вычислительную сложность, делая сеть пригодной для мобильных устройств.
- SqueezeNet (2016): Достигает точности AlexNet при в 50 раз меньшем количестве параметров за счёт использования «сжимающих» слоёв (fire modules).
Применение
Свёрточные нейронные сети нашли широкое применение в различных областях, где требуется анализ визуальных или пространственных данных.
Компьютерное зрение
- Классификация изображений: Определение основного объекта на фотографии (например, порода собаки, марка автомобиля).
- Обнаружение объектов (Object Detection): Локализация и классификация нескольких объектов на изображении. Популярные архитектуры: YOLO (You Only Look Once), Faster R-CNN, SSD.
- Сегментация изображений: Разделение изображения на сегменты, соответствующие различным объектам или материалам (например, пиксельная маска пешехода на дороге). Используются сети типа U-Net и Mask R-CNN.
- Анализ медицинских изображений: Диагностика заболеваний по рентгеновским снимкам, КТ, МРТ и гистологическим препаратам (например, выявление опухолей, ретинопатии).
Обработка видео и анализ временных рядов
- Распознавание действий: Анализ последовательности кадров для определения действий человека (ходьба, бег, жестикуляция). Часто комбинируется с рекуррентными нейронными сетями (RNN) или трёхмерными свёртками (3D CNN).
- Обработка аудиосигналов: Спектрограммы звука (например, речи или музыки) могут быть обработаны CNN для распознавания команд, идентификации диктора или классификации музыкальных жанров.
Другие области
- Обработка естественного языка (NLP): Хотя для текстов чаще используются трансформеры, CNN применяются для анализа текстовых последовательностей (например, классификация тональности отзывов) путём одномерной свёртки.
- Генерация изображений: В генеративно-состязательных сетях (GAN) свёрточные слои используются в генераторе и дискриминаторе для создания реалистичных изображений.
- Автономное вождение: Обработка данных с камер, лидаров и радаров для распознавания дорожной разметки, знаков, препятствий и других участников движения.
Критика и ограничения
Несмотря на впечатляющие успехи, свёрточные нейронные сети имеют ряд недостатков:
- Высокая вычислительная стоимость: Обучение глубоких CNN требует значительных ресурсов GPU и времени (от часов до недель), что ограничивает их применение в условиях ограниченного бюджета или на устройствах с низким энергопотреблением.
- Потребность в больших объёмах данных: Для достижения высокой точности CNN обычно требуют размеченных наборов данных из тысяч или миллионов примеров. Методы аугментации данных и трансферного обучения частично смягчают эту проблему.
- Отсутствие интерпретируемости: CNN часто рассматриваются как «чёрный ящик». Трудно понять, почему сеть приняла то или иное решение, что критично в медицине или юриспруденции. Методы визуализации активаций (например, Grad-CAM) лишь частично решают эту проблему.
- Уязвимость к состязательным атакам: Небольшие, незаметные для человека искажения входного изображения (состязательные примеры) могут привести к ошибочной классификации с высокой уверенностью.
- Инвариантность к вращениям и масштабам: Стандартные CNN не обладают врождённой инвариантностью к поворотам и значительным изменениям масштаба, что требует аугментации данных или использования специализированных архитектур (например, Group-equivariant CNN).
Интересные факты
- Первая коммерческая система на основе CNN была внедрена в 1990-х годах для чтения рукописных чеков в банках США.
- Архитектура ResNet-152, состоящая из 152 слоёв, была обучена на 1,28 миллиона изображений из набора данных ImageNet.
- В 2020-х годах архитектуры на основе трансформеров (Vision Transformer, ViT) начали конкурировать с CNN в задачах компьютерного зрения, особенно при наличии больших объёмов данных.
Источники
- 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.
- 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 (CVPR).
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →