Глава 2. Свертка и пулинг
– Свойства и операции свертки
– Различные виды пулинга: max-pooling, average-pooling
– Роль и преимущества пулинга в CNN
Сверточные нейронные сети (CNN) используют свертку и пулинг для эффективного извлечения признаков из входных данных, таких как изображения. Вот более подробное объяснение этих концепций:
Свертка – это операция, которая сканирует входное изображение с помощью фильтров (ядер), извлекая локальные признаки. Каждый фильтр выделяет определенные паттерны, такие как края, текстуры или другие визуальные характеристики. Свертка выполняется путем перемещения фильтра по изображению и вычисления скалярного произведения между значениями пикселей и значениями ядра.
– Ядро свертки – это матрица весов, которая применяется к подматрице входного изображения для вычисления значения на выходном изображении. На этом шаге модель извлекает локальные признаки изображения, учитывая их структуру и распределение.
– Stride (шаг) – это шаг, с которым ядро свертки перемещается по входному изображению. Он определяет расстояние между применениями фильтра к входным данным и влияет на размер выходного изображения.
Давайте рассмотрим пример применения операции свертки на входном изображении.
Предположим, у нас есть следующее изображение размером 5x5 пикселей:
```
[[1, 2, 1, 0, 0],
[0, 1, 0, 2, 1],
[1, 0, 2, 1, 0],
[0, 1, 0, 1, 0],
[1, 2, 1, 0, 0]]
```
Также у нас есть фильтр (ядро свертки) размером 3x3:
```
[[1, 0, 1],
[0, 1, 0],
[1, 0, 1]]
```
Мы будем применять этот фильтр к изображению с определенным шагом (stride), чтобы получить выходное изображение (feature map).
Пусть наш шаг (stride) будет равен 1.
Тогда, начиная с верхнего левого угла изображения, мы будем перемещать наш фильтр по всей области изображения и вычислять скалярное произведение между значениями пикселей изображения и значениями фильтра. Затем полученное значение будет записано в соответствующую позицию на выходном изображении (feature map).
Процесс будет продолжаться до тех пор, пока фильтр не пройдет по всему изображению. Если шаг (stride) больше 1, фильтр будет перемещаться с большим интервалом, что приведет к уменьшению размерности выходного изображения.
Таким образом, операция свертки позволяет извлекать локальные признаки из изображения, учитывая их структуру и распределение, и создавать выходное изображение, содержащее эти признаки.
Max-pooling
Max-pooling является одной из ключевых операций в сверточных нейронных сетях (CNN). Он применяется после операции свертки для уменьшения размерности данных, сохраняя при этом наиболее важные признаки изображения или карт признаков. В основном, max-pooling используется для уменьшения вычислительной нагрузки и количества параметров модели, а также для предотвращения переобучения.
Операция max-pooling выполняется путем сканирования окна определенного размера (например, СКАЧАТЬ