Pengalaman Menghadapi IELTS dalam 2-3 Minggu

Kita tahu tes IELTS beda dengan TOEFL ITP, dari sisi harga dan juga tingkat kesulitannya. Karenanya persiapan yang dilakukan “seharusnya” lebih matang, apalagi jika kita menarget nilai tertentu. Tapi, dalam beberapa kondisi kita bisa jadi terpaksa harus ambil IELTS dalam waktu yang singkat. Contoh yang saya alami, saya sudah 2x kepaksa harus ambil IELTS dengan waktu persiapan kurang dari 3 minggu, di awal tahun 2019 dan satu lagi di awal Juni lalu. Artikel ini akan sedikit cerita apa-apa yang saya siapkan dalam waktu sesingkat itu.

IELTS Simulation

Langkah pertama: daftar IELTS Simulation Test. Ini memang akan menambah biaya persiapan, sekitar 150-250rb, tetapi ini penting untuk memetakan sejauh apa kemampuan kita. Ingat, dua dari empat yang diujikan tidak bisa dinilai mandiri (Writing dan Speaking), jadi sangat penting untuk simulasi. Ada banyak lembaga penyedia IELTS simulation test, di Jogja ada Elti dan IONs, kalau di Klaten saya sempat ambil simulation test di Real English Klaten. Beberapa hal yang perlu diperhatikan sebelum simulation test:

  1. Pastikan ambil simulation di minggu awal persiapan. Sehingga ada cukup waktu untuk memetakan dan mengimprove kemampuan kita.
  2. Lakukan persiapan menghadapi simulation, pahami bentuk soalnya sehingga kita punya bekal.
  3. Perhatikan detail-detail yang dirasakan selama simulatin sebagai catatan untuk persiapan di hari H. Misalnya, ingat pada soal jenis apa kita lemah, apa strategi pengerjaan yang paling nyaman/baik bagi kita, bahkan sampai perlukah kita pakai Jaket untuk menghindari kedinginan, dan sebagainya.

Sebagai contoh, setelah simulation terakhir saya, saya mencatat beberapa poin:

  • Saya lemah di writing, khususnya untuk membuat paragraf pembuka/pertama
  • Saya lemah di writing dalam memanajemen waktu dan tulisan saya akan memburuk ketika semakin panik
  • Saya tidak bisa tenang di awal speaking yang bikin tidak terkontrol ucapannya (bisa out of topic)
  • Saya bisa kehabisan vocab untuk topik yang sulit
  • Saya sering ngantuk dan tidak fokus di tengah tes reading
  • Saya beberapa kali gagal mengeja kata di tes listening

Setelah bisa memetakan apa kekurangan dan kelebihan kita, kita bisa mulai memanfaatkan waktu belajar kita lebih efisien.

Persiapan Writing

Di IELTS ada dua tugas writing, yang pertama adalah menceritakan sebuah diagram dalam 150 kata, dan yang kedua adalah membuat essay dengan topik tertentu dalam 250 kata. Tugas kedua proporsi nilainya 70%, jadi walaupun lebih sulit harus dimaksimalkan.

Yang saya lakukan dalam 2-3 minggu:

Continue reading
batch epoch step

Batch, Epoch, Step. Istilah-istilah pada Gradient Descent

Ketiga istilah di atas sering muncul ketika kita sedang belajar atau implementasi model neural network, khususnya ketika membahas Gradient Descent. Batch, epoch, dan step, adalah sebagian istilah yang digunakan menjelaskan proses iterasi di Gradient Descent. Istilah-istilah itu tidak hanya ditemukan di buku teori, tetapi juga di dokumentasi-dokumentasi framework yang akan kita gunakan. Karenanya, sangat penting untuk bisa membedakannya dengan baik.

Gradient Descent

Gradient descent adalah algoritma optimasi yang digunakan untuk menemukan parameter yang menghasilkan nilai minimum pada suatu fungsi. Dalam kasus neural network, Gradient Descent digunakan untuk menemukan bobot model terbaik yang menghasilkan error minimum. Detail perhitungan gradient descent contohnya ada pada partikel sebelumnya, sedangkan implementasinya dapat di baca di artikel berikut ini.

Secara umum, langkah yang dilakukan untuk mencerdaskan model neural network menggunakan gradient descent adalah sebagai berikut:

  1. Sebuah input-xi masuk ke model neural network, lalu menghasilkan output / error Ei (forward propagation)
  2. Gradient descent terhadap output / error E untuk mengupdate nilai bobot model W (backward propagation)
  3. Lakukan kedua langkah di atas terhadap semua data berkali-kali hingga diperolah model terbaik.

Untuk kemudahan penjelasan, poin no. 1 di atas akan kami sebut sebagai Langkah 1 (bold dengan warna orange) dan poin no. 2 akan kami sebut sebagai Langkah 2 (bold dengan warna ungu)

Langkah-langkah di atas masih cukup umum, Jika ada lebih dari satu data langkahnya seperti apa? Dari sinilah akan muncul istilah-istilah di awal tadi. Misalkan kita memiliki 100 data latih, maka urutan yang dilakukan pada Gradient Descent adalah:

  1. Lakukan Langkah 1 untuk setiap data (dari data latih ke 1 hingga 100), sehingga diperoleh 100 nilai eror Ei
  2. Dari 100 nilai error itu, kita hitung rata-ratanya untuk memperoleh sebuah nilai error E
  3. Lakukan Langkah 2 menggunakan E untuk mengupdate W (hanya 1x)

Langkah diatas terjadi dalam satu epoch. Untuk mendapatkan model yang baik kita perlu mengulangi langkah di atas lebih dari satu kali (beberapa epoch).

Definisi sebuah Epoch, adalah ketika kita telah menggunakan semua data latih pada proses pelatihan. Pada contoh di atas, kita sudah melalui sebuah epoch karena kita telah menggunakan 100 data latih yang kita miliki.

Pada contoh tersebut sebuah epoch terdiri dari 100 kali Langkah 1 dan 1 kali Langkah 2.

Continue reading

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

Deep Learning dalam 6 Baris dengan Fastai dan Pytorch

Sebelumnya maaf semisal judulnya agak “heboh” dan terkesan click-bait 😀 tapi di artikel ini beneran saya ingin menunjukkan bahwa deep learning, khususnya image classification dengan CNN sebenarnya dapat dengan mudah dilakukan hanya dengan 6 baris kode berikut menggunakan library Fastai dan Pytorch:

dibuat menggunakan https://carbon.now.sh, versi raw ada di bawah

Artikel ini berfokus pada pengenalan singkat tentang fastai dan juga penjelasan tentang kode di atas. Tutorial lebih detail dan mendalam tentang fastai insyaAllah akan kami coba buat di artikel lain.

Berawal dari Pytorch vs Tensorflow

Sebelum kita masuk lebih dalam tentang Fastai, kita akan me-refresh singkat tentang library atau framework di deep learning. Bagi yang belum tahu, ada dua library besar yang saat ini cukup sering digunakan, yakni Pytorch dan Tensorflow. Pytorch dibuat oleh Facebook sedangkan Tensorflow oleh Google. Keduanya memiliki beragam fitur yang mendukung deep learning, salah satunya Autograd yang pernah saya bahas di artikel ini. Nah, sering kali bagi yang baru belajar deep learning akan bertanya:

Pilih pakai Pytorch atau Tensorflow?

Jawaban salah

Tensorflow itu lebih mudah dipelajari dan digunakan daripada Pytorch. Itu jawaban yang sering saya dengar. Kenapa salah? karena saya yakin kebanyakan orang yang jawab itu dia bukan sedang membandingkan Tensorflow yang murni, melainkan library tambahan yang berada di atas Tensorflow, yakni Keras. Tensorflow yang murni bisa dibilang lumayan ribet juga loh untuk dipelajari dan digunakan (apalagi pas masih versi 1.x di tahun 2019)

Jadi sekilas sejarah, dulu library deep learning itu memang susah-susah pemakaiannya (low-level). Library generasi awal, Theano, bahkan ngodingnya harus “jungkir balik” alur mikirnya. Karenanya, dibutuhkan library lagi di atasnya yang high-level (mudah dipahami dan digunakan) namun tetap terintegrasi dengan library yang low-level, lahirlah salah satunya Keras. Sekarang Keras sudah sangat terintegerasi dengan Tensorflow bahkan tidak perlu di-install terpisah. Tutorial Tensorflow-Keras pernah saya tuliskan di sini.

Jawaban benar
dari salah satu developer utama Pytorch

Saat ini bisa dibilang Pytorch dan Tensorflow (khususnya versi 2) sangat mirip. Keduanya sama-sama smoothly bisa digunakan untuk hampir kebanyakan kebutuhan riset dan sehari-hari. Jadi apapun librarynya silakan pilih saja, dan yang terpenting, kuasai dulu sebelum coba library lain.

Kembali ke Jawaban yang salah di atas, ketika kita membandingkan Keras dengan Pytorch maka bisa dibilang kurang apple-to-apple. Karena Keras pada dasarnya adalah high-level library sedangkan Pytorch adalah low-level library, jadi jelas Keras terlihat lebih mudah pemakaiannya. Nah, di artikel ini saya akan jelaskan salah satu high-level library paling populer untuk Pytorch, yakni Fastai.

Continue reading