如何计算人工神经网络激活函数的导数

时间:2014-05-19 10:11:00

标签: neural-network

当使用sigmoid激活函数时,我理解导数是通过输出*(1-输出)计算的。但这是如何确定的?如何从sigmoid函数1 /(1 + e ^( - x))到确定导数应该输出*(1输出)?

例如,如果我想确定atan(x)或atan(x)的导数,其输出缩放到0-1(atan(x)* 0.3183098861837907 + 0.5),我该如何确定这个导数以供使用在训练神经网络?

1 个答案:

答案 0 :(得分:1)

在我看来,这似乎是一个与数学问题相关的问题,而不是编码问题,但无论如何你都去了。

  • 对于sigmoid函数:

其中

如果计算其衍生物:

因此:

请记住, x 是输入, f 是输出。这就是为什么你得到你的"输出*(1-输出)"

对于其他激活功能,您只需先计算导数,然后对其进行编码。通常,它不会像上面那样有一个很好的形式。

  • 对于你问题的另一部分,你所拥有的是这种形式:

如果你计算它的导数(这适用于任何缩放和偏移的函数u(x)),你会得到:

简单地说, b 部分是一个常量,因此它在派生时消失, a 是常系数,因此在导出时保持不变。

在你的情况下,因为:

您正在寻找的衍生品是:

就个人而言,这是非常简单的数学,我强烈建议你在开始使用神经网络之前专注于理解这些;)

干杯