Introduksi Neural Network
Sebelum membahas apa itu convolutional, mari kita pahami dahulu apa itu neural network.
Neural network adalah cara Komputer untuk memproses data input. Terinspirasi dari sistem saraf pada otak manusia dan hewan. Neural networks terdiri dari banyak layers of ‘nodes’ atau ‘artificial neurons’. Setiap node akan memrposes input dan berkomunikasi dengan node lainnya.
Jadi, input filters akan melalui neural network untuk menghasilkan output, atau jawaban.
Convolutional Neural Networks
Convolutional neural networks, selanjutnya akan disingkat menjadi CNN, terisnpirasi dari penglihatan hewan. Cara node berkomunikasi pada CNN sama seperti hewan melihat.
Pendekatan yang dilakukan CNN adalah, mengambil area kecil dari sebuah gambar untuk memahami gambar secara keseluruhan.
Setiap neural networks memiliki input layer, hidden layers, dan output layer. Yang membedakan suatu neural network dengan yang lainnya adalah tipe hidden layers yang digunakan. Berikut hidden layer dan proses pada CNN:
- Convolutional layers + ReLu Layers
- Pooling Layers
- Flattening Process
- Fully Connected Layers
Convolutional Layers
Tujuan dari convolutional layers adalahmengidentifikasi dan mengekstrak features dari sebuah image dengan menggunakan filter sering disebut juga kernel atau feature detector.
Setiap architecture CNN memiliki filter yang berbeda, umumnya menggunakan 3×3, 5×5 atau 7×7 matrix. Gambar berikut menunjukan proses yang terjadi pada convolutional layer:
Pada contoh gambar diatas, matrix filter yang digunakan adalah seperti berikut
Kernel/Filter/Feature Detector, K =
1 0 1
0 1 0
1 0 1
Filter akan melakukan scaning pada image, setiap pixel overlay akan dikalikan dengan filter lalu dijumlahkan. Nilainya akan disimpan dalam feature map atau convolved feature.
Filter akan bergerak dari kiri ke kanan berdasarkan nilai stride sampai ke ujung kanan image. Kemudian turun dan kembali mulai ke sisi paling kiri, kemudian melakukan proses yang sama seperti diatas.
Stride adalah nilai yang menunjukan besarnya pergeseran, umumnya dua pixel. Lihat gambar dibawah, filter bergeser 2 pixel.
Ada dua jenis operasi pada convolutional layer, yaitu mengurangi dimensi dan dimensi tetap (atau lebih besar).
Same Padding, contoh image ukuran 5×5, ditambahkan padding menjadi 6×6. Saat diterapkan filter 3×3 akan menghasilkan feature map (convolved feature) 5×5, oleh karena itu disebut same padding. Lihat gambar dibawah untuk lebih jelas.
JIka tidak dilakukan penambahan padding pixel, proses diatas akan menghasilkan feature map (convolved feature) berukuran 3×3 (sesuai ukuran kernel itu sendiri), yang disebut valid padding. Ilustrasi gambar-1 adalah contoh valid padding.
ReLU layers
ReLu Layers dapat dikatakan step 1b, step yang tambahan pada proses convolutional layers. (Ada juga yang membedakan menjadi step terpisah).
‘ReLU’ singkatan dari ‘rectified linear unit’. Tujuan dari ReLU layer adalah untuk menghadirkan non-linearity pada neural network, agar dapat menangani data yang komplek.
Poolling Layers
Pooling layer berfungsi untuk mengurangi spatial size dari feature map (convolved feature), dimana akan berefek dalam mengurangi beban proses komputasi.
Pooling layers sangat bermanfaat dalam mengekstrak dominant features, tanpa tergantung dengan posisi feature pada image.
Contoh sederhananya, model tetap akan mengenali bahwa sebuah gambar adalah gambar wajah, baik dilihat dari depan, samping, atau terbalik, atau miring. Demikikan juga dengan posisi, model tetap mampu memdeteksi jika posisi wajah ada ditengah, dikiri, kanan atau pojok image.
Dengan Pooling kita dapat mengetahui posisi sebuah objects pada image. Pooling layer juga memberikan fleksibilitas pada convolutional neural network untuk mencegah overfitting.
Ada dua macam pooling, Max dan Average Pooling. (lihat gambar-5 untuk lebih jelas).
- Max Pooling mengembalikan nilai maximum dari area yang ter-cover oleh Kernel. Selain melakukan dimensional reduction, Max pooling juga melakukan de-noising.
- Average Pooling mengembalikan nilai average (rata-rata), dimana hanya melakukan dimensional reduction sebagai mekanisme noise reduction.
Jadi dapat dikatakan performa Max Pooling lebih baik dibanding Average Pooling. Untuk informasi lebih lengkap silakan lihat paper tentang pooling di http://ais.uni-bonn.de/papers/icann2010_maxpool.pdf
Flattening Process
Flattening adalah proses mengubah matrix dari layer pooling menjadi vector satu dimensi.
Fully Connected Layers
Paling akhir adalah fully connected layers. Pada fully connected layer, setiap node menerima input dari semua node dari layer sebelumnya, yaitu setelah proses flattening.
Disini semua hasil ekstrasi features yang dilakukan oleh convolutional neural network digabungkan. Yang berarti Komputer “melihat” image secara utuh— yang bertujuan untuk menghasilkan output yang akurat.
Sama seperti pada ANN, disini juga dilakukan Backpropagation untuk setiap iterasi training. Setelah sekian epochs, model dapat membedakan antara feature dominan dan feature non dominan pada images dan melakukan klasifikasi menggunakan Softmax Classification technique.
File image gif courtesy of https://github.com/vdumoulin/conv_arithmetic
1 thought on “Pengenalan Convolutional Neural Network (CNN)”