24

学習用のバックプロパゲーション手法を使用してニューラルネットワークを作成しています。

使用する活性化関数の導関数を見つける必要があることを理解しています。標準のシグモイド関数を使用しています

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

そして私はその派生物が

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

これは難しい質問かもしれませんが、これは、方程式の間にxをシグモイド関数に2回通過させる必要があることを意味するので、次のように展開されます。

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

それともf(x)、ニューロンの出力である、すでに計算された出力を取得し、その値をf(x)

4

4 に答える 4

35

ダガルは正しいです。ただやる

f = 1/(1+exp(-x))
df = f * (1 - f)
于 2012-05-16T20:33:55.427 に答える
12

これを行う2つの方法は同等です(数学関数には副作用がなく、特定の出力に対して常に同じ入力を返すため)。したがって、(より高速な)2番目の方法を使用することをお勧めします。

于 2012-05-16T20:25:42.340 に答える
6

少しの代数でこれを単純化できるので、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
于 2014-11-24T22:16:41.027 に答える
3

関数の出力を使用してsigmoid関数に渡し、次のようSigmoidDerivativeに使用できます。f(x)

dy/dx = f(x)' = f(x) * (1 - f(x))
于 2018-02-28T15:33:22.123 に答える