Apa itu gradient descent?
Gradient descent adalah metode iteratif untuk mencari titik minimum sebuah fungsi. Di setiap langkah, metode ini menghitung gradient, yaitu arah kenaikan tercepat fungsi tersebut, lalu menggeser parameter selangkah kecil ke arah sebaliknya. Aturan pembaruannya θ ← θ − α∇L(θ), dengan α sebagai learning rate.
Hampir semua neural network dilatih dengan salah satu bentuk gradient descent, dari model klasifikasi kecil sampai model bahasa besar. Backpropagation menyediakan gradient dari loss terhadap tiap weight, lalu gradient descent memakainya untuk memperbarui weight. Varian seperti SGD dengan momentum dan Adam mengubah cara langkahnya dihitung, tetapi semuanya tetap mengikuti ide yang sama: bergerak menuruni kemiringan.
Ide utama
- Gradient descent berulang kali menggeser parameter ke arah yang berlawanan dengan gradient dari loss.
- Learning rate menentukan ukuran langkah. Terlalu besar akan divergen, terlalu kecil akan merayap.
- Langkah mengecil di dekat minimum karena gradient-nya mengecil.
- Lembah yang panjang dan sempit membuat gradient descent biasa bergerak zigzag.
- Mini-batch menukar gradient yang lebih banyak noise dengan langkah yang jauh lebih murah.
- Pada loss non-konveks, metode ini menemukan titik rendah yang bagus, belum tentu minimum global.
Ulasan singkat tentang topik ini
Pertanyaan umum
Apakah gradient descent selalu menemukan minimum global?
Hanya pada fungsi konveks, seperti loss regresi linear atau regresi logistik, dengan learning rate yang sesuai. Loss neural network tidak konveks, jadi gradient descent bisa berhenti di minimum lokal atau melambat di dekat saddle point. Dalam praktik, minimum yang ditemukannya pada network besar cenderung bekerja dengan baik.
Bagaimana cara memilih learning rate?
Cara yang umum adalah learning rate range test: jalankan training sebentar sambil menaikkan learning rate secara eksponensial, lalu pilih nilai sedikit di bawah titik ketika loss mulai melonjak. Titik awal yang lazim adalah sekitar 0,1 untuk SGD dengan momentum dan 0,001 untuk Adam. Sebagian besar training kemudian menurunkan learning rate seiring waktu dengan schedule.
Kenapa disebut stochastic gradient descent?
Setiap langkah memakai satu contoh atau mini-batch yang dipilih secara acak, bukan seluruh dataset, sehingga gradient-nya berupa estimasi acak dari gradient yang sebenarnya. Dalam pemakaian modern, SGD hampir selalu berarti mini-batch gradient descent. Mengacak data di setiap epoch menjaga agar tiap batch tetap mewakili keseluruhan data.
Apa bedanya gradient descent dan Adam?
Gradient descent biasa menggeser setiap parameter sebesar learning rate yang sama dikali gradient-nya. Adam menyimpan rata-rata berjalan dari gradient dan kuadrat gradient tiap parameter, sehingga menambahkan momentum dan mengatur skala langkah secara terpisah untuk setiap parameter. Ini membantu pada permukaan loss yang kelengkungannya sangat berbeda di arah yang berbeda.
Penjelasan terkait
- Turunan · Kalkulus di balik gradient descent
- Loss Function · Cara network mengukur kesalahannya
- Backpropagation · Cara network belajar dari kesalahannya
- Optimizer · SGD, momentum, dan Adam: gradient descent yang lebih cerdas
- Learning Rate Scheduling · Step decay, cosine annealing, warmup, dan cyclical LR
- Konveksitas, Minimum, dan Saddle Point · Kenapa sebagian masalah optimasi lebih sulit daripada yang lain
Referensi
- Goodfellow, Bengio & Courville (2016), "Deep Learning", section 4.3: Gradient-Based Optimization
- Stanford CS231n, "Optimization: Stochastic Gradient Descent"
- Ruder (2016), "An overview of gradient descent optimization algorithms"
- Smith (2017), "Cyclical Learning Rates for Training Neural Networks"
Terakhir diperbarui