[90, 110, 70]

[100, 120, 110]

```

Теперь допустим, у нас есть фильтр размером 2x2:

```

[1, 0]

[0, 1]

```

Чтобы применить этот фильтр к нашей матрице, мы начинаем с левого верхнего угла матрицы и перемножаем элементы матрицы на соответствующие элементы фильтра:

```

[120*1, 100*0]

[90*0, 110*1] = [120, 110]

```

После умножения и суммирования полученных значений, мы получаем новое значение для верхнего левого пикселя в результирующей матрице. Затем мы сдвигаем фильтр на один пиксель вправо (с шагом 1) и повторяем процесс для следующего столбца, а затем для остальных строк. Вот как выглядит этот процесс:

```

[120, 100, 80] [120, 110]

[90, 110, 70] -> [120, 110] (результат сдвига фильтра вправо на 1 пиксель)

[100, 120, 110]

```

Таким образом, мы получаем результирующую матрицу размером 2x2, которая представляет собой карту признаков, полученную после применения свертки. Этот процесс позволяет нейронной сети автоматически извлекать локальные признаки изображения, такие как грани или текстуры.

2. Активация (Activation):

Функции активации являются неотъемлемой частью сверточных нейронных сетей (CNN), играющей важную роль в добавлении нелинейности в модель. После операции свертки и других сложных вычислений, функции активации применяются к полученным значениям. Одной из наиболее популярных функций активации является ReLU (Rectified Linear Unit), которая заменяет отрицательные значения на ноль, оставляя положительные значения без изменений. Это позволяет сети изучать нелинейные зависимости между признаками, что часто является ключевым для успешного решения различных задач.

Кроме ReLU, существуют и другие функции активации, такие как Leaky ReLU, ELU и другие, которые предложены для решения определенных проблем, таких как затухание градиента или увеличение устойчивости обучения. Эти функции активации помогают сети учиться сложным паттернам и открывают возможность для обнаружения более сложных признаков в данных. Без применения функций активации, нейронная сеть была бы эквивалентна линейной модели, что значительно снизило бы ее способность к изучению сложных зависимостей в данных.

Таким образом, функции активации играют важную роль в обучении сверточных нейронных сетей, помогая им изучать и запоминать сложные паттерны в данных, что делает их мощным инструментом для различных задач обработки изображений, распознавания образов и других задач машинного зрения.

Давайте рассмотрим пример применения функции активации ReLU (Rectified Linear Unit) в сверточной нейронной сети (CNN).

Предположим, у нас есть результат операции свертки, который выглядит следующим образом:

```

[-0.5, 0.8, 1.2]

[0.1, -0.9, 0.5]

[1.5, 2.0, -1.3]

```

Теперь применим функцию активации ReLU к этим значениям. ReLU заменяет все отрицательные значения на ноль, оставляя положительные значения без изменений.

```

ReLU([-0.5, 0.8, 1.2]) = [0, 0.8, 1.2]

ReLU([0.1, -0.9, 0.5]) = [0.1, 0, 0.5]

ReLU([1.5, 2.0, -1.3]) = [1.5, 2.0, 0]

```

Таким образом, после применения функции активации ReLU, отрицательные значения стали нулями, а положительные значения остались без изменений. Это позволяет сети сохранить только положительные признаки и отфильтровать отрицательные, добавляя нелинейность в модель и улучшая ее способность изучать сложные паттерны в данных.

3. Пулинг (Pooling):

Операция пулинга является важным шагом в сверточных нейронных сетях (CNN), предназначенным для снижения размерности карт признаков, полученных после операции свертки. Она помогает сохранить наиболее важную информацию, сокращая количество данных, что в свою очередь уменьшает вычислительную сложность и количество параметров модели.