无尽的困惑推导Sigmoid函数
Endless Confusion Deriving the Sigmoid Function
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
我正在通过简单的神经网络示例学习神经网络:https://www.kdnuggets.com/2018/10/simple-neural-network-python.html
#Let's say
x = 2
y = sigmoid(x)
y
Output: 0.8807970779778823
slope = sigmoid_derivative(y)
slope
Output: 0.10499358540350662
现在如果 m * x = y
斜率 * x = y
0.10499358540350662 * 2 = 0.2099871708 ?
数字不相加,我感觉我从根本上误解了整个过程。您能提供什么帮助吗?非常感谢。
从微积分可知,命题
斜率 * x = y
仅适用于线性函数,而 sigmoid 显然不是,尤其是在 2 左右。您唯一应该期望的是
sigmoid_derivative(sigmoid(x0)) * (x1 - x0) + sigmoid(x0) = sigmoid(x1) + eps
其中eps为小误差,|x1 - x0|越小,|eps|越小。
您可以轻松地自己查看。
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
我正在通过简单的神经网络示例学习神经网络:https://www.kdnuggets.com/2018/10/simple-neural-network-python.html
#Let's say
x = 2
y = sigmoid(x)
y
Output: 0.8807970779778823
slope = sigmoid_derivative(y)
slope
Output: 0.10499358540350662
现在如果 m * x = y
斜率 * x = y
0.10499358540350662 * 2 = 0.2099871708 ?
数字不相加,我感觉我从根本上误解了整个过程。您能提供什么帮助吗?非常感谢。
从微积分可知,命题
斜率 * x = y
仅适用于线性函数,而 sigmoid 显然不是,尤其是在 2 左右。您唯一应该期望的是
sigmoid_derivative(sigmoid(x0)) * (x1 - x0) + sigmoid(x0) = sigmoid(x1) + eps
其中eps为小误差,|x1 - x0|越小,|eps|越小。
您可以轻松地自己查看。