### Soal Latihan

10.1. Intra- _cluster_ Evaluation
Buktikan kebenaran persamaan 10.7.

10.2. Entropy
Bagaimana cara menghitung kualitas algoritma _clustering_, jika diberikan informasi
label/ kelas setiap data menggunakan: (hint, baca [41])
(a) Entropy
(b) Purity

10.3. Kompleksitas
Hitunglah kompleksitas algoritma untuk:
(a) K- _mean_ s
(b) Agglomerative Clustering
(c) Divisive Clustering

10.4. Kemiripan Data
Sebutkanlah contoh perhitungan kemiripan untuk data _string_. Bagaimana
adaptasi perhitungan tersebut pada formula-formula yang sudah diberikan
pada algoritma K- _mean_ s dan agglomerative clustering.

10.5. Agglomerative vs Divisive Clustering
Menurut kamu, mengapa pendekatan _bottom-up_ (agglomerative) lebih populer
dibanding _top-down_ (divisive)? Apa perbedaan kedua pendekatan tersebut
(keuntungan dan kerugian masing-masing)?

10.6. Agglomerative Link
Jelaskan apa kelebihan dan kekurangan masing-masing metode perhitungan
kemiripan cluster pada agglomerative clustering!


### 10.3 Evaluasi

Diberikan sekumpulan dataD={d 1 ,d 2 ,···,dN}untuk suatu _cluster_. Saat
tidak tersedianya informasi label/kelas untuk setiap data, kualitas hasil _clustering_ dapat
dihitung dengan tiga kriteria yaitu:

```
1. _Intra-cluster similarity_, yaitu menghitung rata-rata kedekatan antara
suatu anggota dan anggota _cluster_ lainnya.
```
```
I=
```
#### 1

#### N^2

#### ∑

```
didj,i 6 =j
```
```
cosSim(di,dj) (10.6)
```
```
Perhitungan kedekatan antar tiap pasang anggota _clusters_ ama halnya
dengan menghitung _norm_ dari centroid _cluster_ tersebut, ketika centroid
dihitung menggunakan _mean_ (buktikan!).
```
```
I=
```
#### 1

#### N^2

#### ∑

```
didj,i 6 =j
```
```
cosSim(di,dj) =‖c‖^2 (10.7)
```
```
Perhitungan ini dapat di _norm_ alisasi sesuai dengan banyaknya anggota
_cluster_
I′=
‖c‖^2
N
```
#### (10.8)

```
Semakin tinggi kemiripan anggota pada suatu _cluster_, semakin baik kualitas
_cluster_ tersebut.
```
```
2. _Inter-cluster similarity_, yaitu menghitung bagaimana perbedaan antara
suatu _cluster_ dan _cluster_ lainnya. Hal tersebut dihitung dengancosine
similarity antara centroid suatu _cluster_ dan centroid dari seluruh
_data_  [42], dimanackadalah centroid _cluster_ ke-k,cDadalah centroid
( _mean_ ) dari seluruh data,Nkadalah banyaknya anggota _cluster_ ke-k, dan
Kadalah banyaknya _clusters_. Semakin kecil nilai _inter-cluster similarity_,
maka semakin baik kualitas _clustering_.
```
#### E=

#### ∑K

```
k=1
```
```
Nk
ckcD
‖ck‖
```
#### (10.9)

```
3. _Hybrid_. Perhitungan intra- _cluster_ dan inter- _cluster_ mengoptimalkan
satu hal sementara tidak memperdulikan hal lainnya. _Intra-cluster_ menghitung
keeratan anggota _cluster_, sementara _Inter-cluster_ menghitung separasi
antar _clusters_. Kita dapat menggabungkan keduanya sebagai _hybrid_
(gabungan), dihitung dengan:
```
#### H=

#### ∑K

```
k=1I
′
k
E
```
#### =

#### ∑K

```
k=1
```
```
‖ck‖^2
Nk
∑K
k=1Nk
```
```
ckcD
‖ck‖
```
#### =

#### ∑K

```
k=1
```
```
‖ck‖
Nk^2 ckcD
```
#### (10.10)

```
Semakin besar nilai perhitungan _hybrid_, semakin bagus kualitas _clusters_.
```

140 10 Clustering

Apabila terdapat informasi label/ kelas untuk setiap data, kita juga dapat
menghitung kualitas algoritma _clustering_ (perhatikan! tujuan pengukuran
adalah kualitas algoritma) dengan _Entropy_ danPurity.


### 10.2 Hierarchical Clustering

Hierarchical clusteringadalah teknik untuk membentuk pembagian bersarang
(nested partition). Berbeda dengan K- _mean_ s yang hasil _clustering_ -nya berbentukflatatau
rata, _hierarchical clustering_ memiliki satu _cluster_ paling atas
yang mencakup konsep seluruh _cluster_ dibawahnya. Ada dua cara untuk membentuk _hierarchical_
_clustering_ [41]:

```
1.Agglomerative. Dimulai dari beberapaflat clusters; pada setiap langkah
iterasi, kita menggabungkan dua _clusters_ termirip. Artinya, kita harus
mendefinisikan arti “kedekatan” dua _clusters_.
```
```
2.Divisive. Dimulai dari satu _cluster_ (seluruh data), kemudian kita memecah
belah _cluster_. Artinya, kita harus mendefinisikan _cluster_ mana yang harus
dipecah dan bagaimana cara memecahnya.
```
```
Gambar 10.1: Ilustrasi _hierarchical clustering_.
```
(^1) https://en.wikipedia.org/wiki/Cosine_similarity

138 10 Clustering

Sebagai contoh, algoritma _hierarchical clustering_ menghasilkan struktur
hirarkis seperti pada gambar 10.1 yang disebutdendogram. Dendogram
melambangkan taksonomi, sebagai contoh taksonomi dokumen berita _sport_,
dipecah menjadi _baseball_ dan _soccer_.
Sejauh ini, teknik _agglomerative clustering_ lebih populer, karena pendekatan
ini bersifat _bottom-up_. Secara umum, pendekatan _bottom-up_ memang
relatif lebih populer dibanding pendekatan _top-down_. Langkah-langkahagglomerative
_clustering_ sebagai berikut:

1. Sediakan sebanyakK _cluster_. Kamu dapat menganggap satu _instance_ data
    sebagai satu _cluster_.
2. Gabung dua _clusters_ paling mirip.
3. Ulangi langkah ke-2 sampai hanya satu _cluster_ tersisa.
    Perhatikan, untuk menggabungkan dua _clusters_ termirip, kita membutuhkan
definisi “mirip”. Definisi tersebut dikuantifikasi dengan formula matematis
(seperti definisi kemiripan data pada subbab 10.1). Perhitungan kemiripan _clusters_ dapat
dihitung dengan tiga metode [43] (untuk data numerik):

```
1. _Single Link_. Nilai kemiripan dua _clusters_ UdanVdihitung berdasarkan
nilai kemiripanmaksimumdiantara anggota kedua _clusters_ tersebut^2.
```
```
SimsingleLink(U,V) = max
ui∈U,vj∈V
cosSim(ui,vj) (10.3)
```
```
2. _Complete Link_. Nilai kemiripan dua _clusters_ dihitung berdasarkan nilai
kemiripanminimumdiantara anggota kedua _clusters_ tersebut.
```
```
SimcompleteLink(U,V) = min
ui∈U,vj∈V
cosSim(ui,vj) (10.4)
```
```
3.UPGMA ( _Average Link_ ). Nilai kemiripan dua _clusters_ dihitung berdasarkan
nilai kemiripanrata-ratadiantara anggota kedua _clusters_ tersebut.
```
```
SimUPGMA(U,V) =
```
#### 1

#### |U||V|

#### ∑

```
ui∈U,vj∈V
```
```
cosSim(ui,vj) =
cUcV
|U||V|
```
#### (10.5)

```
dimana|U|adalah banyaknya data pada _cluster_ UdancUadalah centroid
untuk _cluster_ U.
```
(^2) Clusterdapat dianggap sebagai matriks karena merupakan kumpulanfeature vec-
tor.

```
10.3 Evaluasi 139
```


### 10.1 K- _mean_ s, Pemilihan Centroid, Kemiripan Data

Algoritma K- _mean_ s mengelompokkan data menjadi sebanyakK kelompok
sesuai yang kita definisikan. Algoritma ini disebut juga sebagai _flat clustering_,
artinya kelompok satu memiliki kedudukan sejajar dengan kelompok lainnya.
Kita tinjau kembali tahapan-tahapan algoritma K- _mean_ s sebagai berikut:

1. Tentukan sebanyakKkelompok yang kita inginkan.
2. Inisiasi _centroid_ untuk setiap kelompok. Centroid ibarat seperti “ketua
    kelompok”, yang merepresentasikan kelompok.
3. Hitung kedekatan suatu data terhadap _centroid_, kemudian masukkan data
    tersebut ke kelompok yang _centroid_ -nya memiliki sifat terdekat dengan
    dirinya.
4. Pilih kembali centroid untuk masing-masing kelompok, yaitu dari anggota
    kelompok tersebut.
5. Ulangi langkah-langkah sebelumnya sampai tidak ada perubahan anggota
    untuk semua kelompok.

Perhatikan, ada dua hal penting pada algoritma K- _mean_ s yaitu: (1)
memilih centroid dan (2) Perhitungan kemiripan data. Pada bab 4, dijelaskan
salah satu metode pemilihan centroid paling sederhana yaitu secara acak.
Pada kenyataannya, inisiasi centroid untuk setiap kelompok/ _cluster_ dapat dilakukan
secara acak; tetapi pada tahap berikutnya, secara umum centroid
dipilih menggunakan nilai rata-rata/ _mean_. Dengan demikian, centroid bisa
saja merupakan suatu vektor yang tidak ada _entry_ -nya di dataset.
Diberikan sekumpulan dataD={d 1 ,d 2 ,···,dN}; maka centroidcuntuk
_cluster_ itu dihitung dengan persamaan 10.1,

```
c=
```
#### 1

#### N

#### ∑N

```
i=1
```
#### ∑F

```
e=1
```
```
di[e] (10.1)
```
yaitu nilai rata-rata setiap elemen _feature vector_ untuk seluruh anggota _cluster_
tersebut, dimanaN adalah banyaknya anggota _cluster_,F adalah dimensi
_vektor_,diadalah anggota ke-i dalam representasi _feature vector_ dandi[e]
melambangkan elemen ke-epada vektordi. Dengan ini, centroid secara umum
bisa jadi tidak merupakan elemen anggota _cluster_ ( _centroid_ bukan sebuah
_instance_ data).
Pada bab 4 dijelaskan salah satu metode perhitungan kemiripan data
sederhana yaitu dengan menghitung banyaknya nilai atribut yang sama diantara
dua _feature vector_. Selain metode tersebut, terdapat banyak perhitungan
kemiripan data lainnya tergantung pada tipe, contohnya:

```
1.Numerik. Euclidean Distance, Manhattan Distance, Cosine Distance,
dsb.
2.Boolean. Jaccard Dissimilarity, Rogers Tanimoto Dissimilarity, dsb.
3.String. Levenshtein Distance, Hamming Distance, dsb.
```

```
10.2 Hierarchical Clustering 137
```
Perhitungan yang paling populer digunakan adalah _cosine similarity_ ^1 (kebetulan
pada kebanyakan kasus kita bekerja dengan data numerik), didefinisikan
pada persamaan 10.2, yaitu _dot product_ antara dua vektor dibagi dengan
perkalian _norm_ kedua vektor.

```
cosSim(di,dj) =
di·dj
‖di‖‖dj‖
```
#### (10.2)

_Cluster_ s yang terbentuk, nantinya dapat digunakan sebagai pengelompokkan
untuk label klasifikasi. Seumpama _cluster_ 1 dapat dianggap sebagai data untuk
kelas ke-1, dst.


### 11.6 Binary Classification

Salah satu st _rate_ gi untuk _binary classification_ adalah dengan menyediakan
hanya satu _output unit_ di jaringan. Kelas pertama direpresentasikan dengan
−1, kelas kedua direpresentasikan dengan nilai 1 (setelah diaktivasi). Hal ini
dapat dicapai dengan fungsi non-linear seperti sign^8 atau tanh.^9 Apabila kita
tertarik dengan probabilitas masuk ke dalam suatu kelas, kita dapat meng-

(^7) Karena struktur lebih susah, setidaknya beranjak dari keputusan terlebih dahulu
(^8) https://en.wikipedia.org/wiki/Sign_ _function_
(^9) https://en.wikipedia.org/wiki/Hyperbolic_ _function_

154 11 Feed _forward_ Neural Network

gunakan fungsi seperti sigmoid,^10 dimana _output_ pada masing-masing neuron
berada pada _range_ nilai [0,1].


### 11.3 Permasalahan XOR

Sedikit sejarah, _perceptron_ sebenarnya cukup populer sekitar tahun 1950-1960.
Entah karena suatu sebab, _perceptron_ menjadi tidak populer dan digantikan
oleh model linear. Saat itu, belum ada algoritma yang bekerja dengan relatif
bagus untuk melatih _perceptron_ yang digabungkan ( _multilayer perceptron_ ).
Model linear mendapat popularitas hingga kira-kira sekitar tahun 1990’an
atau awal 2000’an. Berkat penemuan _backpropagation_ sekitar awal 1980,^4 multi _layer_
_perceptron_ menjadi semakin populer. Perlu dicatat, komunitas riset
bisa jadi seperti cerita ini. Suatu teknik yang baru belum tentu bisa segera
diimplementasikan karena beberapa kendala (misal kendala kemampuan kom-
putasi).
Pada bab-bab sebelumnya, kamu telah mempelajari model linear dan
_model_  probabilistik. Kita ulangi kembali contoh data yang bersifat nonlinearly
separable, yaitu XOR yang operasinya didefinisikan sebagai:

- XOR(0,0) = 0
- XOR(1,0) = 1
- XOR(0,1) = 1
- XOR(1,1) = 0

Ilustrasinya dapat dilihat pada Gambar 11.3. Jelas sekali, XOR ini adalah
fungsi yang tidak dapat diselesaikan secara langsung oleh model linear.

```
Gambar 11.3: Permasalahan XOR.
```
Seperti yang diceritakan pada bab model linear, solusi permasalahan ini
adalah dengan melakukan transformasi data menjadi _linearly-separable_, misalnya
menggunakan fungsi non-linear pada persamaan 11.5 dimana (x,y) adalah
absis dan ordinat. Hasil transformasi menggunakan fungsi ini dapat dilihat
pada Gambar 11.4. Jelas sekali, data menjadi _linearly separable_.

```
φ(x,y) = (x×y,x+y) (11.5)
```
(^4) [http://people.idsia.ch/](http://people.idsia.ch/)
~juergen/who-invented- _backpropagation_.html

148 11 Feed _forward_ Neural Network

Gambar 11.4: XOR ditransformasi. Segiempat berwarna hijau sebenarnya
melambangkan dua _instance_ (yang setelah ditransformasi kebetulan berlokasi
pada tempat yang sama).

Sudah dijelaskan pada bab model linear, permasalahan dunia nyata tidak
sesederhana ini (kebetulan ditransformasikan menjadi data dengan dimensi
yang sama). Pada permasalahan praktis, kita harus mentransformasi data
menjadi dimensi lebih tinggi (dari 2D menjadi 3D). Berbeda dengan ide utama
_linear model_ / _kernel method_ tersebut,prinsip ANN adalah untuk melewatkan
_data_  pada fungsi non-linear( _non-linearities_ ). Sekali lagi penulis
ingin tekankan, ANN secara filosofis adalahtrainable non-linear mapping
_function_ s. ANN mampu mentransformasi data ke _space_ /ruang konsep yang
berbeda (bisa pada dimensi lebih tinggi atau lebih rendah), lalu mencarinonlinear
_decision boundary_  dengan _non-linear functions_. Interaksi antar-fitur
juga dapat di _model_ kan secara non-linear.
Perlu dicatat, pe _model_ an non-linear inilah yang membuat ANN menjadi
hebat. ANN mungkin secara luas didefinisikan mencakup _single perceptron_
tetapi secara praktis,ANN sebenarnya mengacu pada _multilayer perceptron_ dan
arsitektur lebih kompleks(dijelaskan pada subbab berikutnya).
Pada masa ini, (hampir) tidak ada lagi yang menggunakan _single perceptron_.
Untuk bab-bab kedepan, ketika kami menyebut ANN maka yang diacu
adalah _multilayer perceptron_ dan arsitektur lebih kompleks ( _single perceptron_
di- _exclude_ ). Hal ini disebabkan oleh _single perceptron_ tidak dapat mempelajari
XOR _function_ secara independen tanpa _feature engineering_, sementara
_multilayer perceptron_ bisa [53].


### 11.9 Deep Neural Network

_Deep Neural Network_ (DNN) adalah _artificial neural network_ yang memiliki
banyak _layer_. Pada umumnya, _deep neural network_ memiliki lebih dari 3 _layers_
( _input layer_,N ≥ 2 hidden layers, _output layer_ ), dengan kata lain adalah
MLP dengan lebih banyak _layer_. Karena ada relatif banyak layer, disebutlah
_deep_. Proses pembelajaran pada DNN disebut sebagai _deep learning_ (tidak
ada bedanya dengan proses latihan pada jaringan yang lebih dangkal, ini
hanyalah istilah keren saja) [9]. Jaringan _neural network_ pada DNN disebut
_deep neural network_.^11
Perhatikan Gambar 11.11 yang memiliki 4 _layers_. Cara menghitungfinal
_output_  sama seperti MLP, diberikan pada persamaan 11.11 dimanaβ,γ,λ
adalah _noise_ atau _bias_,σadalah fungsi aktivasi.

```
fi=σ
```
#### 

#### 

#### ∑H^2

```
j=1
```
```
uj,iσ
```
#### (H 1

#### ∑

```
k=1
```
```
vk,jσ
```
#### (M

#### ∑

```
m=1
```
```
xmwm,k+βk
```
#### )

```
+γj
```
#### )

```
+λi
```
#### 

####  (11.11)

Cara melatih _deep neural network_, salah satunya dapat menggunakan _backpropagation_.
Seperti pada bagian sebelumnya, kita hanya perlu menurunkan
rumusnya saja.Penurunan diserahkan pada pembaca sebagai latihan.
Hasil proses penurunan dapat dilihat pada Gambar 11.12.
_Deep network_ terdiri dari banyak _layer_ dan _synapse weight_, karenanya estimasi
parameter susah dilakukan. Arti filosofisnya adalah susah/lama untuk
menentukan relasi antara _input_ dan _output_. Walaupun _deep learning_ sepertinya
kompleks, tetapi entah kenapa dapat bekerja dengan baik untuk permasalahan
praktis [9]. _Deep learning_ dapat menemukan relasi “tersembunyi”

(^11) Terkadang disingkat menjadi _deep network_ saja.

156 11 Feed _forward_ Neural Network

```
Gambar 11.11: _Deep Neural Network_.
```
```
Gambar 11.12: Proses latihan DNN menggunakan _backpropagation_.
```

```
11.9 Deep Neural Network 157
```
antara _input_ dan _output_, yang tidak dapat diselesaikan menggunakanmulti _layer_
_perceptron_ (3 layers). Perhatikan, kamu harus ingat bahwa satu langkah
_feedforward_  memiliki analogi dengan transformasi. Jadi, input ditransformasikan
secara non-linear sampai akhirnya pada _output_, berbentuk distribusi
_class-assignment_.
Banyak orang percaya _deep neural network_ lebih baik dibanding _neural_
_network_ yang lebar tapi sedikit _layer_, karena terjadi lebih banyak transformasi.
Maksud lebih banyak transformasi adalah kemampuan untuk merubah
_input_ menjadi suatu representasi (tiap _hidden layer_ dapat dianggap sebagai
salah satu bentuk representasi _input_ ) dengan langkah _hierarchical_. Seperti
contoh permasalahan XOR, permasalahan _non-linearly separable_ pun dapat
diselesaikan apabila kita dapat mentransformasi data (representasi data) ke
dalam bentuk _linearly separable_ pada ruang yang berbeda. Keuntungan utama
_deep learning_ adalah mampu merubah data dari _non-linearly separable_ menjadilinearly
separablemelalui serangkaian transformasi ( _hidden layers_ ). Selain
itu, _deep learning_ juga mampu mencari _decision boundary_ yang berbentuk
non-linear, serta mengsimulasikan interaksi non-linear antar fitur.
Karena memiliki banyak parameter, proses latihan ANN pada umumnya
lambat. Ada beberapa st _rate_ gi untuk mempercepat pembelajaran menggunakan
_deep learning_, misalnya: regularisasi, _successive learning_, dan penggunaan _autoencoder_
[9]. Sebagai contoh, arti _successive learning_ adalah
jaringan yang dibangun secara bertahap. Misal kita latih ANN dengan 3 _layers_,
kemudian kita lanjutkan 3 _layers_ tersebut menjadi 4 _layers_, lalu kita latih
lagi menjadi 5 _layers_, dst. Hal ini sesuai dengan [60], yaitu mulai dari hal kecil.
Ilustrasinya dapat dilihat pada Gambar 11.13. Menggunakan _deep learning_
harus hati-hati karena pembelajaran cenderung _divergen_ (artinya,minimum
_squared error_ belum tentu semakin rendah seiring berjalannya waktu– _swing_
relatif sering).

```
Gambar 11.13: Contoh _successive learning_.
```

158 11 Feed _forward_ Neural Network


### 11.2 Single Perceptron

Bentuk terkecil (minimal) sebuah ANN adalah _single perceptron_ yang hanya
terdiri dari sebuah neuron. Sebuah neuron diilustrasikan pada Gambar 11.2.

(^1) Quora: why is Geoffrey Hinton suspicious of backpropagation and
wants AI to start over

```
11.2 Single Perceptron 145
```
Secara matematis, terdapat _feature vector_ xyang menjadi _input_ bagi neuron
tersebut. Ingat kembali, _feature vector_ merepresentasikan suatu _data point_,
_event_ atau _instance_. Neuron akan memproses _input x_ melalui perhitungan
jumlah perkalian antara nilai _input_ dan _synapse weight_, yang dilewatkan
padafungsi non-linear[51, 52, 4]. Pada _training_, yang dioptimasi adalah
nilai _synapse weight_ ( _learning parameter_ ). Selain itu, terdapat juga biasbsebagai
kontrol tambahan (ingat materi _steepest gradient descent_ ). _Output_ dari
neuron adalah hasil fungsi aktivasi dari perhitungan jumlah perkalian antara
nilai _input_ dan _synapse weight_. Ada beberapa macam fungsi aktivasi, misal
_step function_, _sign function_, _rectifier_ dan _sigmoid function_. Untuk selanjutnya,
pada bab ini, fungsi aktivasi yang dimaksud adalah jenissigmoid
_function_. Silahkan eksplorasi sendiri untuk fungsi aktivasi lainnya. Salah satu
bentuk tipe _sigmoid function_ diberikan pada persamaan 11.1. Bila di- _plot_
menjadi grafik, fungsi ini memberikan bentuk seperti huruf “S”.

```
Gambar 11.2:Single Perceptron.
```
```
σ(u) =
```
#### 1

```
1 +e−u
```
#### (11.1)

Perhatikan kembali, Gambar 11.2 sesungguhnya adalah operasi aljabar
linear. Single perceptron dapat dituliskan kembali sebagai 11.2.

```
o=f(x·w+b) (11.2)
```
dimanaoadalah _output_ danfadalah fungsinon-linear yang dapat diturunkan
secara matematis( _differentiable non-linear function_ –selanjutnya
disebut “fungsi non-linear” saja.). Bentuk ini tidak lain dan tidak bukan
adalah persamaan model linear yang ditransformasi dengan fungsi non-linear.

146 11 Feed _forward_ Neural Network

Secara filosofis, ANN bekerja mirip dengan model linear, yaitu mencaridecision
boudary. Apabila beberapa model non-linear ini digabungkan, maka
kemampuannya akan menjadi lebih hebat (subbab berikutnya). Yang menjadikan
ANN “spesial” adalah penggunaan fungsi non-linear.
Untuk melakukan pembelajaran _single perceptron_, _training_ dilakukan menggunakan _perceptron_
_training_  rule. Prosesnya sebagai berikut [4, 51, 52]:

1. Inisiasi nilai _synapse weights_, bisa _random_ ataupun dengan aturan ter-
    tentu. Untuk heuristik aturan inisiasi, ada baiknya membaca buku refer-
    ensi [1, 11].
2. Lewatkan input pada neuron, kemudian kita akan mendapatkan nilaiout-
    put. Kegiatan ini disebut _feedforward_.
3. Nilai _output_ ( _actual output_ ) tersebut dibandingkan dengan _desired output_.
4. Apabila nilai _output_ sesuai dengan _desired output_, tidak perlu mengubah
    apa-apa.
5. Apabila nilai _output_ tidak sesuai dengan _desired output_, hitung nilai _error_
    ( _loss_ ) kemudian lakukan perubahan terhadap _learning parameter_ (synapse
    weight).
6. Ulangi langkah-langkah ini sampai tidak ada perubahan nilai _error_, nilai
    errorkurang dari sama dengan suatu _threshold_ ( _bias_ anya mendekati 0),
    atau sudah mengulangi proses latihan sebanyakTkali ( _threshold_ ).
Salah satu cara melatih _neural network_ adalah dengan mengoptimalkan
_error function_, diberikan pada persamaan 11.3^2 (dapat diganti denganabsolute
value). Perubahan nilai _synapse weight_ saat proses latihan (apabila
E 6 = 0 diberikan pada persamaan 11.4, dimanaymelambangkan _desired output_,^3
o=f(x·w+b) melambangkan _actual output_ untukxsebagai input,η
adalah _learning rate_.

```
E(w) = (y−o)^2 (11.3)
```
∆wi=η(y−o)xi (11.4)
Hasil akhir pembelajaran adalah konfigurasi _synapse weight_ yang mengoptimalkan
nilai _error_. Saat klasifikasi, kita melewatkan _input_ baru pada
jaringan yang telah dibangun, kemudian tinggal mengambil hasilnya. Pada
contoh kali ini, seolah-olah _single perceptron_ hanya dapat digunakan untuk
melakukan _binary classification_ (hanya ada dua kelas, nilai 0 dan 1). Untuk _multi-class_
_classification_, kita dapat menerapkan berbagai st _rate_ gi, misal
_thresholding_, i.e., nilai _output_ 0 − 0 .2 mengacu pada kelas pertama, 0. 2 − 0. 4
untuk kelas kedua, dst.

(^2) Pada umumnya, kita tidak menggunakan satu data, tetapi _batch_ -sized.
(^3) Pada contoh ini, kebetulan banyaknya _output_ neuron hanyalah satu.

```
11.3 Permasalahan XOR 147
```


### 11.1 Definisi Artificial Neural Network

Masih ingatkah Anda materi pada bab-bab sebelumnya? Machine learningsebenarnya
meniru bagaimana proses manusia belajar. Pada bagian ini,
peneliti ingin meniru proses belajar tersebut dengan mensimulasikan jaringan
saraf biologis ( _neural network_ ) [44, 45, 46, 47]. Kami yakin banyak yang sudah
tidak asing dengan istilah ini, berhubung _deep learning_ sedang populer dan
banyak yang membicarakannya (dan digunakan sebagai trik pemasaran).Artificial
_neural network_ adalah salah satu algoritma _supervised learning_ yang

144 11 Feed _forward_ Neural Network

populer dan bisa juga digunakan untuk _semi-supervised_ atau _unsupervised_
_learning_ [45, 47, 48, 49, 50]. Walaupun tujuan awalnya adalah untuk mensimulasikan
jaringan saraf biologis, jaringan tiruan ini sebenenarnya simulasi
yang terlalu disederhanakan, artinya simulasi yang dilakukan tidak mampu
menggambarkan kompleksitas jaringan biologis manusia (menurut penulis).^1
_Artificial Neural Network_  (selanjutnya disingkat ANN), menghasilkan
_model_  yang sulit dibaca dan dimengerti oleh manusia karena memiliki banyak
_layer_  (kecuali _single perceptron_ ) dan sifatnon-linear(merujuk pada fungsi
aktivasi). Pada bidang riset ini, ANN disebut agnostik–kita percaya, tetapi
sulit membuktikan kenapa konfigurasi parameter yang dihasilkan _training_ bisa
benar. Konsep matematis ANN itu sendiri cukup _solid_, tetapi _interpretability_ model
rendah menyebabkan kita tidak dapat menganalisa proses inferensi
yang terjadi pada model ANN. Secara matematis, ANN ibarat sebuah graf.
ANN memiliki neuron/ _node_ ( _vertex_ ), dan sinapsis ( _edge_ ). Topologi ANN akan
dibahas lebih detil subbab berikutnya. Karena memiliki struktur seperti graf,
operasi pada ANN mudah dijelaskan dalam notasi aljabar linear. Sebagai gambaran,
ANN berbentuk seperti Gambar 11.1 ( _deep neural network_, salah satu
varian arsitektur). _Depth_ (kedalaman) ANN mengacu pada banyaknya _layer_.
Sementara _width_ (lebar) ANN mengacu pada banyaknya unit pada _layer_.

```
Gambar 11.1: _Deep Neural Network_.
```


### 11.11 Regularization and Dropout

Seperti yang sudah dijelaskan pada model linear. Kita ingin model mengeneralisasi
dengan baik (kinerja baik pada _training data_ dan _unseen examples_ ).
Kita dapat menambahkan fungsi regularisasi untuk mengontrol kompleksitas
ANN. Regularisasi pada ANN cukup _straightforward_ seperti regularisasi pada
_model linear_  (subbab 5.9). Kami yakin pembaca bisa mengeksplorasi sendiri.
Selain itu, agar ANN tidak “bergantung” pada satu atau beberapasynapse
_weight_ ssaja, kita dapat menggunakan _dropout_. _Dropout_ berarti me-nol-kan

160 11 Feed _forward_ Neural Network

nilai _synapse weights_ dengan nilai _rate_ tertentu. Misalkan kitanol-kan nilai
30% _synapse weights_ ( _dropout rate_ = 0.3) secara random. Hal ini dapat dicapai
dengan teknik _masking_, yaitu mengalikan _synapse weights_ dengan suatu _mask_.
Ingat kembali ANN secara umum, persamaan 11.13 dimanaWadalah
_synapse weights_,xadalah _input_ (dalam pembahasan saat ini, dapat merepresentasikan _hidden_
_state_ pada suatu layer),badalah _bias_ danfadalah fungsi
aktivasi (non-linear). Kita buat suatu _mask_ untuk _synapse weights_ seperti
pada persamaan 11.14, dimanapadalah vektor danpi= [0,1] merepresentasikansynapse
_weight_ diikutsertakan atau tidak.r% ( _dropout rate_ ) elemen
_vektor_ pbernilai 0. Biasanyapdiambil dari _bernoulli distribution_ [1]. Kemudian,
saat _feed forward_, kita ganti _synapse weights_ menggunakan _mask_ seperti
pada persamaan 11.15. Saat menghitung _backpropagation_, turunan fungsi juga
mengikutsertakan _mask_ ( _gradient_ di- _mask_ ). Kami sa _rank_ an untuk membaca
_paper_ oleh Srivastava et al. [62] tentang _dropout_ pada ANN. Contoh implementasi _dropout_ dapat
dilihat pada pranala berikut.^14 Teknik _regularization_
dan _dropout_ sudah menjadi metode yang cukup “standar” dan diaplikasikan
pada berbagai macam arsitektur.

```
o=f(x·W+b) (11.13)
```
```
W′=p·W (11.14)
```
```
o=f(x·W′+b) (11.15)
```


### Soal Latihan

11.1. Turunan

(a) Turunkanlah perubahan _noise/bias_ untuk _training_ pada MLP.
(b) Turunkanlah proses _training deep neural network_ pada Gambar 11.12 termasuk
perubahan _noise/bias_.

11.2. Neural Network Training

(a) Sebutkan dan jelaskan cara lain untuk melatih _artificial neural network_
(selain _backpropagation_ ) (bila ada)!
(b) Apa kelebihan dan kekurangan _backpropagation_ ?
(c) Tuliskan persamaan MLP dengan menggunakan momentum! (kemudian
berikan juga penurunan _backpropagation_ -nya)

11.3. Regularization Technique

(a) Sebutkan dan jelaskan teknik _regularization_ untuk _neural network_ ! (dalam
bentuk formula)
(b) Mengapa kita perlu menggunakan teknik tersebut?

11.4. Softmax Function

(a) Apa itu _softmax function_ ?
(b) Bagaimana cara menggunakan _softmax function_ pada _neural network_ ?
(c) Pada saat kapan kita menggunakan fungsi tersebut?
(d) Apa kelebihan fungsi tersebut dibanding fungsi lainnya?

11.5. Transformasi atribut
Secara alamiah _neural network_ membutuhkan data dengan atribut numerik
untuk klasifikasi. Jelaskan konversi/st _rate_ gi penanganan atribut nominal pada
_neural network_ !


### 11.13 Rangkuman

Ada beberapa hal yang perlu kamu ingat, pertama-tama jaringan _neural network_ terdiri
atas:

```
1. _Input layer_
2.Hidden layer(s)
3. _Output layer_
```
Setiap _edge_ yang menghubungkan suatu _node_ dengan _node_ lainnya disebut
_synapse weight_. Pada saat melatih _neural network_ kita mengestimasi nilai
yang “bagus” untuk _synapse weights_.
Kedua, hal tersulit saat menggunakan _neural network_ adalah menentukan
topologi. Kamu bisa menggunakan berbagai macam variasi topologi _neural_
_network_ serta cara melatih untuk masing-masing topologi. Tetapi, suatu
topologi tertentu lebih tepat untuk merepresentasikan permasalahan dibanding
topologi lainnya. Menentukan tipe topologi yang tepat membutuhkan pen-
galaman.
Ketiga, proses _training_ untuk _neural network_ berlangsung lama. Secara
umum, perubahan nilai _synapse weights_ mengikuti tahapan ( _stage_ ) berikut [9]:

```
1. _Earlier state_. Pada tahap ini, struktur global (kasar) diestimasi.
2. _Medium state_. Pada tahap ini, _learning_ berubah dari tahapan global menjadi
lokal (ingat _steepest gradient descent_ ).
3. _Last state_. Pada tahap ini, struktur detail sudah selesai diestimasi. Harapannya,
_model_  menjadi konvergen.
```
_Neural network_ adalah salah satu _learning machine_ yang dapat menemukan
_hidden structure_ atau pola data “implisit”. Secara umum, _learning machine_

162 11 Feed _forward_ Neural Network

tipe ini sering menjadi _overfitting/overtraining_, yaitu model memiliki kinerja
sangat baik pada _training data_, tapi buruk pada _testing data_ / _unseen example_.
Oleh sebab itu, menggunakan _neural network_ harus hati-hati.
Keempat, _neural network_ dapat digunakan untuk _supervised_, _semi-supervised_,
maupun _unsupervised learning_. Hal ini membuat _neural network_ cukup populer
belakangan ini karena fleksibilitas ini. Contoh penggunaan _neural network_ untuk _unsupervised_ learning
akan dibahas pada bab 12. Semakin canggih
komputer, maka semakin cepat melakukan perhitungan, dan semakin cepat
melatih _neural network_. Hal ini adalah kemewahan yang tidak bisa dirasakan
20-30 tahun lalu.


### 11.12 Vanishing and Exploding Gradients

Pada beberapa kasus, nilai gradien (∆W- perubahan parameter) sangat kecil
(mendekati nol - _vanishing_ ) atau sangat besar ( _explode_ ).Vanishing gradient
problemumum terjadi untuk ANN yang sangat dalam ( _deep_ ), yaitu
memiliki banyak _layer_. Hal ini juga terjadi pada arsitektur khusus, seperti
_recurrent neural network_  saat diberikan input yang panjang [63]. Turunan
suatu fungsi bernilai lebih kecil dari fungsi tersebut. Artinya nilai gradient
pada _input layer_ bernilai lebih kecil dari _output layer_. Apabila kita memiliki
banyak _layer_, nilai gradient saat _backpropagation_ mendekati nol ketika diturunkan
kembali dalam banyak proses. Ilustrasi _vanishing gradient_ diberikan
pada Gambar 11.14 (analogikan dengan _heat map_ ). Saat melakukan _backpropagation_,
nilai gradien menjadi mendekati nol (warna semakin putih, delta nilai
semakin menghilang). Penanganan permasalahan ini masih merupakan topik
riset tersendiri. Sebagai contoh, pada arsitektur _recurrent neural network_, biasanya
digunakan fungsi aktivasi _long short term memory_ (LSTM) ataugated
_recurrent_  unit(GRU) untuk menangani _vanishing gradient problem_. Selain

(^14) https://gist.github.com/yusugomori/cf7bce19b8e16d57488a

```
11.13 Rangkuman 161
```
nilai gradien, nilai _synapse weights_ juga bisa sangat kecil atau sangat besar.
Hal ini juga tidak baik!

```
Gambar 11.14: Ilustrasi _vanishing gradient problem_.
```


### 11.10 Tips

Pada contoh yang diberikan, _error_ atau _loss_ dihitung per tiap data point.
Artinya begitu ada melewatkan suatu _input_, parameter langsung dioptimisasi
sesuai dengan _loss_. Pada umumnya, hal ini tidak baik untuk dilakukan
karena ANN menjadi tidak stabil. Metode yang lebih baik digunakan adalah
teknik _minibatches_. Yaitu mengoptimisasi parameter untuk beberapa buah
_inputs_. Jadi, update parameter dilakukan per _batch_. Perhitungan _error_ juga
berubah, diberikan pada persamaan 11.12 dimanaBmelambangkan _batch_
size(banyaknya _instance_ per _batch_ ),yadalah _desired output_ danoadalah
_actual output_. Perhitungan _error_ saat menggunakan _minibatches_ secara sederhana
adalah rata-rata (bisa diganti dengan penjumlahan saja) individual _error_
untuk semua _instance_ yang ada pada _batch_ bersangkutan. Setelah menghitung
_error_ per _batch_, barulah _backpropagation_ dilakukan.

```
E(mini _batch_ ) =
```
#### 1

#### B

#### ∑B

```
i=1
```
```
‖y−o‖^2 (11.12)
```
Data mana saja yang dimasukkan ke suatu _batch_ dalam dipilih secara
acak. Seperti yang mungkin kamu sadari secara intuitif, urutan data yang
disajikan saat _training_ mempengaruhi kinerja ANN. Pengacakan ini menjadi
penting agar ANN mampu mengeneralisasi dengan baik. Kita dapat mengatur
laju pembelajaran dengan menggunakan _learning rate_. Selain menggunakan
_learning rate_, kita juga dapat menggunakan _momentum_ (subbab 5.6).
Pada library/API _deep learning_, _learning rate_ pada umumnya berubahubah
sesuai dengan waktu. Selain itu, tidak ada nilai khusus ( _rule-of-thumb_ )
untuk _learning rate_ terbaik. Pada umumnya, kita inisiasi _learning rate_ dengan
nilai{ 0. 001 , 0. 01 , 0. 1 }[1]. Biasanya, kita menginisiasi proses latihan dengan
nilai _learning rate_ cukup besar, kemudian mengecil seiring berjalannya
waktu.^12 Kemudian, kita mencari konfigurasi parameter terbaik dengan
metode _grid-search_,^13 yaitu dengan mencoba-coba parameter secara _exhaustive_ ( _brute-force_ )
kemudian memilih parameter yang memberikan kinerja ter-
baik.
ANN sensitif terhadap inisialisasi parameter, dengan demikian banyak
metode inisialisasi parameter misalkan, nilai _synapse weights_ diambil dari
distribusi binomial (silahkan eksplorasi lebih lanjut). Dengan hal ini, kinerja
ANN dengan arsitektur yang sama dapat berbeda ketika dilatih ulang dari
awal. Karena sensitif terhadap inisialisasi parameter, kamu bisa saja mendapatkan
performa yang berbeda saat melatih suatu arsitektur ANN dengan
_data_  yang sama (untuk permasalahan yang sama). Untuk menghindari _bias_
inisialisasi parameter, biasanya ANN dilatih beberapa kali (umumnya 5, 10,
atau 20 kali). Kinerja ANN yang dilaporkan adalah nilai kinerja rata-rata

(^12) Analogi: ngebut saat baru berangkat, kemudian memelan saat sudah dekat dengan
tujuan agar tidak terlewat.
(^13) https://en.wikipedia.org/wiki/Hyperparameter_optimization

```
11.11 Regularization and Dropout 159
```
dan varians ( _variance_ ). Hal ini untuk menghindari _overclaiming_. Pada konteks
pembahasan saat ini, artinya seseorang bisa saja mendapatkan model
dengan performa sangat baik, padahal performa arsitektur yang sama bisa
saja berkurang saat dicoba oleh orang lain (isu _replicability_ ).
Kamu mungkin sudah menyadari bahwa melatih ANN harus telaten,
terutama dibanding model linear. Untuk model linear, ia akan memberikan
konfigurasi parameter yang sama untuk _training data_ yang sama (kinerja pun
sama). Tetapi, ANN dapat konfigurasi parameter yang berbeda untuk _training_
_data_ yang sama (kinerja pun berbeda). Pada model linear, kemungkinan
besar variasi terjadi saat mengganti data. Pada ANN, variasi kinerja ada
pada seluruh proses! Untuk membandingkan dua arsitektur ANN pada suatu
_dataset_, kita dapat menggunakan _statistical hypothesis testing_ (arsitektur
Xlebih baik dari arsitekturYsecara signifikan dengan nilaip < threshold).
Penulis merekomendasikan untuk membaca [14, 15] perihal _hypothesis testing_.
Apabila kamu pikir dengan seksama, ANN sebenarnya melakukan transformasi
non-linear terhadap _input_ hingga menjadi _output_. Parameter diperbarahui
agar transformasi non-linear _input_ bisa menjadi semirip mungkin dengan _output_ yang
diharapkan. Dengan hal ini, istilah “ANN” memiliki asosiasi
yang dekat dengan “transformasi non-linear”. Kami ingin kamu mengingat,
ANN (apapun variasi arsitekturnya) adalahgabungan fungsi nonlinear,
dengan demikian ia mampu mengaproksimasi fungsi non-linear (decision
boundarydapat berupa fungsi non-linear).
_Deep learning_ menjadi penting karena banyaknya transformasi (banyaknya
_hidden layers_ ) lebih penting dibanding lebar jaringan. Seringkali (pada permasalahan
praktis), kita membutuhkan banyak transformasi agar _input_ bisa
menjadi _output_. Setiap transformasi ( _hidden layer_ ) merepresentasikan _input_
menjadi suatu representasi. Dengan kata lain, _hidden layers_ atu dan _hidden_
_layer_ lainnya mempelajari bentuk representasi atau karakteristik _input_ yang
berbeda.
_Curriculum learning_  juga adalah tips yang layak disebutkan ( _mention_ )
[61]. Penulis kurang mengerti detilnya, sehingga pembaca diharapkan
membaca sendiri. Intinya adalah memutuskan apa yang harus ANN pelajari
terlebih dahulu (mulai dari mempelajari hal mudah sebelum mempelajari hal
yang susah).


### 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).


### 11.8 Multi-label Classification

Seperti halnya _multi-class classification_, kita dapat menggunakan sebanyak
C neuron untuk merepresentasikanC kelas pada _multi-label classification_.
Seperti yang sudah dijelaskan pada bab 5, perbedaan _multi-class_ danmultilabelterletak
pada cara interpretasi _output_ dan evaluasi _output_. Pada umumnya, _layer_ terakhir
diaktivasi dengan fungsi sigmoid, dimana tiap neuronni
merepresentasikan probabilitas suatu dapat diklasifikasikan sebagai kelasci

(^10) https://en.wikipedia.org/wiki/Sigmoid_ _function_

```
11.9 Deep Neural Network 155
```


### 11.7 Multi- _class_ Classification

_Multilayer perceptron_ dapat memiliki lebih dari satu _output unit_. Seumpama
kita mempunyai empat kelas, dengan demikian kita dapat merepresentasikan
keempat kelas tersebut sebagai empat _output units_. Kelas pertama direpresentasikan
dengan unit pertama, kelas kedua dengan unit kedua, dst. Untuk
Ckelas, kita dapat merepresentasikannya denganC output units. Kita dapat
merepresentasikan data harus dimasukkan ke kelas mana menggunakan
_sparse vector_, yaitu bernilai 0 atau 1. Elemen ke-ibernilai 1 apabila data masuk
ke kelasci, sementara nilai elemen lainnya adalah 0 (ilustrasi pada Gambar
11.9). _Output_ ANN dilewatkan pada suatu fungsi softmax yang melambangkan
probabilitas _class-assignment_ ; i.e., kita ingin _output_ agar semirip
mungkin dengan _sparse vector_ ( _desired output_ ). Pada kasus ini, _output_ ANN
adalah sebuah distribusi yang melambangkan _input_ di- _assign_ ke kelas tertentu.
Ingat kembali materi bab 5, _cross entropy_ cocok digunakan sebagai
_utility function_ ketika _output_ berbentuk distribusi.

```
1 0
0 1
```
```
0 0
0 0
0 0
0 0
```
```
1 0
0 1
```
```
Label=𝑐!
Label=𝑐"
Label=𝑐#
Label=𝑐$
```
```
𝑐( 𝑐) 𝑐* 𝑐+
```
Gambar 11.9: Ilustrasi representasi _desired output_ pada _multi-class classification_ menggunakan _sparse_
vector (sering disebut sebagai “one-hot vector” di
komunitas ANN).


### 0 1

### 0 1

### 0 1


### 11.5 Interpretability

_Interpretability_  ada dua macam yaitu model interpretability (i.e., apakah
struktur model pembelajaran mesin dapat dipahami) dan _prediction interpretability_ (i.e.,
bagaimana memahami dan memverifikasi cara _input_ dipetakan

152 11 Feed _forward_ Neural Network

```
𝛽!
```
```
𝒙𝟏 𝒙𝟐 𝒙𝑲
```
```
𝛾"
```
```
_Output_ 	=	𝑜𝑗
```
```
_Output_ 	=	𝑣𝑖
```
```
𝑢!,"
```
```
𝑤$,!
```
```
_Output_  Units (I units)
```
```
Hidden Units (J units)
```
```
_Input_  Units (K units)
```
Gambar 11.6: Justifikasi penggunaan

#### ∑

pada penurunan dari _hidden_ ke _input_
_layer_.

```
Gambar 11.7: Proses latihan MLP menggunakan _backpropagation_.
```
menjadi _output_ ) [55]. Contoh teknik pembelajaran mesin yang mudah diinterpretasikan
baik secara struktur dan prediksinya adalah decision tree
(bab 6). Struktur _decision tree_ berupa pohon keputusan mudah dimengerti
oleh manusia dan prediksi (keputusan) dapat dilacak ( _trace_ ). Seperti yang
sudah dijelaskan pada bagian pengantar, ANN (MLP) biasanya dianggap sebagai
metode _black box_ atau susah untuk dinterpretasikan (terutama _model_

```
11.6 Binary Classification 153
```
_interpretability_ -nya). Hal ini disebabkan oleh kedalaman ( _depth_ ) yaitu memiliki
beberapa _layer_ dan _non-linearities_. Suatu unit pada _output layer_ dipengaruhi
oleh kombinasi ( _arbitrary combination_ ) banyak parameter pada _layers_
sebelumnya yang dilewatkan pada fungsi non-linear. Sulit untuk mengetahui
bagaimana pengaruh bobot suatu unit pada suatu _layer_ berpengaruh pada
_output layer_, beserta bagaimana pengaruh kombinasi bobot. Intinya, fitur dan
_output_ tidak memiliki korespondensi satu-satu. Berbeda dengan model linear,
kita tahu parameter (dan bobotnya) untuk setiap _input_. Salah satu arah riset
adalah mencari cara agar keputusan yang dihasilkan oleh ANN dapat dijelaskan
[56],^7 salah satu contoh nyata adalah _attention mechanism_ [57, 58]
(subbab 13.4.4) untuk _prediction interpretability_. Survey tentang _interpretability_ dapat
dibaca pada _paper_ oleh Doshi-Velez dan Kim [59].
Cara paling umum untuk menjelaskan keputusan pada ANN adalah menggunakanheat
map. Sederhananya, kita lewatkan suatu dataxpada ANN,
kemudian kita lakukan _feed-forward_ sekali (misal dari _input_ ke _hidden layer_
dengan parameterW). Kemudian, kita visualisasikanx·W(ilustrasi pada
Gambar 11.8). Dengan ini, kita kurang lebih dapat mengetahui bagian _input_
mana yang berpengaruh terhadap keputusan di _layer_ berikutnya.

```
BeritaA BeritaB BeritaC BeritaD
Budi
menendang
bola
```
Gambar 11.8: Contoh _heat map_ pada persoalan klasifikasi teks. _Input_ berupa
kata-kata yang dimuat pada suatu berita. Output adalah kategori berita untuk
_input_. Warna lebih gelap menandakan bobot lebih tinggi. Sebagai contoh, kata
“menendang” berkorespondensi paling erat dengan kelas berita B.


### 1 0

### 1 0

### 1 0


### 0 0


### 1 1

```
Label=𝑐!,𝑐"
Label=𝑐#
Label=𝑐!,𝑐$
Label=𝑐#,𝑐",𝑐$
```
```
𝑐) 𝑐* 𝑐+ 𝑐,
```
Gambar 11.10: Ilustrasi representasi _desired output_ pada _multi-label_ classifi-
cation.

atau tidak (Gambar 11.10). Pada umumnya, _binary cross entropy_ digunakan
sebagai _loss_ ( _utility function_ ) pada _multi-label classification_, yaitu perhitungancross
_entropy_ untuk tiap-tiap _output_ unit (bukan sekaligus semua _output_
_units_ eperti pada _multi-class classification_ ).


## Daftar Isi

- Bagian I Pengetahuan Dasar
- 1 Pengenalan
   - 1.1 Kecerdasan Buatan
   - 1.2 Intelligent Agent
   - 1.3 Konsep Belajar
   - 1.4 Statistical Learning Theory
   - 1.5 Training, Validation, Testing Set
   - 1.6 Supervised Learning
   - 1.7 Regresi
   - 1.8 Semi- _supervised_ Learning
   - 1.9 Un _supervised_ Learning
   - 1.10 Proses Belajar
   - 1.11 Tips
   - 1.12 Contoh Aplikasi
   - Soal Latihan
- 2 Fondasi Matematis
   - 2.1 Probabilitas
   - 2.2 Probability Density Function
   - 2.3 Expectation dan Variance
   - 2.4 Bayesian Probability
   - 2.5 Gaussian Distribution
   - 2.6 Apakah Karakteristik Sampel Mencerminkan Populasi?
   - 2.7 Teori Keputusan
   - 2.8 Hypothesis Testing
   - 2.9 Teori Informasi
   - 2.10 Matriks
   - 2.11 Bacaan Lanjutan
   - Soal Latihan
- 3 Data Analytics
   - 3.1 Pengenalan Data Analytics
   - 3.2 Nilai Atribut dan Transformasi
   - 3.3 Ruang Konsep
   - 3.4 Linear Separability DAFTAR ISI XI
   - 3.5 Seleksi Fitur
   - 3.6 Classification, Association, Clustering
   - 3.7 Mengukur Kinerja
   - 3.8 Evaluasi Model
   - 3.9 Kategori Jenis Algoritma
   - 3.10 Tahapan Analisis
   - Soal Latihan
- Bagian II Algoritma Pembelajaran Mesin
- 4 Algoritma Dasar
   - 4.1 Naive Bayes
   - 4.2 K- _mean_ s
   - 4.3 K-nearest-neighbor
   - Soal Latihan
- 5 Model Linear
   - 5.1 Curve Fitting dan Error Function
   - 5.2 Binary Classification
   - 5.3 Log-linear Binary Classification
   - 5.4 Multi- _class_ Classification
   - 5.5 Multi-label Classification
   - 5.6 Pembelajaran sebagai Permasalahan Optimisasi
   - 5.7 Batasan Model Linear
   - 5.8 Overfitting dan Underfitting
   - 5.9 Regularization
   - 5.10 Transformasi Data
   - 5.11 Bacaan Lanjutan
   - Soal Latihan
- 6 Pohon Keputusan
   - 6.1 Inductive Learning
   - 6.2 ID3
   - 6.3 Isu pada ID3
   - 6.4 Pembagian Ruang Konsep
   - Soal Latihan
- 7 Support Vector Classifier
   - 7.1 Maximal Margin Classifier
   - 7.2 Support Vector Classifier
   - 7.3 Support Vector Machine
   - 7.4 Klasifikasi lebih dari dua kelas
   - 7.5 Tips
   - Soal Latihan XII DAFTAR ISI
- 8 Hidden Markov Model
   - 8.1 Probabilistic Reasoning
   - 8.2 Generative Model
   - 8.3 Part-of-speech Tagging
   - 8.4 Hidden Markov Model Tagger
   - 8.5 Algoritma Viterbi
   - 8.6 Proses Training Hidden Markov Model
   - Soal Latihan
- 9 Seleksi Fitur dan Metode Evaluasi
   - 9.1 Feature Engineering
   - 9.2 High Dimensional Data
   - 9.3 Feature Selection
   - 9.4 Evaluasi Kinerja Model
   - 9.5 Cross Validation
   - 9.6 Replicability, Overclaiming dan Domain Dependence
   - Soal Latihan
- 10 Clustering
   - 10.1 K- _mean_ s, Pemilihan Centroid, Kemiripan Data
   - 10.2 Hierarchical Clustering
   - 10.3 Evaluasi
   - Soal Latihan
- Bagian III Artificial Neural Network
- 11 Feed _forward_ Neural Network
   - 11.1 Definisi Artificial Neural Network
   - 11.2 Single Perceptron
   - 11.3 Permasalahan XOR
   - 11.4 Multi _layer_ Perceptron
   - 11.5 Interpretability
   - 11.6 Binary Classification
   - 11.7 Multi- _class_ Classification
   - 11.8 Multi-label Classification
   - 11.9 Deep Neural Network
   - 11.10 Tips
   - 11.11 Regularization and Dropout
   - 11.12 Vanishing and Exploding Gradients
   - 11.13 Rangkuman
   - Soal Latihan
- 12 Auto _encoder_
   - 12.1 Representation Learning DAFTAR ISI XIII
   - 12.2 Singular Value Decomposition
   - 12.3 Ide Dasar Auto _encoder_
   - 12.4 Resisting Perturbation
   - 12.5 Representing Context: Word Embedding
   - 12.6 Tips
   - Soal Latihan
- 13 Arsitektur Neural Network
   - 13.1 Convolutional Neural Network
   - 13.2 Recurrent Neural Network
   - 13.3 Part-of-speech Tagging Revisited
   - 13.4 Sequence to Sequence
   - 13.5 Arsitektur Lainnya
   - 13.6 Architecture Ablation
   - 13.7 Transfer Learning
   - 13.8 Multi- _task_ Learning
   - Soal Latihan
- Bagian IV Aplikasi dan Topik Tambahan
- 14 Penerapan Pembelajaran Mesin
   - 14.1 Sistem Rekomendasi
   - 14.2 Peringkasan Dokumen
   - 14.3 Konklusi
   - 14.4 Saran Buku Lanjutan
   - Soal Latihan
- Referensi


## 𝐄 𝐗#

Gambar 12.2: Hubungan auto _encoder_ dan singular value decomposition
(analogi).

Perhatikan, _hidden layer_ / _coding_ dapat dianalogikan sebagaiE=Uˆ Vˆ.
Dengan kata lain, kita dapat melakukan operasi _dot-product_ pada _coding_ untuk
merepresentasikan _dot-product_ pada data asliX. Ini adalah ide utama

(^5) Pada banyak literatur, kumpulan _weight matrices_ ANN sering dilambangkan den-
ganθ
(^6) Hanya sebuah analogi.

168 12 Auto _encoder_

_autoencoder_, yaitu meng-aproksimasi/meng _kompresi data_ asli menjadi bentuk
lebih kecil _coding_. Kemudian, operasi pada bentuk _coding_ merepresentasikan
operasi pada data sebenarnya.
_Autoencoder_  terdiri dari _encoder_ (sebuah _neural network_ ) dan _decoder_
(sebuah _neural network_ ). _Encoder_ merubah _input_ ke dalam bentuk dimensi
lebih kecil (dapat dianggap sebagai kompresi). _Decoder_ berusaha merekonstruksi _coding_ menjadi
bentuk aslinya. Secara matematis, kita dapat menulis
_autoencoder_ sebagai persamaan 12.6, dimana dec melambangkan _decoder_, enc
melambangkan _encoder_ danx adalah _input_. _Encoder_ diberikan pada persamaan
12.7 yang berarti melewatkan _input_ pada suatu _layer_ di _neural network_ untuk
menghasilkan representasixberdimensi rendah, disebut _coding_
c.Udanαmelambangkan _weight matrix_ dan _bias_.

```
f(d,θ) = dec(enc(x)) (12.6)
```
```
c= enc(x) =g(x,U,α) (12.7)
```
Representasicini kemudian dilewatkan lagi pada suatu _layer_ untuk merekonstruksi
kembali _input_, kita sebut sebagai _decoder_. _Decoder_ diberikan pada persamaan
12.8 dimanaWdanβmelambangkan _weight matrix_ dan _bias_. Baik
pada fungsi _encoder_ dan _decoder_,σmelambangkan fungsi aktivasi.

```
f(d,θ) = dec(c) =h(c,W,β) (12.8)
```
Pada contoh sederhana ini, _encoder_ dan _decoder_ diilustrasikan sebagai sebuah
_layer_. Kenyataannya, _encoder_ dan _decoder_ dapat diganti menggunakan sebuah
_neural network_ dengan arsitektur kompleks.
Sekarang kamu mungkin bertanya-tanya, bila auto _encoder_ melakukan
hal serupa seperti _singular value decomposition_, untuk apa kita menggunakan _autoencoder_ ?
(mengapa tidak menggunakan aljabar saja?) Berbeda
dengan teknik SVD, teknik _autoencoder_ dapat juga mempelajari fitur nonlinear.^7
Pada penggunaan praktis, _autoencoder_ adalah _neural network_ yang
cukup kompleks (memiliki banyak _hidden layer_ ). Dengan demikian, kita dapat
”mengetahui”berbagai macam representasiatau transformasi data.
_Framework autoencoder_  yang disampaikan sebelumnya adalah framework
dasar. Pada kenyataannya, masih banyak ide lainnya yang bekerja dengan
prinsip yang sama untuk mencari _coding_ pada permasalahan khusus. _Output_
dari _neural network_ juga bisa tidak sama _input_ -nya, tetapi tergantung permasalahan
(kami akan memberikan contoh persoalan _word embedding_ ). Selain
itu, _autoencoder_ juga relatif fleksibel; dalam artian saat menambahkan data
baru, kita hanya perlu memperbaharui parameter _autoencoder_ saja. Kami
sa _rank_ an untuk membaca _paper_ [72, 73] perihal penjelasan lebih lengkap tentang
perbedaan dan persamaan SVD dan _autoencoder_ secara lebih matematis.
Secara sederhana, _representation learning_ adalah teknik untuk mengkompresi _input_ ke
dalam dimensi lebih rendah tanpa (diharapkan) ada kehilangan

(^7) Hal ini abstrak untuk dijelaskan karena membutuhkan pengalaman.

```
12.4 Resisting Perturbation 169
```
informasi. Operasi vektor (dan lainnya) pada level _coding_ merepresentasikan
operasi pada bentuk aslinya. Untuk pembahasan _autoencoder_ secara lebih
matematis, kamu dapat membaca pranala ini.^8 Setelah _autoencoder_ dilatih,
pada umumnya _encoder_ dapat digunakan untuk hal lainnya juga, e.g., klasifikasi
kelas gambar.


## 𝐔#𝐕# 𝐔#𝐕#𝐖#𝑻


## 1 Pengenalan

```
“People worry that computers
will get too smart and take over
the world, but the real problem
is that they’re too stupid and
they’ve al _ready_ taken over the
world.”
Pedro Domingos
```
Penulis yakin istilah _machine learning_ atau _deep learning_ sudah tidak asing
di telinga pembaca. _Machine learning_ dan _deep learning_ adalah salah satu
materi kuliah pada jurusan Teknik Informatika atau Ilmu Komputer. Selain
mengenal kedua istilah tersebut dari perkuliahan, pembaca mungkin mengenal
istilah tersebut karena digunakan untuk pemasaran (marketing). Sebagai
permulaan, _machine learning_ dan _deep learning_ bukanlah kedua hal yang
berbeda.^1 Perlu diingat, _deep learning_ adalah bagian dari _machine learning_.
_Machine learning_ sudah diaplikasikan pada banyak hal, baik untuk klasifikasi
gambar, mobil tanpa pengemudi, klasifikasi berita, dsb. Bab ini menjelaskan
konsep paling dasar dan utama _machine learning_.


### 1.4 Statistical Learning Theory

Pada masa sekarang ini data bertebaran sangat banyak dimana-mana. Pemrosesan
_data_  secara manual tentu adalah hal yang kurang bijaksana. Beberapa
pemrosesan data yang dilakukan seperti kategorisasi (kategorisasi teks
berita), peringkasan dokumen, ekstraksi informasi (mencari subjek, objek,
dan relasi diatara keduanya pada teks), rekomendasi produk berdasarkan

(^6) KBBI Web, diakses pada 10 Oktober 2016

```
1.4 Statistical Learning Theory 9
```
catatan transaksi, dll [7]. Tujuan _machine learning_ minimal ada dua:memprediksi
masa depan( _unobserved event_ ); dan/ataumemperoleh ilmu
pengetahuan( _knowledge discovery/discovering unknown structure_ ). Kedua
hal ini berkaitan sangat erat. Sebagai contoh, manusia tahu bahwa cara menggunakan
pensil dan pulpen sama, walaupun saat kita belum pernah menggunakan
pulpen (penulis berasumsi kamu belajar menulis menggunakan pensil).
Memprediksi masa depan berarti kita tahu bahwa pulpen adalah alat tulis.
_Knowledge discovery_ berarti kita tahu bahwa cara menggunakan pulpen dan
pensil itu sama, walaupun belum pernah menggunakan pulpen sebelumnya.^7
Untuk mencapai tujuan tersebut, kita menggunakan data (sampel), kemudian
membuat model untuk menggeneralisasi “aturan” atau “pola” data sehingga
kita dapat menggunakannya untuk mendapatkan informasi/membuat
keputusan [8, 9]. _Statistical learning theory_ (yang diaplikasikan padamachine
_learning_ ) adalah teknik untuk memprediksi masa depan dan/atau menyimpulkan/mendapatkan
pengetahuan dari datasecara rasional dan nonpara _norm_ al.
Hal ini sesuai dengan konsep _intelligent agent_, yaitu bertingkah
berdasarkan lingkungan. Dalam hal ini, yang bertindak sebagai lingkungan
adalah data. _Performance measure_ -nya adalah seberapa akurat prediksi agen
tersebut atau seberapa mirip “pola” data yang d _item_ ukan terhadap data asli.
Disebut _statistical_ karena basis pembelajarannya memanfaatkan banyak teori
statistik untuk melakukan inferensi (misal memprediksi _unobserved event_ ).^8

```
Gambar 1.3: Ilustrasi makanan pesta 1.
```
Perhatikan Gambar 1.3 (permasalahan yang disederhanakan). Misalkan
kamu diundang ke suatu pesta. Pada pesta tersebut ada 3 jenis kue yang disajikan.
Kamu ingin mengetahui berapa rasio kue yang disajikan dibandingkan
masing-masing jenisnya (seluruh populasi). Tetapi, karena susah untuk menganalisis
seluruh data atau keseluruhan data tidak tersedia, kamu mengam-

(^7) Baca _zero-shot learning_
(^8) Selain itu, _machine learning_ juga banyak memanfaatkan teori aljabar linier.

10 1 Pengenalan

```
Gambar 1.4: Ilustrasi makanan pesta 2.
```
bil beberapa sampel. Dari sampel tersebut, kamu mendapati bahwa ada 4
buah kue segi empat, 3 buah kue hati dan 2 buah kue segitiga. Lalu kamu
menyimpulkan ( _model_ ) bahwa perbandingan kuenya adalah 4:3:2 (segiempat:hati:segitiga).
Perbandingan tersebut hampir menyerupai kenyataan seluruh
kue yaitu 4:2.67:2. Cerita ini adalah kondisi ideal.
Perhatikan Gambar 1.4, temanmu Haryanto datang juga ke pesta yang
sama dan ingin melakukan hal yang sama (rasio kue). Kemudian ia mengambil
beberapa sampel kue. Dari sampel tersebut ia mendapati bahwa ada 3 buah
segiempat, 3 buah hati dan 2 buah segitiga, sehingga perbandingannya adalah
3:3:2. Tentunya hal ini sangat melenceng dari populasi.
Dari dua sampel yang berbeda, kita menyimpulkan, meng _infer_ ensi ( _infer_ )
atau mengeneralisasi dengan berbeda. Kesimpulan yang kita buat berdasarkan
sampel tersebut, kita anggap merefleksikan populasi, kemudian kita menganggap
populasi memiliki aturan/pola seperti kesimpulan yang telah kita ciptakan
[10]. Baik pada statistika maupun _statistical machine learning_, pemilihan
sampel (selanjutnya disebut _training data_ ) adalah hal yang sangat penting.
Apabila _training data_ tidak mampu merepresentasikan populasi, maka
_model_  yang dihasilkan pembelajaran ( _training_ ) tidak bagus. Untuk itu, biasanya
terdapat juga _validation data_ dan _test data_. Mesin dilatih menggunakan _training_
_data_, kemudian diuji kinerjanya menggunakan _validation data_ ^9
dan _test data_. Seiring dengan membaca buku ini, konsep _training data_, _validation_
_data_, dan _test data_ akan menjadi lebih jelas. Cara mengevaluasi apakah
sampel ( _data_ ) yang kita miliki cukup “bagus” untuk merepresentasikan populasi
sangat bergantung pada domain dan aplikasi.
Seperti halnya contoh sederhana ini, persoalan _machine learning_ sesungguhnya
menyerupai persoalan _statistical inference_ [10]. Kita berusaha mencari
tahu populasi dengan cara menyelidiki fitur ( _features_ atau sifat-sifat)
yang dimiliki sampel. Kemudian, meng _infer_ ensi aksi yang harus dilakukan

(^9) Pada umumnya bertindak sebagai _stopping criterion_ saat proses _training_.

```
1.5 Training, Validation, Testing Set 11
```
terhadap _unobserved data_ berdasarkan kecocokan fitur-fitur _unobserved data_
dengan model/aturan yang sudah ada.
Dari sisi metode pembelajaran, algoritma _machine learning_ dapat dikategorikan
sebagai: _supervised learning_ (subbab 1.6), _semi-supervised learning_
(subbab 1.8), _unsupervised learning_ (subbab 1.9), dan _reinforcement learning_.
Masing-masing metode akan dibahas pada subbab berikutnya (kecuali
_reinforcement learning_, karena diluar cakupan buku ini).


### 1.12 Contoh Aplikasi

Sebenarnya, aplikasi pemanfaatan _machine learning_ sudah terasa dalam kehidupan
sehari-hari. Contoh mudahnya adalah produk-produk Google, misalnya
google translate ( _machine translation_, handwritten recognition, speech
recognition, Alpha Go). Berikut adalah beberapa artikel menarik:

```
1.techcrunch google AI beats go world champion
2.http://www-formal.stanford.edu/jmc/whatisai/ _node_ 3.html
3.https://www.google.com/selfdrivingcar/
4.http://www.osnews.com/story/26838/Palm_I_m_ _ready_ _to_ _wallow_ _now/
page2/
```


### 1.5 Training, Validation, Testing Set

Terdapat dua istilah penting dalam pembangunan model _machine learning_
yaitu: _training_ dan _testing_. _Training_ adalah proses konstruksi model dan
_testing_ adalah proses menguji kinerja model pembelajaran. _Dataset_ adalah
kumpulan data (sampel dalam statistik). Sampel ini adalah data yang kita
gunakan untuk membuat model maupun mengevaluasi model _machine learning_.
Umumnya, _dataset_ dibagi menjadi tiga jenis yang tidak beririsan (suatu
sampel pada himpunan tertentu tidak muncul pada himpunan lainnya):

```
1. _Training set_ adalah himpunan data yang digunakan untuk melatih atau
membangun model. Pada buku ini, istilah _training data_ (set)mengacu
pada _training set_.
2. _Development set_ atau _validation set_ adalah himpunan data yang digunakan
untuk mengoptimisasi saat melatih model. Model dilatih menggunakan _training_
setdan pada umumnya kinerjasaat latihandiuji dengan _validation_
set. Hal ini berguna untuk generalisasi (agar model mampu
mengenali pola secara generik). Pada buku ini, istilah _development_ dan
_validation data_ (set)mengacu pada hal yang sama.
3. _Testing set_ adalah himpunan data yang digunakan untuk menguji model
setelahproses latihan selesai. Pada buku ini, istilah _testing data_ (set)
atau _test set_ mengacu pada _testing set_. Perlu kami tekankan, _testing set_
adalah _unseen data_. Artinya, model dan manusia tidak boleh melihat sampel
ini saat proses latihan. Banyak orang yang tergoda untuk melihat _testing_
setsaat proses latihan walaupun itu adalah tingkah laku yang buruk
karena menyebabkan _bias_.
```
Suatu sampel pada himpunan data kita sebut sebagai _data point_ atau
_instance_ yang merepresentasikan suatu kejadian statistik ( _event_ ). Perlu diingat, _training_, _validation_,
dan _testing data_ secara ideal diambil ( _sampled_ )
dari distribusi yang sama dan memiliki karakteristik yang sama ( _independent_ ly
and identically distributed). Distribusi pada masing-masing dataset ini
juga sebaiknya seimbang ( _balanced_ ) dan memuat seluruh kasus. Misal, sebuah
_dataset_  _binary classification_ sebaiknya memuat 50% kasus positif dan
50% kasus negatif.

12 1 Pengenalan

Pada umumnya, rasio pembagian _dataset_ ( _training_ : _validation_ : _testing_ )
adalah (80% : 10% : 10%) atau (90% : 5% : 5%). _Validation set_ pada umumnya
bisa tidak digunakan apabila _dataset_ berukuran kecil (hanya dibagi menjadi _training_ dan _testing_
setsaja). Dalam kasus ini, pembagian _dataset_ menjadi _training_
dan _testing_ set pada umumnya memiliki rasio (90% : 10%),
(80% : 20%), (70% : 30%), atau (50% : 50%). Pada kasus ini, kinerja saat
_training_ diuji menggunakan _training set_ (dikenal sebagai _closed testing_ ).
Saat tidak menggunakan _validation set_ (hanya ada _training_ dan _testing_
set), kita juga memiliki opsi untuk mengevaluasi model dengan metodeKcross- _validation_.^10
Artinya, kita membagi _training data(set)_ setatau keseluruhan
_dataset_ ) menjadiKbagian. Kita menggunakanK−1 bagian untuk _training_,
kemudian menguji kinerja model saat latihan ( _validation_ ) menggunakan satu
bagian. Hal ini diulangi sebanyakKkali dimana sebuah bagian data digunakan
sebagai _testing set_ sebanyak sekali (bergilir). Mungkin sekarang kamu
merasa pusing karena membaca banyak istilah. Jangan khawatir! Kamu akan
lebih meresapi arti istilah-istilah tersebut seiring membaca buku ini.


### 1.11 Tips

Jujur, pengarang sendiri belum menguasai bidang ini secara penuh, tetapi
berdasarkan pengalaman pribadi (+membaca) dan beberapa rekan; ada beberapa
materi wajib yang harus dipahami untuk mengerti bidangmachine
_learning_. Sederhananya, kamu harus menguasai banyak teori matematika dan
probabilitas agar dapat mengerti _machine learning_ sampai tulang dan jeroannya.
Kami tidak menyebutkan bahwa mengerti _machine learning_ secara intuitif
(atau belajar dengan pendekatan deskriptif) itu buruk, tetapi untuk
mengerti sampai dalam memang perlu mengerti matematika (menurut pengalaman
kami). Disa _rank_ an untuk belajar materi berikut:

1. Matematika Diskrit dan Teori Bilangan

```
1.12 Contoh Aplikasi 19
```
2. Aljabar Linier dan Geometri ( _vektor_, matriks, skalar, dekomposisi, trans-
    formasi, tensor, dsb)
3. Kalkulus (diferensial dan integral)
4. Teori Optimasi (Lag _range_ multiplier, Convex Iptimization, Gradient De-
    scent, Integer Linear Problem,dsb)
5. Probabilitas dan Statistika (probabilitas, _probability densities_,hypothesis
    testing, _inter-rater agreement_, Bayesian, _sampling_ )
6. Teori Fuzzy

Mungkin kamu sudah tahu, tetapi penulis ingin mengingatkan ada dua
buku yang sangat terkenal (“kitab”) sebagai materi belalajar _machine learning_ dan _deep_
_learning_ :

1. Patten Recognition and Machine Learning, oleh Christopher M. Bishop [8]
2. Deep Learning, oleh Ian Goodfellow, Yoshua Bengio, dan Aaron Courville [11]

Apabila pembaca memiliki kesempatan, penulis sangat menya _rank_ an membaca
kedua buku tersebut.


### Soal Latihan

1.1. Aplikasi

(a) Carilah contoh-contoh penerapan _machine learning_ pada kehidupan seharihari
selain yang telah disebutkan!
(b) Mengapa mereka menggunakan teknik _machine learning_ untuk menyelesaikan
permasalahan tersebut?
(c) Apakah tidak ada opsi teknik lainnya? Jelaskan bila ada!
(d) Apa kelebihan dan kekurangan teknik _machine learning_ daripada teknik
lainnya (yang kamu jelaskan pada soal (c))?

20 1 Pengenalan

1.2. Kecerdasan
Jelaskan tahapan perkembangan kecerdasan manusia berdasarkan kategori
usia! Dari hal ini, kamu akan mengerti kenapa beberapa peneliti membuat
agen cerdas berdasarkan kategori usia tertentu.


### 1.9 Un _supervised_ Learning

```
Gambar 1.10: Ilustrasi _clustering_
```
Jika pada _supervised learning_ ada guru yang mengajar, maka pada _unsupervised_
_learning_ tidak ada guru yang mengajar. Contoh permasalahan un _supervised_
_learning_  adalah _clustering_. Mengingat contoh kue sebelumnya, kita
ingin mengelompokkan kue-kue yang sama, diilustrasikan oleh Gambar 1.10.
Yang kamu lakukan adalah membuat kelompok-kelompok berdasarkan karakteristik
kue, misal kelompok kue biru, kelompok kue kuning, atau kelompok
kue merah. Teknik-teknik mengelompokkan ini akan dibahas pada babbab
berikutnya. Contoh algoritma _unsupervised learning_ sederhana adalah
_K-means_ (bab 4).
Perhatikan Gambar 1.11 dan Gambar 1.12! Berbeda dengan supervised
_learning_  yang memiliki _desired output_, pada _unsupervised learning_ tidak ada
_desired output_ (jelas, tidak ada gurunya, tidak ada yang memberi contoh).

```
1.9 Un _supervised_ Learning 17
```
```
Gambar 1.11: _Unsupervised learning_ framework
```
```
Gambar 1.12:Generalization error of un _supervised learning_
```
Kita ingin mencari tahu distribusi asli dataq(x), berdasarkan beberapa sampel
_data_. _Learning_ dilakukan dengan mengoptimalkanp(x|w) yang mengoptimasi
parameterw. Perbedaan antara estimasi dan fungsi asli disebut
sebagai _generalization loss_ (atau _loss_ saja – dijelaskan pada bab 5). Kunci
pemahaman _unsupervised learning_ adalah mengingat persamaan 1.3, yaitu
ada _input_ dan parameter.

p(x|w) (1.3)
Perlu kami tekankan, _unsupervised learning_ 6 = _clustering_ ! _Clustering_ adalah
salah satu bentuk _unsupervised learning_ ; yaitu salah satu hasil inferensi persamaan
1.3. _Unsupervised learning_ adalah mencari sifat-sifat ( _properties_ )
_data_. Kita ingin aproksimasip(x|w) semirip mungkin denganq(x), dimana
q(x) adalah distribusi data yang asli. Dataset di-sampel dari distribusiq(x),
kemudian kita ingin mencari tahuq(x) tersebut.

18 1 Pengenalan


### 1.3 Konsep Belajar

Bayangkan kamu berada di suatu negara asing! Kamu tidak tahu norma yang
ada di negara tersebut. Apa yang kamu lakukan agar bisa menjadi orang
“ _norm_ al” di negara tersebut? Tentunya kamu harusbelajar! Kamu mengamati
bagaimana orang bertingkah laku di negara tersebut dan perlahan-lahan
mengerti norma yang berlaku. Belajar adalah usaha memperoleh kepandaian
atau ilmu; berlatih; berubah tingkah laku atau tanggapan yang disebabkan
oleh pengalaman.^6 Pembelajaran adalah proses, cara, perbuatan atau menjadikan
orang atau makhluk hidup belajar. Akan tetapi, pada _machine learning_,
yang menjadi siswa bukanlah makhluk hidup, tapi mesin.
Definsi sebelumnya mungkin sedikit “abstrak”, kita harus mengkonversi
definisi tersebut sebagai definsi operasional (bentuk komputasi). Secara operasional,
belajar adalah perubahan tingkah laku berdasarkan pengalaman
( _event_ / _data_ ) untuk menjadi lebih baik. Pada konteks _machine learning_, belajar
adalah menyesuaikan konfigurasi parameter (tingkah laku) terhadaputility
_function_ sesuai dengan data (lingkungan).


### 1.7 Regresi

Pada persoalan regresi, kita ingin memprediksi _output_ berupa bilangan kontinu.
Misalnya pada regresi suatu fungsi polinomial, kita ingin mencari tahu
fungsif(x) diberikan data{(x 1 ,y 1 ),···,(xN,yN)}. Setelah itu, kita gunakan
fungsi aproksimasi untuk mencari tahu nilaiyN+1dari data baruxN+1. Perbedaan
regresi dan klasifikasi adalah pada tipe _output_. Untuk regresi, tipe _output_
adalah nilai kontinu; sementara tipe _output_ pada persoalan klasifikasi adalah
suatu objek pada himpunan (i.e., memilih opsi pada himpunan jawaban).
Tetapi, kita dapat mengkonversi fungsi regresi menjadi fungsi klasifikasi (dijelaskan
pada bab 5).

16 1 Pengenalan


### 1.10 Proses Belajar

Seperti yang sudah dijelaskan pada subbab sebelumnya, pada supervised
maupun _unsupervised learning_, kita ingin mengestimasi sesuatu dengan teknik
_machine learning_. Kinerja model pembelajaran berubah-ubah sesuai dengan
parameterw(parameter pembelajaran). Kinerja model diukur oleh fungsi
tujuan ( _utility function_ –saat latihan, _performance measure_ –saat melakukan
prediksi), yaitu mengoptimalkan nilai fungsi tertentu; misalnya meminimalkan
nilai _error_ (dijelaskan kemudian). Secara intuitif, _learning machine_ mirip
seperti saat manusia belajar. Kita awalnya membuat banyak kesalahan, tetapi
kita mengetahui atau diberi tahu mana yang benar. Untuk itu kita menyesuaikan
diri secara perlahan agar menjadi benar (iteratif). Inilah yang juga
dilakukan _learning machine_, yaitu mengubah-ubah parameterwuntuk mengoptimalkan
suatu fungsi tujuan. Akan tetapi, _machine learning_ membutuhkan
sangat banyak data. Sementara, manusia dapat belajar dengan contoh
yang sedikit. Perhatikan, dengan adanya parameterw, kamu mungkin
akan menganggap bahwa teknik _machine learning_ adalah fungsi-parametrik.
Sebenarnya, ada juga algoritma _machine learning_ non-parametrik, tetapi algoritham
parametrik yang lebih sering digunakan di masa buku ini ditulis.
Secara bahasa lebih matematis, kami beri contoh _supervised learning_. Kita
mempunyai distribusi klasifikasi asliq(y|x). Dari distribusi tersebut, kita
diberikan beberapa sampel pasangan _input-output_ {z 1 ,z 2 ,z 3 ,...,zn};zi =
(xi,yi). Kita membuat modelp(y |x,w). Awalnya diberi (x 1 ,y 1 ), model
mengestimasi fungsi asli dengan mengoptimalkan parameterwsesuai dengan
_data_  yang ada. Seiring berjalannya waktu, ia diberikan data observasi lainnya,
sehingga _learning machine_ menyesuaikan dirinya (konvergen) terhadap observasi
yang baru (x 2 ,y 2 ),(x 3 ,y 3 ),.... Semakin lama, kita jadi makin percaya
bahwa model semakin optimal (mampu memprediksi fungsi aslinya). Apabila
kita diberikan lebih banyak data data sampai sejumlah tak hingga, aproksimasi
kita akan semakin mirip dengan distribusi aslinya.


### 1.6 Supervised Learning

Jika diterjemahkan secara literal, _supervised learning_ adalah pembelajaran
terarah/terawasi. Artinya, pada pembelajaran ini, ada guru yang mengajar
(mengarahkan) dan siswa yang diajar. Kita disini berperan sebagai guru, kemudian
mesin berperan sebagai siswa. Perhatikan Gambar 1.5 sebagai ilustrasi!
Pada Gambar 1.5, seorang guru menuliskan angka di papan “8, 6, 2”
sebagai contoh untuk siswanya, kemudian gurunya memberikan cara membaca
yang benar untuk masing-masing angka. Contoh angka melambangkan
_input_, kemudian cara membaca melambangkan _desired output_ (sering disebut
“ _gold standard_ ”). Pasangan _input_ – _desired output_ ini disebut sebagai
_instance_ (untuk kasus _supervised learning_ ). Pembelajaran metode ini disebut
_supervised_ karena ada yang memberikan contoh jawaban ( _desired output_ ).
Perhatikan Gambar 1.6 dan Gambar 1.7,xadalah kejadian ( _event_ – _random_
variable), untuk event tertentu dapat dinotasikan sebagai{x 1 ,x 2 ,x 3 ,···,
xN}.xdapat berupa vektor, teks, gambar, dan lain sebagainya (perhatikan
konteks pembahasan buku). Demi pembahasan yang cukup generik, pada bab
ini kita membicarakanxyang merepresentasikan _event_, _data point_, atau _input_.
Seorang guru sudah mempunyai jawaban yang benar untuk masing-masing
contoh dengan suatu fungsi distribusi probabilitas kondisional (conditional
_probability density function_ )q(y |x) baca: _function_ q for y _given_ x,
melambangkan hasil yang benar/diharapkan untuk suatu event. Siswa (mesin)
mempelajari tiap pasang pasangan _input-desired output_ ( _training_
_data_ )dengan mengoptimalkan _conditional probability density function_ p(y|
x,w), dimanayadalah target ( _output_ ),xadalah input dan vektorwadalah

(^10) https://www.openml.org/a/estimation-procedures/1

```
1.6 Supervised Learning 13
```
```
Gambar 1.5:Supervised learning.
```
_learning parameters_. Proses belajar, yaitu mengoptimalkanwdisebut sebagai
_training_. Semakin kamu membaca buku ini, konsep ini akan menjadi
semakin jelas. Proses _training_ bertujuan untuk mengaproksimasiq(y |x)
melaluip(y|x,w). Proses pembelajaran bertujuan untuk mengubah-ubahw
sedemikian sehinggap(y|,x,w) mirip denganq(y|x).

```
Gambar 1.6:Supervised learning-mathematical explanation.
```
Perhatikan Gambar 1.8! model memiliki panah ke _training data_ dantest
_data_, artinya model hasil _training_ sangat bergantung pada _data_ dan guru.
Model yang dihasilkan _training_ (hasil pembelajaran kemampuan siswa) untuk
_data_  yang sama bisa berbeda untuk guru yang berbeda.^11
Tujuan _supervised learning_, secara umum untuk melakukan klasifikasi
( _classification_ ). Misalkan mengklasifikasikan gambar buah (apa nama buah
pada gambar), diilsutrasikan pada Gambar 1.9. Apabila hanya ada dua kategori,
disebut _binary classification_. Sedangkan bila terdapat lebih dari dua
kategori, disebut _multi-class classification_. Contoh _multi-class_ classifica-

(^11) Penulis rasa hal ini sangat intuitif berhubung hal serupa terjadi pada manusia.

14 1 Pengenalan

```
8, 6, 2 ...
```
𝑥 (^1) ,𝑥 (^2) ,𝑥 (^3) ,... 𝑥𝑛
𝑥 1 ,𝑥 2 ,𝑥 3 ,... ,𝑥𝑛
𝑦 1 ,𝑦 2 ,𝑦 3 ,... ,𝑦𝑛
𝑞(𝑥) 𝑞(𝑦|𝑥) 𝑥 𝑦
𝑞𝑥𝑞𝑦𝑥 =𝑞(𝑥,𝑦)
p(𝑦|𝑥,𝒘)
_ _Input_
Desired output_
Gambar 1.7:Supervised learning-mathematical explanation2.
Gambar 1.8:Supervised learning framework.
tionadalah mengklasifikasikan gambar buah ke dalam himpunan kelas: _apel_,
_mangga_ atau _sirsak_.
Ada tipe klasifikasi lain disebut _multi-label classification_ yaitu ketika
kita ingin mengklasifikasikan suatu sampel ke dalam suatu himpunan kelas.
Perhatikan! Perbedaan _multi-class_ dan _multi-label classification_ agak _tricky_.
Pada _multi-class classification_, suatu sampel hanya bisa berkorespondensi
dengan satu kelas. Sedangkan pada _multi-label classification_, satu sampel dapat
berkorespondensi dengan lebih dari satu kelas. Misalnya, suatu berita
dapat masuk ke kategori _agama_ dan _politik_ pada waktu bersamaan. Artinya,
label pada _multi-class classification_ bersifat _mutually exclusive_, sedangkan
label tidak bersifat _mutually exclusive_ pada _multi-label classification_.^12 Perhatikan
Gambar 1.1 sebagai ilustrasi, dimana setiap baris merepresentasikan
kelas yang berkorespondensi dengan setiap _input_, nilai “1” melambangkan
TRUE dan nilai “0” melambangkan FALSE. _Multi-label classification_ dapat
didekomposisi menjadi beberapa _Binary classification_, yaitu mengklasifikasikan
apakah _input_ dapat ditetapkan ke suatu kelas atau tidak (dijelaskan
lebih lanjut pada bab-bab berikutnya).
Pemahaman _supervised learning_ adalah mengingat persamaan 1.1. Ada
tiga hal penting pada _supervised learning_ yaitu _input_, _desired output_, dan
(^12) https://scikit-learn.org/stable/modules/multi _class_.html

```
1.7 Regresi 15
```
```
Gambar 1.9: Ilustrasi _binary classification_.
```
```
InstanceApel Mangga Sirsak
Gambar-1 1 0 0
Gambar-2 0 1 0
Gambar-3 0 0 1
```
```
(a) Multi- _class_ classification.
```
```
InstanceApel Mangga Sirsak
Gambar-1 1 1 0
Gambar-2 0 1 1
Gambar-3 1 0 1
```
```
(b) Multi-label classification.
```
Tabel 1.1: Ilustrasi _multi-label_ dan _multi-class classification_. Nilai “1” melambangkan
TRUE dan “0” melambangkan FALSE ( _class assignment._.

_learning parameters_. Perlu ditekankan _learning parameters_ berjumlah lebih
dari satu, dan sering direpresentasikan dengan vektor ( _bold_ ) atau matriks.
Berdasarkan model yang dibuat, kita dapat melakukan klasifikasi (misal simbol
yang ditulis di papan adalah angka berapa). Secara konseptual, klasifikasi
didefinisikan sebagai persamaan 1.2 yaitu memilih label (kelas/kategoriy)
paling optimal dari sekumpulan labelC, diberikan ( _given_ ) suatu sampel ( _instance_ )
_data_  tertentu.

```
p(y|x,w) (1.1)
```
```
yˆi= arg max
yi∈C
```
```
p(yi|xi,w) (1.2)
```


### 1.1 Kecerdasan Buatan

Pada bagian pembukaan (kata pengantar) telah dijelaskan bahwa kami menganggap
kamu sudah memiliki pengetahuan dasar tentangartificial intelligence
( _kecerdasan buatan_ ), kami akan memberikan sedikit ikhtisar apa
hubungan kecerdasan buatan dan _machine learning_. Saat pertama kali kamu
mendengar istilah “ _kecerdasan buatan_ ”, mungkin kamu akan terpikir robot
yang memiliki raga fisik. Tetapi, kecerdasan buatan tidak hanya terbatas
pada sesuatu yang memiliki raga fisik. Raga fisik berguna untuk interaksi

(^1) Walau istilah _deep learning_ belakangan ini lebih populer.

4 1 Pengenalan

yang ramah bagi manusia. Tidak mesti memiliki raga fisik, kecerdasan buatan
sesungguhnya adalah program^2 yang memiliki bentuk matematis (instruksi);
kita sebut sebagaiagen. Berbeda dengan program biasa yang menghasilkan
aksi berdasarkan instruksi, tujuan kecerdasan buatan adalah menciptakan
program yang mampu mem-program ( _output_ program adalah sebuah program).
Secara teori, program adalahautomaton^3 yang menjalankan suatu
instruksi. Sama halnya dengan program pada umumnya, agen kecerdasan buatan
juga menjalankan suatu instruksi. Yang menjadikanya beda dengan program
_bias_ a adalahkemampuan untuk belajar.^4 “Belajar” yang dimaksud
tidaklah sama dengan proses manusia belajar. Mesin mampu belajar apabila
ia mampu meng- _update_ parameter (dijelaskan lebih detil kemudian), dimana
parameter tersebut kurang-lebih merepresentasikan “pengetahuan” mesin.
Pada bidang keilmuan kecerdasan buatan, kita ingin menciptakan agen
yang mampu melakukan pekerjaan yang membutuhkan kecerdasan manusia.
Perhatikan, disini disebut kecerdasan manusia; hewan pun cerdas, tapi kecerdasan
manusia dan hewan berbeda; yang kita ingin aproksimasi adalah kecerdasan
manusia. Akan tetapi, kecerdasan manusia susah didefinisikan karena
memiliki banyak aspek misalnya nalar (logika), kemampuan berbahasa, seni,
dsb. Karena kecerdasan manusia memiliki banyak dimensi, kita dapat mencoba
menyelesaikan masalah pada sub bidang lebih kecil–spesifik domain (divide
and conquer). Sampai saat ini pun, peneliti belum juga mengetahui secara
pasti apa yang membuat manusia cerdas, apa itu sesungguhnya cerdas,
dan bagaimana manusia dapat menjadi cerdas. Dengan demikian, keilmuan
_kecerdasan buatan_  adalah interdisiplin, memuat: psikologis, linguistik, ilmu
komputer, biologi, dsb. Bila kamu bertanya apakah program de _term_ inistik
dapat disebut _kecerdasan buatan_, jawabannya “iya”, _to some extent_ (sampai
pada level tertentu) karena memenuhi dimensi _acting rationally_ (dijelaskan
pada subbab 1.2).
Permasalahan utama bidang kecerdasan buatan terdiri dari (dari klasik
sampai lebih modern),^5 yaitu:

```
1. _Planning_. Diberikan _start state_ dan _goal state_, agen harus merencanakan
sekuens aksi untuk merubah _start state_ menjadi _goal state_. Contoh permasalahan _planning_
adalah merencanakan rute perjalanan dari kota A
ke kota B. Bisa jadi, saat merencanakan sekuens aksi, ada kendala ( _constraints_ )
yang harus dioptimisasi.
```
```
2. _Representasi pengetahuan_, yaitu merepresentasikan pengetahuan dalam
bentuk formal. Dengan representasi formal tersebut, kita dapat melakukan
_infer_ ensi dengan operasi logika berbentuk simbolik, misal logika preposisi,
```
(^2) Secara sederhana, program adalah kumpulan atau sekuens instruksi.
(^3) Kami sa _rank_ an untuk membaca buku [2] untuk materi automata.
(^4) Perlu diperhatikan, definisi ini adalah pandangan modern.
(^5) Silahkan merujuk Association for the Advancement of Artificial Intelligence
(AAAI).

```
1.1 Kecerdasan Buatan 5
```
```
logika orde pertama ( _first-order logic_ ), teori Fuzzy, _abductive reasoning_,
ontologi, maupun jaringan semantik ( _semantic web_ ) [3].
```
```
3. _Machine learning_, yaitu teknik untuk melakukan inferensi terhadap
_data_  dengan pendekatan matematis. Inti _machine learning_ adalah untuk
membuat model (matematis) yang merefleksikan pola-pola data (seiring
kamu membaca buku ini, kamu akan lebih mengerti). Ini adalah bahasan
utama buku ini. Pada abad ke-21 ini, _machine learning_ banyak memanfaatkan
statistika dan aljabar linier.
```
```
4. _Multi-agent system_, yaitu sistem yang memiliki banyak agen berinteraksi
satu sama lain untuk menyelesaikan permasalahan. Agen satu
mengerjakan suatu hal tertentu, kemudian bekerja bersama untuk menyelesaikan
masalah yang lebih besar (tidak dapat diselesaikan sendiri).
```
5. Dan lain sebagainya, silahkan mengacu pada topik konferensiAssociation
    for the Advancement of Artificial Intelligence(AAAI).
Perhatikan, sub keilmuan representasi pengetahuan dan _machine learning_ sama-sama
melakukan inferensi, tetapi pada representasi yang berbeda.
Inferensi pada bidang keilmuan representasi pengetahuan mencakup tentang
bagaimana cara (langkah dan proses) mendapatkan sebuah keputusan,
diberikan premis. Sebagai contoh,aadalah anakb, dancadalah anakb, maka
apakah hubunganadanc? Jawab:cadalah cucua. Pada _machine learning_,
_infer_ ensi yang dimaksud lebih menitikberatkan ranah hubungan variabel.
Misalnya,apakah penjualan akan meningkat apabila kita meningkatkan biaya
marketing. Bila kamu ingat dengan mata pelajaran matematika SMA (logika
preposisi), kamu sadar bahwa membuat sistem cerdas menggunakan representasi
pengetahuan simbolik itu susah. Kita harus mendefinisikan _term_, aturan
logika, dsb. Belum lagi kita harus mendefinisikan aturan-aturan secara manual.
Disamping itu, pengetahuan manusia sangatlah kompleks, dan translasi
pengetahuan menjadi aturan-aturan formal tidaklah mudah. Representasi
pengetahuan secara tradisional dianggap relatif kurang _scalable_. Artinya, kita
tidak dapat merubah basis pengetahuan dengan mudah (meng- _update_ “parameter”).
Sementara itu, _machine learning_ berada pada daerah representasi
_data_ /ilmu/pengetahuan dalam bentuk matematis karena keilmuanmachine
_learning_ diturunkan dari matematika dan statistika. Teknik _machine learning_ juga
menjadi semakin populer akibat kemampuan komputasi yang terus
meningkat.
Pada masa sekarang, kita dianugrahi dengan data yang banyak (bahkan
tidak terbatas), teknik _machine learning_ menjadi intuitif untuk melakukan
_infer_ ensi pada data yang besar. Hal ini yang menyebabkan _machine learning_ menjadi
populer karena konstruksi model inferensi dapat dilakukan secara
otomatis. _Machine learning_ ibarat sebuah “alat”, sama seperti rumus
matematika. Bagaimana cara menggunakannya tergantung pada domain per-

6 1 Pengenalan

masalahan. Dengan demikian, kamu harus paham betul bahwa memahami
teknik-teknik _machine learning_ saja tidak cukup. Kamu juga harus mengetahui
domain aplikasi yang bersesuaian karena pemanfaatan teknik-teknik
_machine learning_ dapat berbeda pada domain yang berbeda. Sedikit cerita,
sub keilmuan _data science_ mempelajari banyak domain, misalnya data pada
domain sosial, ekonomi, bahasa, maupun visual. Seiring kamu membaca buku
ini, kami harap kamu semakin mengerti hal ini.


### 1.2 Intelligent Agent

Agen cerdas memiliki empat kategori berdasarkan kombinasi dimensi cara
_infer_ ensi ( _reasoning_ ) dan tipe kelakuan ( _behaviour_ ) [4, 5]. Kategori agen
dapat dilihat pada Gambar 1.1 dengan penjelasan sebagai berikut:

```
Gambar 1.1: Dimensi kecerdasan.
```
```
1. _Acting Humanly_. Pada dimensi ini, agen mampu bertingkah dan berinteraksi
layaknya seperti manusia. Contoh terkenal untuk hal ini adalah
_turing test_. Tujuan dari _turing test_ adalah untuk mengevaluasi apakah
suatu sistem mampu “menipu” manusia. Disediakan seorang juri, kemudian
juri berinteraksi dengan sesuatu di balik layar. Sesuatu di balik layar
ini bisa jadi manusia atau program. Program dianggap mampu bertingkah
(berinteraksi) seperti layaknya manusia apabila juri tidak dapat membedakan
ia sedang berkomunikasi dengan manusia atau program.
```
```
2. _Acting Rationally_. Pada dimensi ini, agen mampu bertingkah dengan
optimal. Tindakan optimal belum tentu menyerupai tindakan manusia,
karena tindakan manusia belum tentu optimal. Misalnya, agen yang
mampu memiliki rute terpendek dari suatu kotaAke kotaBuntuk mengoptimalkan
penggunaan sumber daya. Sebagai manusia, bisa saja kita
mencari jalan sesuka hati.
```

```
1.2 Intelligent Agent 7
```
```
3. _Thinking Humanly_. Pada dimensi ini, agen mampu berpikir seperti
manusia dalam segi kognitif (e.g. mampu mengerti apa itu kesedihan atau
kesenangan). Dapat dibilang, meniru bagaima proses berpikir di otak terjadi
(pe _model_ an otak).
```
```
4. _Thinking Rationally_. Pada dimensi ini, agen mampu berpikir secara
rasional. Sederhananya sesuai dengan konsep logika matematika.Thinking
Humanlylebih cenderung pada pe _model_ an kognitif secara umum, sementara
dimensi _thinking rationally_ cenderung pada pe _model_ an proses
berpikir dengan prinsip optimisasi (apa yang harus dilakukan agar hasil
optimal).
```
Perlu dicatat, “ _acting_ ” berarti agen mampu melakukan aksi. Sementara
“ _thinking_ ” adalah pe _model_ an proses. Untuk mewujudkan interaksi manusiakomputer
seperti manusia-manusia, tentunya kita ingin _intelligent agent_ bisa
mewujudkan dimensi _acting humanly_ dan _thinking humanly_. Sayangnya, manusia
tidak konsisten [6]. Sampai saat ini, konsep kecerdasan buatan adalah
meniru manusia; apabila manusia tidak konsisten, peneliti susah untuk me _model_ kan
cara berpikir atau tingkah laku manusia. Berhubung agen dilatih menggunakan
contoh-contoh data buatan manusia, ketidak-konsistensi-an agen
semata-mata mencerminkan ketidak-konsistensi-an pembuat data. Dengan hal
itu, saat ini kita paling mungkin menciptakan agen yang mempunyai dimensi
_acting rationally_.

```
Gambar 1.2:Agentvs _environment_ [7].
```
Perhatikan Gambar 1.2! Agen mengumpulkan informasi dari lingkungannya,
kemudian memberikan respon berupa aksi. Lingkungan ( _environment_ )
yang dimaksud bisa jadi macam-macam, misal: rumah, papan catur, agen
lain, dsb. Kita ingin agen melakukan aksi yang benar. Tentu saja kita perlu
mendefinisikan secara detail, teliti, tepat ( _precise_ ), apa arti “aksi yang benar.”
Dengan demikian, lebih baik apabila kita mengukur kinerja agen, menggunakan
ukuran kinerja yang objektif (disebut _performance measure_ ). Misal-

8 1 Pengenalan

nya untuk robot pembersih rumah, _performance measure_ -nya adalah seberapa
persen debu yang dapat ia bersihkan. _Performance measure_ adalah ukuran
bagaimana model pembelajaran mesin dievaluasi secara eksternal. Di sisi internal,
_model_  harus mengoptimalkan suatu fungsi utiiltas ( _utility function_ ),
yaitu fungsi apa yang harus dimaksimalkan atau diminimalkan oleh agen
tersebut khususnya pada tahap latihan ( _training_ ). Misalnya, robot pembersih
rumah memiliki _utility function_ untuk mengukur kotoran di tempat terbatas
tempat ia berada atau rute paling efisien untuk membersihkan rumah. Setiap
tindakan yang dilakukan agen rasional harus mengoptimalkan baik nilaiutility
_function_ (internal) dan _performance measure_ (eksternal). Pada buku ini, istilahperformance
measuredan _utility function_ merujuk pada hal yang berbeda.
Tetapi, pada beberapa kasus, _utility function_ dan _performance measure_ dapat
diukur dengan fungsi yang sama. Mungkin kamu merasa penjelasan ini
agak abstrak pada saat ini. Tetapi, kamu akan semakin mengerti perbedaan
keduanya setelah membaca buku ini.


### 1.8 Semi- _supervised_ Learning

_Semi-supervised learning_  mirip dengan _supervised learning_, bedanya pada
proses pelabelan data. Pada _supervised learning_, ada “guru” yang harus membuat
“kunci jawaban” _input-output_. Sedangkan pada _semi-supervised learning_
tidak ada “kunci jawaban” eksplisit yang harus dibuat guru. Kunci jawaban
ini dapat diperoleh secara otomatis (misal dari hasil _clustering_ ). Pada kategori
pembelajaran ini, umumnya kita hanya memiliki sedikit data. Kita kemudian
menciptakan data tambahan baik menggunakan _supervised_ ataupun
_unsupervised learning_, kemudian membuat model belajar dari data tambahan
tersebut.


### Untuk Tuhan, Bangsa, dan Almamater


### 2.10 Matriks

Subbab ini adalah pengingat untuk operasi perjumlahan, pengurangan, perkalian,
dan transpose matriks karena banyak digunakan di buku ini. Diberikan
dua buah matriksUdanV.UdanVdapat dijumlahkan jika dan hanya jika
dimensi kedua matriks itu sama. Perjumlahan matriks dinotasikan dengan

(^3) kamu dapat mencoba library entropy di scipy (python) untuk mendapat gambaran
lebih detil
https://docs.scipy.org/doc/scipy/reference/ _generate_ d/scipy
.stats. _entropy_.html
(^4) https://towards _data_ science.com/ _entropy_ - _cross-entropy_ -and-kl_divergen_
ce-explained-b09cdae917a

36 2 Fondasi Matematis

U+V=C. MatriksCmemiliki dimensi yang sama denganUdanV. Nilai
elemen baris ke-idan kolom ke-j(Ci,j) dihitung sebagai penjumlahan nilai
elemen matriksUdanVpada baris dan kolom yang bersesuaian, seperti
diilustrasikan pada persamaan 2.18. Pengurangan dua buah matriks dilakukan
serupa.

Ci,j=Ui,j+Vi,j (2.18)
Dua buah matriksUdanVdapat dikalikan jikaUmemiliki kolom sebanyak
baris padaV. Misalkan matriksUberdimensiN×MdanVberdimensiM×O,
maka kedua matriks tersebut dapat dikalikan dan menghasilkan
matriksCdengan dimensiN×O(dimensi barisUdan kolomV), dimana
tiap elemen pada matriksCdihitung dengan persamaan 2.19 (operasi antara
_vektor_  baris dan vektor kolom).

```
Cx,y=
```
#### ∑M

```
i=1
```
```
Ux,i+Vi,y (2.19)
```
Selain perkalian antar dua buah matriks, sebuah matriks juga dapat dikalikan
dengan skalar, dinotasikan denganaU. Hasil perkalian adalah sebuah matriks
dengan dimensi yang sama denganU, dimana tiap elemen dikalikan dengan
nilai skalar.
(aU)i,j=a×Ui,j (2.20)
Suatu matriksUberdimensiN×Mapabila di transpose menghasilkan
matriksUTberdimensiM×N, dimana elemen ke-i,jpada matriksUTadalah
elemen ke-j,ipada matriksU, seperti diilustraiskan pada persamaan 2.19.

```
UTi,j=Uj,i (2.21)
```
Ada satu istilah lagi yang perlu kamu ketahui yaitutensor. Tensor adalah
generalisasi untuk vektor (1 dimensi) dan matriks (2 dimensi) yang memilikiN
dimensi. Tensor sering digunakan untuk notasi pada _artificial neural network_.
Tetapi demi kemudahan pengertian, penulis menggunakan notasi matriks.


### 2.7 Teori Keputusan

Diberikan himpunan pasangan data _input-output_ (xi,yi);x = input,y =
_output_ / _target_ ; walaupun tidak pasti, kita ingin mengestimasi hubungan antara _input_ dan _output_.
Untuk itu kita melakukan estimasip(y|x,w), dimana
wadalah _learning parameters_. Pada bab pertama, kamu telah mempelajari
bahwa kita mampu melakukan hal ini dengan teknik _machine learning_. Lebih
jauh lagi, kita juga harus mampu untuk membuat keputusan berbasiskan
perkiraan nilaiy, aspek ini disebut _decision theory_ [8].
Dalam _machine learning_ kita dapat membangun model dengan tujuan
untuk meminimalkan _error_ (secara umum meminimalkan _loss_ ); konsep meminimalkan _error_ dijelaskan
pada materi model linear (bab 5). Ibaratnya untuk
sebuah robot, kita ingin robot tersebut tidak melakukan tindakan yang
salah. Tetapi, kadang kala meminimalkan _error_ belum tentu membuat model
menjadi lebih baik. Kami ilustrasikan menggunakan contoh dari Bishop [8].

```
2.7 Teori Keputusan 31
```
Misalkan kita diminta untuk membuat model klasifikasi kanker. Kita dapat
mengklasifikasikan pasien menjadi dua kelas{kanker, _norm_ al}.
Apabila kita ingin meminimalkan _error_ saja maka kita ingin mengklasifikasikan
secara tepat orang yang kanker dianggap memiliki kanker dan yang
tidak dianggap sebagai tidak. Akan tetapi, terdapat _tradeoff_ yang berbeda
saat salah klasifikasi. Apabila kita mengklasifikasikan orang yang normal sebagai
kanker, konsekuensi yang mungkin adalah membuat pasien menjadi
stres atau perlu melakukan pemeriksaan ulang. Tetapi bayangkan, apabila
kita mengklasifikasikan orang kanker sebagai normal, konsekuensinya adalah
penanganan medis yang salah. Kedua kasus ini memiliki beban yang berbeda.
Secara sederhana, kesalahan klasifikasi bisa memiliki bobot berbeda untuk
tiap kelasnya. Untuk penyederhanaan pembahasan, pada buku ini, kita
anggap kesalahan klasifikasi memiliki bobot yang sama.
Fungsi tujuan pembelajaran (secara umum untuk merepresentasikan _error_
atau _loss_ ) dituangkan dalam _utility function_. Sekali lagi kami tekankan,
tujuan _machine learning_ adalah memaksimalkan kinerja. Kinerja diukur
berdasarkan _utility function_. _Loss_ adalah ukuran seberapa dekat atau
berbeda model yang dihasilkan dengan konsep asli, sementara _error_
adalah salah satu fungsi untuk mengukur _loss_.
Untuk mengukur nilai _loss_ ; dapat diekspresikan dengan _loss function_. Secara
umum, ada dua macam _loss_, yaitu _generalization loss/error_ dan
_training loss/error_. _Generalization loss/error_ adalah ukuran sejauh mana
algoritma mampumemprediksi _unobserved data_ dengan tepat, karena kita
hanya membangun model dengan data yang terbatas, tentunya bisa saja terdapat
ketidakcocokan dengan data yang asli. Sedangkan _training loss/error_
seperti namanya, ukuran _loss_ saat _training_. Misalkanq(x) adalah distribusi
_data_  asli. Menggunakan sampel data dengan distribusip(x), _generalization_
_loss_ dan _training loss_ dapat dihitung dengan persamaan 2.13. Fungsi ini disebut
sebagai _cross entropy loss_. Perhatikan, masih banyak fungsi lain yang
bisa digunakan untuk mengukur _loss_.

#### H=−

#### ∑N

```
i=1
```
```
q(x)log (p(x)) (2.13)
```
Tentunya sekarang kamu bertanya-tanya. Kita tidak mengetahui bagaimana
q(x) aslinya, bagaimana cara menghitung _generalization loss_ ? Nah, untuk itulah
ada teknik-teknik pendekatan distribusi populasiq(x), misalnyamaximum
_likelihood_  method, maximum posterior methoddanBayesian
method(silahkan dieksplorasi). Ekspektasi terhadap biasanyaq(x) diaproksimasi
dengan menggunakan data sampel yang kita miliki. Bentuk persamaan 2.13
memiliki kaitan dengan _confidence_. Konsep ini akan dijelaskan lebih detil pada
bab 5.
Secara lebih filosofis, berkaitan dengan meminimalkan _loss_ ; tugasmachine
_learning_ adalah untuk menemukan struktur tersembunyi (discovering hidden
structure). Hal ini sangat erat kaitannya dengan _knowledge discovery_ dan _data_

32 2 Fondasi Matematis

mining. Bila kamu membuka forum di internet, kebanyakan akan membahas
perihal _learning machine_ yang memaksimalkan akurasi (meminimalkan _error_ ).
Selain harus memaksimalkan akurasi (meminimalkan salah _assignment_ ),
kita juga harus mampu membuat model yang cukup generik. Artinya tidak
hanya memiliki kinerja tinggi pada _training data_, tapi juga mampu memiliki
kinerja yang baik untuk _unseen data_. Hal ini dapat tercapai apabila model
yang dihasilkan melakukan inferensi yang mirip dengan inferensi sebenarnya
(konsep asli). Kami tekankan kembali, meminimalkan _loss_ adalah hal yang
lebih penting, dimana meminimalkan _error_ dapat digunakan sebagai sebuah
_proxy_ untuk mengestimasi _loss_ (pada banyak kasus).