Jaringan saraf konvolusional

**Jaringan saraf konvolusional** (bahasa Inggris: *Convolutional neural network* atau disingkat **CNN**) adalah salah satu kelas jaringan saraf umpan-maju teregulasi yang secara mandiri mampu mempelajari rekayasa fitur melalui optimasi filter (atau kernel). Keunggulan CNN dibandingkan jaringan saraf sebelumnya terletak pada kemampuannya untuk mengatasi masalah gradien menghilang dan gradien meledak yang kerap muncul saat propagasi balik. Hal ini dimungkinkan karena CNN menggunakan bobot terregularisasi pada koneksi yang lebih sedikit. Misalnya, untuk *setiap* neuron di lapisan yang sepenuhnya terhubung (*fully connected layers*), diperlukan 10.000 bobot untuk memproses gambar berukuran 100 × 100 piksel. Namun, dengan menerapkan kernel *konvolusi* berjenjang (atau korelasi silang), hanya diperlukan 25 neuron untuk memproses petak berukuran 5x5. Arsitektur CNN ini memungkinkan ekstraksi fitur tingkat tinggi dari jendela konteks yang lebih luas pada lapisan yang lebih tinggi dibanding lapisan sebelumnya.

CNN memiliki penerapan di:

* pengenalan citra dan video,
* sistem pemberi rekomendasi,
*
* klasifikasi gambar,
*
* segmentasi gambar,
*
* analisis gambar medis,
*
* pemrosesan bahasa alami,
*
* antarmuka otak-komputer, dan
*
* deret waktu keuangan.

CNN juga dikenal sebagai ***Shift Invariant*** atau ***Space Invariant Artificial Neural Networks*** (**SIANN**) atau **Jaringan Saraf Tiruan Invarian Penggeseran** atau **Invarian Ruang**. Penamaan ini berdasarkan arsitektur bobot-berbagi  yang digunakan kernel atau filter konvolusi. Kernel ini bergerak melintasi fitur masukan (*input*) dan menghasilkan respons translasi-ekuivarian yang dikenal sebagai peta fitur. Respons translasi-equivarian berarti bahwa keluaran jaringan tidak berubah secara signifikan oleh pergeseran spasial kecil pada masukan.  Namun, sebagian besar CNN tidak invarian terhadap translasi karena operasi *downsampling* yang diterapkan pada masukan.

Jaringan saraf umpan-maju yang umum digunakan dalam CNN memiliki karakteristik "konektivitas penuh" (*fully connected*), yaitu setiap neuron di satu lapisan terhubung dengan semua neuron di lapisan berikutnya. "Konektivitas penuh" dari jaringan ini membuatnya rentan terhadap *[[overfitting]]* data. Untuk mengatasi *overfitting* pada CNN, berbagai teknik regularisasi telah dikembangkan, seperti memberikan penalti pada parameter selama pelatihan (seperti *weight decay*) atau memangkas konektivitas (*skip connections* atau koneksi lompat, *dropout*, dll.) Selain teknik regularisasi, penggunaan kumpulan data yang besar dan representatif juga sangat penting. Kumpulan data yang memadai memungkinkan CNN untuk mempelajari prinsip-prinsip umum yang mendasari data tersebut, alih-alih hanya menghafal bias yang mungkin ada pada kumpulan data yang terbatas. Dengan demikian, CNN dapat menghasilkan generalisasi yang lebih baik pada data baru yang belum pernah dilihat sebelumnya.

CNN terinspirasi dari proses-proses biologis pada pola konektivitas antar-neuron yang menyerupai organisasi korteks visual pada binatang. Tiap neuron kortikal hanya merespons rangsangan dalam satu area terbatas pada bidang visual atau bidang reseptif. Bidang-bidang reseptif neuron tumpang tindih secara parsial (*partial overlap*) sedemikian sehingga mencakup seluruh bidang reseptif.

CNN secara relatif menggunakan pra-pemrosesan yang lebih sedikit dibandingkan dengan algoritma klasifikasi citra lainnya. Artinya, jaringan pada CNN mempelajari optimasi filter (atau kernel) melalui pemelajaran otomatis. Berbeda dengan algoritma tradisional yang mengandalkan rekayasa filter inisecara manual. Kemampuan ini menjadikan penggunaan CNN memberikan keuntungan yang besar karena independensinya terhadap pra-pengetahuan manusia dalam tahap ekstraksi fitur.

## Arsitektur

CNN terdiri dari satu lapisan masukan (*input layer*), beberapa lapisan tersembunyi (*hidden layers*), dan satu lapisan keluaran (*output layer*). Lapisan tersembunyi tersebut terdiri dari minimal satu lapisan yang melakukan operasi konvolusi. Konvolusi ini biasanya melibatkan lapisan yang melakukan perkalian titik (''dot product'') antara kernel konvolusi dengan matriks masukan lapisan tersebut. Hasil perkalian ini umumnya berupa perkalian dalam Frobenius, dan ReLU sebagai fungsi aktivasinya. Saat kernel konvolusi bergerak di sepanjang matriks masukan lapisan, operasi konvolusi ini menghasilkan peta fitur (*feature map*), yang selanjutnya menjadi masukan lapisan berikutnya. Lapisan konvolusi ini kemudian dilanjutkan dengan lapisan lain, seperti lapisan penggabungan (*pooling*), lapisan sepenuhnya terhubung (*fully connected*), dan lapisan normalisasi. Perlu dicatat di sini terkait kemiripan antara jaringan saraf konvolusi dengan *[[matched filter]]*.

### Lapisan konvolusi
Dalam CNN, masukan berupa tensor dengan ukuran:

(jumlah masukan) × (tinggi masukan) × (lebar masukan) × (masukan kanal)

Setelah melewati lapisan konvolusi, gambar menjadi terabstraksi menjadi peta fitur, disebut juga peta aktivasi, dengan ukuran:

(jumlah masukan) × (tinggi peta fitur) × (lebar peta fitur) × (peta fitur kanal).

Lapisan konvolusi melakukan konvolusi pada masukan dan meneruskan hasilnya ke lapisan berikutnya. Operasi ini mirip dengan respon neuron di korteks visual terhadap stimulus tertentu. Setiap neuron konvolusi hanya memproses data untuk bidang reseptif-nya sendiri.

Meskipun jaringan saraf lapisan umpan-balik yang sepenuhnya terhubung dapat digunakan untuk mempelajari fitur dan mengklasifikasikan data, arsitektur ini umumnya tidak praktis untuk masukan yang lebih besar (misalnya, citra beresolusi tinggi), yang membutuhkan neuron dalam jumlah besar karena setiap piksel adalah fitur masukan yang relevan. Lapisan yang sepenuhnya terhubung untuk citra berukuran 100 × 100 memiliki 10.000 bobot untuk setiap neuron di lapisan kedua. Konvolusi mengurangi jumlah parameter bebas, memungkinkan jaringan menjadi lebih dalam. Misalnya, menggunakan area petak 5 x 5, masing-masing dengan bobot yang sama, hanya membutuhkan 25 neuron. Penggunaan bobot teregulasi pada parameter yang lebih sedikit untuk menghindari masalah gradien melenyap dan gradien yang meledak yang terjadi selama propagasi balik pada jaringan saraf sebelumnya.

Untuk mempercepat pemrosesan, lapisan konvolusi standar dapat diganti dengan lapisan konvolusi yang dapat dipisahkan kedalaman (*depthwise separable convolutional layers*),, yang didasarkan pada konvolusi kedalaman yang diikuti oleh *konvolusi pointwise*. *Pointwise convolution* adalah konvolusi spasial yang diterapkan secara independen pada setiap channel dari tensor input, sedangkan konvolusi pointwise adalah konvolusi standar yang dibatasi untuk menggunakan kernel berukuran 1\times1.

### Lapisan penggabungan
Jaringan konvolusi dapat mencakup lapisan penggabungan lokal dan/atau global bersama dengan lapisan konvolusi tradisional. Lapisan penggabungan (*pooling layer*) mengurangi dimensi data dengan menggabungkan keluaran dari kelompok neuron pada satu lapisan menjadi satu neuron di lapisan berikutnya. Penggabungan lokal menggabungkan kelompok kecil, ukuran petak seperti 2 × 2 biasanya digunakan. Penggabungan global bekerja pada semua neuron pada peta fitur. Ada dua jenis penggabungan  yang umum digunakan: maksimum dan rata-rata. *Penggabungan maksimum* atau *max pooling* menggunakan nilai maksimum dari setiap kelompok neuron lokal di peta fitur, sedangkan *penggabungan rata-rata* mengambil nilai rata-rata.

### Lapisan sepenuhnya terhubung

Lapisan sepenuhnya terhubung (*fully connected layer*) menghubungkan setiap neuron di satu lapisan ke setiap neuron di lapisan lain. Proses ini sama dengan yang digunakan di jaringan saraf multilapis (MLP). Matriks yang diratakan (*flattened*) melewati lapisan sepenuhnya terhubung untuk mengklasifikasikan citra.

### Bidang reseptif
Dalam jaringan saraf, setiap neuron menerima masukan dari sejumlah lokasi di lapisan sebelumnya. Dalam lapisan konvolusi, setiap neuron hanya menerima masukan dari area terbatas dari lapisan sebelumnya yang disebut *bidang reseptif* saraf.  Biasanya areanya berbentuk persegi (misalnya 5 x 5 neuron). Sedangkan pada lapisan yang terhubung penuh, medan reseptif adalah "seluruh lapisan sebelumnya". Jadi, di setiap lapisan konvolusi, setiap neuron mengambil masukan dari area yang lebih luas pada masukan daripada lapisan sebelumnya. Hal ini disebabkan oleh penerapan konvolusi berulang kali, yang memperhitungkan nilai piksel, serta piksel di sekitarnya. Saat menggunakan lapisan yang melebar, (*dilated*) jumlah piksel di bidang reseptif tetap konstan, tetapi medan tersebut lebih jarang diisi karena dimensinya bertambah ketika menggabungkan efek dari beberapa lapisan.

Untuk memanipulasi ukuran bidang reseptif sesuai keinginan, ada beberapa alternatif dari lapisan konvolusi standar. Misalnya, konvolusi atrofi (*atrous*) atau dilatasi yang memperluas ukuran bidang reseptif tanpa meningkatkan jumlah parameter dengan menyisipkan wilayah yang terlihat dan buta. Selain itu, lapisan konvolusi tunggal yang melebar dapat terdiri dari filter dengan beberapa rasio pelebaran, sehingga memiliki ukuran bidang reseptif yang bervariasi.

### Bobot
Dalam jaringan saraf tiruan, setiap neuron menghitung nilai keluaran dengan menerapkan fungsi tertentu pada nilai masukan yang diterima dari bidang reseptif di lapisan sebelumnya. Fungsi yang diterapkan pada nilai input ditentukan oleh vektor bobot dan bias (biasanya berupa bilangan riil). Pemelajaran terdiri dari penyesuaian bias dan bobot ini secara berulang.

Vektor bobot dan bias disebut *filter* dan mewakili fitur tertentu dari masukan (misalnya, bentuk tertentu). Ciri khas CNN adalah banyak neuron dapat berbagi filter yang sama. Cara ini dapat mengurangi penggunaan memori karena bias tunggal dan vektor bobot tunggal digunakan di semua bidang reseptif yang berbagi filter itu, dibandingkan dengan setiap bidang reseptif yang memiliki bias dan bobot sendiri.

## Sejarah

CNN sering dibandingkan dengan cara otak memproses penglihatan pada organisme makhluk hidup.

### Bidang reseptif di korteks visual
Penelitian oleh Hubel dan Wiesel pada tahun 1950-an dan 1960-an menunjukkan bahwa korteks visual kucing mengandung neuron yang secara individu dapat merespons wilayah-wilayah kecil dari bidang visual. Asalkan mata tidak bergerak, wilayah ruang visual yang menjadi tempat rangsangan visual memengaruhi pengaktifan satu neuron yang dikenal seabagai bidang visual. Sel-sel yang bertetangga memiliki bidang reseptif yang serupa dan tumpang tindih. Ukuran dan lokasi bidang reseptif bervariasi secara sistematis di seluruh korteks untuk membentuk peta lengkap ruang visual. Korteks di setiap belahan otak mewakili bidang visual yang berlawanan.

Makalah penelitian mereka pada tahun 1968 mengidentifikasi dua jenis sel visual dasar di otak:

*sel sederhana, yang keluarannya dimaksimalkan oleh tepi lurus dengan orientasi tertentu dalam bidang reseptifnya
*sel kompleks, yang memiliki bidang-bidang reseptif lebih besar, dan keluarannya tidak sensitif terhadap posisi pasti tepi dalam bidang tersebut.

Hubel dan Wiesel juga mengusulkan model berjenjang dari jua jenis sel ini untuk digunakan dalam pengenalan pola.

### ''Neocognitron'', asal muasal arsitektur CNN

*"[[Neocognitron]]"* adalah model jaringan saraf yang diperkenalkan oleh Kunihiko Fukushima pada tahun 1980.
Model ini terinsipirasi oleh penelitian Hubel dan Wiesel di atas mengenai sel-sel sederhana dan kompleks di korteks visual. *Neurocognitron* memiliki dua tipe lapisan dasar:

* Sebuah **lapisan konvolusi** yang mengandung unit-unit dengan bidang reseptifnya mencakup sebagian kecil lapisan sebelumnya. Vektor bobot (suatu kumpulan parameter adaptif) dari unit tersebutlah yang disebut sebagai filter. Unit-unit dalam lapisan konvolusi dapat berbagi filter yang sama.
* Beberapa **lapisan ''downsampling*** yang mengandung unit-unit dengan bidang reseptifnya mencakup sebagian kecil lapisan konvolusi sebelumnya. Setiap unit biasanya menghitung rata-rata aktivasi unit di bidang reseptifnya. *Downsampling* membantu pengenalan objek secara tepat meskipun objek tersebut mengalami pergeseran.

Pada 1969, [[Kunihiko Fukushima]] juga memperkenalkan [[fungsi aktivasi]] [[rectifier (jaringan saraf)|ReLU]] (*rectified linear unit*). ReLU kini menjadi fungsi aktivasi paling populer untuk CNN dan [[pemelajaran dalam|jaringan saraf dalam]] secara umum.

Varian lain dari *neurocognitron* yang disebut *cresreptron* menggunakan metode *max-pooling* untuk *downsampling*, diperkenalkan oleh J. Weng, dkk. pada 1993. *Max-pooling* menghitung nilai maksimum aktivasi unit di bidang reseptifnya. Metode ini berbeda dengan *neurocognitron* yang menggunakan rerata spasial dalam perhitungan *downsampling*-nya. *Max-pooling* ini lebih umum digunakan pada CNN modern dibanding rata-rata.

Pelatihan bobot dalam *neurocognitron* menggunakan algoritma [[pemelajaran terarah]] (*supervised learning*) dan [[Pemelajaran tak terarah]] (*unsupervised learning*) telah diajukan selama beberapa dekade. Namun, saat ini arsitektur CNN umumnya dilatih menggunakan [[algoritma perambatan mundur|propagasi balik]].

[[Neocognitron]] merupakan CNN pertama yang mensyaratkan unit di berbagai posisi jaringan untuk berbagi bobot.

CNN dipresentasikan di *'Neural Information Processing Workshop*' pada 1987. Dalam presentasi tersebut, CNN didemonstrasikan dapat secara otomatis menganalisis sinyal yang bervariasi dalam waktu (*time-varying*) dengan mengganti perkalian yang telah dipelajari dengan konvolusi dalam waktu (*convolution in time''), dan didemonstrasikan untuk pengenalan suara.

## Lihat juga

* Attention (machine learning)
* Convolution
* Deep learning
* Natural-language processing
* Neocognitron
* Scale-invariant feature transform
* Time delay neural network
* Vision processing unit

## Referensi

## Pranala luar

* CS231n: Jaringan Neural Konvolusional untuk Pengenalan Visual - Pelajaran ilmu komputer Stanford oleh Andrej Karpathy tentang CNN dalam visi komputer