Принципы свертки по объемам в глубоком обучении 0:01
Понимание того, как работают свертки не только с двумерными изображениями, но и с трехмерными объемами, является фундаментальным этапом в проектировании сверточных нейронных сетей (CNN). Эндрю Ын объясняет этот процесс на примере работы с цветными RGB-изображениями, которые по своей структуре уже являются трехмерными тензорами.
Основы работы с трехмерными данными 0:13
При обработке RGB-изображения входные данные представляются как стек из трех матриц, соответствующих каналам красного, зеленого и синего цветов. Например, если обычное изображение имеет размер $6 \times 6$, то цветное RGB-изображение будет иметь размер $6 \times 6 \times 3$.
Для извлечения признаков из такого объема требуется фильтр соответствующей размерности. Если входной объем имеет $N_c$ каналов, то фильтр также должен иметь $N_c$ каналов. Важнейшие правила свертки по объемам:
- Соответствие каналов: Число каналов входного изображения и фильтра всегда должно совпадать.
- Параметры фильтра: Если фильтр имеет размер $3 \times 3 \times 3$, он содержит 27 индивидуальных весов (параметров), которые умножаются на соответствующие значения в каждой из трех цветовых плоскостей.
- Операция свертки: Фильтр скользит по всей площади изображения, вычисляя сумму произведений 27 значений на соответствующие 27 пикселей в «желтом кубе» области охвата, что дает одно значение на выходе.
Детектирование признаков разного типа 4:00
Настройка параметров фильтра позволяет детектировать специфические признаки. Например, чтобы найти вертикальные границы только в красном канале, можно задать ненулевые значения весов для первого слоя фильтра и нулевые — для остальных. Если же цель — детектировать границы независимо от цвета, веса распределяются по всем трем каналам одинаково.
Использование нескольких фильтров одновременно 6:04
Для полноценной работы нейронной сети часто требуется детектировать множество различных признаков одновременно: вертикальные и горизонтальные линии, диагонали и более сложные текстуры.
Применение нескольких фильтров происходит следующим образом:
- Первый фильтр (например, для вертикальных линий) дает выходную матрицу $4 \times 4$.
- Второй фильтр (например, для горизонтальных линий) дает вторую матрицу $4 \times 4$.
- Результаты стекируются вместе, формируя итоговый выходной объем $4 \times 4 \times 2$.
По словам Эндрю Ына, количество каналов в выходном объеме в точности равно количеству использованных фильтров.
Формализация размерностей 8:08
При использовании свертки по объемам размерность выходного слоя вычисляется по стандартным формулам с учетом количества фильтров ($n_c'$):
- Вход: $n_H \times n_W \times n_c$
- Фильтр: $f \times f \times n_c$
- Выход: $(n_H - f + 1) \times (n_W - f + 1) \times n_c'$
Данная формула применима при условии использования шага (stride) равного 1 и отсутствии padding. В технической литературе размерность этого третьего измерения часто называют «глубиной» (depth), однако Эндрю Ын предпочитает термин «каналы» (channels), чтобы избежать путаницы с глубиной всей нейронной сети.