Свёрточные нейронные сети (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 и пулинг для уменьшения размерности между блоками.
Основной недостаток DenseNet — необходимость хранить все промежуточные выходы, что требует значительного объёма памяти на глубоких сетях.
← Назад к списку тем