Lensa ML

Cara Kerja Optimizer

Langkah 1 dari 6: Vanilla SGD

Ambil langkah yang sebanding dengan gradient

param 1 →param 2 ↑minmulai
Learning rateα = 0.080
Langkah
>40
Loss akhir
0.0710

Vanilla SGD memperbarui setiap parameter dengan mengurangkan α · gradient. Jalur zigzag berasal dari dua arah: di sepanjang sumbu param 2 yang curam, jalurnya berosilasi, sedangkan di sepanjang sumbu param 1 yang datar, kemajuannya lambat. Naikkan α dan osilasinya makin parah.

Geser learning rate α antara 0,005 dan 0,095 dan bandingkan loss akhirnya. Loss di sini adalah 0.1·x² + 10·y², jadi kelengkungan di sepanjang param 2 besarnya 100 kali kelengkungan di sepanjang param 1. Rasio itu disebut condition number, dan itulah yang membuat jalurnya zigzag. Gradient descent biasa hanya stabil kalau α < 2 dibagi kelengkungan terbesar, di sini 2/20 = 0.1, itulah sebabnya slider berhenti tepat di bawah nilai itu. Noise yang ditambahkan ke setiap gradient mewakili pengambilan sampel mini-batch, yaitu bagian "stochastic" pada SGD.

Langkah 2 dari 6: Momentum

Menggelinding turun seperti bola, makin lama makin cepat

param 1 →param 2 ↑minmulai
SGDMomentum
Momentum (β)β = 0.75
Langkah SGD
>40
Langkah momentum
29

Momentum menambahkan suku kecepatan: v = β·v + ∇L, lalu θ = θ − α·v. Seperti bola yang menggelinding turun, kecepatannya bertambah pada arah yang konsisten dan osilasinya teredam. Bandingkan jalur SGD putus-putus (>40 langkah) dengan jalur momentum yang lebih mulus (29 langkah).

Geser β dari 0 sampai 0,99 dan bandingkan jalur momentum dengan jalur SGD yang putus-putus. Pada lereng dengan gradient yang stabil, kecepatan terus tumbuh sampai setiap langkah bernilai α/(1 − β) kali gradient. Pada β = 0.75 dan α = 0.04, learning rate efektifnya 0,16, empat kali learning rate dasar. Komponen yang berosilasi justru saling meniadakan. Metode heavy-ball ini berasal dari Polyak (1964). Nesterov momentum menghitung gradient di titik look-ahead, dan β = 0.9 adalah nilai default yang umum.

Langkah 3 dari 6: RMSProp

Sesuaikan learning rate per parameter

param 1 →param 2 ↑minmulai
SGDRMSProp
Decay (γ)γ = 0.90
Langkah SGD
>40
Langkah RMSProp
30

RMSProp mencatat rata-rata berjalan dari kuadrat gradient per parameter, lalu membagi dengan √(avg). Parameter dengan gradient besar (sumbu curam) mendapat langkah efektif lebih kecil, sedangkan parameter dengan gradient kecil (sumbu datar) mendapat langkah lebih besar. Bandingkan SGD (>40 langkah) dengan RMSProp (30 langkah).

Geser decay γ dan bandingkan jumlah langkah di kartu. RMSProp menyimpan s = γ·s + (1 − γ)·g² untuk setiap parameter dan membagi langkah dengan √s, sehingga learning rate efektif tiap weight kira-kira α/√s. Sumbu yang curam mendapat learning rate kecil, dan sumbu yang datar mendapat learning rate besar. Geoffrey Hinton mengusulkannya dalam kuliah Coursera tahun 2012, bukan dalam paper. Metode ini memperbaiki kelemahan pendahulunya, AdaGrad, yang menjumlahkan kuadrat gradient tanpa henti, sehingga ukuran langkahnya hanya bisa mengecil dan training akhirnya macet.

Langkah 4 dari 6: Adam, Gabungan Keduanya

Momentum + adaptive rate = optimizer default

param 1 →param 2 ↑minmulai
SGDAdam
Learning rate (α)α = 0.200
Langkah SGD
>40
Langkah Adam
25

Adam menggabungkan momentum (momen pertama) dengan RMSProp (momen kedua), ditambah bias correction untuk langkah-langkah awal. Bandingkan SGD (>40 langkah) dengan Adam (25 langkah). Adam adalah pilihan default untuk sebagian besar tugas deep learning.

Geser learning rate α dan bandingkan jumlah langkah Adam dengan SGD. Adam menyimpan m, rata-rata gradient dengan β1 = 0.9, dan v, rata-rata kuadrat gradient dengan β2 = 0.999, lalu melangkah sebesar α·m̂/(√v̂ + ε). Kedua rata-rata dimulai dari nol, jadi di awal nilainya terlalu rendah. Setelah langkah pertama, m = 0.1·g, dan bias correction membaginya dengan 1 − 0.9¹ = 0.1 untuk mendapatkan g kembali. Karena m̂/√v̂ mendekati ±1 pada lereng yang stabil, setiap weight bergerak sekitar α per langkah, berapa pun skala gradient-nya.

Langkah 5 dari 6: Learning Rate Schedule

Melambat saat mendekati titik minimum

epochloss025507510000.51
KonstanStep DecayCosine

LR konstan berosilasi di dekat titik minimum karena langkahnya tetap terlalu besar di akhir. Step decay menurunkan learning rate pada interval tetap. Cosine annealing menurunkannya secara halus dan sering memberi loss akhir terbaik. Pasangan yang umum adalah Adam dengan cosine schedule.

Klik setiap tombol schedule dan bandingkan kurva loss di sekitar epoch 100. Step decay di sini membagi dua learning rate setiap 30 epoch. Cosine annealing menetapkan learning rate ke α·½(1 + cos(πt/T)), yang turun pelan di awal, paling cepat di tengah, dan pelan lagi di akhir. Schedule dan optimizer bekerja bersama: Adam menyesuaikan langkah per weight, sedangkan schedule menskalakan semua langkah seiring waktu. Penjelasan learning rate scheduling membahas warmup, restart, dan cyclical schedule secara rinci.

Langkah 6 dari 6: Memilih Optimizer

Kapan memakai yang mana: panduan praktis

MulaiMasalahconvex?yaSGD + Mom.tidakDatasetbesar?yaAdamtidakRMSProppilihan default
SGD + Momentum
+ Sederhana, generalisasinya baik − LR perlu disetel
RMSProp
+ Cocok untuk RNN, non-stationary − Tanpa bias correction
Adam
+ Cepat konvergen, sedikit penyetelan − Generalisasinya bisa lebih buruk

Dalam praktiknya, mulai dengan Adam (lr=1e-3), yang langsung bekerja baik tanpa banyak penyetelan. Kalau kamu butuh generalisasi terbaik (misalnya klasifikasi gambar), coba SGD + Momentum dengan cosine LR schedule. Pakai RMSProp untuk RNN atau reinforcement learning.

Ikuti diagram alir dari Mulai, lalu baca kelebihan dan kekurangan di bawahnya. Wilson et al. (2017) menemukan bahwa metode adaptif seperti Adam kadang mencapai solusi yang generalisasinya lebih buruk daripada SGD yang disetel dengan baik pada tugas gambar, itulah sebabnya SGD dengan momentum masih umum di sana. Untuk transformer, optimizer keluarga Adam sudah menjadi standar, dan AdamW biasanya dipilih karena memisahkan weight decay dari langkah adaptif. Memori berpengaruh pada skala besar: untuk model 7 miliar parameter, dua state buffer Adam menambah 14 miliar nilai yang disimpan.

Apa itu optimizer dalam deep learning?

Optimizer adalah aturan yang mengubah gradient menjadi pembaruan weight selama training. Stochastic gradient descent (SGD) biasa menggeser setiap weight sebesar pecahan tetap dari gradient-nya. Momentum, RMSProp, dan Adam menambahkan memori tentang gradient sebelumnya agar bergerak lebih cepat pada arah yang konsisten dan memberi setiap weight ukuran langkah efektifnya sendiri.

Optimizer memengaruhi seberapa cepat model dilatih, learning rate mana yang masih bisa ditoleransi, dan kadang seberapa baik model menggeneralisasi. Image classifier seperti ResNet sering dilatih dengan SGD plus momentum. Transformer dan large language model hampir selalu dilatih dengan Adam atau variannya, AdamW. State optimizer juga memakan memori: Adam menyimpan dua angka tambahan untuk setiap parameter.

Ide utama

  • SGD memperbarui setiap weight sebesar learning rate dikali gradient-nya.
  • Momentum merata-ratakan gradient sebelumnya, mempercepat arah yang konsisten dan meredam osilasi.
  • RMSProp membagi setiap langkah dengan root-mean-square berjalan dari gradient weight itu.
  • Adam menggabungkan momentum dengan penskalaan gaya RMSProp dan mengoreksi bias kedua rata-ratanya.
  • Metode adaptif paling membantu pada loss yang ill-conditioned, yaitu curam di beberapa arah dan datar di arah lain.
  • Adam dan AdamW adalah default untuk transformer; SGD dengan momentum tetap umum untuk computer vision.

Ulasan singkat tentang topik ini

Pertanyaan umum

Apa bedanya Adam dan AdamW?

Adam menerapkan weight decay dengan menambahkannya ke gradient, sehingga penskalaan adaptif ikut mengecilkan decay untuk weight dengan gradient besar. AdamW mengurangkan decay langsung dari weight, terpisah dari langkah adaptif. Dengan begitu, regularization bekerja sesuai tujuan, dan AdamW kini menjadi pilihan standar untuk melatih transformer.

Learning rate berapa yang sebaiknya dipakai dengan Adam?

Nilai default dari paper-nya, 0,001, adalah titik awal yang wajar untuk model kecil. Transformer besar biasanya memakai learning rate puncak yang lebih kecil, sekitar 1e-4 sampai 6e-4, dengan warmup dan decay. Fine-tuning model pretrained sering memakai 1e-5 sampai 5e-5.

Apa fungsi epsilon di Adam?

Epsilon, secara default 1e-8, ditambahkan ke penyebut √v̂ agar tidak terjadi pembagian dengan nol pada weight yang gradient-nya mendekati nol. Epsilon juga membatasi langkah efektif weight tersebut. Sebagian model menaikkannya, misalnya menjadi 1e-6, agar training lebih stabil pada aritmetika presisi rendah.

Apakah stochastic gradient descent sama dengan mini-batch gradient descent?

Dalam deep learning, kedua istilah ini dipakai bergantian. Secara ketat, SGD memperkirakan gradient dari satu contoh, sedangkan mini-batch gradient descent merata-ratakannya pada batch kecil, misalnya 32 atau 256 contoh. Optimizer "SGD" di semua framework modern bekerja pada batch apa pun yang diberikan kepadanya.

Penjelasan terkait

Referensi

  1. Kingma & Ba (2014), "Adam: A Method for Stochastic Optimization"
  2. Loshchilov & Hutter (2017), "Decoupled Weight Decay Regularization"
  3. Wilson et al. (2017), "The Marginal Value of Adaptive Gradient Methods in Machine Learning"
  4. Goodfellow, Bengio & Courville (2016), "Deep Learning", chapter 8: Optimization for Training Deep Models
  5. Zhang et al., "Dive into Deep Learning", section 12.10: Adam

Terakhir diperbarui