Question

I'm creating a neural network using the backpropagation technique for learning.

I understand we need to find the derivative of the activation function used. I'm using the standard sigmoid function

f(x) = 1 / (1 + e^(-x))

and I've seen that its derivative is

dy/dx = f(x)' = f(x) * (1 - f(x))

This may be a daft question, but does this mean that we have to pass x through the sigmoid function twice during the equation, so it would expand to

dy/dx = f(x)' = 1 / (1 + e^(-x)) * (1 - (1 / (1 + e^(-x))))

or is it simply a matter of taking the already calculated output of f(x), which is the output of the neuron, and replace that value for f(x)?

Was it helpful?

Solution

The two ways of doing it are equivalent (since mathematical functions don't have side-effects and always return the same input for a given output), so you might as well do it the (faster) second way.

OTHER TIPS

Dougal is correct. Just do

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

A little algebra can simplify this so that you don't have to have df call f.
df = exp(-x)/(1+exp(-x))^2

derivation:

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

You can use the output of your sigmoid function and pass it to your SigmoidDerivative function to be used as the f(x) in the following:

dy/dx = f(x)' = f(x) * (1 - f(x))
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top