Pertanyaan tentang bias dalam Jaringan Konvolusional
11
Saya mencoba mencari tahu berapa berat dan bias yang dibutuhkan untuk CNN.
Katakanlah saya memiliki (3, 32, 32) gambar dan ingin menerapkan filter (32, 5, 5). Untuk setiap peta fitur, saya memiliki bobot 5x5, jadi saya harus memiliki parameter 3 x (5x5) x 32. Sekarang saya perlu menambahkan bias. Saya yakin saya hanya memiliki parameter (3 x (5x5) + 1) x 32, jadi apakah biasnya sama untuk semua warna (RGB)?
Apakah ini benar? Apakah saya menjaga bias yang sama untuk setiap gambar di kedalamannya (dalam hal ini 3) saat saya menggunakan bobot yang berbeda? Mengapa demikian?
Bias beroperasi per neuron virtual, sehingga tidak ada nilai dalam memiliki beberapa input bias di mana ada output tunggal - yang akan setara dengan hanya menambahkan bobot bias yang berbeda ke dalam bias tunggal.
Dalam peta fitur yang merupakan output dari lapisan tersembunyi pertama, warna tidak lagi disimpan terpisah *. Secara efektif setiap peta fitur adalah "saluran" di lapisan berikutnya, meskipun mereka biasanya divisualisasikan secara terpisah di mana input divisualisasikan dengan saluran yang digabungkan. Cara lain untuk berpikir tentang hal ini adalah bahwa saluran RGB terpisah pada gambar asli adalah 3 "peta fitur" dalam input.
Tidak masalah berapa banyak saluran atau fitur di lapisan sebelumnya, output untuk setiap peta fitur di lapisan berikutnya adalah nilai tunggal di peta itu. Satu nilai output sesuai dengan satu neuron virtual, yang membutuhkan satu bobot bias.
Dalam CNN, seperti yang Anda jelaskan dalam pertanyaan, bobot yang sama (termasuk bobot bias) dibagi di setiap titik di peta fitur output. Jadi setiap peta fitur memiliki bobot biasnya sendiri dan juga previous_layer_num_features x kernel_width x kernel_heightbobot koneksi.
Jadi ya, contoh Anda menghasilkan (3 x (5x5) + 1) x 32total bobot untuk lapisan pertama adalah benar untuk CNN dengan lapisan pertama yang memproses input RGB menjadi 32 peta fitur terpisah.
* Anda mungkin menjadi bingung dengan melihat visualisasi bobot CNN yang dapat dipisahkan ke dalam saluran warna tempat mereka beroperasi.
Saya pikir ada satu bias per filter ... apakah kita memiliki definisi neuron virtual yang berbeda?
Charlie Parker
@CharlieParker Dalam hal jumlah parameter, satu bias per filter sama dengan satu bias per neuron. Ada beberapa cara yang setara untuk melihat arsitektur peta fitur CNN. Satu akan menjadi "sepenuhnya diperluas" lapisan dengan sejumlah besar neuron semuanya berbagi parameter yang sama. Yang lain adalah memikirkan setiap filter konvolusional sebagai menggambarkan koneksi lokal neuron tunggal, dan layer berulang kali menggunakan neuron yang sama ini. Jadi saya pikir kita mungkin memiliki definisi yang sama tentang neuron, tetapi jawabannya menggambarkan hal-hal hanya dari satu perspektif.
Neil Slater
Menarik, saya kira Anda memikirkan setiap neuron untuk setiap filter, saya berpikir untuk beberapa alasan setiap aktivasi untuk setiap neuron, tetapi filter tersebut aktif di banyak tempat dalam gambar sehingga tentu saja saya memiliki lebih banyak neuron dalam pikiran.
Charlie Parker
1
Ini adalah properti dari CNN yang mereka gunakan bobot dan bias yang dibagi (bobot dan bias yang sama untuk semua neuron yang tersembunyi di lapisan) untuk mendeteksi fitur yang sama. Ini mengarah pada pembelajaran yang lebih mendalam dibandingkan dengan jaringan saraf sederhana. Anda dapat membacanya sebagai referensi:
Saya mengajukan pertanyaan yang berbeda. Pertanyaan saya adalah tentang bias. Dari rumus, terlihat bahwa untuk setiap peta fitur terdapat bobot yang berbeda, tetapi bias yang sama digunakan di semua peta fitur.
Ini adalah properti dari CNN yang mereka gunakan bobot dan bias yang dibagi (bobot dan bias yang sama untuk semua neuron yang tersembunyi di lapisan) untuk mendeteksi fitur yang sama. Ini mengarah pada pembelajaran yang lebih mendalam dibandingkan dengan jaringan saraf sederhana. Anda dapat membacanya sebagai referensi:
http://deeplearning.net/tutorial/lenet.html
http://neuralnetworksanddeeplearning.com/chap6.html#introducing_convolutional_networks
sumber