Свёрточные нейросети (CNN)
Кратко
Свёрточная нейронная сеть (convolutional neural network, CNN) — нейросеть для данных с пространственной структурой, прежде всего изображений. Вместо того чтобы соединять каждый пиксель с каждым нейроном, CNN скользит по изображению небольшими обучаемыми фильтрами — это резко сокращает число параметров и делает сеть устойчивой к сдвигам объектов в кадре. На свёрточных сетях построено современное компьютерное зрение.
Для чего используется
- классификация изображений: что изображено в кадре;
- детекция и сегментация объектов — базовые задачи зрения роботов и БПЛА;
- обработка видео и аудио;
- распознавание документов — с этой задачи (LeNet, 1998) начиналось практическое применение.
Как работает
Свёртка — линейная операция: ядро (фильтр) — небольшой тензор весов — скалярно умножается на последовательные окна изображения. Каждый фильтр даёт карту активаций: где на изображении встретился «его» узор. Аналогия — трафарет: маленький шаблон прикладывают к каждому участку фотографии и записывают, насколько участок на него похож.
Два свойства делают свёртки удачными именно для изображений:
- Локальность. Узоры на изображении локальны: край, угол, пятно видны в небольшом окне — нет смысла связывать каждый пиксель со всеми.
- Инвариантность к сдвигу. Один и тот же фильтр применяется по всему полю (общие веса, parameter sharing): объект распознаётся независимо от положения в кадре. Параметров получается k×k×Cin×Cout вместо H×W×Cin×Cout у полносвязного слоя — на порядки меньше.
Пулинг (субдискретизация) уменьшает разрешение карт признаков: типичен max pooling окном 2×2 с шагом 2 — из каждого окна берётся максимум. Это снижает объём вычислений и расширяет поле обзора (receptive field) следующих слоёв. Global average pooling усредняет карту целиком и позволяет подавать на сеть изображения произвольного размера.
Типичная архитектура: INPUT → [CONV → RELU → POOL]×N → [FC → RELU]×M → FC — чередование свёрток с активациями и пулингом, а в конце полносвязные слои-классификаторы.
Основные компоненты
- свёрточные слои (CONV) — обучаемые фильтры, карты активаций;
- функции активации — обычно ReLU;
- пулинг (POOL) — max или average;
- полносвязные слои (FC) — финальная классификация.
Примеры
Вехи архитектур:
- LeNet (1998) — первая успешная CNN, распознавание рукописных цифр MNIST;
- AlexNet (2012) — пять свёрточных слоёв с max-pooling и два полносвязных, 60 млн параметров; ошибка top-5 18,9 % на тесте ImageNet (LSVRC-2010) против прежнего state-of-the-art, победитель соревнования ImageNet 2012; ReLU, GPU-обучение и dropout — начало бума глубокого обучения;
- VGG (2014) — большие свёртки разложены в последовательности 3×3;
- ResNet (2015) — остаточные связи (skip connections), сети до 152 слоёв.
Связанные темы
Источники
- CS231n: Convolutional Networks (Stanford) — слои CONV/POOL/FC, общие веса, типовая архитектура.
- Учебник по машинному обучению (ШАД, Яндекс) — свёртка, пулинг, счёт параметров, вехи архитектур.
- AlexNet (Krizhevsky et al., NIPS 2012) — архитектура и результаты.
- Deep Learning, гл. 9 (Goodfellow, Bengio, Courville) — теория свёрточных сетей.