Производная сигмоида

Я создаю нейронную сеть, используя метод 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 ответов


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


Дугал прав. Просто сделай!--2-->

f = 1/(1+exp(-x))
df = f * (1 - f)

немного алгебры может упростить это, так что вам не нужно иметь вызов 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

вы можете использовать выход