Какое влияние оказывает тот факт, что функция активации relu не содержит производной?
Как реализовать функцию ReLU в Numpy реализует relu как максимум из (0, элементы вектора матрицы).
Означает ли это, что для градиентного спуска мы не берем производную от функции relu?
Обновлять :
Из Обратное распространение нейронной сети с помощью RELU
этот текст помогает понять:
Функция ReLU определяется как: Для x> 0 выходом является x, то есть f (x) = max (0, x)
Итак, для производной f '(x) это на самом деле:
если x ‹0, вывод равен 0. если x> 0, вывод равен 1.
Производная f '(0) не определена. Таким образом, он обычно устанавливается на 0 или вы изменяете функцию активации на f (x) = max (e, x) для небольшого e.
Обычно: ReLU - это блок, который использует функцию активации выпрямителя. Это означает, что он работает точно так же, как любой другой скрытый слой, но кроме tanh (x), sigmoid (x) или любой другой активации, которую вы используете, вместо этого вы будете использовать f (x) = max (0, x).
Если вы написали код для работающей многоуровневой сети с сигмоидной активацией, это буквально 1 строка изменения. Ничего о прямом или обратном распространении не меняется алгоритмически. Если у вас еще не работает более простая модель, вернитесь и начните сначала с нее. В противном случае ваш вопрос на самом деле не о ReLU, а о реализации NN в целом.
Но это по-прежнему оставляет некоторую путаницу, поскольку функция стоимости нейронной сети обычно принимает производную от функции активации, поэтому, например, как это влияет на функцию стоимости?