Bagaimana cara filter dan peta aktivasi terhubung di Convolutional Neural Networks?

11

Bagaimana peta aktivasi pada lapisan tertentu terhubung ke filter untuk lapisan itu? Saya tidak bertanya tentang bagaimana melakukan operasi konvolusional antara filter dan peta aktivasi, saya bertanya tentang jenis konektivitas yang dimiliki keduanya.

Misalnya, Anda ingin melakukan konektivitas penuh. Anda memiliki f jumlah filter dan n jumlah peta aktivasi di lapisan tertentu. Anda akan mendapatkan f * n jumlah peta aktivasi di lapisan berikutnya, dan jumlah peta aktivasi akan meningkat dengan setiap layer baru. Ini adalah cara saya menganggap itu dilakukan.

Atau bisa dibilang setiap filter terhubung hanya dengan satu peta aktivasi. Dalam hal ini, jumlah filter akan sama dengan jumlah peta aktivasi, dan setiap lapisan akan memiliki jumlah filter dan peta aktivasi yang sama. Ini adalah arsitektur jaringan saya saat ini, dan sepertinya belajar dengan baik.

Sumber utama dari kebingungan saya adalah melihat diagram dari konvensi yang saya lihat online. Beberapa dari mereka memiliki "koneksi penuh" antara filter dan peta aktivasi, seperti ini - masukkan deskripsi gambar di sini Di lapisan pertama Anda memiliki 4 peta aktivasi, dan mungkin 2 filter. Setiap peta dililit dengan setiap filter, menghasilkan 8 peta di lapisan berikutnya. Tampak hebat.

Tapi di sini kita memiliki arsitektur yang tidak masuk akal bagi saya - masukkan deskripsi gambar di sini Bagaimana Anda beralih dari 6 peta di lapisan pertama ke 16 di ke-2? Saya bisa memikirkan cara untuk mendapatkan 16 peta dari 6, tetapi mereka tidak masuk akal untuk melakukannya.

Frobot
sumber

Jawaban:

10

Arsitektur convolutional neural network (CNN) kedua yang Anda posting berasal dari makalah ini . Dalam makalah penulis memberikan deskripsi tentang apa yang terjadi antara lapisan S2 dan C3. Penjelasan mereka tidak begitu jelas. Saya akan mengatakan bahwa arsitektur CNN ini bukan 'standar', dan itu bisa sangat membingungkan sebagai contoh pertama untuk CNN.

Arsitektur CNN

Pertama-tama, diperlukan klarifikasi tentang bagaimana peta fitur diproduksi dan apa hubungannya dengan filter. Peta fitur adalah hasil dari belitan filter dengan peta fitur. Mari kita ambil layer INPUT dan C1 sebagai contoh. Dalam kasus yang paling umum, untuk mendapatkan 6 peta fitur ukuran di lapisan C1 Anda perlu 6 filter ukuran (hasil konvolusi 'valid' dari gambar ukuran dengan filter ukuran , dengan asumsi , memiliki ukuran28×285×5M×MN×NMN(MN+1)×(MN+1). Anda dapat, bagaimanapun, menghasilkan 6 peta fitur dengan menggabungkan peta fitur yang dihasilkan oleh lebih atau kurang dari 6 filter (misalnya dengan menjumlahkannya). Di koran, tidak ada yang tersirat untuk lapisan C1.

Apa yang terjadi antara lapisan S2 dan lapisan C3 adalah sebagai berikut. Ada 16 peta fitur di lapisan C3 yang dihasilkan dari 6 peta fitur di lapisan S2. Jumlah filter di lapisan C3 memang tidak jelas. Bahkan, dari diagram arsitektur saja, kita tidak bisa menilai berapa jumlah filter yang menghasilkan 16 peta fitur tersebut. Para penulis makalah ini menyediakan tabel berikut (halaman 8):

koneksi antara lapisan S2 dan C3

Dengan tabel mereka memberikan penjelasan berikut (bagian bawah halaman 7):

Lapisan C3 adalah lapisan konvolusional dengan 16 peta fitur. Setiap unit di setiap peta fitur terhubung ke beberapa lingkungan di lokasi yang identik dalam subset dari peta fitur S2.5×5

Dalam tabel tersebut penulis menunjukkan bahwa setiap peta fitur di lapisan C3 dihasilkan dengan menggabungkan 3 peta fitur atau lebih (halaman 8):

Enam peta fitur C3 pertama mengambil input dari setiap himpunan bagian yang berdekatan dari tiga peta fitur di S2. Enam berikutnya mengambil input dari setiap subset yang berdekatan dari empat. Tiga berikutnya mengambil input dari beberapa himpunan bagian terputus dari empat. Akhirnya, yang terakhir mengambil input dari semua peta fitur S2.

Sekarang, berapa banyak filter yang ada di lapisan C3? Sayangnya, mereka tidak menjelaskan ini. Dua kemungkinan paling sederhana adalah:

  1. Ada satu filter per peta fitur S2 per peta fitur C3, yaitu tidak ada pembagian filter antara peta fitur S2 yang terkait dengan peta fitur C3 yang sama.
  2. Ada satu filter per peta fitur C3, yang dibagi di seluruh (3 atau lebih) peta fitur lapisan S2 yang digabungkan.

Dalam kedua kasus, untuk 'menggabungkan' akan berarti bahwa hasil konvolusi per kelompok peta fitur S2, perlu dikombinasikan untuk menghasilkan peta fitur C3. Penulis tidak menentukan bagaimana hal ini dilakukan, tetapi penambahan adalah pilihan umum (lihat misalnya animasi gif di bagian tengah halaman ini) .

Penulis memberikan beberapa informasi tambahan, yang dapat membantu kami menguraikan arsitektur. Mereka mengatakan bahwa 'lapisan C3 memiliki 1.516 parameter yang dapat dilatih' (halaman 8). Kami dapat menggunakan informasi ini untuk memutuskan antara kasus (1) dan (2) di atas.

Dalam kasus (1) kami memiliki filter. Ukuran filter adalah . Jumlah parameter yang bisa dilatih dalam kasus ini adalah parameter yang bisa dilatih. Jika kita mengasumsikan satu unit bias per peta fitur C3, kita mendapatkan parameter, yang merupakan apa yang penulis katakan. Untuk kelengkapan, dalam kasus (2) kita akan memiliki parameter, yang tidak demikian.(6×3)+(9×4)+(1×6)=60(1410+1)×(1410+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

Oleh karena itu, jika kita melihat kembali pada Tabel I di atas, ada 10 filter C3 berbeda yang terkait dengan setiap peta fitur S2 (dengan demikian total 60 filter berbeda).

Penulis menjelaskan jenis pilihan ini:

Peta fitur yang berbeda [di lapisan C3] dipaksa untuk mengekstraksi fitur yang berbeda (semoga komplementer) karena mereka mendapatkan set input yang berbeda.

Saya harap ini menjelaskan situasi.

Orestis Tsinalis
sumber
3

Anda memang benar bahwa nilai sebelum @ menunjukkan jumlah filter, dan bukan jumlah peta fitur (meskipun untuk lapisan convolutional pertama nilai-nilai ini bertepatan).

Mengenai pertanyaan terakhir Anda: ya, masuk akal untuk membuat setiap peta fitur pada layer l terhubung ke setiap filter pada layer l +1. Satu-satunya alasan untuk ini adalah bahwa ini sangat meningkatkan kekuatan ekspresi jaringan, karena ia memiliki lebih banyak cara (jalur) untuk menggabungkan peta fitur yang dengan demikian memungkinkannya untuk lebih membedakan apa pun yang ada pada gambar input.

Akhirnya saya tidak tahu apakah Anda mempraktikkan keterampilan jaringan saraf Anda dengan mengimplementasikannya sendiri, tetapi jika Anda hanya ingin menerapkan jaringan konvolusional untuk tugas tertentu, maka sudah ada beberapa perpustakaan jaringan saraf yang sangat baik seperti Theano, Brainstorm, Caffe

Sjoerd
sumber
Saya pikir apa yang akan saya lakukan adalah membandingkan kedua cara untuk membandingkannya. Dengan versi yang tidak sepenuhnya terhubung itu akan melatih dan menghitung klasifikasinya lebih cepat. Tetapi akurasi lebih penting. Dalam versi yang tidak sepenuhnya terhubung, setiap filter dilokalkan ke tugas yang jauh lebih spesifik daripada tugas yang lebih umum. Dalam versi yang sepenuhnya terhubung, filter diperbarui berdasarkan yang terbaik untuk semua filter sebelumnya, bukan hanya satu jenis fitur. Saya telah membuat jaringan saya dari awal 100% menggunakan c #. tentu bukan cara mudah untuk melakukan hal-hal ... tetapi telah mengajarkan saya hal
Frobot
Itu terdengar seperti rencana yang sehat. Semoga berhasil!
Sjoerd