Jaringan saraf yang dalam menyebabkan terobosan dalam banyak tugas pengenalan gambar, seperti penglihatan komputer dan pengenalan suara. Jaringan saraf convolutional adalah salah satu jenis jaringan saraf yang populer.
Pada dasarnya, jaringan saraf convolutional dapat dianggap sebagai jaringan saraf yang menggunakan banyak salinan identik dari neuron yang sama. Ini memungkinkan jaringan untuk memiliki sejumlah parameter ketika menghitung model-model besar.
Jaringan Syaraf Konvolusional 2DTeknik ini dengan beberapa salinan neuron yang sama memiliki analogi yang dekat dengan abstraksi fungsi dalam matematika dan ilmu komputer. Selama pemrograman, fungsi ini ditulis sekali dan kemudian digunakan kembali, tanpa mengharuskan Anda untuk menulis kode yang sama berkali-kali di tempat yang berbeda, yang mempercepat eksekusi program dan mengurangi jumlah kesalahan. Demikian pula, jaringan saraf convolutional, setelah ia melatih neuron, menggunakannya di banyak tempat, yang memfasilitasi pelatihan model dan meminimalkan kesalahan.
Struktur jaringan saraf convolutional
Misalkan tugas diberikan di mana diperlukan untuk memprediksi dari audio apakah ada suara seseorang dalam file audio.
Pada input, kami mendapatkan sampel audio di berbagai titik waktu. Sampel didistribusikan secara merata.

Cara termudah untuk mengklasifikasikan mereka dengan jaringan saraf adalah dengan menghubungkan semua sampel ke lapisan yang sepenuhnya terhubung. Dalam hal ini, setiap input terhubung ke masing-masing neuron.

Pendekatan yang lebih kompleks memperhitungkan beberapa simetri pada properti yang ada dalam data. Kami membayar banyak perhatian pada properti lokal dari data: berapa frekuensi suara untuk waktu tertentu? Menambah atau mengurangi? Dan sebagainya.
Kami memperhitungkan properti yang sama setiap saat. Sangat berguna untuk mengetahui frekuensi di awal, tengah, dan akhir. Perhatikan bahwa ini adalah properti lokal, karena Anda hanya perlu jendela urutan audio kecil untuk mendefinisikannya.
Dengan demikian, dimungkinkan untuk membuat grup neuron A, yang mempertimbangkan segmen waktu kecil dalam data kami. A melihat semua segmen tersebut, menghitung fungsi-fungsi tertentu. Kemudian, output dari layer konvolusional ini dimasukkan ke dalam layer F. yang terhubung penuh

Pada contoh di atas, A hanya memproses segmen dua titik. Ini jarang terjadi dalam praktik. Biasanya, jendela lapisan konvolusi jauh lebih besar.
Dalam contoh berikut, A menerima 3 segmen pada input. Ini juga tidak mungkin untuk tugas-tugas dunia nyata, tetapi, sayangnya, sulit untuk memvisualisasikan A menghubungkan beberapa input.

Satu sifat bagus dari lapisan konvolusional adalah lapisannya komposit. Anda dapat memberi makan output dari satu lapisan konvolusional ke yang lain. Dengan setiap lapisan, jaringan menemukan fungsi yang lebih tinggi, lebih abstrak.
Dalam contoh berikut, ada kelompok baru neuron B. B digunakan untuk membuat lapisan konvolusional lain yang diletakkan di atas yang sebelumnya.

Lapisan konvolusional sering terjalin dengan menggabungkan (menggabungkan) lapisan. Secara khusus, ada semacam lapisan yang disebut max-pooling, yang sangat populer.
Seringkali, kami tidak peduli tentang saat yang tepat ketika sinyal yang berguna hadir dalam data. Jika perubahan frekuensi sinyal terjadi cepat atau lambat, apakah itu penting?
Max-pooling menyerap fitur maksimum dari blok kecil dari level sebelumnya. Kesimpulannya mengatakan apakah sinyal fungsi yang diinginkan ada di lapisan sebelumnya, tetapi tidak persis di mana.
Max-pooling layers - ini adalah "penurunan". Ini memungkinkan lapisan konvolusional kemudian bekerja pada potongan besar data, karena tambalan kecil setelah penggabungan lapisan sesuai dengan tambalan yang jauh lebih besar di depannya. Mereka juga membuat kita tidak berubah terhadap beberapa transformasi data yang sangat kecil.

Dalam contoh kami sebelumnya, lapisan konvolusional satu dimensi digunakan. Namun, lapisan konvolusional dapat bekerja dengan data yang lebih banyak. Bahkan, solusi paling terkenal berdasarkan jaringan saraf convolutional menggunakan jaringan saraf convolutional dua dimensi untuk pengenalan pola.

Dalam lapisan konvolusional dua dimensi, bukannya melihat segmen, A akan melihat tambalan.
Untuk setiap tambalan, A akan menghitung fungsinya. Misalnya, ia dapat belajar mendeteksi keberadaan tepi, atau tekstur, atau kontras antara dua warna.

Dalam contoh sebelumnya, output lapisan convolutional dimasukkan ke dalam lapisan yang sepenuhnya terhubung. Tetapi, dimungkinkan untuk menyusun dua lapisan konvolusional, seperti kasus dalam kasus satu dimensi yang dipertimbangkan.

Kami juga dapat melakukan max-pooling dalam dua dimensi. Di sini kita mengambil fitur maksimal dari tambalan kecil.
Ini bermuara pada kenyataan bahwa ketika mempertimbangkan seluruh gambar, posisi yang tepat dari tepi, hingga piksel, tidak penting. Cukup mengetahui di mana ia berada dalam beberapa piksel.

Juga, jaringan konvolusi tiga dimensi kadang-kadang digunakan untuk data seperti video atau data massal (misalnya, pemindaian 3D dalam kedokteran). Namun, jaringan seperti itu tidak banyak digunakan, dan jauh lebih sulit untuk divisualisasikan.
Sebelumnya, kami mengatakan bahwa A adalah sekelompok neuron. Kita akan lebih tepat dalam hal itu: apa itu A?
Dalam lapisan konvolusional tradisional, A adalah bundel paralel neuron, semua neuron menerima sinyal input yang sama dan menghitung fungsi yang berbeda.
Sebagai contoh, dalam lapisan konvolusional dua dimensi, satu neuron dapat mendeteksi tepi horizontal, yang lain, tepi vertikal, dan kontras warna hijau-merah ketiga.

Artikel 'Jaringan dalam Jaringan' (Lin et al. (2013)) mengusulkan lapisan baru, "Mlpconv". Dalam model ini, A memiliki beberapa tingkat neuron, dengan lapisan terakhir memperoleh fungsi tingkat yang lebih tinggi untuk wilayah yang sedang dirawat. Dalam artikel tersebut, model mencapai hasil yang mengesankan, menetapkan tingkat teknologi baru di sejumlah set data referensi.

Untuk keperluan publikasi ini, kami akan fokus pada lapisan konvolusional standar.
Hasil Jaringan Syaraf Konvolusional
Pada 2012, Alex Krizhevsky, Ilya Sutskever, dan Geoff Hinton mencapai peningkatan yang signifikan dalam kualitas pengakuan dibandingkan dengan solusi yang dikenal pada waktu itu (Krizehvsky et al. (2012)).
Kemajuan adalah hasil dari menggabungkan beberapa pendekatan. Prosesor grafis digunakan untuk melatih jaringan saraf yang dalam (besar menurut standar 2012). Tipe baru neuron (ReLU) dan teknik baru digunakan untuk mengurangi masalah yang disebut "overfitting" (DropOut). Kami menggunakan kumpulan data besar dengan sejumlah besar kategori gambar (ImageNet). Dan tentu saja, itu adalah jaringan saraf convolutional.
Arsitektur yang ditunjukkan di bawah ini sangat dalam. Ini memiliki 5 lapisan convolutional, 3 pooling bolak-balik dan tiga lapisan yang terhubung penuh.

Dari Krizehvsky et al. (2012)
Jaringan telah dilatih untuk mengklasifikasikan foto ke dalam ribuan kategori berbeda.
The Krizhevsky et al. Model mampu memberikan jawaban yang benar dalam 63% kasus. Selain itu, jawaban yang benar dari 5 jawaban terbaik, ada 85% perkiraan!

Mari kita ilustrasikan apa yang dikenali oleh level pertama jaringan.
Ingatlah bahwa lapisan convolutional dibagi antara dua GPU. Informasi tidak bolak-balik di setiap lapisan. Ternyata setiap kali model dimulai, kedua belah pihak berspesialisasi.

Filter diperoleh oleh lapisan konvolusional pertama. Bagian atas sesuai dengan lapisan pada satu GPU, bagian bawah pada yang lain. Dari Krizehvsky et al. (2012)
Neuron pada satu sisi fokus pada hitam dan putih, belajar mendeteksi tepi dari berbagai orientasi dan ukuran. Neuron, di sisi lain, berspesialisasi dalam warna dan tekstur, mendeteksi kontras dan pola warna. Ingat bahwa neuron diinisialisasi secara acak. Tidak seorang pun pergi dan menetapkan mereka sebagai detektor perbatasan, atau membaginya dengan cara ini. Ini terjadi saat melatih jaringan klasifikasi gambar.
Hasil yang luar biasa ini (dan hasil menarik lainnya di sekitar waktu) hanyalah awal. Mereka dengan cepat diikuti oleh banyak pekerjaan lain yang menguji pendekatan yang dimodifikasi dan secara bertahap meningkatkan hasil atau menerapkannya di bidang lain.
Jaringan saraf convolutional adalah alat penting dalam visi komputer dan pengenalan pola modern.
Formalisasi jaringan saraf convolutional
Pertimbangkan lapisan konvolusional satu dimensi dengan input {xn} dan output {yn}:

Relatif mudah untuk menggambarkan hasil dalam hal input:
yn = A (x, x +1, ...)
Misalnya, dalam contoh di atas:
y0 = A (x0, x1)
y1 = A (x1, x2)
Demikian pula, jika kita mempertimbangkan lapisan konvolusional dua dimensi dengan input {xn, m} dan output {yn, m}:

Jaringan dapat diwakili oleh matriks nilai dua dimensi.
Kesimpulan
Operasi konvolusi adalah alat yang ampuh. Dalam matematika, operasi konvolusi muncul dalam konteks yang berbeda, dari studi persamaan diferensial parsial hingga teori probabilitas. Sebagian karena perannya dalam PDE, konvolusi penting dalam ilmu fisika. Konvolusi juga memainkan peran penting dalam banyak bidang aplikasi, seperti grafik komputer dan pemrosesan sinyal.