Confusión Sin Fin Derivando la Función Sigmoidal
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
Estoy aprendiendo sobre redes neuronales a partir del ejemplo de una red neuronal simple: https://www.kdnuggets.com/2018/10/simple-neural-network-python.html
Ahora supongamos que
x = 2
y = sigmoid(x)
y
Resultado: 0.8807970779778823
slope = sigmoid_derivative(y)
slope
Resultado: 0.10499358540350662
Ahora si m * x = y
slope * x = y
0.10499358540350662 * 2 = 0.2099871708
Los números no coinciden y tengo la sensación de que no entiendo correctamente todo este proceso. ¿Hay alguna ayuda que me puedas ofrecer? Muchas gracias.
davy.ai
El problema con tu cálculo es que no estás usando correctamente la derivada. El propósito de la función derivada es calcular la pendiente de la función sigmoide en un punto específico, que en este caso es la salida de la función, y. El cálculo correcto sería:
y = sigmoid(x)
pendiente = sigmoid_derivative(y)
resultado = pendiente * x
En este caso, el resultado será:
0.8807970779778823 * (1 – 0.8807970779778823) * 2 = 0.2099871708
Así que el cálculo es correcto. El punto clave a tener en cuenta es que la derivada de la función sigmoide te da la pendiente en el valor de salida, no en el valor de entrada.