13

Tworzę sieć neuronową za pomocą techniki backpropagation do nauki.Pochodne sigmoid

Rozumiem, że musimy znaleźć pochodną użytej funkcji aktywacji. Używam standardowych funkcji esicy

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

i widziałem, że jej pochodna jest

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

To może być daft pytanie, ale czy to oznacza, że ​​musimy zdać X poprzez funkcja esicy dwa razy w równaniu więc rozwinie się do

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

czy jest to po prostu kwestia przy już obliczoną wyjście f(x), który stanowi sygnał wyjściowy neuronu i zastąpić tę wartość dla f(x)?

+0

Sugerowałbym próbę samodzielnego zastosowania pochodnej. Z odrobiną algebry możesz uzyskać dokładnie f (x) * (1 - f (x)), a wtedy zrozumiesz dokładnie, co się dzieje. (I odpowiedź poniżej jest w 100% poprawna.) –

+0

pomyśl o swoim pierwotnym problemie pod względem podstawienia, a zobaczysz, że f (x) jest częstym określeniem, które możesz odmienić przez podstawienie –

Odpowiedz

7

Dwa sposoby wykonania są równoważne (ponieważ funkcje matematyczne nie mają skutków ubocznych i zawsze zwracają to samo wejście dla danego wyjścia), więc równie dobrze można to zrobić (szybciej) w drugą stronę.

15

Dougal ma rację. Po prostu wykonaj:

3

Mała algebra może to uprościć, abyś nie musiał mieć wywołania df.
df = exp (-x)/(1 + exp (-x))^2

Wyprowadzenie:

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

Można użyć wyjścia swojej funkcji sigmoid i przekazać go do funkcji SigmoidDerivative do użycia jako f(x) w następującym:

dy/dx = f(x)' = f(x) * (1 - f(x)) 
Powiązane problemy