Mengenal Convolutional Neural Network

Richard Dharmadi
Nodeflux
Published in
4 min readApr 4, 2018

Disclaimer: Tulisan ini hanya akan menjelaskan konsep dasar dan intuisi dari Convolutional Neural Network (CNN). Tulisan ini tidak membahas implementasi dari CNN menggunakan framework tertentu.

Part of CNN series:
Part I: Mengenal Convolutional Neural Network (you are reading it now)
Part II: Mengenal Convolutional Layer dan Pooling Layer

Sudah menjadi kemampuan natural manusia dalam memahami apa yang kita lihat — to make sense of what we actually see. Sebagai contoh, saat kita melihat gambar di bawah ini, kita dapat dengan mudah mengidentifikasi objek-objek yang ada dalam gambar tersebut, beserta dengan hierarki nya.

Seorang anak kecil sedang menaiki kuda mainan di taman. Image by Adam Geitgey via Medium

CNN adalah sebuah teknik yang terinspirasi dari cara mamalia — manusia, menghasilkan persepsi visual seperti contoh diatas. Penelitian oleh Hubel dan Wiesel [1] menunjukkan bahwa neuron dalam korteks visual pada otak mamalia tersusun menjadi sebuah topographical map, yang setiap level nya fokus pada karakteristik tertentu. Atau dengan kata lain, sebuah gambar direpresentasikan ke dalam level ektraksi fitur (featural hierarchy) yang membentuk gambar tersebut secara keseluruhan.

Bagaimana CNN bekerja?

Sesuai dengan namanya, CNN memanfaatkan proses konvolusi. Dengan menggerakan sebuah kernel konvolusi (filter) berukuran tertentu ke sebuah gambar, komputer mendapatkan informasi representatif baru dari hasil perkalian bagian gambar tersebut dengan filter yang digunakan.

Ilustrasi pergeseran kernel pada sebuah gambar. Image via PyImage Search

Mengambil contoh gambar seorang anak kecil di atas, hasil dari proses konvolusi pada gambar tersebut dapat diilustrasikan seperti berikut ini:

Sebuah gambar dibagi menjadi gambar-gambar yang lebih kecil dengan ukuran yang sama dengan konvolusi. Image by Adam Geitgey via Medium

Setiap gambar kecil dari hasil konvolusi tersebut kemudian dijadikan input untuk menghasilkan sebuah representasi fitur. Hal ini memberikan CNN kemampuan mengenali sebuah objek, dimanapun posisi objek tersebut muncul pada sebuah gambar — atau biasa disebut translation invariance.

Image by Adam Geitgey via Medium

Proses ini dilakukan untuk semua bagian dari gambar, dengan menggunakan filter yang sama. Dengan kata lain, setiap bagian gambar akan memiliki faktor pengali yang sama, atau dalam konteks neural network disebut sebagai weights sharing.

Hasil yang didapat dari proses diatas adalah sebuah activation map. Untuk mendapat representasi gambar yang lebih baik, proses konvolusi diulang dengan filter yang berbeda untuk menghasilkan activation map lain.

Tentunya tidak semua bagian dari gambar adalah object of interest yang kita cari — beberapa bagian dari gambar merupakan background. Untuk mengurangi jumlah parameter yang perlu diperhitungkan, dilakukan proses pooling.

Pada umumnya, pooling yang dilakukan adalah max pooling, atau mengambil nilai pixel terbesar di setiap pooling kernel. Dengan begitu, sekalipun mengurangi jumlah parameter, informasi terpenting dari bagian tersebut tetap diambil. Metode pooling lain yang umum digunakan diantaranya average pooling, L2-norm pooling [2].

Ilustrasi Max Pooling. Image by Adam Geitgey via Medium

Proses konvolusi dan pooling dapat diulang beberapa kali hingga menghasilkan sebuah Convolutional Neural Network. Diantara convolutional layer dan pooling layer umumnya terdapat activation layer (e.g. ReLU, tanH, etc.) yang banyak ditemukan pada artificial neural network.

Tidak ada aturan khusus perihal berapa banyak convolution layer yang diperlukan, atau dimana sebaiknya melakukan pooling, untuk menghasilkan representasi fitur yang paling baik. Seberapa besar dan berapa banyak filter yang harus digunakan? Metode pooling atau jenis activation function yang paling baik? It’s all fully experimental. I mean hey, that’s what makes machine learning is fun, innit? :)

*artikel ini banyak mendapatkan inspirasi dari artikel tentang topik yang sama dari Adam Geitgey [2]. Konsep dari convolutional layer dan pooling layer akan dibahas lebih detail di post selanjutnya.

References

  1. Hubel, D.H. and Wiesel, T.N., 1962. Receptive fields, binocular interaction and functional architecture in the cat’s visual cortex. The Journal of physiology, 160(1), pp.106–154.
  2. CS231n Convolutional Neural Networks [link]
  3. Machine Learning is Fun! Part 3: Deep Learning and Convolutional Neural Networks. [link]

--

--

Richard Dharmadi
Nodeflux

Operational-type product leader @ Pinhome, part-time PM instructor @ RevoU, ex-AI Research Scientist & Test Engineer.