Mengenal Convolutional Neural Network (CNN)
Image Classification Series
Part I: Mengenal Convolutional Neural Network (CNN)
Part II: Pengenalan Jenis Bunga Menggunakan CNN
Part III: Mengenal Pre-trained Model CNN
Pada Part I ini akan membahas konsep dasar CNN mulai dari apa itu CNN, bagaimana CNN bekerja, seperti apa arsitektur CNN, dan bagaimana mengukur performa model CNN.
CNN merupakan salah satu jenis neural network yang sering digunakan pada data image seperti digunakan dalam mendeteksi maupun mengenali objek pada sebuah gambar. CNN memiliki susunan layer yaitu lebar, tinggi, dan kedalaman dengan lebar dan tinggi sebagai ukuran layer sedangkan kedalaman sebagai jumlah layer. Pengolahan gambar dilakukan pada resolusi yang berbeda, output dari gambar yang diolah akan digunakan sebagai input ke layer berikutnya.
Cara Kerja CNN
Secara garis besar, CNN bekerja dengan memanfaatkan proses konvolusi dengan menggerakan sebuah kernel konvolusi (filter) berukuran tertentu ke sebuah gambar, sehingga didapatkan informasi representatif baru dari hasil perkalian bagian gambar tersebut.
Arsitektur CNN
Arsitektur dari CNN dibagi menjadi 2 bagian besar yaitu Feature Extraction Layer dan Classification Layer.
Convolutional Layer
Layer ini merupakan lapisan ekstraksi fitur (feature extraction layer) yang tersusun atas beberapa layer. Setiap layer tersebut memiliki neuron yang yang terhubung dengan layer sebelumnya. Proses konvolusi dilakukan dengan memanfaatkan filter berukuran tinggi, lebar, dan tebal tertentu. Filter ini diinisialisasi dengan suatu nilai yang kemudian akan menjadi parameter yang terus diperbarui dalam proses pelatihan. Konvolusi ini akan digeser ke matriks input disertai dengan operasi perkalian dan penjumlahan, yang mana akan menghasilkan matriks baru yang disebut feature map. Berikut ini gambaran dari proses konvolusi.
Dimensi dari output proses diatas dihitung berdasarkan rumus berikut:
Dimana N merupakan dimensi gambar (lebar dan tinggi), F merupakan ukuran filter, P merupakan padding (jumlah penambahan garis tepi), dan S merupakan stride (besaran pergeseran filter)
Pooling Layer
Layer ini berperan dalam mengurangi dimensi representasi yang dihasilkan dari proses ektraksi fitur sehingga kompleksitas komputasi model yang dihasilkan akan berkurang. Dengan demikian pooling layer ini sangat efektif untuk mengurangi jumlah dimensi dan mempertahankan fitur-fitur penting. Metode pooling layer yang sering dipakai yaitu Max Pooling dengan menggunakan nilai maksimum dan Average Pooling dengan menggunakan nilai rata-rata. Berikut ini disediakan gambar agar lebih jelas perbedaan antara keduanya.
Fungsi Aktivasi
Fungsi aktivasi merupakan suatu fungsi yang menentukan apakah output neuron akan aktif atau tidak, jika aktif maka akan diteruskan ke neuron selanjutnya. Output akan memiliki nilai jika melampaui nilai threshold-nya. Fungsi aktivasi yang sering digunakan yaitu Sigmoid, Softmax, dan Rectified Linear Unit (ReLU).
Optimisasi
Optimisasi berpean dalam penentuan bobot optimal serta meningkatkan akurasi. Selama proses pelatihan, bobot/parameter akan terus diperbarui sehingga model mampu memprediksi dengan akurat. Oleh karena itu, proses ini sangatlah penting dalam neural network. Opimizer yang sering digunakan yaitu Stochastic Gradient Descent (SGD), Root Mean Square Propagation (RMSProp), dan Adaptive momentum estimation (Adam).
Batch Normalization
Batch Nomalization merupakan teknik regularisasi yang menormalkan himpunan aktivasi sebuah input sebelum meneruskannya ke lapisan berikutnya dalam jaringan. Normalisasi bekerja dengan mengurangkan rata-rata batch dari setiap aktivasi dan membaginya dengan standar deviasi batch. Dengan menambahkan Batch Normalization ke dalam model, akan menghasilkan percepatan yang substansial dalam proses pelatihan.
Flatten
Pada proses flatten, matriks hasil pooling layer yang berukuran n×n akan diubah kedalam matriks berukuran n×1. Matriks inilah yang akan digunakan sebagai input dalam proses selanjutnya yaitu klasifikasi.
Dropout
Dropout adalah salah satu teknik regularisasi dimana sejumlah neuron dipilih secara acak dan tidak dipakai selama proses pelatihan. Hal ini dilakukan untuk menghindari overfitting serta mempercepat proses pelatihan khususnya di jaringan yang memiliki banyak lapisan/neuron.
Fully-Connected Layer (Dense)
Lapisan Fully-connected adalah lapisan dimana semua neuron aktivitas dari lapisan sebelumnya terhubung semua dengan neuron di lapisan selanjutnya seperti hal nya jaringan syaraf tiruan bisa. Setiap aktivitas dari lapisan sebelumnya perlu diubah menjadi data satu dimensi sebelum dapat dihubungkan ke semua neuron di lapisan Fully-Connected.Lapisan Fully-Connected bertujuan untuk proses klasifikasi.
Perbedaan anatar lapisan Fully-Connected dan lapisan konvolusi biasa dalah neuron di lapisan konvolusi terhubung hanya ke daerah tertentu pada input. Sementara lapisan Fully-Connected memiliki neuron yang secara keseluruhan terhubung.
Performa Model
Bagus tidaknya model ditentukan oleh performa model tersebut dalam memprediksi suatu data. Ukuran performa model yang sering digunakan yaitu loss, akurasi, serta f1-score yang terdapat dalam confusion matrix.
Focal Loss
Focal Loss digunaakan dalam mengatasi permasalahan deteksi objek dimana terdapat ketidakseimbangan ekstrem antar kelas selama pelatihan (misalnya, 1:1000). Berikut ini persamaan untuk menghitung focal loss.
Confusion Matrix
Confusion matrix merupakan suatu matriks yang menggambarkan perbandingan hasil klasifikasi dengan data sebenarnya. Berikut merupakan gambaran dari confusion matrix.
0 merupakan data negatif, 1 merupakan data positif, TN merupakan jumlah data negatif yang diprediksi benar, FN merupakan jumlah data negatif yang diprediksi salah, TP merupakan jumlah data positif yang diprediksi benar, dan FP merupakan jumlah data positif yang diprediksi salah. Nilai akurasi dapat dihitung dengan persamaan berikut.