Зачем мне использовать функцию нелинейной активации в сверточном слое CNN? - PullRequest
0 голосов
/ 17 июня 2020

Я читал одну из лекций по глубокому обучению в Массачусетском технологическом институте на CNN. В нем говорится, что при умножении весов на значения пикселей, нелинейная функция активации, такая как relu, может применяться к каждому пикселю. Я понимаю, почему его следует применять в простой нейронной сети, поскольку он вносит нелинейность в наши входные данные. Но зачем мне применять его к одному пикселю? Или я ошибаюсь?

1 Ответ

1 голос
/ 17 июня 2020

Возможно, вы ошиблись.

Когда они говорят «умножение весов на значения пикселей» - они имеют в виду линейную операцию умножения фильтра (веса + смещение) на пиксели изображения. . Если задуматься, каждый фильтр в CNN по сути представляет собой линейное уравнение.

Например - если мы смотрим на фильтр 4 * 4, фильтр по сути вычисляет x1 * w1 + x2 * w2 + x3 * w3 + x4 * w4 + b за каждые 4 * 4 патча изображения, которое он проходит. (В приведенном выше уравнении x1, x2, x4, x4 относятся к пикселям изображения, а w1, w2, w3, w4 относятся к весам, присутствующим в фильтре CNN)

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

Таким образом, вы не применяете нелинейность к «пикселю» как таковому, вы все равно применяете ее к линейной операции (например, в vanilla нейронная сеть), который состоит из значений пикселей, умноженных на веса, представленные в фильтре.

Надеюсь, это развеяло ваши сомнения, не стесняйтесь обращаться за дополнительной помощью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...