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

Материал из MachineLearning.

Версия от 17:16, 16 июля 2026; Daria Makeeva (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Daria Makeeva 20:11, 16 июля 2026 (MSD)


Содержание

Свёрточная нейронная сеть (англ. convolutional neural network, CNN) — класс архитектур искусственных нейронных сетей, в которых хотя бы часть слоёв вычисляет выход не через полное матричное умножение, а через операцию свёртки — локальное, разделяемое по всему изображению (или другому сигналу) скользящее преобразование. CNN стали основным инструментом компьютерного зрения и одной из ключевых архитектур глубокого обучения в целом благодаря способности эффективно извлекать пространственно-локальные признаки при небольшом числе обучаемых параметров.

Зачем нужна свёртка вместо полносвязного слоя

Если подавать изображение целиком на полносвязный слой (каждый пиксель связан с каждым нейроном), число параметров растёт как произведение размера входа на число нейронов слоя. Для изображения 224×224×3 пикселей и слоя из 1000 нейронов это уже больше 150 миллионов весов — сеть переобучается, требует огромных вычислительных ресурсов и не использует главное свойство изображений: локальную структуру и повторяемость паттернов независимо от их положения в кадре.

Свёрточный слой решает эту проблему тремя идеями, ставшими каноническими для CNN:

  • Локальные связи — каждый нейрон смотрит не на всё изображение, а на небольшую область (окно, называемое ядром или фильтром), что отражает тот факт, что близкие пиксели статистически более связаны, чем далёкие.
  • Разделяемые веса (weight sharing) — одно и то же ядро применяется по всем позициям изображения, поэтому признак вроде «вертикальный край» ищется одинаково во всех частях кадра, а не заучивается заново для каждой позиции.
  • Инвариантность к сдвигу (translation invariance/equivariance) — благодаря разделяемым весам обнаружение объекта не зависит от того, в каком месте кадра он находится.

Эти идеи биологически мотивированы: они восходят к работам Хьюбела и Визеля о простых и сложных клетках зрительной коры млекопитающих, реагирующих на локальные ориентированные стимулы независимо от их положения в поле зрения[1].

Рецептивное поле и интуиция глубины

Рецептивное поле (receptive field) нейрона — это область входного изображения, которая влияет на его значение. У первого свёрточного слоя рецептивное поле равно размеру ядра (например, 3×3 пикселя), но при переходе к более глубоким слоям рецептивные поля соседних нейронов накладываются друг на друга и растут: нейрон второго слоя с ядром 3×3, «смотрящий» на выходы первого слоя, фактически охватывает уже 5×5 пикселей исходного изображения, третий слой — ещё больше, и так далее.

Именно поэтому глубокие CNN эффективнее одного широкого слоя: ранние слои улавливают простые локальные признаки — края, градиенты, текстуры, — а по мере роста рецептивного поля более глубокие слои комбинируют их во всё более абстрактные и глобальные представления — части объектов, целые объекты, сцены. Этот принцип иерархического построения признаков — центральная идея всей архитектуры CNN и главная причина её эффективности по сравнению с полносвязными сетями при той же вычислительной стоимости.

Формальное определение свёртки

Дискретная двумерная свёртка

Для входного тензора признаков X размера H \times W \times C_{in} (высота, ширина, число входных каналов) и ядра K размера k_h \times k_w \times C_{in} выход одного канала в позиции (i, j) определяется как

Y[i, j] = \sum_{m=0}^{k_h-1} \sum_{n=0}^{k_w-1} \sum_{c=1}^{C_{in}} X[i+m, j+n, c] \cdot K[m, n, c] + b

где b — смещение (bias). Строго говоря, в машинном обучении эта операция является кросс-корреляцией, а не свёрткой в математическом смысле (без разворота ядра на 180°), но в литературе по нейросетям термин «свёртка» закрепился именно за ней.

Выходной слой обычно состоит из C_{out} различных ядер, каждое из которых даёт свою карту признаков (feature map), так что итоговый выход имеет размер H' \times W' \times C_{out}.

Ключевые параметры

Точный размер выхода определяется тремя параметрами:

  • Шаг (stride, s) — насколько сдвигается ядро при переходе к следующей позиции. Шаг больше 1 уменьшает разрешение выходной карты, выполняя роль дискретизации без отдельного слоя пулинга.
  • Дополнение (padding, p) — добавление нулевых (или иных) значений по краям входа, чтобы контролировать размер выхода и не «терять» информацию о границах изображения.
  • Дилатация (dilation, d) — расстояние между элементами ядра во входном тензоре; при d=1 ядро применяется к соседним пикселям, при d>1 между ними появляются «дырки», за счёт чего рецептивное поле растёт без увеличения числа параметров.

Итоговая формула размера одной пространственной оси выхода:

H' = \left\lfloor \frac{H + 2p - d(k-1) - 1}{s} + 1 \right\rfloor

и аналогично для ширины W'.

Разновидности свёрточных операций

Разновидности свёрточных операций
Тип свёртки Идея Основной эффект
Стандартная свёртка Ядро связывает все входные каналы сразу Полное смешение каналов и пространства, но много параметров
Дилатированная свёртка (dilated / atrous) Расширение шага между весами ядра Увеличение рецептивного поля без роста параметров и без потери разрешения[1]
Глубинная свёртка (depthwise convolution) Каждый входной канал обрабатывается своим отдельным 2D-ядром независимо Резкое снижение вычислительной сложности за счёт разделения пространственной обработки от смешения каналов[1]
Разделяемая свёртка (depthwise separable convolution) Комбинация depthwise-свёртки и последующей 1×1 (pointwise) свёртки, смешивающей каналы Компромисс между качеством и эффективностью — основа лёгких архитектур (MobileNet, Xception)[1]
Групповая свёртка (grouped convolution) Каналы делятся на группы, свёртка выполняется отдельно внутри каждой группы Промежуточный вариант между стандартной и depthwise-свёрткой

Depthwise separable свёртка особенно важна для мобильных и встраиваемых систем: она позволяет сократить число операций и параметров при сохранении приемлемой точности классификации, что подтверждено экспериментами архитектуры MobileNet[1]. Дилатированные свёртки, в свою очередь, широко используются в задачах, требующих учёта широкого контекста без потери разрешения — например, при диагностике по медицинским изображениям и в семантической сегментации[1].

Типичная архитектура сети

Классическая CNN строится из повторяющихся блоков:

  • Свёрточный слой — извлекает локальные признаки через набор обучаемых ядер, как описано выше.
  • Функция активации (обычно ReLU) — вносит нелинейность, без которой глубина сети не давала бы прироста выразительности.
  • Слой подвыборки (pooling) — снижает пространственное разрешение карты признаков (max-pooling или average-pooling), делая представление более устойчивым к небольшим сдвигам и уменьшая вычислительную нагрузку.
  • Полносвязные слои в конце сети — объединяют глобальные признаки для финальной классификации или регрессии.

Обучение сети выполняется методом обратного распространения ошибки (backpropagation) и стохастического градиентного спуска, при этом благодаря разделяемым весам свёрточных ядер число обучаемых параметров остаётся сравнительно небольшим даже для глубоких сетей.

История развития

Биологические предпосылки и первые архитектуры

Идея иерархической, локально организованной обработки визуальной информации восходит к нейрофизиологическим работам Хьюбела и Визеля о простых и сложных клетках зрительной коры. На этой основе Кунихико Фукусима в 1979—1980 годах предложил неокогнитрон (Neocognitron) — многослойную сеть с чередующимися слоями свёртки и подвыборки, обучаемую без учителя; это первая архитектура, реализовавшая ключевой принцип CNN — локальные разделяемые связи, устойчивые к сдвигу объекта в кадре[1].

LeNet и обучение через обратное распространение

В 1989 году Ян Лекун (Yann LeCun) и соавторы впервые применили сеть с свёрточными слоями, обученную методом обратного распространения ошибки, для практической задачи — распознавания рукописных почтовых индексов США; сеть достигла ошибки около 1% с уровнем отказа около 9%[1]. Развитие этой линии привело к архитектуре LeNet-5, ставшей эталонной для распознавания рукописных цифр и одной из первых по-настоящему промышленно применённых нейросетей[1].

AlexNet и начало «глубокой революции» (2012)

Прорыв произошёл в 2012 году, когда сеть AlexNet (Алекс Крижевский, Илья Суцкевер, Джеффри Хинтон) выиграла конкурс ILSVRC (ImageNet Large Scale Visual Recognition Challenge), показав top-5 ошибку 15,3% против 26,2% у второго места — рекордный отрыв, который считается точкой отсчёта современной эры глубокого обучения[1]. Архитектура ввела в широкую практику функцию активации ReLU, регуляризацию Dropout, обучение на GPU и агрессивную аугментацию данных.

VGGNet и GoogLeNet (2014)

В 2014 году сеть VGGNet (Оксфордский университет) показала, что простое увеличение глубины сети при использовании только маленьких ядер 3×3 значительно улучшает качество: 19-слойная модель достигла top-5 ошибки 7,3% на тестовом наборе ILSVRC[1]. В том же году GoogLeNet (Inception) с более сложной модульной структурой заняла первое место на конкурсе ILSVRC 2014 (статья с описанием архитектуры опубликована в трудах CVPR в 2015 году), показав, что архитектурная сложность (параллельные ветви с разными размерами ядер) может давать выигрыш при меньшем числе параметров, чем у VGG[1].

ResNet и решение проблемы деградации (2015)

Ключевой концептуальный сдвиг произошёл в 2015 году с появлением ResNet (Residual Network, Каймин Хе и соавторы, Microsoft Research). Авторы показали, что простое увеличение глубины плоских сетей приводит к деградации качества обучения, и предложили остаточные связи (skip connections вида y = F(x) + x), которые позволяют градиенту беспрепятственно проходить через сотни слоёв. 152-слойная ResNet достигла top-5 ошибки 4,49% на валидации, а ансамбль моделей — 3,57% на тесте, что впервые превзошло человеческий уровень ошибки (~5,1%) на ImageNet и обеспечило победу на ILSVRC 2015[1].

EfficientNet и масштабирование архитектур (2019)

В 2019 году в работе EfficientNet (Мингксинг Тан, Куок Ле, Google) был предложен систематический подход к масштабированию сетей — одновременное и сбалансированное увеличение глубины, ширины и разрешения входа через единый коэффициент масштабирования (compound scaling), а не произвольное увеличение одного из этих параметров. Крупнейшая модель семейства, EfficientNet-B7, достигла top-1 точности 84,3% на ImageNet при значительно меньшем числе параметров и вычислений по сравнению с предыдущими сопоставимыми по качеству сетями[1].

Ключевые архитектуры CNN и их результаты на ImageNet
Архитектура Год Автор(ы) Показатель на ImageNet Ключевая идея
LeNet-5 1989—1998 Я. Лекун и др. ~1% ошибки на распознавании цифр[1] Обучаемая свёртка + обратное распространение ошибки
AlexNet 2012 А. Крижевский, И. Суцкевер, Дж. Хинтон top-5 15,3%[1] ReLU, Dropout, обучение на GPU
VGGNet 2014 К. Симонян, А. Зиссерман top-5 7,3%[1] Глубина + маленькие ядра 3×3
GoogLeNet 2014 (ст. 2015) К. Сегеди и др. top-5 6,7%[1] Модули Inception, параллельные ветви
ResNet-152 2015 К. Хе и др. top-5 3,57% (ансамбль)[1] Остаточные связи, глубина 152+ слоёв
EfficientNet-B7 2019 М. Тан, К. Ле top-1 84,3%[1] Сбалансированное масштабирование глубины/ширины/разрешения

Применения

Свёрточные сети остаются базовой архитектурой для классификации изображений, детекции объектов, семантической сегментации, распознавания лиц и медицинской визуализации, а их модификации с дилатированными и разделяемыми свёртками используются в задачах анализа временных рядов, звука и медицинской диагностики, где важен широкий контекст при ограниченных вычислительных ресурсах[1][1].

См. также

Примечания

Литература

  • Fukushima K. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position // Biological Cybernetics. — 1980. — Т. 36. — № 4. — С. 193–202.
  • LeCun Y., Boser B., Denker J.S., Henderson D., Howard R.E., Hubbard W., Jackel L.D. Backpropagation Applied to Handwritten Zip Code Recognition // Neural Computation. — 1989. — Т. 1. — № 4. — С. 541–551.
  • LeCun Y., Bottou L., Bengio Y., Haffner P. Gradient-Based Learning Applied to Document Recognition // Proceedings of the IEEE. — 1998. — Т. 86. — № 11. — С. 2278–2324.
  • Krizhevsky A., Sutskever I., Hinton G.E. ImageNet Classification with Deep Convolutional Neural Networks // Advances in Neural Information Processing Systems (NeurIPS). — 2012. — Т. 25. — С. 1097–1105.
  • Simonyan K., Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition // arXiv preprint. — 2014. — № arXiv:1409.1556.
  • Szegedy C., Liu W., Jia Y., Sermanet P., Reed S., Anguelov D., Erhan D., Vanhoucke V., Rabinovich A. Going Deeper with Convolutions // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2015. — С. 1–9.
  • He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2016. — С. 770–778.
  • Tan M., Le Q.V. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks // Proceedings of the 36th International Conference on Machine Learning (ICML). — 2019. — № arXiv:1905.11946.
  • Howard A.G., Zhu M., Chen B., Kalenichenko D., Wang W., Weyand T., Andreetto M., Adam H. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications // arXiv preprint. — 2017. — № arXiv:1704.04861.
  • Li X., Zhai M., Sun J. DDCNNC: Dilated and depthwise separable convolutional neural network for diagnosis COVID-19 via chest X-ray images // International Journal of Cognitive Computing in Engineering. — 2021. — Т. 2. — С. 71–82.
Личные инструменты