Lensa ML

Cara Kerja Learning Rate Scheduling

Langkah 1 dari 6: Masalah LR Konstan

Kenapa learning rate tetap gagal

0501001500246810EpochLossoptimal
Learning Rate0.50
LR
0.50
Konvergen
149 langkah
Loss akhir
0.69

Learning rate tinggi: loss berosilasi karena model berulang kali melewati minimum.

Geser learning rate dari 0,01 sampai 1,5 dan perhatikan kartu Konvergen dan Loss akhir. Loss di sini adalah x² + 0.5·sin(3x) + 1, dimulai dari x = 2.5. Titik terendahnya ada di dekat x = −0.36, dengan loss sekitar 0,69, dan curvature di situ sekitar 6. Gradient descent pada sebuah kurva hanya stabil kalau learning rate di bawah 2 dibagi curvature, di sini sekitar 0,34. Itu sebabnya nilai 0,4 ke atas berosilasi. Learning rate tetap harus berkompromi antara kemajuan cepat di awal dan akhir yang stabil.

Langkah 2 dari 6: Step Decay

Turunkan LR pada interval tetap

05010015000.050.1EpochLR
Decay factor0.50
Step size (epoch)30
LR awal
0.10
Decay
×0.50
LR saat ini
0.0063

Step decay sedang menghasilkan pola tangga yang jelas. Setiap dataran memberi model waktu untuk stabil sebelum ukuran langkahnya turun.

Geser decay factor dan step size, lalu lihat pola tangganya berubah. Aturannya lr = lr_0 · factor^⌊epoch / step⌋, di sini mulai dari 0.1. Resep klasik ImageNet untuk ResNet memakai factor 0,1 setiap 30 epoch. Satu variannya, yang sering disebut reduce-on-plateau, menunggu sampai validation loss berhenti membaik, baru menurunkan learning rate. Kurva loss dari cara ini menunjukkan penurunan tajam tepat setelah setiap penurunan learning rate, karena langkah yang lebih kecil membuat model bisa turun ke bagian lembah yang lebih sempit.

Langkah 3 dari 6: Exponential Decay

Penurunan yang halus dan terus-menerus

05010015000.050.1EpochLRepoch 50epoch 100
Decay rate0.970
Decay rate
0.970
LR @ 50
0.0218
LR @ 100
0.00476

Decay rate sedang menghasilkan kurva halus yang terus memperkecil ukuran langkah selama training.

Geser decay rate antara 0,9 dan 0,999, lalu bandingkan LR di epoch 50 dan 100. Aturannya lr = 0.1 · γ^epoch. Lebih mudah memikirkannya sebagai waktu paruh, ln 2 / (−ln γ). Pada γ = 0.97, learning rate menjadi separuh kira-kira setiap 23 epoch, sehingga di epoch 50 nilainya sekitar 0,022. Pada γ = 0.999, waktu paruhnya sekitar 690 epoch, lebih panjang dari seluruh run ini. Exponential decay sering diterapkan per step, bukan per epoch, dengan γ yang sangat dekat ke 1.

Langkah 4 dari 6: Cosine Annealing

Schedule berbentuk gelombang dengan warm restart

05010015020000.050.1EpochLRLR min
T_max (panjang siklus)100
T_max
100
LR min
0.001
LR @ 100
0.0010

Panjang siklus sedang menghasilkan kurva annealing yang halus. Bentuk cosine bertahan lebih lama di dekat puncak dan di dekat minimum.

Geser T_max dari 50 sampai 200 epoch. Rumusnya lr = lr_min + ½(lr_max − lr_min)(1 + cos(π·t/T_max)), di sini dengan lr_max = 0.1 dan lr_min = 0.001. Loshchilov dan Hutter (2016) mengusulkan untuk memulai ulang cosine dari puncaknya setiap T_max epoch dan menamai metode ini SGDR. Varian mereka juga memperpanjang setiap siklus, misalnya menggandakan T_max setelah setiap restart. Satu kali cosine tanpa restart, biasanya setelah warmup, kini menjadi schedule paling umum untuk melatih large language model.

Langkah 5 dari 6: Warmup

Mulai pelan, naik bertahap, lalu decay

05010015000.050.1EpochLRwarmup
Epoch warmup10
Warmup
10 epoch
LR puncak
0.10
LR @ puncak
0.1000

Warmup sedang memberi optimizer waktu mengumpulkan statistik gradient yang andal sebelum learning rate penuh berlaku. Ini standar untuk transformer.

Geser epoch warmup dari 0 sampai 20 dan perhatikan kenaikan sebelum decay. Di awal training, weight masih acak dan second-moment estimate milik Adam baru bertumpu pada sedikit gradient, sehingga langkah berukuran penuh bisa mendorong model ke tempat yang tidak bisa ia tinggalkan lagi. Goyal dkk. (2017) memakai linear warmup 5 epoch untuk melatih ImageNet dengan batch berisi 8.192 gambar. Paper transformer yang asli memakai warmup selama 4.000 step, lalu menurunkan learning rate sebanding dengan 1/√step.

Langkah 6 dari 6: Cyclical LR

Eksplorasi dan konvergensi berkala

05010015020000.0450.09EpochLR
Panjang siklus40
Amplitudo0.080
Siklus
40 ep
LR min
0.010
LR maks
0.090
Sekarang
0.0900

Siklus sedang menyeimbangkan eksplorasi dan konvergensi. Gelombang segitiga memberi warmup dan cooldown alami di setiap siklus.

Tekan Putar, atau melangkah dengan −1 dan +1, lalu atur panjang siklus dan amplitudo. Setiap segitiga di sini naik dari 0,01 ke 0,01 + amplitudo, lalu kembali. Leslie Smith (2015) mengusulkan cyclical learning rate dan learning rate range test: naikkan learning rate terus-menerus dalam satu run pendek, lalu catat titik ketika loss mulai naik. Nilai itu menjadi puncak siklus. One-cycle policy yang ia usulkan kemudian memakai satu segitiga panjang dengan fase annealing di akhir, dan sering selesai dalam epoch yang lebih sedikit dibanding step decay.

Apa itu learning rate scheduling?

Learning rate scheduling berarti mengubah learning rate selama training, bukan menahannya tetap. Schedule yang umum mulai dari nilai tinggi supaya model cepat maju, lalu menurunkannya supaya model bisa mengendap di minimum tanpa terus memantul di sekitarnya. Banyak schedule juga diawali warmup singkat, yaitu menaikkan nilainya bertahap dari nyaris nol.

Hampir semua model besar dilatih dengan schedule. ResNet pada ImageNet dulu umumnya dilatih dengan step decay, yaitu membagi learning rate dengan 10 pada epoch tertentu. Transformer dan large language model biasanya menggabungkan linear warmup dengan cosine decay atau inverse-square-root decay. Schedule tersedia di semua framework, misalnya torch.optim.lr_scheduler di PyTorch.

Ide utama

  • Schedule mengubah learning rate sepanjang training.
  • Learning rate tinggi memberi kemajuan cepat di awal; learning rate rendah membuat model bisa mengendap di minimum.
  • Step decay menurunkan learning rate dengan faktor tetap pada interval tertentu.
  • Cosine annealing menurunkan learning rate secara halus mengikuti setengah gelombang cosine.
  • Warmup menaikkan learning rate bertahap di awal untuk menghindari ketidakstabilan.
  • Cyclical schedule menaikkan dan menurunkan learning rate berulang kali, bukan hanya menurunkannya.

Pertanyaan umum

Learning rate schedule mana yang sebaiknya dipakai?

Untuk transformer, linear warmup yang diikuti cosine decay sampai sekitar 10% dari puncak adalah pilihan awal yang kuat. Untuk convolutional network yang dilatih dengan SGD, cosine annealing dan step decay sama-sama bekerja baik. Kalau training singkat atau jumlah epoch yang tepat belum diketahui, reduce-on-plateau menyesuaikan diri dengan validation loss.

Apakah Adam masih butuh learning rate schedule?

Biasanya ya. Adam menyesuaikan ukuran langkah tiap weight relatif terhadap weight lain, tetapi learning rate keseluruhan α tetap menentukan seberapa jauh model bergerak. Model besar yang dilatih dengan Adam atau AdamW hampir selalu memakai warmup dan decay, dan melewatkan warmup sering menjadi penyebab lonjakan loss di awal.

Sebaiknya schedule diperbarui per step atau per epoch?

Keduanya bisa, tetapi pembaruan per step menghasilkan kurva yang lebih halus dan menjadi standar untuk model besar, yang satu epoch-nya bisa saja merupakan seluruh training. Warmup biasanya diukur dalam step, misalnya 1% sampai 5% pertama dari training.

Apa hubungan learning rate schedule dengan batch size?

Batch yang lebih besar menghasilkan gradient yang lebih sedikit noise-nya dan biasanya memungkinkan learning rate puncak yang lebih tinggi. Aturan praktis yang umum untuk SGD menaikkan learning rate secara linear mengikuti batch size, dan ini membuat warmup makin dibutuhkan di awal training.

Penjelasan terkait

Referensi

  1. Loshchilov & Hutter (2016), "SGDR: Stochastic Gradient Descent with Warm Restarts"
  2. Smith (2015), "Cyclical Learning Rates for Training Neural Networks"
  3. Goyal et al. (2017), "Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour"
  4. Zhang et al., "Dive into Deep Learning", section 12.11: Learning Rate Scheduling

Terakhir diperbarui