Производная сигмоида
Я создаю нейронную сеть, используя метод backpropagation для обучения.
Я понимаю, нам нужно найти производную функции активации. Я использую стандартную сигмовидную функцию
f(x) = 1 / (1 + e^(-x))
и я видел, что ее производная
dy/dx = f(x)' = f(x) * (1 - f(x))
это может быть глупый вопрос, но означает ли это, что мы должны дважды пройти x через сигмовидную функцию во время уравнения, чтобы она расширилась до
dy/dx = f(x)' = 1 / (1 + e^(-x)) * (1 - (1 / (1 + e^(-x))))
или это просто вопрос принятия уже рассчитанного выхода f(x)
, который является выходом нейрона, и замените это значение на f(x)
?
4 ответов
два способа сделать это эквивалентны (поскольку математические функции не имеют побочных эффектов и всегда возвращают один и тот же вход для данного выхода), поэтому вы можете также сделать это (быстрее) вторым способом.
немного алгебры может упростить это, так что вам не нужно иметь вызов df f.
df = exp (- x)/(1+exp (- x))^2
вывод:
df = 1/(1+e^-x) * (1 - (1/(1+e^-x)))
df = 1/(1+e^-x) * (1+e^-x - 1)/(1+e^-x)
df = 1/(1+e^-x) * (e^-x)/(1+e^-x)
df = (e^-x)/(1+e^-x)^2