Pertanyaan ini bermuara pada "bagaimana lapisan lilit persis pekerjaan.
Misalkan saya memiliki gambar skala abu-abu . Jadi gambar memiliki satu saluran. Di lapisan pertama, saya menerapkan konvolusi dengan filter dan bantalan . Lalu saya punya layer konvolusi lain dengan konvolusi dan filter . Berapa banyak peta fitur yang saya miliki?3 × 3 k 1 5 × 5 k 2
Konvolusi tipe 1
Lapisan pertama dieksekusi. Setelah itu, saya punya peta fitur (satu untuk setiap filter). Masing-masing memiliki ukuran . Setiap piksel tunggal dibuat dengan mengambil piksel dari gambar input empuk. n × m 3 ⋅ 3 = 9
Kemudian lapisan kedua diterapkan. Setiap filter diterapkan secara terpisah untuk masing-masing peta fitur . Ini menghasilkan peta fitur untuk setiap peta fitur . Jadi ada fitur peta setelah lapisan kedua. Setiap piksel tunggal dari masing-masing peta fitur baru dibuat dengan mengambil "piksel" dari peta fitur empuk dari sebelumnya.k 1 k 1 × k 2 5 ⋅ 5 = 25
Sistem harus mempelajari .
Ketik konvolusi 2.1
Seperti sebelumnya: Lapisan pertama dijalankan. Setelah itu, saya punya peta fitur (satu untuk setiap filter). Masing-masing memiliki ukuran . Setiap piksel tunggal dibuat dengan mengambil piksel dari gambar input empuk. n × m 3 ⋅ 3 = 9
Tidak seperti sebelumnya: Kemudian lapisan kedua diterapkan. Setiap filter diterapkan ke wilayah yang sama, tetapi semua peta fitur dari sebelumnya. Ini menghasilkan peta fitur secara total setelah lapisan kedua dieksekusi. Setiap piksel tunggal dari masing-masing peta fitur baru dibuat dengan mengambil "piksel" dari peta fitur empuk dari sebelumnya.k 2 ⋅ 5 ⋅ 5 = 25 ⋅ k 2
Sistem harus mempelajari .
Ketik konvolusi 2.2
Seperti di atas, tetapi alih-alih memiliki parameter per filter yang harus dipelajari dan disalin secara sederhana untuk peta fitur input lainnya, Anda memiliki parameter yang harus dipelajari.
Pertanyaan
- Apakah tipe 1 atau tipe 2 biasanya digunakan?
- Jenis apa yang digunakan di Alexnet ?
- Jenis apa yang digunakan di GoogLeNet ?
- Jika Anda mengatakan tipe 1: Mengapa convolutions masuk akal? Bukankah mereka hanya mengalikan data dengan konstanta?
- Jika Anda mengatakan tipe 2: Tolong jelaskan biaya kuadratik ("Misalnya, dalam jaringan visi yang mendalam, jika dua lapisan konvolusional dirantai, setiap peningkatan seragam dalam jumlah filternya menghasilkan peningkatan perhitungan kuadratik")
Untuk semua jawaban, tolong berikan beberapa bukti (makalah, buku teks, dokumentasi kerangka kerja) bahwa jawaban Anda benar.
Pertanyaan bonus 1
Apakah pengumpulan diterapkan selalu hanya per peta fitur atau apakah itu juga dilakukan pada beberapa peta fitur?
Pertanyaan bonus 2
Saya relatif yakin bahwa tipe 1 sudah benar dan ada yang salah dengan kertas GoogLe. Tapi ada konvolusi 3D juga. Katakanlah Anda memiliki 1337 peta fitur ukuran dan Anda menerapkan filter . Bagaimana Anda menggeser filter di atas peta fitur? (Kiri ke kanan, atas ke bawah, peta fitur pertama hingga peta fitur terakhir?) Apakah penting selama Anda melakukannya secara konsisten?
Penelitian saya
- Saya sudah membaca dua makalah dari atas, tetapi saya masih tidak yakin apa yang digunakan.
- Saya sudah membaca dokumentasi lasagna
- Saya sudah membaca dokumentasi theano
- Saya sudah membaca jawaban tentang Memahami jaringan saraf convolutional (tanpa mengikuti semua tautan)
- Saya telah membaca Convolutional Neural Networks (LeNet) . Terutama gambar 1 membuat saya relatif yakin bahwa Tipe 2.1 adalah yang benar. Ini juga cocok dengan komentar "biaya kuadratik" di GoogLe Net dan beberapa pengalaman praktis yang saya miliki dengan Caffee.
sumber
Jawaban:
Saya tidak yakin tentang alternatif yang dijelaskan di atas, tetapi metodologi yang umum digunakan adalah:
Sebelum penerapan non-linearitas, setiap keluaran filter bergantung secara linear pada semua peta fitur sebelum di dalam tambalan, jadi Anda berakhir dengan filter setelah lapisan kedua. Jumlah keseluruhan parameter adalah 3 ˙k2 .3˙3˙k1+ k1˙5˙5˙k2
Bonus 1: Penggabungan dilakukan per peta fitur, secara terpisah.
Bonus 2: Urutan "geser" tidak masalah. Bahkan, setiap output dihitung berdasarkan lapisan sebelumnya, sehingga respons filter output tidak saling bergantung. Mereka dapat dihitung secara paralel.
sumber
Saya baru saja bergumul dengan pertanyaan yang sama selama beberapa jam. Kupikir aku akan berbagi insite yang membantuku memahaminya.
Jawabannya adalah filter untuk lapisan konvolusional kedua tidak memiliki dimensi yang sama dengan filter untuk lapisan pertama. Secara umum, filter harus memiliki jumlah dimensi yang sama dengan inputnya . Jadi pada lapisan conv pertama, input memiliki 2 dimensi (karena ini adalah gambar). Dengan demikian filter juga memiliki dua dimensi. Jika ada 20 filter di lapisan konv pertama, maka output dari lapisan konv pertama adalah tumpukan 20 peta fitur 2D. Jadi output dari lapisan konv pertama adalah 3 dimensi, di mana ukuran dimensi ketiga sama dengan jumlah filter di lapisan pertama.
Sekarang tumpukan 3D ini membentuk input ke lapisan konv kedua. Karena input ke lapisan 2 adalah 3D, filter juga harus 3D. Jadikan ukuran filter lapisan kedua dalam dimensi ketiga sama dengan jumlah peta fitur yang merupakan output dari lapisan pertama.
Sekarang Anda hanya berbelok ke 2 dimensi pertama; baris dan kolom. Dengan demikian konvolusi dari setiap filter lapisan 2 dengan tumpukan peta fitur (output dari lapisan pertama) menghasilkan peta fitur tunggal.
Oleh karena itu ukuran dimensi ketiga dari output lapisan kedua sama dengan jumlah filter di lapisan kedua.
sumber
Lihat kuliah ini dan visualisasi ini
Biasanya digunakan tipe 2.1 konvolusi. Di input Anda memiliki gambar NxMx1, maka setelah konvolusi pertama Anda akan mendapatkan N_1xM_1xk_1, sehingga gambar Anda setelah konvolusi pertama akan memiliki saluran k_1. Dimensi baru N_1 dan M_1 akan tergantung pada langkah S dan bantalan P: N_1 = (N - 3 + 2P) / S +1, Anda menghitung M_1 dalam analogi. Untuk lapisan konv pertama Anda memiliki bobot 3x3xk_1 + k_1. Ada tambahan k_1 untuk bias dalam fungsi nonlinear.
Di lapisan kedua Anda memiliki gambar input dengan ukuran N_1xM_1xk_1, di mana k_1 adalah jumlah saluran baru. Dan setelah konvolusi kedua Anda mendapatkan N_2xM_2xk_2 gambar (array). Anda memiliki 5x5xk_2xk_1 + k_2 parameter di lapisan kedua.
Untuk konvolusi 1x1 dengan filter k_3 dan input NxMxC (C adalah jumlah saluran input) Anda akan mendapatkan gambar (array) NxMxk_3 baru, sehingga 1x1 masuk akal. Mereka diperkenalkan dalam makalah ini
Bonus 1: pengumpulan diterapkan per peta fitur.
Untuk perinciannya, silakan lihat slide untuk kursus CNN di Stanford - Anda memiliki visualisasi yang bagus tentang bagaimana konvolusi dijumlahkan dari beberapa saluran input.
sumber
Yaitu, kernel dalam lapisan convolutional menjangkau kedalaman output dari layer sebelumnya.
Spekulasi:
Pertanyaan bonus 2 bukanlah sesuatu yang saya kenal, tapi saya akan menebak parameter kedalaman dalam konvolusi menjadi dimensi ekstra.
sumber