Propagacja wsteczna poprzez maksymalne warstwy pulujące


14

Mam małe pytanie cząstkowe do tego pytania .

Rozumiem, że podczas wstecznej propagacji przez warstwę maksymalnej puli gradient jest kierowany z powrotem w taki sposób, że neuron w poprzedniej warstwie, która została wybrana jako maksymalna, otrzymuje cały gradient. Nie jestem w 100% pewien, w jaki sposób gradient w następnej warstwie jest kierowany z powrotem do warstwy puli.

Pierwsze pytanie brzmi: czy mam warstwę puli połączoną z warstwą w pełni połączoną - jak na poniższym obrazku.

Przykład 1

Czy podczas obliczania gradientu cyjanowego „neuronu” warstwy pulującej sumuję wszystkie gradienty z neuronów warstwy FC? Jeśli jest to poprawne, to każdy „neuron” warstwy pulującej ma ten sam gradient?

Na przykład, jeśli pierwszy neuron warstwy FC ma gradient 2, drugi gradient 3, a trzeci gradient 6. Jakie są gradienty niebieskich i fioletowych „neuronów” w warstwie pulującej i dlaczego?

Drugie pytanie dotyczy tego, kiedy warstwa puli jest połączona z inną warstwą splotu. Jak w takim razie obliczyć gradient? Zobacz przykład poniżej.

przyklad 2

Dla najbardziej wysuniętego na prawo „neuronu” warstwy gromadzącej (zarysowanego zielonego) po prostu biorę gradient neuronu purpurowego w następnej warstwie konwekcyjnej i kieruję go z powrotem, prawda?

Co powiesz na wypełniony zielony? Czy muszę pomnożyć pierwszą kolumnę neuronów w następnej warstwie z powodu reguły łańcucha? Czy muszę je dodać?

Proszę, nie publikuj wielu równań i powiedz mi, że moja odpowiedź jest w tym miejscu, ponieważ staram się owijać wokół równania i nadal nie rozumiem tego idealnie, dlatego zadaję to pytanie w prosty sposób sposób.


Jeśli chodzi o twoje pierwsze pytanie, propagacja wsteczna polega na sprawdzeniu, jakie wagi i dane wejściowe wpływają na twoją stratę w jaki sposób. W przypadku maksymalnego łączenia tylko maksimum neuronów wpływa na wynik (z wyjątkiem sytuacji, gdy występuje remis). Zatem propaguj błąd tylko do neuronu, który miał maksymalną wartość aktywacji.
Jan van der Vegt,

Tak, rozumiem to i powiedziałem to również w podsumowaniu na początku mojego postu. Ale nie rozumiem, jak „połączyć” gradient neuronów następnej warstwy w celu propagacji z powrotem. Mam nadzieję, że wiesz o co mi chodzi.
Majster,

Odpowiedzi:


5

Jeśli jest to poprawne, to każdy „neuron” warstwy pulującej ma ten sam gradient?

Nie. Zależy to od wagi i funkcji aktywacji. I najczęściej masy różnią się od pierwszego neuronu warstwy pulującej do warstwy FC, jak i od drugiej warstwy warstwy pulującej do warstwy FC.

Tak więc zazwyczaj będziesz mieć sytuację:

FCi=f(jWijPj)

Tam, gdzie jest i-tym neuronem w całkowicie połączonej warstwie, jest j-tym neuronem w warstwie , a jest funkcją aktywacji, a - wagami.FCiPjfW

Oznacza to, że gradient w stosunku do P_j wynosi

grad(Pj)=igrad(FCi)fWij .

Który jest inny dla j = 0 lub j = 1, ponieważ W jest inny.

Drugie pytanie dotyczy tego, kiedy warstwa puli jest połączona z inną warstwą splotu. Jak w takim razie obliczyć gradient?

Nie ma znaczenia, z jakim typem warstwy jest połączony. Cały czas jest to samo równanie. Suma wszystkich gradientów na następnej warstwie pomnożona przez wpływ neuronu na poprzedniej warstwie na wydajność tych neuronów. Różnica między FC a konwolucją polega na tym, że w FC wszystkie neurony w następnej warstwie zapewnią udział (nawet jeśli być może mały), ale w konwolucji większość neuronów w następnej warstwie w ogóle nie ma wpływu na neuron w poprzedniej warstwie, więc ich udział jest dokładnie zero.

Dla najbardziej wysuniętego na prawo „neuronu” warstwy gromadzącej (zarysowanego zielonego) po prostu biorę gradient neuronu purpurowego w następnej warstwie konwekcyjnej i kieruję go z powrotem, prawda?

Dobrze. Plus również gradient innych neuronów w tej warstwie splotu, które przyjmują jako wejście najwyższy prawy neuron warstwy pulującej.

Co powiesz na wypełniony zielony? Czy muszę pomnożyć pierwszą kolumnę neuronów w następnej warstwie z powodu reguły łańcucha? Czy muszę je dodać?

Dodaj ich. Z powodu reguły łańcucha.

Maksymalna pula Do tego momentu fakt, że była to maksymalna pula, był zupełnie nieistotny, jak widać. Max łączenie jest tylko, że aktywacja funkcji w tej warstwie wynosi . Oznacza to, że gradienty dla poprzedniej warstwy wynoszą:maxgrad(PRj)

grad(PRj)=igrad(Pi)fWij .

Ale teraz dla maksymalnego neuronu dla wszystkich innych neuronów, więc dla maksymalnego neuronu w poprzedniej warstwie i dla wszystkich innych neuronów. Więc:f=idf=0f=1f=0

grad(PRmaxneuron)=igrad(Pi)Wi max neuron ,

grad(PRothers)=0.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.