PENERAPAN DEEP LEARNING MENGGUNAKAN CONVOLUTIONAL NEURAL NETWORK (CNN) DI R DAN TENSORFLOW UNTUK KLASIFIKASI GAMBAR KITAB DAN AL-QUR’AN

mukhlishatun nada
7 min readJan 11, 2019

--

Assalamu’alaikum, sahabat Nada :) disini saya akan melanjutkan penjelasan tentang aplikasi R yang telah saya buat pada postingan sebelumnya (IMPLEMENTASI CONVOLUTIONAL NEURAL NETWORK (CNN) DI R UNTUK KLASIFIKASI GAMBAR KITAB DAN AL-QUR’AN MENGGUNAKAN PERANGKAT KERAS)

Apa itu DEEP LEARNING?

Deep Learning merupakan salah satu bidang dari Machine Learning yang memanfaatkan jaringan syaraf tiruan untuk implementasi permasalahan dengan dataset yang besar. Teknik Deep Learning memberikan arsitektur yang sangat kuat untuk Supervised Learning. Dengan menambahkan lebih banyak lapisan maka model pembelajaran tersebut bisa mewakili data citra berlabel dengan lebih baik. Pada Machine Learning terdapat teknik untuk menggunakan ekstraksi fitur dari data pelatihan dan algoritma pembelajaran khusus untuk mengklasifikasi citra maupun untuk mengenali suara. Namun, metode ini masih memiliki beberapa kekurangan baik dalam hal kecepatan dan akurasi. Aplikasi konsep jaringan syaraf tiruan yang dalam (banyak lapisan) dapat ditangguhkan pada algoritma Machine Learning yang sudah ada sehingga komputer sekarang bisa belajar dengan kecepatan, akurasi, dan skala yang besar. Prinsip ini terus berkembang hingga Deep Learning semakin sering digunakan pada komunitas riset dan industri untuk membantu memecahkan banyak masalah data besar seperti Computer vision, Speech recognition, dan Natural Language Processing. Feature Engineering adalah salah satu fitur utama dari Deep Learning untuk mengekstrak pola yang berguna dari data yang akan memudahkan model untuk membedakan kelas. Feature Engineering juga merupakan teknik yang paling penting untuk mencapai hasil yang baik pada tugas prediksi. Namun, sulit untuk dipelajari dan dikuasai karena kumpulan data dan jenis data yang berbeda memerlukan pendekatan teknik yang berbeda juga. Algoritma yang digunakan pada Feature Engineering dapat menemukan pola umum yang penting untuk membedakan antara kelas Dalam Deep Learning, metode CNN atau Convolutional Neural Network sangatlah bagus dalam menemukan fitur yang baik pada citra ke lapisan berikutnya untuk membentuk hipotesis nonlinier yang dapat meningkatkan kekompleksitasan sebuah model. 21 Model yang kompleks tentunya akan membutuhkan waktu pelatihan yang lama sehingga di dunia Deep Learning pengunaan GPU sudah sangatlah umum (Danukusumo, 2017).

Apa itu CONVOLUTIONAL NEURAL NETWORK (CNN) ?

CONVOLUTIONAL NEURAL NETWORK (CNN) adalah salah satu jenis neural network yang biasa digunakan pada data image/gambar. CNN bisa digunakan untuk mendeteksi dan mengenali object pada sebuah image.

Convolutional Neural Network (CNN) merupakan salah satu metode Deep learning (DL) yang dapat digunakan untuk mendeteksi dan mengenali sebuah objek pada sebuah citra digital.

Bagaimana cara NEURAL NETWORK membaca data berupa gambar?

convolutional Neural Network dapat digunakan untuk membaca, mendeteksi dan mengenali sebuah objek pada sebuah citra digital (data berupa gambar) yaitu dengan cara mengubah struktur gambar menjadi matrix array atau pixel, maksudnya data gambar yang dibaca akan diubah oleh neural network
menjadi sebuah matix dengan nilai pixel tergantung pada intensitas pixel pada setiap titik.

Didalam convolutional Neural Network terdapat stride dan padding. dimana Stride adalah jumlah piksel yang digunakan untuk menggeser filter secara horizontal atau vertikal.Dengan kata lain, dalam hal ini stride memindahkan filter satu piksel pada setiap langkah untukmenghitung output konvolusi berikutnya. sedangkan Padding adalah modifikasi yang umum digunakan yang memungkinkan ukuran input disesuaikan dengan kebutuhan.

Convolutional Neural Network (CNN) merupakan pengembangan dari multilayer perceptron (MLP) yang didesain untuk mengolah data dua dimensi dalam bentuk citra. CNN ini termasuk kedalam jenis Deep Neural Network karena kedalaman jaringan yang tinggi dan banyak diaplikasikan pada data citra. Pada dasarnya klasifikasi citra dapat digunakan dengan MLP, akan tetapi dengan metode MLP kurang sesuai untuk digunakan karena tidak menyimpan informasi spasial dari data cita dan menganggap setiap piksel adalah fitur yang independen sehingga menghasilkan hasil yang kurang baik. Penelitian awal yang mendasari oenemuan CNN ini pertama kali dilakukan oleh Hubel dan Wiesel (Hubel & Wiesel, T, 1968) mengenai viual cortex pada indera penglihatan kucing. Secara teknis, CNN adalah sebuah arsitektur yang dapat dilatih dan terdiri dari beberapa tahap. Masukan (input) dan keluaran (output) dari setiap tahap adalah terdiri dari beberapa array yang biasa disebut feature map. Setiap tahap terdiri dari tiga layer yaitu konvolusi, fungsi aktivasi layer dan pooling layer. Berikut adalah jaringan arsitektur

Klasifikasi dalam CNN

Arsitektur Convolutional Neural Network Berdasarkan gambar diatas, Tahap pertama pada arsitektur CNN adalah tahap konvolusi. Tahap ini dilakukan dengan menggunakan sebuah kernel dengan ukuran tertentu. Perhitungan jumlah kernel yang dipakai tergantung dari jumlah fitur yang dihasilkan. Kemudian dilanjutkan menuju fungsi aktivasi, biasanya menggunakan fungsi aktivasi ReLU ( Rectifier Linear Unit ), Selanjutnya setelah keluar dari proses fungsi aktivasi kemudian melalui proses pooling.

Stride dan Padding

Stride adalah jumlah piksel yang digunakan untuk menggeser filter secara horizontal atau vertikal.Dengan kata lain, dalam hal ini stride memindahkan filter satu piksel pada setiap langkah untuk menghitung output konvolusi berikutnya.

Stride juga bisa diartikan sebagai parameter yang menentukan berapa jumlah pergeseran filter. Jika nilai stride adalah 1, maka conv. filter akan bergeser sebanyak 1 pixels secara horizontal lalu vertical. Semakin kecil stride maka akan semakin detail informasi yang kita dapatkan dari sebuah input, namun membutuhkan komputasi yang lebih jika dibandingkan dengan stride yang besar. Dan perlu diperhatikan bahwa dengan menggunakan stride yang kecil kita tidak selalu akan mendapatkan performa yang bagus. sedangkan Padding adalah modifikasi yang umum digunakan yang memungkinkan ukuran input disesuaikan dengan kebutuhan. Padding atau Zero Padding adalah parameter yang menentukan jumlah pixels (berisi nilai 0) yang akan ditambahkan di setiap sisi dari input. Hal ini digunakan dengan tujuan untuk memanipulasi dimensi output dari conv. layer (Feature Map).

Tujuan dari penggunaan padding adalah :

a. Dimensi output dari conv. layer selalu lebih kecil dari inputnya (kecuali penggunaan 1x1 filter dengan stride 1). Output ini akan digunakan kembali sebagai input dari conv. layer selanjutnya, sehingga makin banyak informasi yang terbuang.Dengan menggunakan padding, kita dapat mengatur dimensi output agar tetap sama seperti dimensi input atau setidaknya tidak berkurang secara drastis. Sehingga kita bisa menggunakan conv. layer yang lebih dalam/deep sehingga lebih banyak features yang berhasil di-extract.

b. Meningkatkan performa dari model karena conv. filter akan fokus pada informasi yang sebenarnya yaitu yang berada diantara zero padding tersebut.

Cara Kerja Layar Convulation Pertama

Lapisan Convolution pertama akan melakukan deteksi garis atau bentuk. Outputnya adalah peta aktivasi lokasi ditemukannya bentuk-bentuk atau garis. Convolution Layer melakukan operasi konvolusi pada output dari layer sebelumnya. Layer tersebut adalah proses utama yang mendasari sebuah CNN. Konvolusi adalah suatu istilah matematis yang berati mengaplikasikan sebuah fungsi pada output fungsi lain secara berulang. Dalam pengolahan citra, konvolusi berati mengaplikasikan sebuah kernel (kotak kuning) pada citra disemua offset yang memungkinkan . Kotak hijau secara keseluruhan adalah citra yang akan dikonvolusi. Kernel bergerak dari sudut kiri atas ke kanan bawah. Sehingga hasil konvolusi dari citra tersebut dapat dilihat pada gambar disebelah kanannya. Tujuan dilakukannya konvolusi pada data citra adalah untuk mengekstraksi fitur dari citra input. Konvolusi akan menghasilkan transformasi linear dari data input sesuai informasi spasial pada data. Bobot pada layer tersebut menspesifikasikan kernel konvolusi yang digunakan, sehingga kernel konvolusi dapat dilatih berdasarkan input pada CNN.

Cara Kerja Layar Convulation Kedua

SedangkanCara kerja Layar Convolutional Kedua Layar Convolution Kedua akan Menemukan kombinasi dari garis-garis atau bentuk-bentuk menjadi bagian dari objek.

Fungsi Aktivasi

Fungsi aktivasi merupakan fungsi yang digunakan pada jaringan saraf untuk mengaktifkan atau tidak mengaktifkan neuron. Karakteristik yang harus dimiliki oleh fungsi aktivasi jaringan perambatan balik antara lain harus kontinyu, terdiferensialkan, dan tidak menurun secara monotonis (monotonically non-decreasing). Lebih lanjut, untuk efisiensi komputasi, turunan fungsi tersebut mudah didapatkan dan nilai turunannya dapat dinyatakan dengan fungsi aktivasi itu sendiri. Fungsi aktivasi yang di analisis adalah sigmoid biner dan sigmoid bipolar. Fungsi aktivasi sigmoid biner memiliki nilai pada range 0 sampai 1.

Fungsi Aktivasi Sigmoid Biner

Fungsi aktivasi sigmoid bipolar hampir sama dengan fungsi sigmoid biner, hanya saja output dari fungsi ini memiliki range antara 1 sampai -1. Ditunjukan pada gambar berikut:

Fungsi Aktivasi Sigmoid Bipolar

Fungsi sigmoid sekarang sudah tidak banyak digunakan dalam praktek karena memiliki kelemahan utama yaitu range nilai output dari fungsi sigmoid tidak terpusat pada angka nol. Hal tersebut menyebabkan terjadinya proses backpropagation yang tidak ideal, selain itu bobot pada JST tidak terdistribusi rata antara nilai positif dan negatif serta nilai bobot akan banyak mendekati ekstrim 0 atau 1. Dikarenakan komputasi nilai propagasi menggunakan perkalian, maka nilai ekstrim tersebut akan menyebabkan efek saturating gradients dimana jika nilai bobot cukup kecil, maka lama kelamaan nilai bobot akan mendekati salah satu ekstrim sehingga memiliki gradien yang mendekati nol. Jika hal tersebut terjadi, maka neuron tersebut tidak akan dapat mengalami update yang signifikan dan akan nonaktif.

Layar Pooling

Pooling merupakan pengurangan ukuran matriks dengan menggunakan operasi pooling. Pooling Layer biasanya berada setelah conv. Pada dasarnya pooling layer terdiri dari sebuah filter dengan ukuran dan stride tertentu yang akan 35 secara bergantian bergeser pada seluruh area feature map. Dalam pooling layer terdapat dua macam pooling yang biasa digunakan yaitu average pooling dan maxpooling. Nilai yang diambil pada average pooling adalah nilai rata-rata, sedangkan pada max-pooling adalah nilai maksimal. Lapisan Pooling yang dimasukkan diantara lapisan konvolusi secara berturut-turut dalam arsitektur model CNN dapat secara progresif mengurangi ukuran volume output pada Feature Map, sehingga mengurangi jumlah parameter dan perhitungan di jaringan, untuk mengendalikan Overfitting. Lapisan pooling bekerja di setiap tumpukan feature map dan melakukan pengurangan pada ukurannya. Bentuk lapisan pooling umumnya dengan menggunakan filter dengan ukuran 2x2 yang diaplikasikan dengan langkah sebanyak dua dan beroperasi pada setiap irisan dari inputnya.

Cara Kerja Backpropagation pada Layar Akhir CNN

Backpropagation bekerja melalui proses secara iteratif dengan menggunakan sekumpulan contoh data (data training), membandingkan nilai prediksi dari jaringan dengan setiap contoh data. Dalam setiap proses, bobot relasi dalam jaringan dimodifikasi untuk meminimalkan nilai Mean Square Error (MSE) antara nilai prediksi dari jaringan dengan nilai sesungguhnya. Modifikasi relasi jaringan saraf tersebut dilakukan dalam arah mundur, dari output layer hingga layer pertama dari hidden layer sehingga metode ini disebut backpropagation.

Hasil Klasifikasi

Dari hasil output diatas dapat disimpulkan bahwa tingkat akurasi gambar kitab dan Al-Qur’an sebesar 87,5%.

Hasil Klasifikasi

--

--