Siamese Network: Neural network untuk menguji kemiripan

Bayangkan kita diminta membuat model machine learning yang akan digunakan untuk presensi mahasiswa menggunakan foto wajah. Universitas yang meminta dibuatkan model tersebut memiliki 10,000 mahasiswa. Jika kita mengasumsikan ini adalah permasalahan klasifikasi, apakah itu berarti ini adalah klasifikasi citra dengan jumlah kelas 10,000?

Klasifikasi dengan 10,000 class??

Itu jauh lebih banyak daripada data benchmark yang biasa digunakan klasifikasi citra, Imagenet, yang hanya 1000 kelas! Selain itu, tidak mudah juga untuk mendapatkan data per kelasnya. Apakah setiap mahasiswa harus difoto ratusan kali agar dapat data latih yang representatif? lalu bagaimana jika ada mahasiswa baru? nah, di sinilah Siamese Network bisa jadi salah satu solusinya.

Siamese Network

Siamese network adalah jenis arsitektur neural network di mana menerima dua input, yang masing-masingnya masuk ke subnetwork yang sama lalu digabungkan untuk dihitung kemiripan antara dua input tersebut.

Siamese network
Siamese Network untuk identifikasi wajah

Siamese network digunakan untuk menghitung kemiripan dua data. Kemiripan antara dua data di sini tergantung pada kasusnya, misal kemiripan wajah dari orang yang sama namun memiliki dua foto yang berbeda, atau kemiripan gaya berpakaian dari dua orang yang berbeda, dll. Model dilatih dengan menerima input pasangan data, dengan output yang dihasilkan bisa berupa biner (sama atau tidak) atau sebuah real value yang merepresentasikan tingkat tingkat kemiripan.

Siamese network tidak menspesifikkan arsitektur pada bagian subnetwork, asalkan dua arsitektur yang digunakan adalah sama (bentuk dan bobotnya). Kita bisa memakai konsep ini untuk beragam jenis data. Misalnya kita ingin mengecek kemiripan pertanyaan maka kita bisa menggunakan subnetwork berupa LSTM network, jika ingin mengecek kemiripan foto kita bisa gunakan CNN sebagai subnetworknya. Output dari subnetwork ini adalah vektor, dengan ukuran bebas (sebagai hyperparameter yang kita tentukan sendiri)

Ada banyak metode yang bisa dilakukan di bagian penggabungan (Merge) hasil dari dua subnetwork. Beberapa yang pernah saya tahu:

  • Hitung selisih absolut antar vektor output subnetwork lalu masukkan vektor selisihnya ke sebuah neural net,
  • Concat atau gabungkan kedua output lalu masukkan vektor gabungannya ke sebuah neural net,
Continue reading
GRE General

Pengalaman Tes GRE General Online at Home

Alhamdulillah, tahun ini dapat pengalaman baru untuk ambil GRE General Test at Home (Tes GRE online di rumah). Saya ambil test ini karena suatu keperluan yang mengharuskan menyertakan nilai GRE meskipun tidak ada syarat minimalnya. Karenanya, saya ambil test GRE ini dengan persiapan yang super minimal. Jadi jangan berharap artikel ini akan bercerita tentang tips-trik menghadapi GRE, saya hanya akan berbagi pengalaman mengambil GRE General Test at Home.

Bagi teman-teman yang tertarik untuk ambil kuliah ke luar negeri pasti pernah dengar tes GRE. Di beberapa kampus di luar negeri, selain sertifikat bahasa inggris, biasanya kita juga diwajibkan menyertakan nilai GRE dengan minimal tertentu. Tapi di beberapa kampus lain, GRE tidak wajib. Jadi, sebelum ambil test ini pastikan dengan betul apakah kalian perlu ambil test ini. Di Indonesia sendiri, saya malah belum pernah dengar tes GRE ini bisa digunakan untuk syarat masuk kuliah.

Tes GRE beda dengan tes IELTS atau TOEFL yang ada di mana-mana, tes GRE hanya ada di kota-kota tertentu saja, Yang saya tahu ada di Bandung, Jakarta, dan Surabaya. Tapi baru-baru ini ada opsi At Home Test, di mana kita bisa tes GRE di rumah online.

GRE General Test

Tes ini terdiri 3 bagian: Verbal, Quantitative , & Analytical Writing.

Verbal test, secara umum ada dua jenis soal di sini: memahami bacaan dan memilih kata. Apapun jenisnya, tantangan terbesar di tes ini adalah kosakata bahasa Inggrisnya. Sepanjang test kita akan berjumpa dengan kata-kata (luar biasa) sulit yang hampir tidak pernah saya temui .-. (“enervate”, “prodigal”, “laconic”, “calumny”, …) dan harus paham makna dan penggunaannya.

Quantitative test, (biasa hanya disebut “Quant”) sesuai namanya ini test matematika dasar. Meskipun dasar, test ini bukan sekadar aritmatika dasar kayak di test TPA di sini. Soalnya lebih sulit dan lebih tricky. Kita perlu ingat lagi rumus-rumus dasar geometri, kombinasi, permutasi, dan yang lebih penting hafal rumus saja tidak membantu.

Contoh Soal GRE General yang saya coba Indonesiakan (soal asli berbahasa Inggris)

Analytical Writing test, di test ini kita akan diminta menulis dua essay bahasa inggris yang tidak hanya benar secara grammar tapi juga harus analitis dan logis. Pada essay pertama kita akan diminta untuk menanggapi suatu isu dan pada essay kedua kita akan diminta membuat sanggahan secara logis dari pernyataan orang lain.

Continue reading

Representation Learning #NLP1

Istilah representation learning sering muncul pada paper-paper rujukan yang mengusulkan varian atau arsitektur baru suatu algoritma. Saat membaca paper (Zhang, 2018), berjudul “Learning Structured Representation for Text Classification via Reinforcement Learning”, saya baru tahu kalau penggunaan LSTM itu bisa disetarakan dengan BoW dalam hal representasi, dengan istilah representation learning. Jadi ingat, memang benar ada conference yang namanya ICLR: The International Conference on Learning Representations, dan banyak paper rujukan utama perkembangan machine learning berasal dari situ. Oke kembali lagi, jadi pembagian representasi untuk kebutuhan fitur task klasifikasi teks bisa jadi 4 menurut Zhang.

  1. Bag of words. Tidak memperhatikan urutan, termasuk di dalamnya Deep Average Network (Iyyer, 2015) dan Autoencoder (Liu, 2015). Keduanya saya belum baca kenapa bisa termasuk ke kategori ini.
  2. Sequence. Metode CNN, RNN, termasuk LSTM dan variannya, dikatakan bahwa mereka memperhatikan word order namun tanpa menggunakan struktur apapun. (Kalau word embedding seperti Word2Vec dan Fasttext, masuk di mana ya? Pembentukan inputnya melibatkan sekuens, karena antara kata konteks dan kata target merupakan kata-kata bertetangga, kan. Tapi untuk representasinya semua dikumpulkan menjadi satu begitu saja seperti dictionary, jadi saya masih skip dulu bagian ini.)
  3. Structured. Metode Recursive autoencoder (Socher 2011, 2013), dan Tree-structured LSTM (Tai, 2015) yang saya gunakan di tesis, masuk di kategori ini. Saya pernah baca, bahwa tree-structured network bisa disamakan atau memang bersumber dari metode recursive network pada awalnya. Belum tahu pasti, tapi yang terbayang mungkin berbeda dari segi implementasi yang satu dengan recursive looping, dan yang satu dengan objek tree. Atau mungkin juga memang benar-benar sama, tapi hanya beda istilah saja? (Akan update setelah menemukan pencerahan lagi. Surprisingly saya ternyata follow Socher ini di twitter sudah sejak lama, bahkan sebelum saya ambil S2 ataupun tesis Tree-LSTMM.)
  4. Attention-based. Metode attention ini setahu saya bersumber dari metode seq2seq, tapi dengan penambahan penekanan alias attention di bagian input tertentu. (Akan update setelah beneran ngerjain kasus attention.)

Sebagai catatan, paper Zhang yang saya sebutkan di awal sangat menekankan istilah “representasi struktur” di penelitian tersebut, yang berarti masuk di kategori ke-3 dari 4 kategori di atas. Namun setelah saya coba fahami metode yang mereka usulkan, saya lebih terpikirkan ke task tagging ketimbang struktur. Yang terbayang adalah seperti task POS Tagging, yang solusi pengerjaannya adalah dengan memprediksi tiap kata atau fragmen dengan suatu label atau tag. Walaupun memang Part of Speech ini, setelah berhasil diprediksi kemudian bisa disebut atau bisa menciptakan “struktur”, tentunya dari segi linguistik.

Sehingga, agak berbeda dengan kesan saya terhadap contoh metode di kategori ke-3 yakni Recursive autoencoder dan Tree-structured LSTM. Keduanya benar-benar memaparkan cara berpikir dengan “struktur”. Algoritma dirancang dengan flow sesuai struktur yang diusulkan, yang satu secara recursive, yang satunya dengan bentuk Tree. Sehingga untuk setiap input yang diproses mengikuti struktur yang didefinisikan, dihasilkan pula output representasi struktur yang sesuai.

On Policy dan Off Policy Learning #RL1

Sudah lewat setahun saya selesai tesis, tapi belum bisa sharing artikel di sini karena bingung mulai dari mana. Kebetulan momennya sekarang sedang revisi paper, jadinya saya harus belajar lagi. Dan tiap belajar pasti banyak sekali catatan yang saya buat, baik yang tuntas maupun yang mandeg. Maka dari itu, muncul ide tab Notes ini. Berisi catatan belajar yang belum layak jadi artikel, tapi sayang kalau dibuang. Ini adalah konten Notes yang pertama, dengan topik Reinforcement Learning.

Anyway, di tesis saya, saya menggunakan algoritma Q-Learning. Q-Learning di buku Reinforcement Learning: An Introduction (Sutton dan Barto) termasuk dalam Off Policy Temporal Different Learning.

Q-Learning

Rumus Q-value nya adalah seperti gambar di bawah (GeeksforGeeks), ini sesuai yang saya pakai di tesis.

Saat menentukan action dari next state St+1, bisa dilihat di dalam kurung pada notasi yang memuat max. Nah mengambil nilai max ini disebut dengan greedy. Dan greedy ini termasuk jenis policy. Jadi untuk next state, policy yang dipakai adalah greedy.

Sedangkan menentukan action di current state St, policy yang dipakai adalah epsilon greedy. Epsilon greedy, maksudnya kita punya parameter nilai epsilon. Nilai epsilon berubah di tiap episode, ini yang menentukan kita mau pakai policy mana. Ada dua pilihan mau memilih nilai max (greedy) atau memilih random.

Jadi di Q-Learning ini sekali proses ada dua jenis policy yang dipakai. Di awal pakai epsilon greedy, di akhir ditentukan pakainya mesti greedy, sekali lagi ini kasus di tesis saya. Nah disebut Off Policy, karena policy yang dipakai di awal current state, dimatikan, dan diganti policy yang lain untuk next statenya.

SARSA

Ini merupakan jenis algoritme RL, yang saya taunya dari paper rujukan reviewer buat revisi jurnal saya (Zhang, 2009). Ternyata, SARSA mirip sekali dengan Q-Learning karena merupakan modifikasinya. Bedanya, SARSA berjenis On-Policy.

Rumus Q-value nya:

Sesuai yang sudah dijelaskan di bagian Q-Learning, kalau Off Policy memakai dua jenis policy berbeda. Maka kalau On Policy, policy yang digunakan sama. Jadi semisal di awal current state pakai epsilon greedy, maka untuk next state juga pakai epsilon greedy. Maka dari itu di rumus di atas, perolehan Q-value untuk next state notasinya sama dengan Q-value untuk current state.