Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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