Pengenalan Convolutional Neural Network – Part 1

Pengenalan Convolutional Neural Network – Part 1

Artikel kali ini kita akan mencoba membuat salah satu jenis model Jaringan Syaraf Tiruan yang memiliki keunikan dari arsitektur atau susunan layernya dibandingkan dengan model JST lainnya, yaitu Convolutional Neural Network.

Convolutional Neural Network (CNN) pertama kali diperkenalkan oleh Yann LeCun pada tahun 1988. CNN merupakan salah satu metode yang mengawali kemunculan dan kesuksesan Deep Learning.

Pada tahun 1950-an Hubel dan Wisel melakukan eksperimen pada salah satu bagian otak kucing yaitu visual cortex. mereka menemukan bahwa visual cortex memiliki bagian kecil berupa sel-sel yang sensitif terhadap area tertentu pada pandangan mata. Hubel dan Wisel menemukan 2 tipe visual cortex, yaitu simple cell dan complex cell. Berdasarkan hasil pengamatan ini, pada tahun 1980-an Kunihiko Fukushima merancang Neocognitron yang merupakan model Hierarchical Multilayered Neural Network. Model tersebut telah digunakan pada beberapa kasus seperti klasifikasi karakter dari tulisan tangan (Handwritten Character Recognition). model inilah yang menjadi inspirasi dari Convolutional Neural Network.

CNN memiliki kesamaan struktur dengan artificial neural network. Pada kasus klasifikasi citra, CNN menerima citra input atau masukan kemudian diproses dan diklasifikasi ke kategori tertentu (mis. pesawat, kapal, burung, kucing, sapi).

Yang membedakan CNN dengan ANN adalah CNN memiliki arsitektur tambahan yang dioptimisasi untuk fitur yang ada pada citra input. komponen-komponen utama yang ada di dalam Convolutional Neural Networks adalah:

  1. Input layer
  2. Convolution Layer
  3. Activation Function
  4. Pooling Layer
  5. Fully Connected Layer

Pada gambar di bawah ini bisa dilihat alur dari proses CNN dalam mengolah citra masukan sampai mengklasifikasikan citra tersebut ke kategori tertentu berdasarkan nilai keluarannya.

Input Layer

Input layer menampung nilai piksel dari citra yang menjadi masukan. Untuk citra dengan ukuran 64×64 dengan 3 channel warna, RGB(Red, Green, Blue) maka yang menjadi masukan akan adalah piksel array yang berukuran 64x64x3.

Convolution Layer

Convolution Layer adalah inti dari dari CNN. Convolution Layer menghasilkan citra baru yang menunjukkan fitur dari citra input. Dalam proses tersebut, Convolution Layer menggunakan filter pada setiap citra yang menjadi masukan. Filter pada layer ini berupa array 2 dimensi bisa berukuran 5×5, 3×3 atau 1×1. Proses convolution dengan menggunakan filter pada layer ini akan menghasikan feature map yang akan digunakan pada activation layer. Gambar dibawah ini menunjukkan alur pada Convolution Layer. 

Activation Layer

Activation Layer adalah layer dimana feature map dimasukkan ke dalam fungsi aktifasi. Fungsi aktifasi digunakan untuk mengubah nilai-nilai pada feature map pada range tertentu sesuai dengan fungsi aktifasi yang digunakan. ini bertujuan untuk meneruskan nilai yang menampilkan fitur dominan dari citra yang masuk ke layer berikutnya. Fungsi aktifasi yang umum digunakan bisa dilihat pada gambar berikut.

Pooling Layer

Pooling layer menerima input dari activation layer kemudia mengurangi jumlah paramaternya. Poling juga biasa disebut subsampling atau downsampling yang mengurangi dimensi dari feature map tanpa menghilangkan informasi penting di dalamnya. Proses dalam pooling layer cukup sederhana. pertama-tama kita menentukan ukuran downsampling yang akan digunakan pada feature map, misalnya 2×2. Setelah itu kta akan melakukan proses pooling pada feature map, sebagai contoh kita akan menggunakan feature map berukuran 4×4 berikut.

setelah itu kita akan menggunakan matrix 2×2 untuk melakukan proses pooling. proses Pooling sendiri ada beberapa macam seperti Max pooling, Mean pooling Sum pooling.

Fully Connected Layer

setelah melewati proses-proses diatas, hasil dari pooling layer digunakan menjadi masukan untuk Fully connected layer. Layer ini memiliki kesamaan struktur dengan Artificial Neural Network pada umumnya yaitu memiliki input layer, hidden layer dan output layer yang masing-masing memiliki neuron-neruon yang saling terhubung dengan neuron-neuron di layer tetangganya. gambar di bawah ini merupakan contoh Fully Connected Layer.

pada gambar diatas dapat dilihat sebelum hasil pooling digunakan sebagai input, hasil pooling terlebih dahulu diubah menjadi vektor (x1, x2, x3, dst) kemudian dari sini diproses ke dalam Fully Connected Layer. Pada layer terakhir di dalam Fully Connected layer akan digunakan fungsi aktifasi sigmoid atau softmax untuk menentukan klasifikasi dari citra inputan atau masukan yang dari Input Layer CNN.

Kesimpulan

Proses Convolutional Neural Network pada penjelasan diatas dapat diringkas seperti berikut :

  1. Membaca Input, misal citra, kemudian dijadikan input untuk convolution layer
  2. menentukan parameter seperti filter kemudian menjalankan proses convolution pada citra masukan.
  3. setelah proses convolution selesai, hasilnya dimasukkan kedalam fungsi aktifasi, misalnya ReLU.
  4. hasil fungsi aktifasi ReLU mengalami proses downsampling pada Pooling layer
  5. hasil dari Pooling dapat digunakan sebagai input untuk melalui thaap 2 – 4 atau dijadikan input untuk Fully Connected Layer
  6. sebelum hasil pooling menjadi input untuk Fully Connected Layer, perlu untuk meengubah hasil pooling menjadi vektor.
  7. output layer dari Fully Connected Layer menggunakan fungsi aktifasi untuk menentukan klasifikasi dari citra yang dibaca pada tahap 1.

setelah membahas Convolutional Neural Network secara umum. Kita akan mencoba merancang CNN dengan menggunakan Tensorflow dan Keras pada artikel berikutnya. CNN yang akan kita rancang akan mencoba mengklasifikasikan MNIST Handwritten Dataset dengan hasil seperti di bawah ini.