Свёрточные нейронные сети (CNN)
Операция свёртки
В непрерывном случае свёртка определяется как:
\[s(t) = \int_a^b x(a)\, w(t - a)\, da = (x * w)(t)\]
где \(w\) — ядро свёртки (kernel), \(x\) — входные данные. В дискретном двумерном случае (изображения):
\[z_{i,j} = \sum_{m,n} x_{i+m,\, j+n}\, w_{m,n}\]
Основная идея CNN
В отличие от полносвязных сетей, CNN обрабатывают данные локально. Фильтр перемещается по входным данным и выявляет локальные признаки: на первых слоях — края и текстуры, на глубоких — сложные формы и объекты.
Преимущества свёрток:
- Локальность обработки данных.
- Значительно меньше параметров по сравнению с FC-слоями.
- Инвариантность к сдвигам: объект распознаётся независимо от положения.
Receptive Field
Обычно используются свёртки 1×1 и 3×3. При многократном наложении небольших свёрток receptive field растёт нелинейно — каждый нейрон глубокого слоя зависит от большой области входа, при этом зависимость нелинейная.
Пулинг (Pooling)
После сверточного слоя обычно добавляется слой пулинга, уменьшающий размерность карты признаков:
- Max-pooling — выбирает максимум на участке. Сохраняет наиболее выраженные признаки.
- Average-pooling — усредняет значения на участке.
Регуляризация в CNN
| Метод | Идея |
|---|---|
| Dropout | Случайное отключение нейронов во время обучения |
| Data Augmentation | Повороты, изменения яркости, отражения — увеличение разнообразия данных |
| L2-регуляризация | Штраф за большие веса |
| Mixup | Смешивание пар обучающих примеров и их меток с весами |
| Label Smoothing | Размытие жёстких меток — модель не обучается быть слишком уверенной |
DenseNet
В классических CNN выход каждого слоя передаётся только в следующий. В DenseNet каждый слой получает на вход выходы всех предыдущих слоёв:
\[H_l = F_l([H_0, H_1, \dots, H_{l-1}])\]
где \([\cdot]\) — конкатенация, \(F_l\) — нелинейная трансформация (свёртка + активация).
Преимущества:
- Эффективное повторное использование признаков — каждый слой видит все предыдущие.
- Улучшенное распространение градиентов — решает проблему затухания.
- Меньше параметров по сравнению с обычными глубокими сетями той же глубины.
- Лучшая сходимость.
Структура DenseNet:
- Dense Block — серия слоёв с плотными соединениями.
- Transition Layer — свёртка 1×1 и пулинг для уменьшения размерности между блоками.