Bagaimana cara lapisan konvolusi selanjutnya bekerja?


29

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 2n×m3×3k15×5k2

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 = 9k1n×m33=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 = 25k2k1k1×k255=25

Sistem harus mempelajari .k133+k255

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 = 9k1n×m33=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 25 5 = 25 k 2k2k255=25k2

Sistem harus mempelajari .k133+k255

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.55=25k133+k2k155

Pertanyaan

  1. Apakah tipe 1 atau tipe 2 biasanya digunakan?
  2. Jenis apa yang digunakan di Alexnet ?
  3. Jenis apa yang digunakan di GoogLeNet ?
    • Jika Anda mengatakan tipe 1: Mengapa 1×1 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?42×3143×4×5

Penelitian saya


Beberapa saat kemudian: Analisis dan Optimalisasi Arsitektur Jaringan Neural Konvolusional , terutama bab 2 dan Gambar 2.2 dan Gambar 2.3.
Martin Thoma

Jawaban:


5

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.


1
Saya benar-benar lupa tentang pertanyaan ini. Sementara itu, saya menulis tesis master saya tentang CNN. Bab 3 menjelaskan cara kerjanya.
Martin Thoma

1
Untuk memperjelas: Tipe 2.2 adalah yang benar (dijelaskan dalam jawaban ini)
Martin Thoma

1
Jika ada yang benar-benar ingin melihat ini dalam tindakan, saya menerapkan jaring saraf convolutional yang mendalam di google sheets. Anda dapat melihat filter, dan gambar input, piksel untuk piksel saat berfungsi melalui CNN, hingga CNN memprediksi jawabannya: docs.google.com/spreadsheets/d/…
bwest87

5

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.


2

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.


2
Jawaban khusus tautan tidak disarankan - tautan dapat berhenti berfungsi. Bisakah Anda sebaris info yang relevan?
Sean Owen

1
visualisasi sangat membantu. Momen pencerahan saya adalah ketika saya menyadari bahwa filternya adalah 3D, dan bukan 2D.
kmace

1
Tautan bagus, bereskan untuk saya. Tetapi jawaban Anda tampaknya tidak konsisten dengan apa yang dikatakan di tautan, khususnya di lapisan 2 konv setiap bidang reseptif adalah 3D dengan dimensi 5x5xk_1 sehingga jumlah parameter harus 5 * 5 * k_1 * k_2 (ditambah bias).
Daniel Schlaug

@DanielSchlaug Anda benar, saya mengoreksi jawabannya.
pplonski

1

k1331k1

k255k1k2

Yaitu, kernel dalam lapisan convolutional menjangkau kedalaman output dari layer sebelumnya.

1×1kn11kn-1

Spekulasi:

Pertanyaan bonus 2 bukanlah sesuatu yang saya kenal, tapi saya akan menebak parameter kedalaman dalam konvolusi menjadi dimensi ekstra.

mnknmnkn+1kn

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.