### 12.1 Representation Learning

Pada bab model linear, kamu telah mempelajari ide untuk mentransformasi
_data_  menjadi dimensi lebih tinggi agar data tersebut menjadi _linearly separable_.
Pada bab ini, kamu mempelajari hal sebaliknya, yaitu mengurangi
dimensi. _Curse of dimensionality_ dapat dipahami secara mendalam apabila
kamu membaca buku [65]. Untuk melakukan klasifikasi maupun _clustering_,
kita membutuhkan fitur. Fitur tersebut haruslah dapat membedakan satu _instance_ dan _instance_ lainnya.
Seringkali, untuk membedakan _instance_ satu dan


164 12 Auto _encoder_

_instance_ lainnya, kita membutuhkan _feature vector_ yang berdimensi relatif
“besar”. Karena dimensi _feature vector_ besar, kita butuh sumber daya komputasi
yang besar juga (bab 9). Untuk itu, terdapat metode-metodefeature
selection^1 untuk memilih fitur-fitur yang dianggap “representatif” dibanding
fitur lainnya. Sayangnya, bila kita menggunakan metode-metodefeature
selectionini, tidak jarang kita kelihangan informasi yang memuat karakteristik
_data_. Dengan kata lain, ada karakteristik yang hilang saat menggunakan
_feature selection_.
Pertanyaan yang kita ingin jawab adalah apakah ada cara untuk merepresentasikan
_data_  ke dalam bentuk yang membutuhkan memori lebih sedikit
tanpa adanya kehilangan informasi? Kita dapat memanfaatkan prinsipprincipal
component analysisyang sudah kamu pelajari pada bab 9 untuk mereduksi
dimensi data (mengurangi dimensi _input_ ), pada saat yang bersamaan,
menjaga karakteristik data. _Representation learning_ adalah metode untuk
melakukankompresi _feature vector_ menggunakan _neural network_.^2 Proses
melakukan kompresi disebut _encoding_, hasil _feature vector_ dalam bentuk
terkompres disebut _coding_, proses mengembalikan hasil kompresi ke bentuk
awal disebut _decoding_.^3 Neural networkyang mampu melakukan proses _encoding_ disebut _encoder_,
sedangkan _decoder_ untuk proses _decoding_ [66, 67,
68, 69, 70].

```
Gambar 12.1: Contoh auto _encoder_ sederhana.
```
Contoh _representation learning_ paling sederhana kemungkinan besar adalah
_autoencoder_ yaitu _neural network_ yang dapat merepresentasikan data kemudian
merekonstruksinya kembali. Ilustrasi _autoencoder_ dapat dilihat pada

(^1) [http://scikit-learn.org/stable/modules/feature_selection.html](http://scikit-learn.org/stable/modules/feature_selection.html)
(^2) Istilah _representation learning_ pada umumnya mengacu dengan teknik menggunakan _neural_
_network_.
(^3) Bisa dianggap sebagai proses menginterpretasikan _coding_.


```
12.2 Singular Value Decomposition 165
```
Gambar 12.1. Karena tujuan _encoder_ untuk kompresi, bentuk terkompresi
haruslah memiliki dimensi lebih kecil dari dimensi _input_. _Neural network_
mampu melakukan “kompresi” dengan baik karena ia mampu menemukan
_hidden structure_ dari data. _Autoencoder_ dilatih untuk memilimalkan meminimalkan _loss_.
Kamu mungkin berpikir bahwa idealnya, _output_ harus sama
dengan _input_, yaitu _autoencoder_ dengan tingkat _loss_ 0%. Akan tetapi, kita
sebenarnya tidak ingin _autoencoder_ memiliki performa 100% (subbab 12.4).
Contoh klasik lainnya adalah _N-gram language modelling_, yaitu memprediksi
kataytdiberikan suatu konteks ( _surrounding words_ ) misal kata sebelumnyayt−
1 (bigram), i.e.,P(yt|yt− 1 ) Apabila kita mempunyai _vocabulary_ sebesar
40,000 berarti suatu bigram model membutuhkan _memory_ sebesar
40, 0002 (kombinatorial). Apabila kita ingin memprediksi kata diberikan
_history_ yang lebih panjang (misal dua kata sebelumnya– _trigram_ ) maka kita
membutuhkan _memory_ sebesar 40, 0003. Artinya, _memory_ yang dibutuhkan
berlipat secara eksponensial. Tetapi, terdapat st _rate_ gi menggunakan _neural_
_network_ dimana parameter yang dibutuhkan tidak berlipat secara eksponensial
walau kita ingin me _model_ kan konteks yang lebih besar [71].

