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
- Optimizer · SGD, momentum, dan Adam: gradient descent yang lebih cerdas
- Gradient Descent · Optimasi dengan mengikuti kemiringan ke bawah
- Hyperparameter · Pengaturan yang kamu pilih sebelum training dimulai
- Epoch dan Batching · Cara data masuk ke model lewat epoch, batch, dan shuffle
- Arsitektur Transformer · Panduan visual untuk paper "Attention Is All You Need"
- Learning Curve · Mendiagnosis underfitting dan overfitting dari ukuran training set
Referensi
- Loshchilov & Hutter (2016), "SGDR: Stochastic Gradient Descent with Warm Restarts"
- Smith (2015), "Cyclical Learning Rates for Training Neural Networks"
- Goyal et al. (2017), "Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour"
- Zhang et al., "Dive into Deep Learning", section 12.11: Learning Rate Scheduling
Terakhir diperbarui