12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder...

16
12 Autoencoder “The goal is to turn data into information, and information into insight.” Carly Fiorina Bab ini memuat materi yang relatif sulit (karena agak high level ). Bab ini memuat materi autoencoder serta penerapannya pada pemrosesan ba- hasa alami (natural language processing - NLP). Berhubung aplikasi yang diceritakan adalah aplikasi pada NLP, kami akan memberi sedikit ma- teri (background knowledge ) agar bisa mendapat gambaran tentang persoalan pada domain tersebut. Bagi yang tertarik belajar NLP, kami sarankan untuk membaca buku [59]. Teknik yang dibahas pada bab ini adalah representa- tion learning untuk melakukan pengurangan dimensi pada feature vector (dimensionality reduction ), teknik ini biasanya digolongkan sebagai unsuper- vised learning. Artinya, representation learning adalah mengubah suatu rep- resentasi menjadi bentuk representasi lain yang ekuvalen, tetapi berdimensi lebih rendah; sedemikian sehingga informasi yang terdapat pada representasi asli tidak hilang/terjaga. Ide dasar teknik ini bermula dari aljabar linear, yaitu dekomposisi matriks. 12.1 Representation Learning Pada bab model linear, kamu telah mempelajari ide untuk mentransformasi data menjadi dimensi lebih tinggi agar data tersebut menjadi linearly sep- arable. Pada bab ini, kamu mempelajari hal sebaliknya, yaitu mengurangi dimensi. Curse of dimensionality dapat dipahami secara mendalam apabila kamu membaca buku [60]. Untuk melakukan klasifikasi maupun clustering, kita membutuhkan fitur. Fitur tersebut haruslah dapat membedakan satu in- stance dan instance lainnya. Seringkali, untuk membedakan instance satu dan

Transcript of 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder...

Page 1: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12

Autoencoder

“The goal is to turn data intoinformation, and informationinto insight.”

Carly Fiorina

Bab ini memuat materi yang relatif sulit (karena agak high level). Babini memuat materi autoencoder serta penerapannya pada pemrosesan ba-hasa alami (natural language processing - NLP). Berhubung aplikasiyang diceritakan adalah aplikasi pada NLP, kami akan memberi sedikit ma-teri (background knowledge) agar bisa mendapat gambaran tentang persoalanpada domain tersebut. Bagi yang tertarik belajar NLP, kami sarankan untukmembaca buku [59]. Teknik yang dibahas pada bab ini adalah representa-tion learning untuk melakukan pengurangan dimensi pada feature vector(dimensionality reduction), teknik ini biasanya digolongkan sebagai unsuper-vised learning. Artinya, representation learning adalah mengubah suatu rep-resentasi menjadi bentuk representasi lain yang ekuvalen, tetapi berdimensilebih rendah; sedemikian sehingga informasi yang terdapat pada representasiasli tidak hilang/terjaga. Ide dasar teknik ini bermula dari aljabar linear, yaitudekomposisi matriks.

12.1 Representation Learning

Pada bab model linear, kamu telah mempelajari ide untuk mentransformasidata menjadi dimensi lebih tinggi agar data tersebut menjadi linearly sep-arable. Pada bab ini, kamu mempelajari hal sebaliknya, yaitu mengurangidimensi. Curse of dimensionality dapat dipahami secara mendalam apabilakamu membaca buku [60]. Untuk melakukan klasifikasi maupun clustering,kita membutuhkan fitur. Fitur tersebut haruslah dapat membedakan satu in-stance dan instance lainnya. Seringkali, untuk membedakan instance satu dan

Page 2: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

146 12 Autoencoder

instance lainnya, kita membutuhkan feature vector yang berdimensi relatif“besar”. Karena dimensi feature vector besar, kita butuh sumber daya kom-putasi yang besar juga (bab 9). Untuk itu, terdapat metode-metode featureselection1 untuk memilih fitur-fitur yang dianggap “representatif” diband-ing fitur lainnya. Sayangnya, bila kita menggunakan metode-metode featureselection ini, tidak jarang kita kelihangan informasi yang memuat karakteris-tik data. Dengan kata lain, ada karakteristik yang hilang saat menggunakanfeature selection.

Pertanyaan yang kita ingin jawab adalah apakah ada cara untuk merep-resentasikan data ke dalam bentuk yang membutuhkan memori lebih sedikittanpa adanya kehilangan informasi? Kita dapat memanfaatkan prinsip prin-cipal component analysis yang sudah kamu pelajari pada bab 9 untuk mere-duksi dimensi data (mengurangi dimensi input), pada saat yang bersamaan,menjaga karakteristik data. Representation learning adalah metode untukmelakukan kompresi feature vector menggunakan neural network2. Prosesmelakukan kompresi disebut encoding, hasil feature vector dalam bentukterkompres disebut coding, proses mengembalikan hasil kompresi ke ben-tuk awal disebut (atau secara lebih umum, proses menginterpretasikan cod-ing) decoding. Neural network yang mampu melakukan hal ini disebut en-coder [61, 62, 63, 64, 65]. Contoh representation learning paling sederhanakemungkinan besar adalah autoencoder yaitu neural network yang dapatmerepresentasikan data kemudian merekonstruksinya kembali. Ilustrasi au-toencoder dapat dilihat pada Gambar 12.1. Karena tujuan encoder untuk kom-presi, bentuk terkompresi haruslah memiliki dimensi lebih kecil dari dimensiinput. Neural network mampu melakukan “kompresi” dengan baik karena iamampu menemukan hidden structure dari data. Ukuran utility function atauperformance measure untuk autoencoder adalah mengukur loss. Idealnya, out-put harus sama dengan input, yaitu autoencoder dengan tingkat loss 0%.

Contoh klasik lainnya adalah N-gram language modelling , yaitu mem-prediksi kata yt diberikan suatu konteks (surrounding words) misal kata se-belumnya yt−1 (bigram). Apabila kita mempunyai vocabulary sebesar 40, 000berarti suatu bigram model membutuhkan memory sebesar 40, 0002 (kombi-natorial). Apabila kita ingin memprediksi kata diberikan history yang lebihpanjang (misal dua kata sebelumnya - trigram) maka kita membutuhkan mem-ory sebesar 40, 0003. Artinya, memory yang dibutuhkan berlipat secara ek-sponensial. Tetapi, terdapat strategi menggunakan neural network dimanaparameter yang dibutuhkan tidak berlipat secara eksponensial walau kita in-gin memodelkan konteks yang lebih besar [66].

1 http://scikit-learn.org/stable/modules/feature_selection.html2 Istilah representation learning pada umumnya mengacu dengan teknik menggu-

nakan neural network.

Page 3: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.2 Singular Value Decomposition 147

Gambar 12.1. Contoh autoencoder sederhana

12.2 Singular Value Decomposition

Sebelum masuk ke autoencoder secara matematis, penulis akan memberikansedikit overview tentang dekomposisi matriks. Seperti yang sudah dijelaskanpada bab-bab sebelumnya, dataset dimana setiap instans direpresentasikanoleh feature vector dapat disusun menjadi matriks X berukuran N × F , di-mana N adalah banyaknya instans3 dan F adalah dimensi fitur. Pada ma-chine learning, dekomposisi atau reduksi dimensi sangat penting dilakukanterutama ketika dataset berupa sparse matrix. Dekomposisi berkaitan eratdengan principal component analysis (PCA) yang sudah kamu pelajari. TeknikPCA (melalui eigendecomposition) mendekomposisi sebuah matriks X men-jadi tiga buah matriks, seperti diilustrasikan pada persamaan 12.1. MatriksA adalah kumpulan eigenvector dan λ adalah sebuah diaglonal matriks yangberisi nilai eigenvalue.

X = AλA−1 (12.1)

PCA membutuhkan matriks yang kamu ingin dekomposisi berbentu simetris.Sedangkan, teknik singular value decomposition (SVD) tidak. Dengan konsepyang mirip dengna PCA, matriks X dapat difaktorisasi menjadi tiga buah ma-triks menggunakan teknik SVD, dimana operasi ini berkaitan dengan mencarieigenvectors, diilustrasikan pada persamaan 12.2.

X = U V WT (12.2)

dimana U berukuran N ×N , V berukuran N ×F , dan W berukuran F ×F .Perlu diperhatikan, matriks V adalah sebuah diagonal matriks (elemennyaadalah nilai singular value dari X). U disebut left-singular vectors yang ter-susun atas eigenvector dari XXT . Sementara, W disebut right-singular vec-tors yang tersusun atas eigenvector dari XTX.

3 Banyaknya training data.

Page 4: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

148 12 Autoencoder

Misalkan kita mempunyai sebuah matriks lain V berukuran K×K, yaitumodifikasi matriks V dengan mengganti sejumlah elemen diagonalnya menjadi0 (analogi seperti menghapus beberapa baris dan kolom yang dianggap kurangpenting). Sebagai contoh, perhatikan ilustrasi berikut!

V =

α1 0 0 0 00 α2 0 0 00 0 α3 0 00 0 0 α4 0

V =

α1 0 00 α2 00 0 α3

Kita juga dapat me-nol-kan sejumlah baris dan kolom pada matriks U dan

W menjadi U (N ×K) dan W (K ×F ). Apabila kita mengalikan semuanya,

kita akan mendapat matriks X yang disebut low rank approximation darimatriks asli X, seperti diilustrasikan pada persamaan 12.3.

X = U V W (12.3)

Suatu baris dari matriks E = U V dianggap sebagai aproksimasi barismatriks X berdimensi tinggi [1]. Artinya, menghitung dot-product Ei · Ej =

Xi·Xj . Artinya, operasi pada matriks aproksimasi (walaupun berdimensi lebihrendah), kurang lebih melambangkan operasi pada matriks asli. Konsep inimenjadi fundamental autoencoder yang akan dibahas pada subbab berikutnya.Matriks aproksimasi ini memanfaatkan sejumlah K arah paling berpengaruhpada data. Dengan analogi tersebut, sama seperti mentransformasi data kebentuk lain dimana data hasil transformasi memiliki varians yang tinggi (ingatkembali materi PCA).

12.3 Ide Dasar Autoencoder

Seperti yang sudah dijelaskan autoencoder adalah neural network yang mampumerekonstruksi input. Ide dasar autoencoder tidak jauh dari konsep dekom-posisi/dimentionality reduction menggunakan singular value decomposition.

Diberikan dataset X, kita ingin mensimulasikan pencarian matriks X yangmerupakan sebuah low rank approximation dari matriks asli. Arsitektur dasarautoencoder diberikan pada Gambar 12.1. Kita memberi input matriks Xpada autoencoder, kemudian ingin autoencoder tersebut menghasilkan matriksyang sama. Dengan kata lain, desired output sama dengan input. Apabila di-hubungkan dengan pembahasan ANN pada bab sebelumnya, error functionuntuk melatih autoencoder diberikan pada persamaan 12.4, dimana y adalahoutput dari jaringan dan Z adalah dimensi output, N adalah banyaknya in-stans dan xi adalah data ke-i (feature vector ke-i).

E(θ) =1

N

Z∑i=j

(xi[j] − yi[j]

)2(12.4)

Page 5: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.3 Ide Dasar Autoencoder 149

Persamaan 12.4 dapat kita tulis kembali sebagai persamaan 12.5, dimana fmelambangkan fungsi aktivasi dan θ adalah ANN (kumpulan weight matri-ces)4.

E(θ) =1

N

Z∑j=1

(xi[j] − f(xi, θ)[j]

)2(12.5)

Seperti yang sudah dijelaskan sebelumnya, desired output sama dengan input.Tetapi seperti yang kamu ketahui, mencapai loss sebesar 0% adalah hal yangsusah. Dengan demikian, kamu dapat memahami secara intuitif bahwa au-toencoder melakukan aproksimasi terhadap data asli. Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5.Perhatikan, hidden layer/coding adalah E = U V. Dengan kata lain, kita

Gambar 12.2. Hubungan autoencoder dan singular value decomposition (analogi)

dapat melakukan operasi dot-product pada coding untuk merepresentasikandot-product pada data asli X. Ini adalah ide utama autoencoder, yaitu meng-aproksimasi/mengkompresi data asli menjadi bentuk lebih kecil coding. Ke-mudian, operasi pada bentuk coding merepresentasikan operasi pada datasebenarnya.

Autoencoder terdiri dari encoder (sebuah neural network) dan decoder(sebuah neural network). Encoder merubah input ke dalam bentuk dimensilebih kecil (dapat dianggap sebagai kompresi). Decoder berusaha merekon-struksi coding menjadi bentuk aslinya. Secara matematis, kita dapat menulisautoencoder sebagai persamaan 12.6, dimana dec melambangkan decoder, enc

4 Pada banyak literatur, kumpulan weight matrices ANN sering dilambangkan den-gan θ

5 Hanya sebuah analogi.

Page 6: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

150 12 Autoencoder

melambangkan encoder dan x adalah input. Encoder diberikan pada per-samaan 12.7 yang berarti melewatkan input pada suatu layer di neural net-work untuk menghasilkan representasi x berdimensi rendah, disebut codingc. U dan α melambangkan weight matrix dan bias.

f(d, θ) = dec(enc(x)) (12.6)

c = enc(x) = g(x,U, α) = σ(x ·U + α) (12.7)

Representasi c ini kemudian dilewatkan lagi pada suatu layer untuk merekon-struksi kembali input, kita sebut sebagai decoder. Decoder diberikan pada per-samaan 12.8 dimana W dan β melambangkan weight matrix dan bias. Baikpada fungsi encoder dan decoder, σ melambangkan fungsi aktivasi.

f(d, θ) = dec(c) = h(c,W, β) = σ(c ·W + β) (12.8)

Pada contoh sederhana ini, encoder dan decoder diilustrasikan sebagai sebuahlayer. Kenyataannya, encoder dan decoder dapat diganti menggunakan sebuahneural network dengan arsitektur kompleks.

Sekarang kamu mungkin bertanya-tanya, bila autoencoder melakukanhal serupa seperti singular value decomposition, untuk apa kita menggu-nakan autoencoder? (mengapa tidak menggunakan aljabar saja?) Berbedadengan teknik SVD, teknik autoencoder dapat juga mempelajari fitur non-linear6. Pada penggunaan praktis, autoencoder adalah neural network yangcukup kompleks (memiliki banyak hidden layer). Dengan demikian, kita da-pat ”mengetahui” berbagai macam representasi atau transformasi data.Framework autoencoder yang disampaikan sebelumnya adalah frameworkdasar. Pada kenyataannya, masih banyak ide lainnya yang bekerja denganprinsip yang sama untuk mencari coding pada permasalahan khusus. Outputdari neural network juga bisa tidak sama input-nya, tetapi tergantung per-masalahan (kami akan memberikan contoh persoalan word embedding). Selainitu, autoencoder juga relatif fleksibel; dalam artian saat menambahkan databaru, kita hanya perlu memperbaharui parameter autoencoder saja. Kamisarankan untuk membaca paper [67, 68] perihal penjelasan lebih lengkap ten-tang perbedaan dan persamaan SVD dan autoencoder secara lebih matematis.

Apabila kamu hanya ingin mengerti konsep dasar representation learn-ing, kamu dapat berhenti membaca sampai subbab ini. Secara sederhanarepresentation learning adalah teknik untuk mengkompresi input ke dalamdimensi lebih rendah tanpa (diharapkan) ada kehilangan informasi. Operasivektor (dan lainnya) pada level coding merepresentasikan operasi pada ben-tuk aslinya. Untuk pembahasan autoencoder secara lebih matematis, kamudapat membaca pranala ini7. Apabila kamu ingin mengetahui lebih jauh con-toh penggunaan representation learning secara lebih praktis, silahkan lan-jutkan membaca materi subbab berikutnya. Buku ini akan memberikan contoh

6 Hal ini abstrak untuk dijelaskan karena membutuhkan pengalaman.7 https://jaan.io/what-is-variational-autoencoder-vae-tutorial/

Page 7: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.4 Representing Context: Word Embedding 151

penggunaan representation learning pada bidang natural language processing(NLP).

12.4 Representing Context: Word Embedding

Pada domain NLP, kita ingin komputer mampu mengerti bahasa selayaknyamanusia mengerti bahasa. Misalkan komputer mampu mengetahui bahwa“meja” dan “kursi” memiliki hubungan yang erat. Hubungan seperti ini tidakdapat terlihat berdasarkan teks tertulis, tetapi kita dapat menyusun kamushubungan kata seperti WordNet8. WordNet memuat ontologi kata sepertihipernim, antonim, sinonim. Akan tetapi, hal seperti ini tentu sangat mele-lahkan, seumpama ada kata baru, kita harus memikirkan bagaimana hubun-gan kata tersebut terhadap seluruh kamus yang sudah dibuat. Pembuatankamus ini memerlukan kemampuan para ahli linguistik.

Oleh sebab itu, kita harus mencari cara lain untuk menemukan hubun-gan kata ini. Ide utama untuk menemukan hubungan antarkata adalah sta-tistical semantics hypothesis yang menyebutkan pola penggunaan katadapat digunakan untuk menemukan arti kata [69]. Contoh sederhana, katayang muncul pada “konteks” yang sama cenderung memiliki makna yangsama. Perhatikan “konteks” dalam artian NLP adalah kata-kata sekitar (sur-rounding words)9; contohnya kalimat ”budi menendang bola”, “konteks” dari“bola” adalah “budi menendang”. Kata “cabai” dan “permen” pada keduakalimat “budi suka cabai” dan “budi suka permen” memiliki kaitan makna,dalam artian keduanya muncul pada konteks yang sama. Sebagai manusia,kita tahu ada keterkaitan antara “cabai” dan “permen” karena keduanya bisadimakan.

Berdasarkan hipotesis tersebut, kita dapat mentransformasi kata menjadisebuah bentuk matematis dimana kata direpresentasikan oleh pola penggu-naannya [59]. Arti kata embedding adalah transformasi kata (beserta kon-teksnya) menjadi bentuk matematis (vektor). “Kedekatan hubungan makna”(semantic relationship) antarkata kita harapkan dapat tercermin pada op-erasi vektor. Salah satu metode sederhana untuk merepresentasikan kata seba-gai vektor adalah Vector Space Model . Konsep embedding dan autoencodersangatlah dekat, tapi kami ingin menakankan bahwa embedding adalah bentukrepresentasi konteks.

Semantic relationship dapat diartikan sebagai attributional ataurelational similarity . Attributional similarity berarti dua kata memilikiatribut/sifat yang sama, misalnya anjing dan serigala sama-sama berkaki em-pat, menggongong, serta mirip secara fisiologis. Relational similarity berartiderajat korespondensi, misalnya anjing : menggongong memiliki hubunganyang erat dengan kucing : mengeong.

8 https://wordnet.princeton.edu/9 Selain surrounding words, konteks dalam artian NLP dapat juga berupa kalimat,

paragraph, atau dokumen.

Page 8: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

152 12 Autoencoder

Dokumen 1 Dokumen 2 Dokumen 3 Dokumen 4 · · ·

King 1 0 0 0 · · ·Queen 0 1 0 1 · · ·Prince 1 0 1 0 · · ·Princess 0 1 0 1 · · ·· · ·

Tabel 12.1. Contoh 1-of-V encoding

12.4.1 Vector Space Model

Vector space model (VSM)10 adalah bentuk embedding yang relatif sudahcukup lama tapi masih digunakan sampai saat ini. Pada pemodelan ini, kitamembuat sebuah matriks dimana baris melambangkan kata, kolom melam-bangkan dokumen. Metode VSM ini selain mampu menangkap hubungan an-tarkata juga mampu menangkap hubungan antardokumen (to some degree).Asal muasalnya adalah statistical semantics hypothesis. Tiap sel pada matriksberisi nilai 1 atau 0. 1 apabila katai muncul di dokumeni dan 0 apabila tidak.Model ini disebut 1-of-V/1-hot encoding dimana V adalah ukuran kosakata. Ilustrasi dapat dilihat pada Tabel 12.1.

Akan tetapi, 1-of-V encoding tidak menyediakan banyak informasi untukkita. Dibanding sangat ekstrim saat mengisi sel dengan nilai 1 atau 0 saja, kitadapat mengisi sel dengan frekuensi kemunculan kata pada dokumen, disebutterm frequency (TF). Apabila suatu kata muncul pada banyak dokumen,kata tersebut relatif tidak terlalu ”penting” karena muncul dalam berbagaikonteks dan tidak mampu membedakan hubungan dokumen satu dan doku-men lainnya (inverse document frequency/IDF). Formula IDF diberikanpada persamaan 12.9. Tingkat kepentingan kata berbanding terbalik denganjumlah dokumen dimana kata tersebut dimuat. N adalah banyaknya doku-men, ‖dεD; tεd‖ adalah banyaknya dokumen dimana kata t muncul.

IDF (t,D) = log

(N

|dεD; tεd|

)(12.9)

Dengan menggunakan perhitungan TF-IDF yaitu TF ∗IDF untuk mengisisel pada matriks Tabel 12.1, kita memiliki lebih banyak informasi. TF-IDFsampai sekarang menjadi baseline pada information retrieval . Misalkankita ingin menghitung kedekatan hubungan antar dua dokumen, kita hitungcosine distance antara kedua dokumen tersebut (vektor suatu dokumendisusun oleh kolom pada matriks). Apabila kita ingin menghitung kedekatanhubungan antar dua kata, kita hitung cosine distance antara kedua kata terse-but dimana vektor suatu kata merupakan baris pada matriks. Tetapi sepertiintuisi yang mungkin kamu miliki, mengisi entry dengan nilai TF-IDF pun

10 Mohon bedakan dengan VSM (vector space model) dan SVM (support vectormachine)

Page 9: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.4 Representing Context: Word Embedding 153

akan menghasilkan sparse matrix.

Statistical semantics hypothesis diturunkan lagi menjadi empat macamhipotesis [69]:

1. Bag of words2. Distributional hypothesis3. Extended distributional hypothesis4. Latent relation hypothesis

Silakan pembaca mencari sumber tersendiri untuk mengerti keempat hipotesistersebut atau membaca paper Turney dan Pantel [69].

12.4.2 Sequential, Time Series dan Compositionality

Bahasa manusia memiliki dua macam karakteristik yaitu adalah data berben-tuk sequential data dan memenuhi sifat compositionality. Sequential dataadalah sifat data dimana suatu kemunculan datai dipengaruhi oleh data se-belumnya (datai−1, datai−2, ...). Perhatikan kedua kalimat berikut:

1. Budi melempar bola.2. Budi melempar gedung bertingkat.

Pada kedua kalimat tersebut, kalimat pertama lebih masuk akal karenabagaimana mungkin seseorang bisa melempar “gedung bertingkat”. Kepu-tusan kita dalam memilih kata berikutnya dipengaruhi oleh kata-kata se-belumnya, dalam hal ini “Budi melempar” setelah itu yang lebih masuk akaladalah “bola”. Contoh lain adalah data yang memiliki sifat time seriesyaitu gelombang laut, angin, dan cuaca. Kita ingin memprediksi data den-gan rekaman masa lalu, tapi kita tidak mengetahui masa depan. Kita mampumemprediksi cuaca berdasarkan rekaman parameter cuaca pada hari-hari se-belumnya. Ada yang berpendapat beda time series dan sequential (sekuen-sial) adalah diketahuinya sekuens kedepan secara penuh atau tidak. Penulistidak dapat menyebutkan time series dan sekuensial sama atau beda, silahkanpembaca menginterpretasikan secara bijaksana.

Data yang memenuhi sifat compositionality berarti memiliki strukturhirarkis. Struktur hirarkis ini menggambarkan bagaimana unit-unit lebih ke-cil berinteraksi sebagai satu kesatuan. Artinya, interpretasi/pemaknaan unityang lebih besar dipengaruhi oleh interpretasi/pemaknaan unit lebih kecil(subunit). Sebagai contoh, kalimat “saya tidak suka makan cabai hijau”. Unit”cabai” dan ”hijau” membentuk suatu frasa ”cabai hijau”. Mereka tidak bisadihilangkan sebagai satu kesatuan makna. Kemudian interaksi ini naik lagimenjadi kegiatan “makan cabai hijau” dengan keterangan “tidak suka”, bahwaada seseorang yang “tidak suka makan cabai hijau” yaitu “saya”. Pemecahankalimat menjadi struktur hirarkis berdasarkan syntactical role disebut con-stituent parsing, contoh lebih jelas pada Gambar 12.3. N adalah noun, D

Page 10: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

154 12 Autoencoder

adalah determiner, NP adalah noun phrase, VP adalah verb phrase, dan Sadalah sentence. Selain bahasa manusia, gambar juga memiliki struktur hi-rarkis. Sebagai contoh, gambar rumah tersusun atas tembok, atap, jendela,dan pintu. Tembok, pintu, dan jendela membentuk bagian bawah rumah; laludigabung dengan atap sehingga membentuk satu kesatuan rumah.

Gambar 12.3. Contoh constituent tree11

12.4.3 Distributed Word Representation

Seperti yang disebutkan pada bagian sebelumnya, kita ingin hubungan kata(yang diinferensi dari konteksnya) dapat direpresentasikan sebagai operasivektor seperti pada ilustrasi Gambar 12.4. Kata “raja” memiliki sifat-sifatyang dilambangkan oleh suatu vektor (misal 90% aspek loyalitas, 80% ke-bijaksanaan, 90% aspek kebangsaan, dst), begitu pula dengan kata “pria”,“wanita”, dan “ratu”. Jika sifat-sifat yang dimiliki “raja” dihilangkan bagiansifat-sifat “pria”-nya, kemudian ditambahkan sifat-sifat “wanita” maka ideal-nya operasi ini menghasilkan vektor yang dekat kaitannya dengan “ratu”. Den-gan kata lain, raja yang tidak maskulin tetapi fenimin disebut ratu. Sepertiyang disebutkan sebelumnya, ini adalah tujuan utama embedding yaitu merep-resentasikan “makna” kata sebagai vektor sehingga kita dapat memanipulasibanyak hal berdasarkan operasi vektor. Hal ini mirip (tetapi tidak sama)dengan prinsip singular value decomposition dan autoencoder yang telah di-jelaskan sebelumnya.

Selain vector space model, apakah ada cara lain yang mampu merep-resentasikan kata dengan lebih baik? Salah satu kekurangan VSM adalahtidak memadukan sifat sekuensial pada konstruksi vektornya. Cara lebih baikditemukan oleh [43, 44] dengan ekstensi pada [65]. Idenya adalah menggu-nakan teknik representation learning dan prinsip statistical semantics hypoth-esis. Metode ini lebih dikenal dengan sebutan word2vec. Tujuan word2vec

11 source: Pinterest

Page 11: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.4 Representing Context: Word Embedding 155

Gambar 12.4. Contoh operasi vektor kata

masih sama, yaitu merepresentasikan kata sebagai vektor, sehingga kita dapatmelakukan operasi matematis terhadap kata. Encoder -nya berbentuk Conti-nous bag of words (CBOW) atau Skip Gram. Pada CBOW, kita mem-prediksi kata diberikan suatu “konteks”. Pada arsitektur ”Skip Gram” kitamemprediksi konteks, diberikan suatu kata. Ilustrasi dapat dilihat pada Gam-bar 12.5. Bagian projection layer pada Gambar 12.5 adalah coding layer. Kamiakan memberikan contoh CBOW secara lebih detil.

Gambar 12.5. CBOW vs Skip Gram [44]

Perhatikan Gambar 12.6. Diberikan sebuah konteks “si kucing duduk ...tiker”. Kita harus menebak apa kata pada “...” tersebut. Dengan menggu-nakan teknik autoencoder, output layer adalah distribusi probabilitas kataipada konteks tersebut. Kata yang menjadi jawaban adalah kata dengan proba-

Page 12: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

156 12 Autoencoder

Gambar 12.6. CBOW

bilitas terbesar, misalkan pada kasus ini adalah “beralaskan”. Dengan arsitek-tur ini, prinsip sekuensial atau time series dan statistical semantics hypothesisterpenuhi (to a certain extent). Teknik ini adalah salah satu contoh penggu-naan neural network untuk unsupervised learning. Kita tidak perlu mengko-respondensikan kata dan output yang sesuai karena input vektor didapat daristatistik penggunaan kata. Agar lebih tahu kegunaan vektor kata, kamu da-pat mencoba kode dengan bahasa pemrograman Python 2.7 yang disediakanpenulis12. Buku ini telah menjelaskan ide konseptual word embedding padalevel abstrak. Apabila kamu tertarik untuk memahami detilnya secara matem-atis, kamu dapat membaca berbagai penelitian terkait13. Silahkan baca paperoleh Mikolov [43, 44] untuk detil implementasi word embedding.

12.4.4 Distributed Sentence Representation

Kita sudah dapat merepresentasikan kata menjadi vektor, selanjutnya kitaingin mengonversi unit lebih besar (kalimat) menjadi vektor. Salah satu carapaling mudah adalah menggunakan nilai rata-rata representasi word embed-ding untuk semua kata yang ada pada kalimat tersebut (average of its individ-ual word embeddings). Cara ini sering digunakan pada bidang NLP dan cukuppowerful, sebagai contoh pada paper oleh Putra dan Tokunaga [70]. Pada NLP,sering kali kalimat diubah terlebih dahulu menjadi vektor sebelum dilewatkanpada algoritma machine learning, misalnya untuk analisis sentimen (kalimatbersentimen positif atau negatif). Vektor ini yang nantinya menjadi featurevector bagi algoritma machine learning.

12 https://github.com/wiragotama/GloVe_Playground13 Beberapa orang berpendapat bahwa evil is in the detail.

Page 13: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.4 Representing Context: Word Embedding 157

Kamu sudah tahu bagaimana cara mengonversi kata menjadi vektor, un-tuk mengonversi kalimat menjadi vektor cara sederhananya adalah merata-ratakan nilai vektor kata-kata pada kalimat tersebut. Tetapi dengan carasederhana ini, sifat sekuensial dan compositional pada kalimat tidak ter-penuhi. Sebagai contoh, kalimat “anjing menggigit Budi” dan “Budi meng-gigit anjing” akan direpresentasikan sebagai vektor yang sama karena terdiridari kata-kata yang sama. Dengan demikian, representasi kalimat sederhanadengan merata-ratakan vektor kata-katanya juga tidaklah sensitif terhadapurutan14. Selain itu, rata-rata tidak sensitif terhadap compositionality. Misalfrase “bukan sebuah pengalaman baik” tersusun atas frase “bukan” yang di-ikuti oleh “sebuah pengalaman baik”. Rata-rata tidak mengetahui bahwa“bukan” adalah sebuah modifier untuk sebuah frase dibelakangnya. Senti-men dapat berubah bergantung pada komposisi kata-katanya (contoh padaGambar 12.7).

Gambar 12.7. Contoh analisis sentimen (Stanford)15

Cara lainnya adalah meng-encode kalimat sebagai vektor menggunakanrecursive autoencoder. Recursive berarti suatu bagian adalah komposisi daribagian lainnya. Penggunaan recursive autoencoder sangat rasional berhubungdata memenuhi sifat compositionality yang direpresentasikan dengan baik olehtopologi recursive neural network. Selain itu, urutan susunan kata-kata jugatidak hilang. Untuk melatih recursive autoencoder, output dari suatu layeradalah rekonstruksi input, ilustrasi dapat dilihat pada Gambar 12.8. Padasetiap langkah recursive, hidden layer/coding layer berusaha men-decode ataumerekonstruksi kembali vektor input.

Lebih jauh, untuk sentimen analisis pada kata, kita dapat menambahkanoutput pada setiap hidden layer, yaitu sentimen unit gabungan, seperti pada

14 Karena ini recurrent neural network bagus untuk language modelling.15 http://nlp.stanford.edu:8080/sentiment/rntnDemo.html

Page 14: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

158 12 Autoencoder

Gambar 12.8. Contoh recursive autoencoder

Gambar 12.9. Contoh recursive autoencoder dengan sentiment[62]

Gambar 12.9. Selain menggunakan recursive autoencoder, kamu juga dapatmenggunakan recurrent autoencoder. Kami silahkan pada pembaca untukmemahami recurrent autoencoder. Prinsipnya mirip dengan recursive autoen-coder.

Teknik yang disampaikan mampu mengonversi kalimat menjadi vektor,lalu bagaimana dengan paragraf, satu dokumen, atau satu frasa saja? Teknikumum untuk mengonversi teks menjadi vektor dapat dibaca pada [64] yanglebih dikenal dengan nama paragraph vector atau doc2vec.

Page 15: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^

12.5 Tips 159

12.5 Tips

Bab ini menyampaikan penggunaan neural network untuk melakukan kom-presi data (representation learning) dengan teknik unsupervised learning. Halyang lebih penting untuk dipahami bahwa ilmu machine learning tidak berdirisendiri. Walaupun kamu menguasai teknik machine learning tetapi tidakmengerti domain dimana teknik tersebut diaplikasikan, kamu tidak akan bisamembuat learning machine yang memuaskan. Contohnya, pemilihan fitur ma-chine learning pada teks (NLP) berbeda dengan gambar (visual processing).Mengerti machine learning tidak semata-mata membuat kita bisa menyele-saikan semua macam permasalahan. Tanpa pengetahuan tentang domain ap-likasi, kita bagaikan orang buta yang ingin menyetir sendiri!

Soal Latihan

12.1. LSI dan LDA

(a) Jelaskanlah Latent Semantic Indexing (LSI) dan Latent Dirichlet Alloca-tion (LDA)!

(b) Apa persamaan dan perbedaan antara LSI, LDA, dan autoencoder?

12.2. Variational AutoencoderJelaskan apa itu Variational autoencoder ! Deskripsikan perbedaannya denganautoencoder yang sudah dijelaskan pada bab ini?

Page 16: 12 Autoencoder - wiragotama.github.io · Gambar 12.2 mengilus-trasikan hubungan antara autoencoder dan singular value decomposition5. Perhatikan, hidden layer/coding adalah E = U^