rfl*_*d89 19 algorithm math artificial-intelligence calculus neural-network
我正在使用反向传播技术创建一个神经网络进行学习.
我知道我们需要找到所用激活函数的导数.我正在使用标准的sigmoid函数
f(x) = 1 / (1 + e^(-x))
Run Code Online (Sandbox Code Playgroud)
而且我已经看到它的衍生物了
dy/dx = f(x)' = f(x) * (1 - f(x))
Run Code Online (Sandbox Code Playgroud)
这可能是一个愚蠢的问题,但这是否意味着我们必须在等式期间将x通过sigmoid函数两次,因此它将扩展为
dy/dx = f(x)' = 1 / (1 + e^(-x)) * (1 - (1 / (1 + e^(-x))))
Run Code Online (Sandbox Code Playgroud)
或者它只是采取已经计算的输出f(x)
,即神经元的输出,并将该值替换为f(x)
?
Bru*_*Kim 26
Dougal是正确的.做就是了
f = 1/(1+exp(-x))
df = f * (1 - f)
Run Code Online (Sandbox Code Playgroud)
一点代数可以简化此过程,因此您不必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
Run Code Online (Sandbox Code Playgroud)