[Pertanyaan ini juga diajukan pada stack overflow]
Pertanyaan singkatnya
Saya sedang mempelajari jaringan saraf convolutional, dan saya percaya bahwa jaringan ini tidak memperlakukan setiap input neuron (pixel / parameter) secara setara. Bayangkan kita memiliki jaringan yang dalam (banyak lapisan) yang menerapkan konvolusi pada beberapa gambar input. Neuron di "tengah" gambar memiliki banyak jalur unik ke banyak neuron lapisan yang lebih dalam, yang berarti bahwa variasi kecil di neuron tengah memiliki efek yang kuat pada output. Namun, neuron di tepi gambar hanya memiliki jalur (atau, tergantung pada implementasi yang tepat, dari urutan ) jalur di mana informasinya mengalir melalui grafik. Tampaknya ini "kurang terwakili".
Saya prihatin dengan hal ini, karena pembedaan skala neuron tepi ini secara eksponensial dengan kedalaman (jumlah lapisan) jaringan. Bahkan menambahkan lapisan max-pooling tidak akan menghentikan peningkatan eksponensial, hanya koneksi penuh membawa semua neuron pada pijakan yang sama. Saya tidak yakin bahwa alasan saya benar, jadi pertanyaan saya adalah:
- Apakah saya benar bahwa efek ini terjadi di jaringan konvolusional yang dalam?
- Adakah teori tentang hal ini, pernahkah disebutkan dalam literatur?
- Apakah ada cara untuk mengatasi efek ini?
Karena saya tidak yakin apakah ini memberikan informasi yang cukup, saya akan menguraikan lebih banyak tentang pernyataan masalah, dan mengapa saya percaya ini adalah masalah.
Penjelasan lebih rinci
Bayangkan kita memiliki jaringan saraf yang dalam yang mengambil gambar sebagai input. Asumsikan kita menerapkan filter konvolusional piksel di atas gambar, di mana kita menggeser jendela konvolusi sebanyak piksel setiap kali. Ini berarti bahwa setiap neuron dalam input mengirimkan aktivasi ke neuron pada lapisan . Masing-masing neuron ini dapat mengirimkan aktivasi mereka ke lainnya , sedemikian sehingga neuron paling atas kami terwakili dalam neuron keluaran, dan seterusnya.
Ini, bagaimanapun, tidak berlaku untuk neuron di tepi: ini mungkin diwakili hanya dalam sejumlah kecil jendela konvolusi, sehingga menyebabkan mereka untuk mengaktifkan (dari urutan) hanya neuron di lapisan berikutnya. Menggunakan trik seperti mirroring di sepanjang tepi tidak akan membantu ini: neuron lapis kedua yang akan diproyeksikan masih di tepi, yang berarti bahwa neuron lapis kedua akan kurang terwakili (sehingga membatasi pentingnya neuron tepi kita juga). Seperti dapat dilihat, perbedaan ini secara eksponensial dengan jumlah lapisan.
Saya telah membuat gambar untuk memvisualisasikan masalah, yang dapat ditemukan di sini (saya tidak diizinkan untuk memasukkan gambar dalam pos itu sendiri). Jaringan ini memiliki jendela konvolusi ukuran . Angka-angka di sebelah neuron menunjukkan jumlah jalur ke neuron terdalam. Gambar ini mengingatkan pada Segitiga Pascal .
https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0
Mengapa ini menjadi masalah?
Efek ini tampaknya tidak menjadi masalah pada pandangan pertama: Pada prinsipnya, bobot harus secara otomatis menyesuaikan sedemikian rupa sehingga jaringan melakukan tugasnya. Selain itu, ujung-ujung gambar tidak terlalu penting dalam pengenalan gambar. Efek ini mungkin tidak terlihat dalam tes pengenalan gambar sehari-hari, tetapi masih mengkhawatirkan saya karena dua alasan: 1. generalisasi untuk aplikasi lain, dan 2. masalah yang timbul dalam kasus jaringan yang sangat dalam.
1. Mungkin ada aplikasi lain, seperti pengenalan suara atau suara, di mana tidak benar bahwa neuron paling tengah adalah yang paling penting. Menerapkan konvolusi sering dilakukan dalam bidang ini, tetapi saya belum dapat menemukan makalah yang menyebutkan efek yang saya khawatirkan.
2. Jaringan yang sangat dalam akan melihat efek buruk yang secara eksponensial dari diskriminasi neuron batas, yang berarti bahwa neuron pusat dapat direpresentasikan secara berlebihan oleh berbagai urutan besarnya (bayangkan kita memiliki lapisan sehingga contoh di atas akan memberikan cara neuron sentral dapat memproyeksikan informasinya). Ketika seseorang meningkatkan jumlah lapisan, seseorang terikat untuk mencapai batas di mana bobot tidak layak mengkompensasi efek ini.
Sekarang bayangkan kita mengganggu semua neuron dengan jumlah kecil. Neuron sentral akan menyebabkan output berubah lebih kuat oleh beberapa urutan besarnya, dibandingkan dengan neuron tepi. Saya percaya bahwa untuk aplikasi umum, dan untuk jaringan yang sangat dalam, cara mengatasi masalah saya harus ditemukan?