乙状结构的衍生物

问题描述 投票:16回答:4

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

我知道我们需要找到所用激活函数的导数。我正在使用标准的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)的值?

algorithm math artificial-intelligence neural-network calculus
4个回答
9
投票

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


23
投票

Dougal是正确的。做就是了

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

3
投票

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

0
投票

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

dy/dx = f(x)' = f(x) * (1 - f(x))
© www.soinside.com 2019 - 2024. All rights reserved.