Kembali-propagasi melalui lapisan penyatuan maks

13

Saya punya sub-pertanyaan kecil untuk pertanyaan ini .

Saya mengerti bahwa ketika kembali-merambat melalui lapisan pooling max gradien dirutekan kembali dengan cara yang neuron di lapisan sebelumnya yang dipilih sebagai max mendapatkan semua gradien. Yang saya tidak yakin 100% adalah bagaimana gradien pada lapisan berikutnya akan dialihkan kembali ke lapisan penyatuan.

Jadi pertanyaan pertama adalah apakah saya memiliki lapisan penyatuan yang terhubung ke lapisan yang sepenuhnya terhubung - seperti gambar di bawah ini.

Contoh 1

Ketika menghitung gradien untuk "neuron" cyan dari lapisan kumpulan apakah saya menjumlahkan semua gradien dari neuron lapisan FC? Jika ini benar maka setiap "neuron" dari lapisan kumpulan memiliki gradien yang sama?

Sebagai contoh jika neuron pertama dari lapisan FC memiliki gradien 2, kedua memiliki gradien 3, dan ketiga gradien 6. Apa gradien "neuron" biru dan ungu di lapisan pooling dan mengapa?

Dan pertanyaan kedua adalah ketika layer pooling dihubungkan ke layer konvolusi lain. Bagaimana cara menghitung gradien? Lihat contoh di bawah ini.

contoh2

Untuk "neuron" paling kanan paling atas dari lapisan penyatuan (yang digariskan hijau) saya hanya mengambil gradien dari neuron ungu di lapisan konv berikutnya dan mengarahkan kembali, kan?

Bagaimana dengan yang diisi hijau? Saya perlu mengalikan kolom neuron pertama di lapisan berikutnya karena aturan rantai? Atau apakah saya perlu menambahkannya?

Tolong jangan memposting banyak persamaan dan katakan padaku bahwa jawaban saya benar di sana karena saya sudah mencoba untuk membungkus kepala saya di sekitar persamaan dan saya masih tidak mengerti dengan sempurna itu sebabnya saya menanyakan pertanyaan ini secara sederhana cara.

Majster
sumber
Sehubungan dengan pertanyaan pertama Anda, backpropagation adalah melihat bobot dan input apa yang memengaruhi kehilangan Anda dengan cara apa. Dalam hal max pooling hanya max dari neuron yang mempengaruhi output (kecuali untuk saat ada dasi). Jadi hanya merambatkan kesalahan ke neuron yang memiliki nilai aktivasi maksimum.
Jan van der Vegt
Ya, saya mengerti ini dan saya juga mengatakan ini dalam rekap di awal posting saya. Tapi saya tidak mengerti bagaimana cara "menggabungkan" gradien dari neuron lapisan berikutnya untuk merambat kembali. Semoga Anda tahu apa yang saya maksud.
Majster

Jawaban:

5

Jika ini benar maka setiap "neuron" dari lapisan kumpulan memiliki gradien yang sama?

Tidak. Tergantung pada bobot dan fungsi aktivasi. Dan kebanyakan bobotnya berbeda dari neuron pertama dari lapisan pooling ke lapisan FC seperti dari lapisan kedua dari lapisan pooling ke lapisan FC.

Jadi biasanya Anda akan memiliki situasi seperti:

FCsaya=f(jWsayajPj)

Di mana adalah neuron ke-i pada lapisan yang sepenuhnya terhubung, adalah neuron ke-j di lapisan dan adalah fungsi aktivasi dan merupakan bobot.FCsayaPjfW

Ini berarti bahwa gradien sehubungan dengan P_j adalah

grSebuahd(Pj)=sayagrSebuahd(FCsaya)fWsayaj .

Yang berbeda untuk j = 0 atau j = 1 karena W berbeda.

Dan pertanyaan kedua adalah ketika layer pooling dihubungkan ke layer konvolusi lain. Bagaimana cara menghitung gradien?

Itu tidak membuat perbedaan apa jenis lapisan itu terhubung. Ini adalah persamaan yang sama sepanjang waktu. Jumlah semua gradien pada lapisan berikutnya dikalikan dengan bagaimana output dari neuron-neuron tersebut dipengaruhi oleh neuron pada lapisan sebelumnya. Perbedaan antara FC dan Konvolusi adalah bahwa dalam FC semua neuron pada lapisan berikutnya akan memberikan kontribusi (bahkan jika mungkin kecil) tetapi dalam Konvolusi sebagian besar neuron pada lapisan berikutnya sama sekali tidak dipengaruhi oleh neuron pada lapisan sebelumnya sehingga kontribusinya. persis nol.

Untuk "neuron" paling kanan paling atas dari lapisan penyatuan (yang digariskan hijau) saya hanya mengambil gradien dari neuron ungu di lapisan konv berikutnya dan mengarahkan kembali, kan?

Baik. Plus juga gradien dari neuron lain pada lapisan konvolusi yang mengambil sebagai input neuron paling kanan paling atas dari lapisan penggabungan.

Bagaimana dengan yang diisi hijau? Saya perlu mengalikan kolom neuron pertama di lapisan berikutnya karena aturan rantai? Atau apakah saya perlu menambahkannya?

Tambahkan mereka. Karena aturan rantai.

Max Pooling Sampai pada titik ini, fakta bahwa itu max pool sama sekali tidak relevan seperti yang Anda lihat. Max pooling hanyalah fungsi aktivasi pada layer itu yang . Jadi ini berarti bahwa gradien untuk lapisan sebelumnya adalah:mSebuahxgrSebuahd(PRj)

grSebuahd(PRj)=sayagrSebuahd(Psaya)fWsayaj .

Tapi sekarang untuk neuron maks dan untuk semua neuron lain, jadi untuk neuron maks di lapisan sebelumnya dan untuk semua neuron lainnya. Begitu:f=sayadf=0f=1f=0

grSebuahd(PRmSebuahxnekamurHain)=sayagrSebuahd(Psaya)Wsaya mSebuahx nekamurHain ,

grSebuahd(PRHaithers)=0.

patapouf_ai
sumber