Открыть сервис

Свёрточная нейронная сеть

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

История

Развитие свёрточных нейронных сетей началось в 1980-х годах с работ японского учёного Кунихико Фукусимы, который в 1980 году предложил архитектуру неокогнитрон — одну из первых моделей, вдохновлённую биологической организацией зрительной коры млекопитающих. Неокогнитрон использовал иерархию простых и сложных клеток, способных реагировать на локальные паттерны, однако не применял алгоритм обратного распространения ошибки.

В 1989 году Ян ЛеКун, работая в Bell Labs, впервые применил алгоритм обратного распространения ошибки к свёрточным сетям для задачи распознавания рукописных цифр. В 1998 году ЛеКун и его коллеги представили архитектуру LeNet-5, которая успешно распознавала почтовые индексы и банковские чеки. LeNet-5 состояла из семи слоёв (три свёрточных, два подвыборочных и два полносвязных) и стала первой практически применимой свёрточной сетью.

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

После 2012 года начался бурный рост исследований в области CNN. Были предложены архитектуры, последовательно улучшавшие точность: VGGNet (2014) — с глубокими однородными свёрточными слоями; GoogLeNet (Inception, 2014) — с модулями, выполняющими свёртки разных размеров параллельно; ResNet (2015) — с остаточными связями, позволившими обучать сети глубиной более 100 слоёв. В 2017 году появились архитектуры DenseNet и SENet, а в 2019 году — EfficientNet, оптимизированная по соотношению точности и вычислительных затрат.

Архитектура и принцип работы

Основными строительными блоками свёрточной нейронной сети являются три типа слоёв: свёрточный слой (convolutional layer), слой подвыборки (pooling layer) и полносвязный слой (fully connected layer). Типичная CNN состоит из повторяющихся блоков «свёртка + активация + подвыборка», за которыми следуют один или несколько полносвязных слоёв, выполняющих классификацию или регрессию.

Свёрточный слой

Свёрточный слой является ключевым элементом CNN. Он применяет к входному тензору (например, изображению размером H×W×C, где H — высота, W — ширина, C — число каналов) набор обучаемых фильтров (ядер свёртки) размером k×k×C. Каждый фильтр скользит по входному тензору с определённым шагом (stride) и вычисляет скалярное произведение своих весов с соответствующим локальным участком входа. Результатом является карта признаков (feature map), которая активируется при обнаружении определённого локального паттерна (например, вертикальной грани, угла, текстуры). Количество фильтров определяет глубину выходного тензора. После свёртки обычно применяется нелинейная функция активации, чаще всего ReLU (Rectified Linear Unit, f(x)=max(0,x)), которая вносит нелинейность и ускоряет обучение.

Слой подвыборки

Слой подвыборки (пулинг) уменьшает пространственные размеры карт признаков, снижая количество параметров и вычислительную сложность, а также обеспечивая инвариантность к небольшим смещениям и деформациям входа. Наиболее распространённый вид — максимальный пулинг (max pooling), при котором из каждой области размером p×p (обычно 2×2) выбирается максимальное значение. Альтернативы — средний пулинг (average pooling) и глобальный пулинг (global pooling), который усредняет всю карту признаков до одного числа.

Полносвязный слой

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

Классификация архитектур

Свёрточные нейронные сети можно классифицировать по различным признакам:

Применение

Свёрточные нейронные сети нашли широкое применение в самых разных областях:

Преимущества и ограничения

Преимущества

Ограничения

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →