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

做的兩種方式是等價的(因爲數學函數沒有副作用,總是返回相同的輸入給定輸出),所以你還不如做它的(快)第二種方法。

15

杜格爾是正確的。只要做

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))