Merata-ratakan dua checkpoint jaringan neural dapat menghasilkan vektor parameter yang berguna, tetapi meninggalkan statistik berjalan BatchNorm yang terikat pada jaringan berbeda. Bobot menentukan satu kumpulan aktivasi; running mean dan running variance yang tersimpan dapat menggambarkan aktivasi dari bobot sebelumnya. Inferensi kemudian menggabungkan state dari dua titik berbeda di ruang parameter.
Ketidakcocokan ini mudah terlewat karena statistik berjalan BatchNorm merupakan buffer, bukan parameter yang dioptimalkan, pada banyak implementasi. Prosedur weight averaging dapat menangani semua bobot dengan benar dan tetap menghasilkan state inferensi yang tidak konsisten secara internal.
State BatchNorm bergantung pada bobot penghasil aktivasi
Untuk satu channel, BatchNorm saat inferensi dapat ditulis sebagai:
y = gamma * (x - running_mean) / sqrt(running_var + eps) + betagamma dan beta adalah parameter yang dioptimalkan. running_mean dan running_var adalah state yang dikumpulkan dari batch selama training. Perbedaan ini menjadi relevan setelah parameter dirata-ratakan.
Misalkan checkpoint A dan B memuat bobot konvolusi W_A dan W_B. Rata-rata sederhana menghasilkan:
W_avg = 0.5 * W_A + 0.5 * W_BAktivasi dari W_avg secara umum tidak digambarkan secara tepat oleh buffer BatchNorm milik salah satu checkpoint. Merata-ratakan running mean dan running variance dari keduanya juga bukan perbaikan umum. Variance bersifat nonlinear, dan perubahan bobot upstream dapat mengubah mean serta sebaran aktivasi.
Masalahnya bukan sekadar buffer yang tidak ikut dalam operasi rata-rata. Inti persoalannya adalah statistik BatchNorm mencirikan distribusi aktivasi yang dihasilkan oleh state jaringan tertentu.
Parameter averaging dan state averaging merupakan operasi berbeda
Metode weight averaging bekerja di ruang parameter. Stochastic weight averaging, checkpoint averaging, dan skema serupa dapat menggabungkan tensor parameter berdasarkan aturan tertentu. Statistik berjalan BatchNorm memiliki fungsi berbeda: buffer tersebut mengestimasi momen yang diamati saat forward execution.
Memperlakukan buffer itu seperti parameter biasa mencampurkan dua jenis state. Weighted mean pada parameter memiliki definisi langsung. Weighted mean pada variance tersimpan tidak harus sama dengan variance aktivasi dari model hasil weighted mean.
Identitas statistik sederhana menunjukkan batas tersebut. Untuk variabel acak dari dua distribusi, total variance memuat variance di dalam tiap distribusi sekaligus komponen akibat perbedaan mean keduanya. Hanya merata-ratakan dua estimasi variance menghilangkan komponen kedua. Pada jaringan yang baru dirata-ratakan, distribusi aktivasi dapat berubah lebih jauh karena pemetaan input ke aktivasi juga berubah.
Hal ini juga berbeda dari optimizer state. Momentum atau accumulator optimizer adaptif memengaruhi update berikutnya, tetapi biasanya tidak dipakai saat inferensi. Buffer BatchNorm secara langsung memengaruhi output inferensi.
Pass statistik menyelaraskan buffer dengan jaringan hasil rata-rata
Perbaikan praktis adalah menahan parameter hasil rata-rata agar tetap dan menjalankan input representatif melalui jaringan supaya BatchNorm membangun ulang statistik berjalannya. Gradient update tidak diperlukan untuk tujuan ini. Sasaran pass tersebut adalah mengamati aktivasi dari model yang benar-benar akan dievaluasi.
Prosedur tepatnya bergantung pada semantik BatchNorm di framework yang dipakai. Kondisi utamanya tetap serupa:
- parameter yang dioptimalkan tidak berubah selama pass statistik;
- BatchNorm memperbarui running state dari aktivasi forward;
- input mewakili distribusi yang relevan untuk evaluasi berikutnya;
- layer stokastik ditangani secara sengaja agar distribusi aktivasi yang dikumpulkan sesuai dengan perilaku model yang dituju.
Poin terakhir mencegah ambiguitas umum. Mengubah seluruh model ke mode training generik dapat mengaktifkan dropout sekaligus update BatchNorm. Statistik yang terkumpul kemudian dapat mencerminkan aktivasi dengan masking acak, bukan jalur inferensi deterministik. Kontrol spesifik framework menentukan apakah state BatchNorm dapat diperbarui tanpa mengaktifkan perilaku stokastik lain.
Semantik momentum memengaruhi proses pembaruan
Implementasi BatchNorm umumnya memperbarui statistik berjalan dengan recurrence yang serupa dengan:
running = (1 - m) * running + m * batch_statSimbol m di sini menyatakan bobot update untuk batch saat ini; penamaan API dan konvensi persis dapat berbeda. Memakai kembali buffer lama dengan bobot update kecil dapat mempertahankan pengaruh besar dari model sebelum averaging.
Pembaruan penuh perlu mengikuti aturan akumulasi yang didokumentasikan oleh implementasi. Sejumlah utilitas mereset buffer lalu menghitung estimasi baru sepanjang satu pass data. Implementasi lain memerlukan kontrol eksplisit atas momentum atau counter. Invarian yang dituju lebih berguna daripada resep khusus framework: statistik berjalan akhir harus menggambarkan aktivasi dari parameter hasil rata-rata, bukan campuran yang masih didominasi state lama.
Ukuran batch juga berpengaruh karena setiap forward batch memberikan estimasi sampel terbatas. Batch sangat kecil dapat membuat momen yang diperbarui lebih bising. Pass statistik tidak menghapus ketergantungan BatchNorm pada sampling representatif; pass itu memindahkan estimasi ke state jaringan yang akan dipakai saat inferensi.
Dataset pembaruan menentukan distribusi operasi
Menghitung ulang statistik pada data sembarang dapat mengganti satu ketidakcocokan dengan ketidakcocokan lain. Jika input deployment berbeda secara material dari data pembaruan, buffer akan menggambarkan distribusi pembaruan, bukan distribusi deployment.
Pilihan data dengan demikian menjadi bagian dari artefak model. Checkpoint yang memuat parameter hasil rata-rata beserta state BatchNorm yang diperbarui terikat pada distribusi input yang dipakai untuk mengestimasi buffer tersebut. Jika preprocessing berubah, momen aktivasi juga dapat berubah meski contoh mentah tampak serupa.
Pass pembaruan juga harus menghindari transformasi yang bergantung pada target atau kebocoran evaluasi. BatchNorm memerlukan input model, bukan label istimewa. Memakai evaluation set untuk memilih atau menyesuaikan model akhir akan mencemari evaluasi meski forward pass itu sendiri tidak memakai label.
Validasi perlu memeriksa state, bukan hanya parameter
Diff parameter tidak dapat memastikan model hasil averaging siap untuk inferensi. Dua checkpoint dapat memiliki tensor parameter identik tetapi buffer BatchNorm berbeda, sehingga menghasilkan output berbeda untuk input yang sama.
Validasi perlu mencakup state non-parameter yang ikut berperan saat inferensi. Untuk jaringan dengan BatchNorm, running statistics perlu dipastikan finite, diperbarui melalui jalur data yang dimaksud, dan tetap terpasang pada parameter hasil rata-rata final. Evaluasi output dilakukan setelah state tersebut final.
Batas ini sangat relevan pada pipeline yang hanya menserialkan tensor parameter, mengganti bobot hasil rata-rata ke modul yang sedang hidup, atau memulihkan buffer dari salah satu checkpoint sumber. Semua operasi itu dapat menghasilkan model yang valid secara numerik tetapi mencampurkan state yang tidak selaras.
Weight averaging menentukan titik baru di ruang parameter. Pada jaringan dengan BatchNorm, titik itu tidak otomatis disertai statistik aktivasi yang cocok. Menjadikan pass statistik sebagai bagian dari konstruksi model hasil rata-rata menjaga state inferensi tetap selaras dengan parameter yang menghasilkan aktivasi.