Ini adalah pertanyaan konseptual kecil yang telah mengganggu saya untuk sementara waktu: Bagaimana kita dapat kembali-menyebar melalui lapisan max-pooling dalam jaringan saraf?
Saya menemukan max-pooling layers saat membaca tutorial ini untuk library nn Torch 7. Pustaka mengabstraksi perhitungan gradien dan meneruskan untuk setiap lapisan jaringan yang dalam. Saya tidak mengerti bagaimana perhitungan gradien dilakukan untuk lapisan max-pooling.
Saya tahu bahwa jika Anda memiliki input masuk ke neuron dari layer , maka (didefinisikan sebagai ) diberikan oleh:
Jadi, lapisan kumpulan-max akan menerima dari lapisan berikutnya seperti biasa; tetapi karena fungsi aktivasi untuk max-pooling neuron mengambil vektor nilai (lebih dari yang dimaksimalkan) sebagai input, bukan angka tunggal lagi, tetapi vektor ( harus diganti oleh ). Lebih lanjut, , sebagai fungsi maksimal, tidak dapat dibedakan sehubungan dengan inputnya.
Jadi .... bagaimana cara kerjanya tepatnya?
sumber
Max Pooling
Jadi misalkan Anda memiliki layer P yang muncul di atas PR layer. Maka umpan maju akan menjadi seperti ini:
di mana adalah aktivasi neuron ke-i dari lapisan P, f adalah fungsi aktivasi dan W adalah bobot. Jadi jika Anda menurunkannya, dengan aturan rantai Anda mendapatkan bahwa gradien mengalir sebagai berikut:Pi
Tetapi sekarang, jika Anda memiliki penyatuan maks, untuk neuron maks dan untuk semua neuron lainnya, maka untuk neuron maks di lapisan sebelumnya dan untuk semua lainnya neuron. Begitu:f=id f=0 f′=1 f′=0
sumber
Jawaban @ Shinvu ditulis dengan baik, saya ingin menunjukkan video yang menjelaskan gradien operasi Max () dan ini dalam grafik komputasi yang cepat dipahami.!
saat menerapkan operasi maxpool (simpul komputasi dalam grafik komputasi-arsitektur NN Anda), kita memerlukan fungsi untuk membuat matriks "mask" yang melacak di mana letak maksimum matriks. Benar (1) menunjukkan posisi maksimum dalam X, entri lainnya adalah False (0). Kami melacak posisi max karena ini adalah nilai input yang pada akhirnya mempengaruhi output, dan oleh karena itu biaya. Backprop adalah komputasi gradien sehubungan dengan biaya, jadi apa pun yang mempengaruhi biaya akhir harus memiliki gradien non-nol. Jadi, backprop akan "menyebarkan" gradien kembali ke nilai input khusus ini yang telah mempengaruhi biaya.
sumber