13

私は、学習のためにバックプロパゲーション技術を使用してニューラルネットワークを作成しています。シグモイドの派生語

私は使用されたアクティベーション機能の派生物を見つける必要があることを理解しています。私は

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

標準シグモイド関数を使用していると私はその誘導体は、これがばか質問かもしれ

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

であることを見てきたが、これは我々が通過Xを渡すために持っていることを意味してい式中の二回シグモイド関数、それは

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

に拡大するか、それは単にニューロンの出力であるf(x)のすでに計算された出力を、服用の問題ですので、その値をf(x)に置き換えますか?

+0

私は、デリバリーを自分で行うことをお勧めします。あなたはちょうどf(x)*(1 - f(x))を導き出すことができ、何が起こっているのかを正確に理解することができます。 (そして、以下の答えは100%正しいです。) –

+0

あなたの元の問題を置換の点で考えると、f(x)は代入を使って除外することができる共通の用語です –

答えて

7

2つの方法は同等です(数学関数は副作用がなく、常に同じ入力を特定の出力に返します)ので、(高速な)第2の方法でも同様に行うことができます。

15

デュガルが正しいです。ちょうど

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

小さな代数はこれを単純化することができますので、ffを呼び出す必要はありません。
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))