RMSNorm
Implementasikan RMSNorm di sepanjang axis terakhir dengan eps = 1e-6:
x = [3, 4], w = [1, 1] → RMS = √12.5 ≈ 3.5355 → [0.8485, 1.1314]
LayerNorm tanpa pusat
RMSNorm membuang dua hal dari LayerNorm: pengurangan rata-rata dan bias β. Yang tersisa hanya pembagian dengan root mean square. Hasil eksperimen menunjukkan bahwa menormalkan skala adalah bagian yang paling penting, sedangkan memusatkan data tidak banyak membantu.
Keuntungannya: lebih sedikit operasi dan lebih sedikit parameter. Karena itu banyak LLM modern (keluarga LLaMA, Mistral, Gemma) memakai RMSNorm.
ε
Tanpa ε, vektor yang semuanya nol (lihat case ketiga) akan menghasilkan 0/0 = nan. ε kecil menjamin penyebutnya tidak pernah nol.
Penjelasan
Yang diminta. Bagi setiap vektor dengan root mean square-nya, lalu kalikan dengan weight.
Bedanya dengan LayerNorm. Tidak ada pengurangan rata-rata dan tidak ada beta. Yang dinormalkan hanya skala vektor:
Langkah di kode:
rms = np.sqrt((x ** 2).mean(axis=-1, keepdims=True) + eps), berbentuk(..., 1).x / rms * weight.
Cek. [3, 4]: mean kuadrat =(9+16)/2=12.5, RMS =3.5355, hasil [0.8485, 1.1314]. Setelah dinormalkan, rata-rata kuadratnya menjadi 1.
Case vektor nol. [0, 0, 0, 0]: RMS =ε, jadi hasilnya 0, bukan nan. Itulah fungsi eps.
Yang dikembalikan: array berbentuk sama dengan x.
Topik
Petunjuk 1
RMS = √(mean(x²) + ε), dihitung di axis=-1 dengan keepdims=True.
Petunjuk 2
Berbeda dari LayerNorm: tidak ada pengurangan mean dan tidak ada β.
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.