乙状结构的衍生物

时间:2012-05-16 20:23:44

标签: algorithm math artificial-intelligence neural-network calculus

我正在使用反向传播技术创建神经网络进行学习。

我知道我们需要找到所用激活函数的衍生物。我正在使用标准的sigmoid函数

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

我已经看到它的衍生物是

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

这可能是一个愚蠢的问题,但这是否意味着我们必须在等式期间将x通过sigmoid函数两次,因此它将扩展为

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

或者仅仅是采用已计算的f(x)输出(神经元的输出)并替换f(x)的值?

4 个答案:

答案 0 :(得分:24)

Dougal是正确的。只是做

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

答案 1 :(得分:9)

这样做的两种方式是等效的(因为数学函数没有副作用,并且总是为给定的输出返回相同的输入),所以你也可以这样做(更快)第二种方式。

答案 2 :(得分:4)

一个小代数可以简化这一点,这样你就不必有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

答案 3 :(得分:0)

您可以使用sigmoid函数的输出,并将其传递给SigmoidDerivative函数,以用作以下f(x)

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