Свёрточные нейронные сети: как глубокие сети «видят»
Обычная нейронная сеть «захлёбывается», когда ей дают фотографию. Свёрточная нейронная сеть (convolutional neural network, CNN) — это остроумная переработка, которая позволяет компьютерам действительно видеть: именно она стоит за разблокировкой по лицу, чтением медицинских снимков, заводскими камерами и беспилотными автомобилями. В этом уроке вы соберёте всю идею с нуля, вручную, на реальных числах.
- Объяснять, почему обычная полносвязная сеть не справляется с изображениями (слишком много весов, нет чувствительности к сдвигу).
- Описывать операцию свёртки: маленький фильтр скользит по изображению и строит карту признаков.
- Выполнять полную свёртку вручную и читать выходную карту.
- Понимать разделение весов (weight sharing) и почему фильтры работают как детекторы границ / углов / текстур.
- Вычислять размеры выхода при дополнении (padding) и шаге (stride).
- Выполнять максимизирующую подвыборку 2×2 (max pooling) на реальной сетке.
- Проследить полную работу CNN от начала до конца на изображении 32×32, отслеживая форму данных на каждом этапе.
Вспомните сети из предыдущих уроков: каждый нейрон слоя соединён с каждым входом. Такие слои мы называем полносвязными (dense, или fully-connected). Это прекрасно работает для небольшого числа входов. Но изображения ломают такой подход сразу двумя способами.