#11 Artificial Neural Network (ANN) — Part 6 Konsep Dasar Convolutional Neural Network (CNN)

Muhammad Yunus
7 min readMay 6, 2020

--

Definition, Layer, Architecture dan Learning Process pada CNN

Tulisan ini melanjutkan seri bahasan tentang Artificial Neural Network (ANN) untuk membahas konsep dasar Convolutional Neural Network (CNN) dan pemanfaatanya. Berikut adalah seri tulisan sebelumnya :

Definition & Architecture

Convolutional Neural Network (CNN) merupakan versi regularisasi Multi Layer Perceptron dan tergolong kedalam deep feed-forward artificial neural network. CNN terinspirasi dari proses biologis dimana pola konektivitas antar neuron menyerupai visual cortex pada binatang. Oleh karena itu, CNN banyak diterapkan pada analisis citra.

Arsitektur CNN sama seperti Multi Layer Perceptron, terdiri atas :

  • satu layer input (input layer),
  • satu layer output (output layer) dan
  • beberapa hidden layer (hidden layer).

Pada bagian hidden layer CNN pada umunya berisi :

  • Convolutional layer,
  • Pooling layer,
  • Normalization layer,
  • Activation layer (umumnya ReLU)
  • Fully connected layer dan
  • Loss layer.

Input layer pada CNN berupa tensor, yang memiliki lebar, tinggi dan kedalaman. Hal inilah yang membuat CNN dapat digunakan untuk analisis citra, karena kita tau citra digital memiliki lebar dan tinggi serta memiliki kedalaman dalam bentuk saluran warna merah, hijau dan biru (RGB).

CNN Architecture
3D image representation [source]

Komputer melihat sebuah gambar sebagai matrix angka yang memiliki dimensi lebar, tinggi dan kedalaman (color channel).

image representation [source]

Convolutional Layer

Merupakan lapisan dimana input layer akan diabstraksi menjadi Feature Map. Feature Map juga berbentuk tensor yang memiliki lebar x tinggi x banyaknya channel. Feature Map terdiri dari :

  • Convolutional kernel/filter yang memiliki lebar dan tinggi,
  • Kernel/filter pada Convolutional layer bisa lebih dari satu,
  • Nilai pada Kernel/filter akan di-update selama proses learning.

Sebagai contoh, pada input layer kita memiliki 7x7 pixel input layer. Setiap bagian pada input layer akan dilakukan operasi dot product terhadap kernel. Bagian pada input layer tersebut dinamakan bidang reseptif (receptive field) yang memiliki size (lebar x tinggi) yang sama dengan kernel. Jika kita memiki kernel dengan size 3x3, maka bidang reseptif yang akan digunakan sebesar 3x3. Seluruh bidang reseptive pada input layer akan digeser (convolving) dari kiri-atas sampai ke-kanan-bawah, sehingga dihasilkan feature map berukuran 2 dimensi.

Convolution layer by NVIDIA [source]

Seperti dibahas sebelumnya, pada CNN bisa terdapat lebih dari 1 filter. Jika misalkan kita menggunakan 4 filter, maka feature map yang akan dihasilkan memiliki ukuran lebar x tinggi x 4.

Convolution layer dengan 4 filter 3x3x1

saat melakukan convolving umumnya menggunakan lebar langkah sebesar stride=1 dengan zero padding sebesar,

dimana P adalah ukuran padding dan F adalah ukuran bidang reseptif. Contohnya pada kasus diatas, untuk bidang reseptif 3x3 (karena menggunakan kernel 3x3) akan dihasilkan zero padding =1 ,

Zero padding, stride = 1

Selanjutnya proses konvolusi akan menghasilkan feature map dengan size 7x7. Jika kita perhatikan, bagian reseptif pada bagian kiri atas akan dilakukan operasi dot product dengan kernel yang akan menghasilkan nilai 2 pada feature map.

feature map yang dihasilkan oleh input layer dengan zero padding = 1

perhitunganya sebagai berikut,

2 = (0x1)+(0x0)+(0x0)

+(0x1)+(1x1)+(0x0)

+(0x0)+(1x1)+(0x1)

sehingga kita dapat rumuskan, jika w1 x h1 x d1 merupakan size pada input layer, maka kita tentukan w2 x h2 x d2 sebagai size feature map pada convolution layer, dimana,

Untuk,

F merupakan ukuran bidang reseptif,

P merupakan ukuran zero padding,

S merupakan lebar langkah/stride,

K merupakan jumlah filter.

Pada CNN variable F, P, S dan K merupakan hyperparameters (parameter yang harus ditentukan user). Berikut merupakan beberapa ukuran yang sering digunakan,

  • Jumlah kernel/filter (K) , berupa bilangan pangkat 2, misal 8, 16, 32, dll.
  • Ukuran kernel/filter, F=3, S-1, P=1
  • Ukuran kernel/filter, F=5, S-1, P=2
  • Ukuran kernel/filter, F=5, S-2, P=berapapun yang sesuai
  • Ukuran kernel/filter, F=1, S-1, P=0

Berikut merupakan ilustrasi lengkap, bagaimana feature map dibentuk dari hasil dot product input layer dengan kernel. Input layer dengan size 7x7x3 dan zero padding =1. Dua buah kernel (w0, w1) dengan size 3x3x3 dan stride = 2. Menghasilkan feture map dengan size 3x3x2.

Ilustrasi convolution layer [source]

Pooling Layer

Pooling layer digunakan untuk proses reduksi sample (down-sampling). Keuntungan menggunakan pooling layer, kita dapat merepresentasikan data menjadi lebih kecil, mudah dikelola dan mudah mengontrol over-fitting.

Ada beberapa teknik yang dapat digunakan, diantaranya max pooling , L2-norm pooling dan average pooling. Paling umum digunakan adalah max pooling, yang bekerja dengan cara memilih nilai maksimum pada satu area tertentu. Di ilustrasikan sebagai berikut :

ilustrasi max pooling [source]

Gambar diatas max pooling menggunakan kernel 2x2 dengan stride = 2. Sehingga pada bagian reseptif pertama (kiri-atas) didapatkan nilai maksimum 6. Didapatkan 8, 3 dan 4 untuk bagian reseptif lainya.

ReLU Layer

ReLU atau Rectified Activation Function merupakan non-saturating activation function yang dapat meningkatkan non-linearitas decision function dan network secara keseluruhan, tanpa harus mempengaruhi bidang-bidang reseptif pada convolution layer. ReLU sangat efektif untuk menghapus nilai negative pada feature/activation map dan dijadikan 0. Dirumuskan sebagai,

f(x) = max(0,x)

Jika kita plot, akan berbentuk seperti berikut,

ReLU plot [source]

Berikut ilustrasi ReLU layer pada feature map, output dari ReLU layer akan memiliki dimensi yang sama dengan dimensi feature map sebelum dikenai ReLU layer.

ilustrasi ReLU layer [source]

Fully Connected Layer

Pada lapisan ini setiap neuron saling terhubung dengan neuron-neuron dilapisan sebelumnya. Hal ini sama persis dengan konsep MLP yang telah kita bahas sebelumnya. Berikut adalah ilustrasi fully connected layer,

ilustrasi fully connected layer [source]

Loss Layer

Merupakan lapisan terakhir dari CNN yang bertugas untuk mengukur deviasi nilai hasil prediksi dengan nilai sebenarnya (terget). Ada beberapa jenis loss function yang dapat digunakan, diantaranya :

  • softmax loss,
  • sigmoid cross-entropy,
  • euclidean loss.

Arsitektur CNN

CNN memiliki banyak versi arsitektur yang dikembangkan oleh para ahli. Berikut adalah arsitektur yang populer diawal perkembangan CNN :

  • LeNet-5,
  • AlexNet,
  • ZFNet.

LeNet-5 atau disebut juga LeNet, adalah CNN yang sukses digunakan pertama kali untuk usecase membaca kode pos dan digit. Arsitksur LeNet digambarkan sebagai berikut,

Arsitektur LeNet-5 : original Image published in [LeCun et al., 1998]

Arsitektur lainya yang populer adalah,

  • GoogleNet
  • VGGNet
  • ResNet
  • Capsule Network

CNN Learning Algorithm

Berikut adalah teknik pembelajaran pada CNN yang sering digunakan :

Regularization

Regularization digunakan untuk menghindari overfitting sehingga model dapat menemukan hasil pembelajaran yang lebih general untuk data-data diluar data training (validation & test dataset). Terdapat dua metode yang dapat digunakan, yaitu:

drop-out, digunakan dengan cara menonaktifkan sejumlah neuron dengan proporsi tertentu. Tiap node/neuron akan di-”drop-out” dengan probabilitas (1 - p), dengan kata lain neuron akan di-aktifkan dengan probabilitas p. Ketika neuron di-droppedout, seluruh koneksi input dan ouput neuron tersebut akan dihapus. Untuk layer dengan jumlah neuron sangat banyak sebaiknya probabilitas neuron di-dropped-out sebesar 0.5. Sedangkan untuk input layer bisa digunaan 0.2. Penggunaan probabilitas dropout lebih besar pada input layer bisa merugikan proses training dimana model yang dihasilkan tidak cukup baik menggambarkan data yang ada. Penggunaan (1 - p) > 0.5 tidak disarankan, ini berkenaan dengan oprimasi regularisasi maksimum di 0.5, dimana peningkatan probabilitas tidak diiringi dengan kenaikan regularisasi.

Gradient Regularized Network didefinisikan sebagai berikut,

p merupakan dropout probability ,

w merupakan weight,

x merupakan input data,

t merupakan target data.

Secara umum dropout lebih signifikan dalam menghasilkan model yang optimum dibandingkan teknik regularization lain, seperti drop-connect.

Nah, kita sudah bahas mulai dari definisi, jenis layer, arsitektur sampai teknik pada proses learning CNN. Selanjutnya akan kita terapkan menggunakan Keras & Tensorflow untuk klasifikasi teks di tulisan selanjutnya.

--

--

Muhammad Yunus

IoT Engineer, Software Developer & Machine Learning Enthusiast