### 11.4 Multi _layer_ Perceptron

Kamu sudah belajar bagaimana proses _training_ untuk _single perceptron_. Selanjutnya
kita akan mempelajari _multilayer perceptron_ (MLP) yang juga dikenal
sebagai _feedforward neural network_. Kami tekankan sekali lagi,istilah
“ANN” selanjutnya mengacu pada MLP dan arsitektur lebih kom-
pleks.


```
11.4 Multi _layer_ Perceptron 149
```
Perhatikan ilustrasi pada Gambar 11.5, _multilayer perceptron_ secara literal
memiliki beberapa _layers_. Pada buku ini, secara umum ada tiga _layers_ : _input_, _hidden_,
dan _output layer_. _Input layer_ menerima _input_ (tanpa melakukan
operasi apapun), kemudian nilai _input_ (tanpa dilewatkan ke fungsi aktivasi)
diberikan ke _hidden units_ (persamaan 11.6). Pada _hidden units_, _input_ diproses
dan dilakukan perhitungan hasil fungsi aktivasi untuk tiap-tiap neuron, lalu
hasilnya diberikan ke _layer_ berikutnya (persamaan 11.7,σadalah fungsi aktivasi). _Output_ dari _input_
_layer_ akan diterima sebagai input bagi _hidden layer_.
Begitupula seterusnya _hidden layer_ akan mengirimkan hasilnya untuk _output_
_layer_. Kegiatan ini dinamakan _feed forward_ [45, 4]. Hal serupa berlaku untukartificial
_neural network_ dengan lebih dari tiga _layers_. Parameter neuron
dapat dioptimisasi menggunakan metode _gradient-based optimization_ (dibahas
pada subabb berikutnya, ingat kembali bab 5). Perlu diperhatikan, MLP
adalah gabungan dari banyak fungsi non-linear. Seperti yang disampaikan
pada subbab sebelumnya, gabungan banyak fungsi non-linear ini lebih hebat
dibanding _single perceptron_. Seperti yang kamu lihat pada Gambar 11.5,
masing-masing neuron terkoneksi dengan semua neuron pada _layer_ berikutnya.
Konfigurasi ini disebut sebagai _fully connected_. MLP pada umumnya
menggunakan konfigurasi _fully connected_.

```
Gambar 11.5: _Multilayer Perceptron_ 2.
```

150 11 Feed _forward_ Neural Network

```
oj=σ
```
#### (K

#### ∑

```
k=1
```
```
xkwk,j+βj
```
#### )

#### (11.6)

```
vi=σ
```
#### 

#### 

#### ∑J

```
j=1
```
```
ojuj,i+γi
```
#### 

```
=σ
```
#### 

#### 

#### ∑J

```
j=1
```
```
σ
```
#### (K

#### ∑

```
k=1
```
```
xkwk,j+βj
```
#### )

```
uj,i+γi
```
#### 

####  (11.7)

Perhatikan persamaan 11.6 dan 11.7 untuk menghitung _output_ pada _layer_
yang berbeda.u,wadalah _learning parameters_.β,γmelambangkan _noise_ atau
_bias_.Kadalah banyaknya _input units_ danJadalah banyaknya _hidden units_.
Persamaan 11.7 dapat disederhanakan penulisannya sebagai persamaan 11.8.
Persamaan 11.8 terlihat relatif lebih “elegan”, dimanaσmelambangkan fungsi
aktivasi. Seperti yang disebutkan pada subbab sebelumnya, ANN dapat direpresentasikan
dengan notasi aljabar linear.

v=σ(oU+γ) =σ((σ(xW+β))U+γ) (11.8)
Untuk melatih MLP, algoritma yang umumnya digunakan adalah _backpropagation_ [54].
Arti kata _backpropagation_ sulit untuk diterjemahkan ke
dalam bahasa Indonesia. Kita memperbaharui parameter ( _synapse weights_ )
secara bertahap (dari _output_ ke _input layer_, karena itu disebut _backpropagation_ )
berdasarkan _error_ / _loss_ ( _output_ dibandingkan dengan _desired output_ ).
Intinya adalah mengkoreksi _synapse weight_ dari _output layer_ ke _hidden_
_layer_, kemudian _error_ tersebut dipropagasi ke layer sebelum-sebelumnya.
Artinya, perubahan _synapse weight_ pada suatu layer dipengaruhi oleh perubahansynapse
_weight_ pada layer setelahnya.^5 Backpropagationtidak lain
dan tidak bukan adalah metode _gradient-based optimization_ yang diterapkan
pada ANN.
Pertama-tama diberikan pasangan _input_ (x) dan _desired output_ (y) sebagai _training_
_data_. Untuk meminimalkan _loss_, algoritma _backpropagation_
menggunakan prinsip _gradient descent_ (ingat kembali materi bab model linear).
Kamu akan memperlajari bagaimana cara menurunkan _backpropagation_
menggunakan teknik _gradient descent_, yaitu menghitung _loss_ ANN pada Gambar
11.5yang menggunakan fungsi aktivasi sigmoid. Untuk fungsi aktivasi
lainnya, pembaca dapat mencoba menurunkan persamaan sendiri!
Ingat kembali _chain rule_ pada perkuliahan diferensial

```
f(g(x))′=f′(g(x))g′(x). (11.9)
```
_Error_, untuk MLP diberikan oleh persamaan 11.10 (untuk satu data _point_ ),
dimanaIadalah banyaknya _output unit_ danθadalah kumpulan _weight matrices_ (semua
parameter pada MLP). Kami inggatkan kembali perhitungan
_error_ bisa juga menggunakan nilai absolut.^6

(^5) Kata “setelah” mengacu _layer_ yang menuju _output layer_ “sebelum” mengacu
_layer_  yang lebih dekat dengan _input layer_.
(^6) Kami menggunakan tanda kurung agar lebih mudah dibaca penurunan rumusnya.


```
11.5 Interpretability 151
```
```
E(θ) =
```
#### 1

#### 2

#### ∑I

```
i=1
```
```
(yi−vi)^2 (11.10)
```
Mari kita lakukan proses penurunan untuk melatih MLP. _Error_ / _loss_ diturunkan
terhadap tiap _learning parameter_.
Diferensialuj,idiberikan oleh turunan _sigmoid function_

```
δE(θ)
δuj,i
= (yi−vi)
```
```
δvi
δuj,i
= (yi−vi)vi(1−vi)oj
Diferensialwk,jdiberikan oleh turunan _sigmoid function_
```
```
δE(θ)
δwk,j
```
#### =

#### ∑I

```
i=1
```
```
(yi−vi)
```
```
δvi
δwk,j
```
#### =

#### ∑I

```
i=1
```
```
(yi−vi)
```
```
δvi
δoj
```
```
δoj
δwk,j
```
#### =

#### ∑I

```
i=1
```
```
(yi−vi)(vi(1−vi)uj,i)(oj(1−oj)xk)
```
Perhatikan, diferensialwk,jmemiliki

#### ∑

sementarauj,itidak ada. Hal ini disebabkan
karenauj,ihanya berkorespondensi dengan satu _output_ neuron. Sementarawk,jberkorespondensi
dengan banyak _output_ neuron. Dengan kata
lain, nilaiwk,jmempengaruhi hasil operasi yang terjadi pada banyak _output_ neuron,
sehingga banyak neuron mempropagasi _error_ kembali kewk,j.
Ilustrasi diberikan pada Gambar 11.6.
Metode penurunan serupa dapat juga digunakan untuk menentukan perubahanβdanγ.
Jadi proses _backpropagation_ untuk kasus Gambar 11.5 dapat
diberikan seperti pada Gambar 11.7 dimanaηadalah _learning rate_. Untukartificial
_neural network_  denganlebih dari 3 _layers_, kita pun bisa menurunkan
persamaannya. Secara umum, proses melatih ANN (apapun variasi arsitekturnya)
mengikuti _framework perceptron training rule_ (subbab 11.2). Cerita
pada buku ini menggunakan _error_ sebagai _utility function_ karena mudah diilustrasikan,
serta contoh ini sering digunakan pada referensi lainnya. Pada
permasalahan praktis, _cross entropy_ adalah _utility function_ yang sering digunakan
untuk melatih ANN (untuk permasalahan klasifikasi).

