Wyprowadzając gradient jednowarstwowej sieci neuronowej z jej danych wejściowych, jaki jest operator reguły łańcucha?


9

Rzecz w tym:

Oblicz gradient w odniesieniu do warstwy wejściowej dla sieci neuronowej z jedną ukrytą warstwą, używając sigmoid dla wejścia -> ukryty, softmax dla ukrytego -> wyjścia, z utratą entropii krzyżowej.

Mogę przejść przez większość pochodnych za pomocą reguły łańcucha, ale nie jestem pewien, jak właściwie „połączyć” je razem.

Zdefiniuj niektóre notacje

r=xW1+b1

h=σ(r), σ jest funkcją sigmoidalną

θ=hW2+b2,

y^=S(θ), S jest funkcją softmax

J(y^)=∑iylog⁡y^i , y to prawdziwa etykieta jeden gorący wektor

Następnie regułą łańcucha

∂J∂x=∂J∂θ⋅∂θ∂h⋅∂h∂r⋅∂r∂x

Poszczególne gradienty to:

∂J∂θ=(y^−y)
∂θ∂h=∂∂h[hW2+b2]=W2T
∂h∂r=h⋅(1−h)
∂r∂x=∂∂x[xW1+b1]=W1T

Teraz musimy połączyć definicje razem. W pojedynczej zmiennej jest to łatwe, po prostu mnożymy wszystko razem. W wektorach nie jestem pewien, czy użyć mnożenia elementarnego czy mnożenia macierzy.

∂J∂x=(y^−y)∗W2T⋅[h⋅(1−h)]∗W1T

Gdzie to elementowe mnożenie wektorów, a to mnożenie macierzy. Ta kombinacja operacji jest jedynym sposobem, w jaki wydaje mi się, że mogę połączyć je razem, aby uzyskać wektor wymiaru , o czym wiem, że .⋅∗1⋅Dx∂J∂x

Moje pytanie brzmi: w jaki sposób mogę dowiedzieć się, którego operatora użyć? Jestem szczególnie zdezorientowany potrzebą elementu między i .W2Th

Dzięki!


Zdaję sobie sprawę, że znalezienie gradientu wrt do danych wejściowych nie jest często wykonywane. Wierzę, że jest to wstęp do obliczeń osadzania słów, w których można zoptymalizować wektory słów „wejściowych”.
— amatsukawa

how didi dervie dJ / dTheta
— raaj,

Odpowiedzi:


4

Uważam, że kluczem do odpowiedzi na to pytanie jest zwrócenie uwagi na to, że mnożenie elementarne jest w rzeczywistości krótsze, a zatem, kiedy wyprowadzasz równania, nigdy go nie używasz.

Rzeczywiste działanie nie jest mnożenie elementów mądry lecz standardowym mnożenie macierzy gradientu z jakobian , zawsze .

W przypadku nieliniowości, jakobian wyjściowego wektora nieliniowości w odniesieniu do wejściowego wektora nieliniowości okazuje się być macierzą diagonalną. Prawdą jest zatem, że gradient pomnożony przez tę macierz jest równoważny gradientowi wyjściowego nieliniowości w odniesieniu do elementu straty pomnożonego przez wektor zawierający wszystkie częściowe pochodne nieliniowości w odniesieniu do danych wejściowych nieliniowości, ale wynika to z przekątnej jakobianów. Musisz przejść przez etap jakobowski, aby dojść do mnożenia elementarnego, co może wyjaśnić twoje zamieszanie.

W matematyce, że jedne nieliniowości , strata i wejścia do nieliniowości (może to być dowolny napinacz). Wyjście nieliniowości ma ten sam wymiar --- jak mówi @Logan, funkcja aktywacji jest zdefiniowana jako element.sLx∈Rn×1s(x)∈Rn×1

Chcemy

∇xL=(∂s(x)∂x)T∇s(x)L

Gdzie jest jakobianem . Rozszerzając ten jakobski, otrzymujemy ∂s(x)∂xs

[∂s(x1)∂x1…∂s(x1)∂xn⋮⋱⋮∂s(xn)x1…∂s(xn)∂xn]

Widzimy, że wszędzie jest zero, z wyjątkiem przekątnej. Możemy wykonać wektor wszystkich jego elementów ukośnych

Diag(∂s(x)∂x)

A następnie użyj operatora opartego na elementach.

∇xL=(∂s(x)∂x)T∇s(x)L=Diag(∂s(x)∂x)∘∇s(x)L

0

Ilekroć jest to odwrotnie proporcjonalne do funkcji aktywacji, operacje stają się elementarne. W szczególności na twoim przykładzie jest pochodną propagacji wstecznej, a jest pochodną aktywacji, a jej produkt jest produktem elementarnym, . Jest tak, ponieważ funkcje aktywacyjne są zdefiniowane jako operacje elementowe w sieci neuronowej.δ2=(y^−y)W2Ta′=h∘(1−h)δ2∘a′

Zobacz slajdy wykładowe cs224d strona 30, może to również pomóc.

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.