Turunkan gradien dari jaringan saraf tunggal lapisan wrt inputnya, apa operator dalam aturan rantai?

9

Masalahnya adalah:

Turunkan gradien sehubungan dengan lapisan input untuk jaringan saraf lapisan tersembunyi tunggal menggunakan sigmoid untuk input -> hidden, softmax untuk hidden -> output, dengan kehilangan entropi silang.

Saya dapat melewati sebagian besar derivasi menggunakan aturan rantai tetapi saya tidak yakin tentang bagaimana sebenarnya "rantai" mereka bersama-sama.

Tentukan beberapa notasi

r=xW1+b1

, σ adalah fungsi sigmoidh=σ(r)σ

,θ=hW2+b2

,Sadalah fungsi Softmaxy^=S(θ)S

, y adalah label nyata satu-panas vektorJ(y^)=iylogy^iy

Kemudian dengan aturan rantai,

Jx=Jθθhhrrx

Gradien individu adalah:

q

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

Sekarang kita harus merangkai definisi bersama. Dalam variabel tunggal ini mudah, kami hanya mengalikan semuanya. Dalam vektor, saya tidak yakin apakah akan menggunakan perkalian elemen-bijaksana atau perkalian matriks.

Jx=(y^y)W2T[h(1h)]W1T

1DxJx

W2Th

Terima kasih!

amatsukawa
sumber
Saya menyadari menemukan gradien wrt ke input tidak sering dilakukan. Saya percaya ini adalah petunjuk untuk menghitung embeddings kata, di mana Anda memiliki pilihan untuk mengoptimalkan vektor kata "input".
amatsukawa
Bagaimana kau menurunkannya dJ / dTheta
raaj

Jawaban:

4

Saya percaya bahwa kunci untuk menjawab pertanyaan ini adalah untuk menunjukkan bahwa penggandaan elemen-bijaksana sebenarnya singkatan dan karena itu ketika Anda mendapatkan persamaan Anda tidak pernah benar - benar menggunakannya.

Operasi yang sebenarnya bukan perkalian elemen-bijaksana tetapi sebagai gantinya, perkalian matriks standar dari gradien dengan Jacobian , selalu .

Dalam kasus nonlinieritas, Jacobian dari output vektor nonlinieritas berkenaan dengan input vektor dari nonlinieritas merupakan matriks diagonal. Oleh karena itu benar bahwa gradien dikalikan dengan matriks ini setara dengan gradien dari output nonlinier sehubungan dengan elemen kerugian-bijaksana dikalikan dengan vektor yang mengandung semua turunan parsial dari nonlinier sehubungan dengan input nonlinier, sehubungan dengan input nonlinier, tetapi ini mengikuti dari Jacobian yang diagonal. Anda harus melewati langkah Jacobian untuk mendapatkan penggandaan elemen-bijaksana, yang mungkin menjelaskan kebingungan Anda.

sLxRn×1s(x)Rn×1

xL=(s(x)x)Ts(x)L

s(x)xs

[s(x1)x1s(x1)xns(xn)x1s(xn)xn]

Diag(s(x)x)

Dan kemudian gunakan operator elemen-bijaksana.

xL=(s(x)x)Ts(x)L=Diag(s(x)x)s(x)L
pengguna0
sumber
0

δ2=(y^y)W2Ta=h(1h)δ2a

Lihat slide kuliah cs224d halaman 30, ini mungkin juga membantu.

Logan
sumber