CONVOLUTIONAL NEURAL NETWORK

Nadhifa Sofia
6 min readJun 8, 2018

--

Convolutional Neural Network adalah salah satu metode machine learning dari pengembangan Multi Layer Perceptron (MLP) yang didesain untuk mengolah data dua dimensi. CNN termasuk dalam jenis Deep Neural Network karena dalamnya tingkat jaringan dan banyak diimplementasikan dalam data citra. CNN memiliki dua metode; yakni klasifikasi menggunakan feedforward dan tahap pembelajaran menggunakan backpropagation. Cara kerja CNN memiliki kesamaan pada MLP, namun dalam CNN setiap neuron dipresentasikan dalam bentuk dua dimensi, tidak seperti MLP yang setiap neuron hanya berukuran satu dimensi.

Gambar. 1. Arsitektur MLP Sederhana

Sebuah MLP seperti pada Gambar. 1. memiliki i layer (kotak merah dan biru) dengan masing-masing layer berisi ji neuron (lingkaran putih). MLP menerima input data satu dimensi dan mempropagasikan data tersebut pada jaringan hingga menghasilkan output. Setiap hubungan antar neuron pada dua layer yang bersebelahan memiliki parameter bobot satu dimensi yang menentukan kualitas mode. Disetiap data input pada layer dilakukan operasi linear dengan nilai bobot yang ada, kemudian hasil komputasi akan ditransformasi menggunakan operasi non linear yang disebut sebagai fungsi aktivasi. Data yang dipropagasikan pada CNN adalah data dua dimensi, sehingga operasi linear dan parameter bobot pada CNN berbeda. Operasi linear pada CNN menggunakan operasi konvolusi, dengan bobot yang tidak lagi satu dimensi saja, namun berbentuk empat dimensi yang merupakan kumpulan kernel konvolusi seperti pada Gambar.2. Dimensi bobot pada CNN adalah:

neuron input x neuron output x tinggi x lebar

Gambar 2. Proses Konvolusi pada CNN

CNN merupakan pengembangan lebih lanjut dari MLP karena menggunakan metode yang mirip dengan dimensi yang lebih banyak. Di algoritma CNN ini, input dari layer sebelumnya bukan array 1 dimensi melainkan array 2 dimensi. Jika di analogikan dengan fitur dari wajah manusia, layer pertama merupakan refleksi goresan-goresan berbeda arah, pada layer kedua fitur seperti bentuk mata, hidung, dan mulut mulai terlihat, hal ini karena di lakukan pooling/penggabungan dari layer pertama yang masih berupa goresan-goresan, pada layer ketiga akan terbentuk kombinasi fitur-fitur mata, hidung, dan mulut yang nantinya akan disimpulkan dengan wajah orang tertentu.

Gambar 3. Contoh dan arsitektur dari CNN

Sama halnya dengan Neural Network pada umumnya, CNN memiliki beberapa lapisan tersembunyi (hidden layers) dari sebuah input berupa vector tunggal. Pada Gambar 3, dengan input berupa citra yang dijadikan vektor tunggal 32 × 32. Di tiap hidden layer, terdapat beberapa neuron layaknya empat feature maps C1 pada gambar tersebut. Neuron-neuron pada C1 dihubungkan dengan neuron di S1, dan seterusnya. Lapisan terakhir yang terhubung dengan lapisan-lapisan tersembunyi sebelumnya disebut dengan output layer dan merepresentasikan hasil akhir klasifikasi kelas. Seperti n2 yang ditunjukkan oleh Gambar 2 yang merepresentasikan hasil pada output layer, seperti 30, 50, 60, dll.

Kelebihan dari CNN yang menggunakan dimensi > 1 akan memengaruhi keseluruhan skala dalam suatu objek.

Keseluruhan skala dalam objek sangat penting agar input tidak kehilangan informasi spasialnya yang akan diekstraksi fitur dan diklasifikasikan. Hal ini akan menambah tingkat akurasi dan optimum algoritma CNN. Seperti pada kubus yang memiliki skala pada panjang, lebar, dan tinggi. Jika hanya menggunakan Neural Network biasa, mungkin hanya memuat skala panjang dan tinggi. Namun CNN bisa memuat semua informasi dari keseluruhan skala yang bisa mengklasifikasikan objek dengan lebih akurat karena bisa menggunakan skala lebarnya juga (yang mungkin tidak akan terlihat oleh Neural Network lainnya yang berdimensi dua).

Gambar 4. Perbedaan arsitektur antara Neural Network pada umumnya dengan CNN

CNN terdiri dari berbagai lapisan yang dimana setiap lapisan memiliki Application Program Interface (API) alias antarmuka program aplikasi sederhana. Pada Gambar 4, CNN dengan input awal balok tiga dimensi akan ditransformasikan menjadi output tiga dimensi dengan beberapa fungsi diferensiasi yang memiliki atau tidak memiliki parameter. CNN membentuk neuron-neuronnya ke dalam tiga dimensi (panjang, lebar, dan tinggi) dalam sebuah lapisan.

Gambar 5. Lapisan yang terdapat pada CNN
  1. Feature Learning
    Lapisan-lapisan yang terdapat dalam Feature Learning berguna untuk mentranslasikan suatu input menjadi menjadi features berdasarkan ciri dari input tersebut yang berbentuk angka-angka dalam vektor. Lapisan ekstraksi fitur ini terdiri dari Convolutional Layer dan Pooling Layer. a. Convolutional Layer akan menghitung output dari neuron yang terhubung ke daerah lokal dalam input, masing-masing menghitung produk titik antara bobot mereka dan wilayah kecil yang terhubung ke dalam volume input.
    b. Rectified Linear Unit (ReLU) akan menghilangkan vanishing gradient dengan cara menerapkan fungsi aktivasi element sebagai f(x)=max⁡(0,x) alias aktivasi elemen akan dilakukan saat berada di ambang batas 0. Kelebihan dan kekurangan dalam penggunaan ReLU :
    (+) : Bisa mempercepat gradien stokastik dibandingkan dengan fungsi sigmoid / tan h karena ReLU berbentuk linear
    (+) : Tidak menggunakan operasi eksponensial seperti sigmoid/tan h, sehingga bisa melakukan dengan pembuatan matriks aktivasi saat ambang batas berada pada nilai 0.
    (-) : ReLU bisa rapuh saat masa training dan mati karena gradien besar yang mengalir melalui ReLU menyebabkan update bobot, sehingga neuron tidak aktif pada datapoint lagi. Jika ini terjadi, maka gradien yang mengalir melalui unit akan selamanya nol dari titik itu. Artinya, unit ReLU dapat mati secara ireversibel selama pelatihan karena mereka dapat melumpuhkan data manifold. Misalnya, Anda mungkin menemukan bahwa sebanyak 40% dari jaringan Anda dapat “mati” (yaitu neuron yang tidak pernah aktif di seluruh dataset pelatihan) jika tingkat pembelajaran ditetapkan terlalu tinggi. Dengan pengaturan tingkat pembelajaran yang tepat, ini lebih jarang menjadi masalah.
    c. Pooling Layer
    Pooling layer adalah lapisan yang mengurangi dimensi dari feature map atau lebih dikenal dengan langkan untuk downsampling, sehingga mempercepat komputasi karena parameter yang harus diupdate semakin sedikit dan mengatasi overfitting. Pooling yang biasa digunakan adalah Max Pooling dan Average Pooling. Max Pooling untuk menentukan nilai maksimum tiap pergeseran filter, sementara Average Pooling akan menentukan nilai rata-ratanya.
Gambar 6. Contoh dari max pooling

2 Classification
Lapisan ini berguna untuk mengklasifikasikan tiap neuron yang telah diekstraksi fitur pada sebelumnya. Terdiri dari :
a. Flatten
Membentuk ulang fitur (reshape feature map) menjadi sebuah vector agar bisa kita gunakan sebagai input dari fully-connected layer.

b. Fully-connected
Lapisan FC (yaitu terhubung sepenuhnya) akan menghitung skor kelas. Seperti Jaringan Saraf biasa dan seperti namanya, setiap neuron dalam lapisan ini akan terhubung ke semua angka dalam volume.
c. Softmax
Fungsi Softmax menghitung probabilitas dari setiap kelas target atas semua kelas target yang memungkinkan dan akan membantu untuk menentukan kelas target untuk input yang diberikan. Keuntungan utama menggunakan Softmax adalah rentang probabilitas output dengan nilai 0 hingga 1, dan jumlah semua probabilitas akan sama dengan satu. Jika fungsi softmax digunakan untuk model multi-klasifikasi, dia akan mengembalikan peluang dari masing-masing kelas dan kelas target akan memiliki probabilitas tinggi. Softmax menggunakan eksponensial (e-power) dari nilai input yang diberikan dan jumlah nilai eksponensial dari semua nilai dalam input. Maka rasio eksponensial dari nilai input dan jumlah nilai eksponensial adalah output dari fungsi softmax.

Gambar 7. Langkah untuk menghitung CNN

--

--