Plain SGD Tidak Dapat Melatih ANDREA
Stochastic Gradient Descent, Titik Awal
Backprop menghitung gradien g untuk setiap parameter. Stochastic gradient descent (SGD) sederhana memperbarui setiap parameter dengan p -= lr * g. Satu learning rate, satu arah per langkah, tidak ada memori gradien masa lalu.
Plain SGD gagal pada skala besar karena dua alasan:
1. Gradien memiliki magnitudo yang sangat berbeda di seluruh parameter. Embedding untuk token langka menerima gradien kecil di sebagian besar langkah; skala layernorm menerima yang besar. Satu learning rate tidak bisa cocok untuk keduanya.
2. Gradien berosilasi. Mini-batch berisik dari korpus 16-sumber mendorong parameter ke kiri, lalu kanan, lalu kiri. SGD biasa membuang langkah-langkah dengan melawan dirinya sendiri.
Adam (Kingma & Ba, 2015) memperbaiki keduanya dengan dua rata-rata berjalan per parameter.
First Moment & Second Moment
m: Arah yang Dihaluskan
First moment m merata-ratakan gradien terbaru secara eksponensial:
m = beta1 m + (1 - beta1) g
dengan beta1 = 0.9. Setelah beberapa langkah, m membawa arah yang telah diratakan; satu batch buruk hampir tidak menggesernya.
v: Magnitudo yang Diraatkan
Moments kedua v merata-ratakan gradien kuadrat terbaru:
v = beta2 v + (1 - beta2) g^2
dengan beta2 = 0.999. v melacak seberapa besar gradien tipikal untuk setiap parameter. Parameter dengan gradien besar mendapatkan v yang besar; parameter dengan gradien kecil mendapatkan v yang kecil.
Tingkat Pembelajaran Adaptif Per-Parameter
Membagi arah yang dismoothing dengan akar kuadrat dari magnitudo yang dismoothing menjadikan setiap parameter berada pada posisi yang sebanding:
adam_step = m / sqrt(v + eps)
Embedding gradien kecil diskalakan naik; layernorm gradien besar diskalakan turun. Satu lr global sekarang cocok untuk setiap parameter.
Membaca Moments
Mengapa Langkah Awal Membutuhkan Koreksi Bias
Bias Cold-Start
m & v dimulai dari nol. Setelah langkah 1, m = 0.1 g_1 & v = 0.001 g_1^2. Kedua estimasi ini jauh di bawah rata-rata jangka panjang. Tanpa koreksi, optimizer memulai dengan hati-hati & meningkat secara perlahan, membuang langkah awal yang berharga saat representasi terbentuk.
Koreksi
Adam menskalakan setiap estimasi dengan 1 / (1 - beta^t) di mana t adalah nomor langkah:
m_hat = m / (1 - beta1^t)
v_hat = v / (1 - beta2^t)
Pada langkah 1 dengan beta1 = 0.9, pembagi (1 - 0.9) = 0.1, sehingga m_hat = m / 0.1 = 10 * m. Estimasi yang dikoreksi bias ini sesuai dengan apa yang diprediksi oleh rata-rata jangka panjang. Saat t bertambah besar, beta^t mendekati 0, koreksi mendekati 1, & nilai yang dikoreksi & tidak dikoreksi menjadi konvergen.
Decoupled Weight Decay (Inovasi AdamW)
Regularisasi L2 vs Weight Decay
Regularisasi L2 klasik menambahkan penalti ke loss: L_total = L_data + (lambda / 2) sum(p^2). Backprop melihat penalti tersebut sebagai bagian dari gradien: g_total = g_data + lambda p. Istilah L2 mengalir melalui pembaruan m & v Adam, menjadi dihaluskan & diskalakan ulang berdasarkan magnitudo per-parameter.
Loshchilov & Hutter (2019) membuktikan bahwa smoothing sebuah regularizer melalui Adam merusak keduanya. Adaptive scaling Adam mengecilkan weight decay pada parameter dengan gradien besar (di mana decay seharusnya melawan overfitting paling keras) & memperbesarnya pada yang gradien kecil.
AdamW: Terapkan Decay Secara Langsung
AdamW memisahkan weight decay dari gradien. Decay diterapkan langsung pada setiap parameter selama pembaruan parameter, tidak pernah menyentuh m atau v:
p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)
Dua istilah sekarang mendorong setiap langkah:
1. Istilah Adam: m_hat / (sqrt(v_hat) + eps) menskalakan ulang arah gradien berdasarkan riwayat magnitudo per-parameter.
2. Istilah Decay: weight_decay * p mengecilkan setiap parameter menuju nol, secara seragam, tanpa melalui penghalusan Adam.
ANDREA-120M v2 mengatur weight_decay = 0.01. Setiap langkah, setiap parameter mengecil 1% menuju nol, selain dari apa yang dilakukan istilah Adam.
Mengapa Decoupled Penting
Bukti Empiris
Keruntuhan v1 (tanpa weight decay)
ANDREA-120M v1 dilatih selama 165K langkah dengan vanilla Adam. Contoh output:
- Langkah 80K: region region region region region region region
- Langkah 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
- Langkah 140K: games, games, games, games, games, games, games
- Langkah 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy
Angka kerugian tetap wajar (EMA minimum 3.23 pada langkah 110K, vs peluang acak 9.04). Kerugian saja menyembunyikan kolaps pengulangan: model yang menghafal satu token selamanya mencapai cross-entropy rendah pada setiap langkah di mana token itu muncul.
Stabilitas v2 (weight_decay = 0.01)
v2 menambahkan AdamW (plus clipping gradien, pemanasan LR, pemantauan sampel). Pada langkah ~112K, sampel yang dihasilkan:
- Carolina parakeet dinyatakan punah pada tahun 1939 (fakta yang benar)
- Transformasi Fourier menguraikan sinyal menjadi komponen frekuensi (definisi buku teks)
- Irama hujan yang berirama, Sungai kecil di jendela, Istirahat dari rasa sakit hidup (syarat haiku terpenuhi)
Penilaian eksternal menilai sampel v2 9.5/10, menyebutnya "koherensi mengesankan & retensi pengetahuan pada skala ini."
Mengapa 12M Bertahan Tanpa AdamW?
ANDREA-12M dilatih dengan vanilla Adam tanpa kolaps. Pada 12M parameter, matriks bobot tetap cukup kecil sehingga penskalaan adaptif Adam tidak dapat mendorong bobot individu ke magnitudo yang melarikan diri yang menyebabkan pengulangan. Pada skala 120M, magnitudo bobot bergeser lebih jauh per langkah & terakumulasi; peluruhan seragam menerapkan gaya pemulihan konstan menuju nol. Peluruhan bobot yang terpisah lebih penting saat model diskalakan.
Memilih weight_decay = 0.01
Aktivitas Terkait
AdamW saling terkait dengan tiga aktivitas saudara dalam kursus ini:
- Aktivitas 11: Pemanasan LR + penurunan kosinus. AdamW saja tidak dapat menyelamatkan model dari laju pembelajaran puncak instan pada bobot yang baru diinisialisasi. Pemanasan meningkatkan lr selama 2000 langkah sehingga koreksi bias AdamW & peluruhan bobot mendapatkan waktu untuk menstabilkan representasi.
- Aktivitas 12: Pemotongan gradien. AdamW mengasumsikan gradien memiliki magnitudo yang terbatas. Transisi sumber setiap 7 hingga 42 langkah dalam bandit ANDREA menghasilkan lonjakan gradien sesekali; pemotongan membatasinya pada norma L2 1.0 SEBELUM AdamW menyentuh m, v, atau p.
- Aktivitas 13: Presisi FP32 / FP16 / FP8. AdamW menyimpan m & v per parameter, menggandakan jejak memori bobot saja. FP16 memotong jejak tersebut menjadi setengah; FP8 memotongnya lagi. Pilihan presisi berinteraksi dengan stabilitas optimizer.
AdamW, warmup, clipping, & precision membentuk daun semanggi empat. Lepaskan satu daun, lihat ANDREA runtuh.