Capsule Neural Networks - Kumpulan Lapisan Neural Bersarang



Capsule Networks - Blog ini membahas tentang batasan Convolutional Neural Networks, dan cara Capsule Neural Networks mengatasi batasan tersebut.

Jaringan Kapsul:

Apa itu Capsule Networks? Ini pada dasarnya, jaringan sekumpulan lapisan saraf bersarang.

Saya akan merekomendasikan Anda untuk membaca blog di bawah ini juga:





Saya berasumsi bahwa, kalian tahu Convolutional Neural Networks (CNN). Di sini, saya akan memberi Anda pengantar kecil tentang hal yang sama, sehingga saya dapat membahas batasan CNN.

Anda juga dapat melihat video di bawah ini di Convolutional Neural Network.



Convolutional Neural Networks (CNN)

Convolutional Neural Networks, pada dasarnya adalah tumpukan berbagai lapisan neuron buatan, yang digunakan untuk penglihatan komputer. Di bawah ini, saya telah menyebutkan lapisan-lapisan itu:

Jaringan Saraf Konvolusional - Jaringan Saraf Kapsul - Edureka

Lapisan konvolusional: Saat kami menggunakan Feedforward Neural Networks (Multi Layer Perceptron) untuk klasifikasi gambar, ada banyak tantangan dengannya. Tantangan yang paling membuat frustrasi adalah, ia memperkenalkan banyak parameter, pertimbangkan tutorial video di CNN.



Untuk mengatasi tantangan ini Lapisan Konvolusi diperkenalkan. Diasumsikan bahwa, piksel yang berdekatan secara spasial akan 'bekerja sama' dalam membentuk fitur tertentu yang lebih menarik daripada piksel di sudut berlawanan dari gambar. Selain itu, jika fitur tertentu (lebih kecil) ditemukan sangat penting saat menentukan label gambar, itu akan sama pentingnya, jika fitur ini ditemukan di mana saja dalam gambar, terlepas dari lokasinya.

Lapisan ULANG: Fungsi transformasi Rectified Linear Unit (ReLU) hanya mengaktifkan node jika input di atas kuantitas tertentu, sedangkan input di bawah nol, outputnya nol, tetapi ketika input naik di atas ambang tertentu, ia memiliki hubungan linier dengan variabel tak bebas.

  • Pada lapisan ini kami menghapus setiap nilai negatif dari gambar yang difilter dan menggantinya dengan nol
  • Ini dilakukan untuk menghindari nilai-nilai menjumlahkan hingga nol

Pooling Layer: Ini digunakan untuk melakukan downsampling, yang menghabiskan potongan gambar kecil dan (biasanya) terputus-putus dan menggabungkannya menjadi satu nilai. Ada beberapa skema yang mungkin untuk agregasi - yang paling populer Max-Pooling , di mana nilai piksel maksimum dalam setiap potongan diambil. Itu membuat jaringan tidak berubah terhadap transformasi kecil, distorsi, dan terjemahan pada gambar masukan (distorsi kecil pada masukan tidak akan mengubah keluaran dari Pooling - karena kita mengambil nilai maksimum / rata-rata di lingkungan lokal).

Lapisan Terhubung Sepenuhnya: Lapisan ini akan menghitung skor kelas, di mana masing-masing angka sesuai dengan skor kelas. Seperti halnya Neural Network biasa dan sesuai dengan namanya, setiap neuron di lapisan ini akan terhubung ke semua neuron di volume sebelumnya. Singkatnya, ini melakukan klasifikasi akhir.

Dengan cara ini, ConvNets mengubah gambar asli lapis demi lapis dari nilai piksel asli ke skor kelas akhir.

Ini adalah pengantar yang sangat singkat tentang Convolutional Neural Networks, saya tetap akan merekomendasikan Anda untuk melihat video CNN yang telah saya sematkan dalam posting ini.

Di blog Jaringan Kapsul ini, sekarang saya akan membahas beberapa batasan Jaringan Neural Konvolusional

Batasan Jaringan Neural Konvolusional:

Baiklah, izinkan saya menjelaskan ini dengan analogi.

Misalkan ada manusia, yang matanya bisa mendeteksi ciri-ciri berbagai gambar. Mari kita lihat wajah manusia sebagai contoh. Jadi, pria malang ini dapat mengidentifikasi berbagai fitur seperti, mata, hidung, dll. Namun, tidak dapat mengidentifikasi hubungan spasial antar fitur (perspektif, ukuran, orientasi). Misalnya, gambar berikut mungkin menipu pria itu dengan mengklasifikasikannya sebagai sketsa wajah manusia yang bagus.

Ini juga merupakan masalah dengan Convolutional Neural Networks. CNN pandai mendeteksi fitur, tetapi salah mengaktifkan neuron untuk deteksi wajah. Ini karena kurang efektif dalam mengeksplorasi hubungan spasial antar fitur.

Model CNN sederhana dapat mengekstrak fitur untuk hidung, mata, dan mulut dengan benar, tetapi salah mengaktifkan neuron untuk deteksi wajah. Tanpa menyadari adanya ketidaksesuaian dalam orientasi dan ukuran spasial, aktivasi untuk deteksi wajah akan terlalu tinggi.

Nah, batasan ini karena adanya lapisan Max Pooling.

Penyatuan maksimal dalam CNN menangani varians translasi. Bahkan suatu fitur sedikit dipindahkan, jika masih di dalam jendela penggabungan, itu masih dapat dideteksi. Namun demikian, pendekatan ini hanya mempertahankan fitur maksimal (yang paling mendominasi) dan membuang yang lainnya.

Sehingga gambar wajah yang ditampilkan di atas akan tergolong wajah normal. Lapisan penggabungan juga menambahkan jenis invariansi ini.

Ini tidak pernah menjadi tujuan dari pooling layer. Apa yang seharusnya dilakukan oleh penyatuan adalah memperkenalkan invariansi posisional, orientasi, proporsional.

Pada kenyataannya, lapisan penggabungan ini menambahkan semua jenis invariansi posisi. Seperti yang dapat Anda lihat pada diagram di atas juga, ini mengarah pada dilema untuk mendeteksi wajah dengan benar.

buat paket di java

Mari kita lihat apa solusi yang diajukan Geoffrey Hinton .

Bagaimana Mengatasi Masalah Ini?

Sekarang, kita membayangkan bahwa setiap neuron berisi kemungkinan serta properti fitur. Misalnya, ia mengeluarkan vektor yang berisi [kemungkinan, orientasi, ukuran]. Dengan informasi spasial ini, kami dapat mendeteksi ketidakkonsistenan orientasi dan ukuran di antara fitur hidung, mata, dan telinga, sehingga menghasilkan aktivasi yang jauh lebih rendah untuk deteksi wajah.

Di koran yang dirilis oleh Geoffrey Hinton , jenis neuron ini disebut kapsul. Kapsul ini mengeluarkan vektor, bukan nilai scaler tunggal.

Izinkan saya menjelaskan apa itu Capsule Networks.

Apa itu Jaringan Kapsul?

Kapsul pada dasarnya adalah sekumpulan lapisan saraf bersarang. Keadaan neuron di dalam kapsul menangkap berbagai properti seperti - pose (posisi, ukuran, orientasi), deformasi, kecepatan, tekstur, dll, dari satu entitas di dalam gambar.

Alih-alih menangkap fitur dengan varian tertentu, kapsul dilatih untuk menangkap kemungkinan fitur dan variannya. Jadi, tujuan kapsul tidak hanya untuk mendeteksi fitur, tetapi juga melatih model untuk mempelajari variannya.

Sehingga kapsul yang sama dapat mendeteksi kelas objek yang sama dengan orientasi berbeda (misalnya, memutar searah jarum jam):

Kita dapat mengatakan itu bekerja pada ekuivarian bukan invarian.

Varians: adalah pendeteksian fitur apa pun variannya. Misalnya, neuron pendeteksi hidung mendeteksi hidung terlepas dari orientasinya.

Kesetaraan: adalah pendeteksian objek yang dapat berubah satu sama lain (misalnya, mendeteksi wajah dengan orientasi berbeda). Secara intuitif, jaringan kapsul mendeteksi wajah diputar ke kanan 31 ° (equivariance) daripada menyadari wajah cocok dengan varian yang diputar 31 °. Dengan memaksa model untuk mempelajari varian fitur dalam kapsul, kami dapat mengekstrapolasi kemungkinan varian secara lebih efektif dengan data pelatihan yang lebih sedikit. Selain itu, kita mungkin menolak musuh dengan lebih efektif.

Sebuah kapsul mengeluarkan vektor untuk mewakili keberadaan entitas. Orientasi vektor mewakili properti entitas.

Vektor dikirim ke semua orang tua yang mungkin di jaringan saraf. Untuk setiap kemungkinan induk, kapsul dapat menemukan vektor prediksi. Vektor prediksi dihitung berdasarkan perkalian bobotnya sendiri dan bobot matriks. Orang tua mana pun yang memiliki produk vektor prediksi skalar terbesar, meningkatkan ikatan kapsul. Orang tua lainnya mengurangi ikatan mereka. Ini disebut sebagai Routing Dengan Perjanjian .

Ini jelas merupakan pendekatan yang lebih baik daripada penggabungan maksimal, di mana perutean didasarkan pada fitur terkuat yang terdeteksi di lapisan bawah.

Setelah ini ada fungsi squashing yang ditambahkan. Ini dilakukan untuk memperkenalkan non-linearitas. Fungsi squashing ini diterapkan pada keluaran vektor dari setiap kapsul.

Biar saya beri tahu Anda sekarang, cara kerja Capsule Networks.

Bagaimana Jaringan Kapsul Bekerja?

Mari kita mundur selangkah. Dalam jaringan yang sepenuhnya terhubung, keluaran dari setiap neuron adalah jumlah masukan yang dibobotkan.

Sekarang, mari kita lihat apa yang terjadi di Capsule Networks.

Jaringan Syaraf Kapsul:

Mari kita pertimbangkan Jaringan Neural Kapsul di mana 'usaya'Adalah vektor aktivitas untuk kapsul'saya'di lapisan di bawah.

Langkah - 1: Terapkan matriks transformasiDIaku juntuk keluaran kapsul usaya dari lapisan sebelumnya. Misalnya, dengan matriks m × k, kita mengubah k-Dusaya ke m-Du ^j | i. ((m × k) × (k × 1) = m × 1).

Itu adalah prediksi ( Pilih ) dari kapsul 'i' pada keluaran kapsul 'j' di atas. 'Vj'Adalah vektor aktivitas untuk kapsul'j 'di lapisan atas

Langkah - 2: Hitung jumlah tertimbang sjdengan bobotcaku j.caku jadalah koefisien kopling. Jumlah koefisien ini sama dengan satu. Ini adalah parameter aktual yang bekerja pada hubungan kelompok kapsul yang kita bicarakan sebelumnya.

Langkah - 3: Dalam Convolutional Neural Networks kami menggunakan fungsi ULT. Di sini, kita akan menerapkan fungsi squashing untuk menskalakan vektor antara 0 dan panjang satuan. Ini menyusutkan vektor kecil menjadi nol dan vektor panjang menjadi vektor satuan. Oleh karena itu, kemungkinan setiap kapsul dibatasi antara nol dan satu.

Itu adalah prediksi ( Pilih ) dari kapsul 'i' pada keluaran kapsul 'j' di atas. Jika vektor aktivitas memiliki kemiripan yang dekat dengan vektor prediksi, kita menyimpulkan bahwa kapsul 'saya'sangat terkait dengan kapsul 'j '. (Misalnya, kapsul hidung sangat terkait dengan kapsul wajah.) Kesamaan tersebut diukur menggunakan produk skalar dari prediksi dan vektor aktivitas. Oleh karena itu, kesamaan memperhitungkan kemungkinan dan properti fitur. (bukan hanya kemungkinan di neuron).

Langkah - 4: Hitung skor relevansi 'baku j'. Ini akan menjadi perkalian titik dari vektor aktivitas dan vektor prediksi. Koefisien koplingcsayajdihitung sebagai softmax daribsayaj:

Koefisien kopling caku jdihitung sebagai softmax dari baku j.

Ini baku jdiperbarui secara berulang dalam beberapa iterasi.

Ini disebut sebagai Routing Dengan Perjanjian .

Diagram di bawah ini adalah salah satu contohnya:

Setelah blog ini di Capsule Networks, saya akan membuat blog tentang implementasi Capsule Neural Network menggunakan TensorFlow.

Saya harap Anda menikmati membaca blog ini di jaringan kapsul, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Edureka Deep Learning dengan Pelatihan Sertifikasi TensorFlow membantu peserta didik menjadi ahli dalam pelatihan dan mengoptimalkan jaringan saraf dasar dan konvolusional menggunakan proyek dan tugas waktu nyata bersama dengan konsep seperti fungsi SoftMax, Jaringan Neural encoder Otomatis, Mesin Boltzmann Terbatas (RBM).

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.