Mengapa aktivasi non-berpusat fungsi berfungsi masalah dalam backpropagation?

26

Saya baca di sini sebagai berikut:

  • Output Sigmoid tidak berpusat nol . Ini tidak diinginkan karena neuron dalam lapisan pemrosesan berikutnya dalam Jaringan Saraf Tiruan (lebih lanjut tentang ini segera) akan menerima data yang tidak berpusat nol. Ini memiliki implikasi pada dinamika selama gradient descent, karena jika data yang masuk ke neuron selalu positif (misalnya elementwise dalam )), maka gradien pada bobot akan selama backpropagation menjadi semua positif, atau semua negatif (tergantung pada gradien seluruh ekspresi x>0f=wTx+bwf). Ini dapat memperkenalkan dinamika zig-zag yang tidak diinginkan dalam pembaruan gradien untuk bobot. Namun, perhatikan bahwa setelah gradien ini ditambahkan di seluruh kumpulan data, pembaruan terakhir untuk bobot dapat memiliki tanda variabel, agak mengurangi masalah ini. Oleh karena itu, ini adalah ketidaknyamanan tetapi memiliki konsekuensi yang kurang parah dibandingkan dengan masalah aktivasi jenuh di atas.

Mengapa memiliki semua (elementwise) menyebabkan gradien semua-positif atau semua-negatif pada ?x>0w


Amelio Vazquez-Reina
sumber
2
Saya juga memiliki pertanyaan yang sama persis dengan menonton video CS231n.
subwaymatch

Jawaban:

28

f=wsayaxsaya+b
dfdwsaya=xsaya
dL.dwsaya=dL.dfdfdwsaya=dL.dfxsaya

karena xsaya>0 , gradien dL.dwsaya selalu memiliki tanda yang sama dengan dL.df (semuanya positif atau semuanya negatif).

Perbarui
Katakanlah ada dua parameter dan , jika gradien dua dimensi selalu dari tanda yang sama, itu berarti kita hanya bisa bergerak secara kasar ke arah timur laut atau barat daya di ruang parameter.w1w2

Jika tujuan kita berada di timur laut, kita hanya bisa bergerak dengan cara zig-zag untuk sampai ke sana, sama seperti parkir paralel di ruang sempit. (maafkan gambar saya)

masukkan deskripsi gambar di sini

Oleh karena itu fungsi aktivasi semua positif atau semua negatif (relu, sigmoid) dapat menjadi sulit untuk optimasi berbasis gradien. Untuk mengatasi masalah ini, kita dapat menormalkan data terlebih dahulu menjadi nol-berpusat seperti pada normalisasi batch / layer.

Juga solusi lain yang bisa saya pikirkan adalah menambahkan istilah bias untuk setiap input sehingga layer menjadi Gradien adalah tanda tidak hanya bergantung pada .

f=wsaya(xsaya+bsaya).
dL.dwsaya=dL.df(xsaya-bsaya)
xsaya

dontloo
sumber
Tolong perbaiki saya jika saya salah tetapi tidak seharusnya nilai dL / df ditransformasikan dari x yaitu xT karena kita akan menggunakan ide Jacobin di sini.
chinmay
fwTx+bL.wx
Ya, ini kesalahan ketik besar dari saya. Maksud saya df / dw .... tapi saya pikir ini lebih tergantung pada vektor x dan apakah itu vektor baris atau vektor kolom
chinmay
dL./df
1
@ Floyd hai Saya baru saja menambahkan beberapa pembaruan untuk pertanyaan Anda
dontloo