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

