Gradient Descent Dalam Mencari Tempat Nongkrong (Part 2)
Dulu gue pernah nulis soal gimana lu bisa make Gradient Descent buat nyari kafe yang pas tanpa harus muter-muter abisin bensin. Teorinya indah banget di atas kertas: lu itung cost function (kekecewaan), terus lu melangkah pelan-pelan ke arah yang bikin cost itu turun (local minimum).
Tapi kemaren malem minggu, algoritma gue crash total.
Gue dan temen-temen nyoba implementasi teori itu. Kita nyebutnya eksperimen lapangan. Tapi kita lupa masukin satu variabel penting ke dalam model kita: noise dari data real-time, alias tukang parkir liar, macetnya perempatan Dago, sama gerimis yang tiba-tiba turun.
Di machine learning, kalo lu pake Gradient Descent biasa (Batch Gradient Descent), lu ngitung error dari seluruh dataset sebelum ngambil satu langkah. Di dunia nyata, ini ibarat lu berhentiin motor di pinggir jalan, buka Google Maps, baca 100 review dari 10 kafe terdekat, baru mutusin mau belok ke mana. Lambat banget. Pas lu mutusin mau ke kafe A, eh ujan turun dan meja outdoornya udah ga bisa dipake.
Karena kita ngerasa pinter, kita ganti pendekatan jadi Stochastic Gradient Descent (SGD). Kita milih arah secara random, terus update rute setiap nemu perempatan berdasarkan insting dan situasi saat itu (satu batch data doang). Kalo jalannya macet, kita belok kiri. Kalo jalannya sepi, kita gas terus.
Awalnya seru. Tapi lama-lama kita nyadar kelemahan fatal SGD: jalurnya zigzag berantakan gara-gara terlalu sensitif sama noise. Kita masuk gang kecil yang keliatannya sepi, taunya ujungnya ditutup portal gara-gara ada hajatan nikahan. Kita muter balik (cost function meledak). Terus kita nemu jalan alternatif yang mulus, eh taunya itu jalan satu arah dan kita ngelawan arus. Diomelin angkot (cost function makin meledak).
Sistem kita gagal nemuin convergence (titik temu yang stabil). Ujung-ujungnya, setelah satu jam muter-muter zigzag kayak algoritma mabuk, kita balik lagi ke warkop awal tempat kita berangkat.
Dari kegagalan ini, gue sadar satu hal. Algoritma matematis sekeren apa pun ga bakal bisa nge-handle chaotic environment 100 persen. Malem minggu di kota besar itu sistemnya highly non-linear dan penuh anomali.
Kalo lu mau ngadepin sistem yang super chaotic, lu butuh sesuatu yang disebut Momentum. Dalam konteks nge-date atau nongkrong, momentum itu adalah "udahlah gausah banyak milih, sikat aja yang ada di depan mata dan pura-pura seneng."
Momentum ngebantu algoritma lu buat tetep jalan lurus ngelewatin rintangan-rintangan kecil tanpa harus ngitung ulang rute tiap detik. Pas nemu kafe yang ratingnya cuma 3.5 tapi kebetulan ada parkiran kosong dan mejanya enak buat ngudud, lu harusnya langsung berhentiin motor dan pesen es kopi susu. Ga usah mikir di depan sana mungkin ada kafe rating 4.8.
Intinya, dalam hidup ini, kadang optimasi berlebihan malah bikin lu stuck di jalanan, kehujanan, dan berantem sama temen sendiri. Belajar ngerem ego algoritma lu, dan nikmatin aja warkop depan kosan lu yang wifinya kenceng itu.
- Khay