Saat ini saya sedang melakukan Tutorial Belajar Udacity Deep. Dalam Pelajaran 3, mereka berbicara tentang lilitan 1x1. Konvolusi 1x1 ini digunakan dalam Modul Google Inception. Saya mengalami kesulitan memahami apa yang dimaksud dengan konvolusi 1x1.
Saya juga melihat posting ini oleh Yann Lecun.
Bisakah seseorang dengan ramah menjelaskan ini kepada saya?
Jawaban:
Memang, dalam artikel Google Inception Going Deeper with Convolutions , mereka menyatakan (berani adalah milik saya, bukan oleh penulis asli):
Jadi dalam arsitektur Inception, kami menggunakan filter konvolusional 1x1 untuk mengurangi dimensi dalam dimensi filter. Seperti yang saya jelaskan di atas, layer konv 1x1 ini dapat digunakan secara umum untuk mengubah dimensi ruang filter (baik menambah atau mengurangi) dan dalam arsitektur Inception kita melihat seberapa efektif filter 1x1 ini untuk pengurangan dimensi, secara eksplisit dalam ruang dimensi filter , bukan ruang dimensi spasial.
Mungkin ada interpretasi lain dari filter konv 1x1, tapi saya lebih suka penjelasan ini, terutama dalam konteks arsitektur Google Inception.
sumber
Konvolusi 1x1 hanya memetakan piksel input dengan semua salurannya ke piksel output, tidak melihat apa pun di sekitarnya. Ini sering digunakan untuk mengurangi jumlah saluran kedalaman, karena seringkali sangat lambat untuk memperbanyak volume dengan kedalaman yang sangat besar.
Yang bawah sekitar ~ 3,7x lebih lambat.
Secara teoritis jaringan saraf dapat 'memilih' yang memasukkan 'warna' untuk dilihat menggunakan ini, bukan kekuatan kasar mengalikan semuanya.
sumber
num_weights = in_depth x out_depth x kernel_size = 256x256x4x4
,. Dalam kasus pertamanum_weights = 256x64x1x1+64x265x4x4=256x64x17
,. Ambil rasio dan itu memberi 256/17 ~ 3.7. Periksa makalah ini halaman 9 untuk visualisasi tentang bagaimana num bobot terkait dengan kedalaman input dan kedalaman output. arxiv.org/pdf/1603.07285.pdfhttps://datascience.stackexchange.com/questions/9175/how-do-s berikutnya-convolution-layers-work
Secara khusus, Tipe 2.2 adalah deskripsi yang benar dari konvolusi di sana.
Jawaban bermanfaat lainnya:
https://ai.stackexchange.com/questions/5769/in-a-cnn-does-each-new-filter-have-different-weights-for-each-input-channel-or
Jawaban ini menjelaskan bagaimana Anda memiliki filter terpisah untuk setiap kombinasi saluran masuk / keluar . Setelah menghitung masing-masing, hasilnya dijumlahkan di atas sumbu saluran input yang menyisakan jumlah nilai saluran keluaran .
Ini adalah video yang saya temukan yang membantu saya memahami cara kerja konvolusi 1x1.
https://www.coursera.org/lecture/convolutional-neural-networks/networks-in-networks-and-1x1-convolutions-ZTb8x
Berikut adalah hal-hal utama yang saya dapatkan dari itu:
sumber
Saya akan mencoba menjelaskan dengan lebih intuitif dan singkat dengan ilustrasi!
Konv 1 * 1 (alias jaringan dalam jaringan )?
katakanlah input Anda adalah (n_H, n_W, n_c_prev). Anda dapat menganggap (1 * 1 * n_c_prev) sebagai neuron tunggal (jaringan yang sepenuhnya terhubung -yaitu mengapa N / w dalam N / w ) yang menerima (n_c_prev) angka dalam input yang mengalikannya dengan (1 * 1 * n_c_prev ) dan kemudian menambahkan dan kemudian mengambil ReLu & output (n_H, n_W) dan jika Anda memiliki beberapa filter (n_c) maka outputnya adalah (n_H, n_W, n_C).
Jadi, Anda dapat menggunakan lapisan penyatuan untuk mengurangi dimensi spasial (n_H, n_W) dan dapat menggunakan 1 * 1 conv untuk mengurangi n_c_prev (yaitu jumlah saluran) yang menyimpan banyak perhitungan. Sebagai contoh
Karena itu, bawa pulang
Anda dapat menggunakan layer konvolusional 1x1 untuk mengurangi n_C tetapi tidak n_H, n_W.
Anda bisa menggunakan lapisan penyatuan untuk mengurangi n_H, n_W, dan n_C.
Dengan kata lain,
sumber
Satu lagi gagasan tentang pengurangan dimensi dalam konteks filter 1x1:
Ambil contoh, fc7 4096x8x8 layer dari FCN. Apa yang terjadi jika lapisan berikutnya (sebut saja fc8) adalah 2048x8x8 dengan ukuran filter 1? fc7 sangat jauh di dalam jaringan, masing-masing fitur 4096 kaya secara semantik, tetapi masing-masing neuron (misalnya gambar input 250x250x3) memiliki bidang reseptif yang besar. Dengan kata lain, jika neuron sangat aktif, kita tahu bahwa di suatu tempat di bidang semantiknya ada fitur yang sesuai.
Ambil contoh neuron paling kiri di fc8 dengan filter 1x1. Ini terhubung ke semua 4.096 neuron / fitur hanya di bidang reseptif yang sama (sudut kiri atas gambar), yang masing-masing diaktifkan oleh fitur tunggal. Beberapa (mari kita sama 500) dari mereka sangat aktif. Jika neuron yang dihasilkan juga sangat aktif, itu berarti ia mungkin belajar mengidentifikasi 1 atau lebih fitur dalam bidang reseptif ini. Setelah Anda melakukan ini 2048 kali untuk neuron paling kiri di fc8, beberapa dari mereka (misalnya 250) akan sangat aktif, yang berarti mereka 'mengumpulkan' fitur dari bidang reseptif yang sama melalui fc7, dan banyak kemungkinan besar lebih dari satu.
Jika Anda terus mengurangi dimensionalitas, jumlah neuron yang berkurang akan mempelajari fitur yang semakin meningkat dari bidang reseptif yang sama. Dan karena parameter spasial 8x8 tetap sama, kami tidak mengubah 'pandangan' masing-masing neuron, sehingga tidak mengurangi kekasaran spasial.
Anda mungkin ingin melihat 'Jaringan Sepenuhnya Konvolusional' oleh Long, Shelhamer dan Darrel.
sumber
Operasi matematika konvolusi berarti menghitung produk dari dua fungsi (kontinu atau diskrit) atas semua posisi shift yang mungkin.
Aplikasi pemrosesan gambar dari jaringan saraf - termasuk jaringan saraf konvolusional - telah ditinjau dalam: [M. Egmont-Petersen, D. de Ridder, H. Handels. Pemrosesan gambar dengan jaringan saraf - review , Pattern Recognition , Vol. 35, No. 10, hlm. 2279-2301, 2002].
sumber