13

Estoy creando una red neuronal utilizando la técnica de retropropagación para el aprendizaje.Derivado de sigmoide

Entiendo que necesitamos encontrar la derivada de la función de activación utilizada. Estoy usando la función sigmoide estándar

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

y he visto que su derivada es

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

Esto puede ser una pregunta tonta, pero ¿significa esto que tenemos que pasar a través de la x función sigmoide dos veces durante la ecuación, por lo que se expandiría para

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

o es simplemente una cuestión de tomar la salida ya calculado de f(x), que es la salida de la neurona, y reemplazar ese valor por f(x)?

+0

Yo sugeriría tratar de tomar el derivado usted mismo. Con un poco de álgebra puedes derivar exactamente f (x) * (1 - f (x)), y entonces comprenderás exactamente lo que está sucediendo. (Y la respuesta a continuación es 100% correcta.) –

+0

piense en su problema original en términos de sustitución y verá que f (x) es un término común que puede restar importancia a través de la sustitución –

Respuesta

7

Las dos formas de hacerlo son equivalentes (ya que las funciones matemáticas no tienen efectos secundarios y siempre devuelven la misma entrada para una salida dada), por lo que también podría hacerlo de la (segunda) manera más rápida.

15

Dougal es correcto. Solo haga

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

Un poco de álgebra puede simplificar esto para que no tenga que tener la llamada df f.
df = exp (-x)/(1 + exp (-x))^2

derivación:

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 
0

Usted puede utilizar la salida de su función sigmoid y pasarlo a su función SigmoidDerivative para ser utilizado como f(x) en lo siguiente:

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