### 13.1 Convolutional Neural Network

Subbab ini akan memaparkanide utamadari _convolutional neural network_
(CNN) berdasarkan _paper_ asli dari LeCun dan Bengio [76] (saat buku ini
ditulis sudah ada banyak variasi). CNN memiliki banyak istilah dari bidang
pemrosesan gambar (karena dicetuskan dari bidang tersebut), tetapi demi


182 13 Arsitektur Neural Network

mempermudah pemahaman intuisi CNN, diktat ini akan menggunakan istilah
yang lebih umum juga.
Sekarang, mari kita memasuki cerita CNN dari segi pemrosesan gambar.
Objek bisa saja terlatak pada berbagai macam posisi seperti diilustrasikan
oleh Gambar. 13.1. Selain tantangan variasi posisi objek, masih ada juga tantangan
lain seperti rotasi objek dan perbedaan ukuran objek ( _scaling_ ). Kita
ingin mengenali (memproses) objek pada gambar pada berbagai macam posisi
yang mungkin ( _translation invariance_ ). Salah satu cara yang mungkin
adalah dengan membuat suatu mesin pembelajaran (ANN) untuk regional
tertentu seperti pada Gambar. 13.2 (warna biru) kemudian meng- _copy_ mesin
pembelajaran untuk mampu mengenali objek pada regional-regional lainnya.
Akan tetapi, kemungkinan besar ANN _copy_ memiliki konfigurasi parameter
yang sama dengan ANN awal. Hal tersebut disebabkan objek memiliki
informasi prediktif (predictive information– _feature vector_ ) yang sama yang
berguna untuk menganalisisnya. Dengan kata lain, objek yang sama ( _smiley_ )
memiliki pola _feature vector_ yang mirip walaupun posisinya digeser-geser.
ANN (MLP) bisa juga mempelajari prinsip _translation invariance_, tetapi
memerlukan jauh lebih banyak parameter dibanding CNN (subbab berikutnya
secara lebih matematis) yang memang didesain dengan prinsiptranslation
in _variance_ (“ _built-in_ ”).

```
Gambar 13.1: Motivasi _convolutional neural network_.
```
13.1.1 Convolution

Seperti yang sudah dijelaskan, motivasi CNN adalah untuk mampu mengenali
aspek yang informatif pada regional tertentu (lokal). Dibanding meng _copy_ mesin
pembelajaran beberapa kali untuk mengenali objek pada banyak
regional, ide lebih baik adalah untuk menggunakan _sliding window_. Setiap


```
13.1 Convolutional Neural Network 183
```
```
Gambar 13.2: Motivasi _convolutional neural network_, solusi regional.
```
operasi pada _window_ ^1 bertujuan untuk mencari aspek lokal yang paling informatif.
Ilustrasi diberikan oleh Gambar. 13.3. Warna biru merepresentasikan
satu _window_, kemudian kotak ungu merepresentasikan aspek lokal paling informatif
(disebut _filter_ ) yang dikenali oleh _window_. Dengan kata lain, kita
mentransformasi suatu _window_ menjadi suatu nilai numerik ( _filter_ ). Kita juga
dapat mentransformasi suatu _window_ (regional) menjadidnilai numerik (d _channels_,
setiap elemen berkorespondensi pada suatu _filter_ ). _Window_ ini kemudian
digeser-geser sebanyakTkali, sehingga akhirnya kita mendapatkan
_vektor_  dengan panjangd×T. Keseluruhan operasi ini disebut sebagaicon-
volution.^2

```
Gambar 13.3:Sliding window.
```
Agar kamu lebih mudah memahami prinsip ini, kami berikan contoh dalam
bentuk 1-D pada Gambar. 13.4. Warna biru merepresentasikan _feature vector_
(regional) untuk suatu _input_ (e.g., regional pada suatu gambar, kata pada
kalimat, dsb). Pada contoh ini, setiap 2 _input_ ditransformasi menjadi vektor
berdimensi 2 (2- _channels_ ); menghasilkan vektor berdimensi 4 (2 _window_ ×
2).
Pada contoh sebelumnya, kita menggunakan _window_ selebar 2, satu _window_ mencakup
2 data lokal; i.e., _window_ 1 = (x 1 ,x 2 ), _window_ 2 = (x 2 ,x 3 ), ...
; untuk suatu _input x_. Kita juga dapat mempergunakan _stride_ sebesars,

(^1) Dikenal juga sebagai _receptive field_.
(^2) Istilah _convolution_ yang diterangkan pada konteks _machine learning_ memiliki arti
yang berbeda pada bidang _signal processing_.


184 13 Arsitektur Neural Network

```
Gambar 13.4:1D Convolution.
```
yaitu seberapa banyak data yang digeser untuk _window_ baru. Contoh yang
diberikan memiliki _stride_ sebesar satu. Apabila kita memiliki _stride_ =2, maka
kita menggeser sebanyak 2 data setiap langkah; i.e., _window_ 1 = (x 1 ,x 2 ), _window_
2 = (x 3 ,x 4 ),···.
Selain _sliding window_ dan _filter_, _convolutional layer_ juga mengadopsi prinsip _weight_
sharing. Artinya, _synapse weights_ untuk suatu filter adalah sama
walau _filter_ tersebut dipergunakan untuk berbagai _window_. Sebagai ilustrasi,
perhatikan Gambar. 13.5, warna yang sama pada _synapse weights_ menunjukkansynapse
_weight_ s bersangkutan memiliki nilai ( _weight_ ) yang sama.
Tidak hanya pada _filter_ hitam, hal serupa juga terjadi pada _filter_ berwarna
oranye (i.e., _filter_ berwarnya oranye juga memenuhi prinsip _weight sharing_ ).
Walaupun memiliki konfigurasi bobot _synapse weights_ yang sama, unit dapat
menghasilkan _output_ yang berbeda untuk _input_ yang berbeda. Konsep
_weight sharing_ ini sesuai dengan cerita sebelumnya bahwa konfigurasi parameter
untuk mengenali karakteristik informatif untuk satu objek bernilai sama
walau pada lokasi yang berbeda. Dengan _weight sharing_, parameter _neural_
_network_ juga menjadi lebih sedikit dibanding menggunakan _multilayer perceptron_ ( _feed-forward_
_neural network_ ).

```
Gambar 13.5: Konsep _weight sharing_.
```
13.1.2 Pooling

Pada tahap _convolution_, kita merubah setiap _k-sized window_ menjadi satu
_vektor_  berdimensid(yang dapat disusun menjadi matriksD). Semua vektor
yang dihasilkan pada tahap sebelumnya dikombinasikan ( _pooled_ ) menjadi


```
13.1 Convolutional Neural Network 185
```
satu vektorc. Ide utamanya adalah mengekstrak informasi paling informatif
(semacam meringkas). Ada beberapa teknik _pooling_, diantaranya: _max pooling_,
_average pooling_, dan _K-max pooling_ ;^3 diilustrasikan pada Gambar. 13.6.Max
_pooling_ mencari nilai maksimum untuk setiap dimensi vektor. _Average pooling_
mencari nilai rata-rata tiap dimensi. _K-max pooling_ mencariKnilai terbesar
untuk setiap dimensinya (kemudian hasilnya digabungkan). Gabungan operasi
_convolution_ dan _pooling_ secara konseptual diilustrasikan pada Gambar. 13.7.

```
Gambar 13.6: Contoh _pooling_.
```
Setelah melewati berbagai operasi convolution dan _pooling_, kita akan
memiliki satu vektor yang kemudian dilewatkan pada _multilayer perceptron_
( _fully connected_ ) untuk melakukan sesuatu (tergantung permasalahan), misal
klasifikasi gambar, klasifikasi sen _time_ n, dsb (Ilustrasi pada Gambar. 13.8).

13.1.3 Rangkuman

Kemampuan utama _convolutional neural network_ (CNN) adalah arsitektur
yang mampu mengenali informasi prediktif suatu objek (gambar, teks, potongan
suara, dsb) walaupun objek tersebut dapat diposisikan dimana saja
pada _input_. Kontribusi CNN adalah pada _convolution_ dan _pooling_ layer. _Convolution_ bekerja
dengan prinsip _sliding window_ dan _weight sharing_ (mengurangi
kompleksitas perhitungan). _Pooling layer_ berguna untuk merangkum
informasi informatif yang dihasilkan oleh suatu _convolution_ (mengurangi dimensi).
Pada ujung akhir CNN, kita lewatkan satu vektor hasil beberapa operasi _convolution_ dan _pooling_ padamulti _layer_
_perceptron_ ( _feed-forward_ neural
_network_ ), dikenal juga sebagai _fully connected layer_, untuk melakukan suatu
pekerjaan, e.g., klasifikasi. Perhatikan, pada umumnya CNN tidak berdiri

(^3) Kami ingin pembaca mengeksplorasi sendiri _dynamic pooling_.


186 13 Arsitektur Neural Network

```
Gambar 13.7: _Convolution_ dan _pooling_.
```
```
Gambar 13.8: _Convolution_ al Neural Network.^4
```
sendiri, dalam artian CNN biasanya digunakan (dikombinasikan) pada arsitektur
yang lebih besar.

