Saya sedang membaca makalah normalisasi batch [1] dan ada satu bagian di mana melewati contoh, mencoba menunjukkan mengapa normalisasi harus dilakukan dengan hati-hati. Jujur saya, tidak bisa mengerti bagaimana contoh ini bekerja dan saya benar-benar sangat ingin tahu mereka menulis sebanyak yang saya bisa. Pertama-tama izinkan saya mengutipnya di sini:
Misalnya, pertimbangkan layer dengan input u yang menambahkan bias yang dipelajari b, dan menormalkan hasilnya dengan mengurangi rata-rata aktivasi yang dihitung atas data pelatihan: mana adalah himpunan nilai atas himpunan pelatihan, dan . Jika langkah gradient descent mengabaikan ketergantungan pada , maka ia akan memperbarui , di mana . Kemudian . Dengan demikian, kombinasi pembaruan menjadi dan perubahan normalisasi selanjutnya menyebabkan tidak ada perubahan dalam output lapisan atau, akibatnya, hilangnya.
Saya pikir saya mengerti pesannya, bahwa jika seseorang tidak melakukan normalisasi dengan benar, itu bisa buruk. Saya hanya tidak bagaimana contoh yang mereka gunakan menggambarkan ini.
Saya sadar bahwa itu sulit untuk membantu seseorang jika mereka tidak lebih spesifik tentang apa yang membingungkan mereka sehingga saya akan memberikan pada bagian selanjutnya, hal-hal yang membingungkan saya tentang penjelasan mereka.
Saya pikir sebagian besar kebingungan saya mungkin notasi, jadi saya akan mengklarifikasi.
Pertama, saya pikir salah satu hal yang banyak membingungkan saya adalah apa artinya bagi penulis untuk memiliki unit di jaringan dan apa itu aktivasi. Biasanya, saya menganggap aktivasi sebagai:
di mana adalah vektor fitur mentah dari lapisan input pertama.
Juga, saya pikir salah satu hal pertama yang membingungkan saya (karena alasan sebelumnya) adalah skenario apa yang mereka coba jelaskan sebenarnya. Ia mengatakan:
menormalkan hasil dengan mengurangi rata-rata aktivasi dihitung atas data pelatihan: mana
Saya pikir apa yang mereka coba katakan adalah bahwa alih-alih menggunakan aktivasi seperti yang dihitung oleh forward pass, seseorang melakukan semacam "normalisasi" dengan mengurangi rata-rata aktivasi :
dan kemudian meneruskannya ke algoritma back-propagation. Atau setidaknya itulah yang masuk akal bagi saya.
Terkait dengan ini, saya kira apa yang mereka sebut mungkin ? Itulah yang saya kira karena mereka menyebutnya "input" dan memiliki persamaan (saya kira mereka menggunakan unit aktivasi identitas / linier untuk jaringan saraf mereka? Mungkin).
Untuk lebih membingungkan saya, mereka mendefinisikan sebagai sesuatu yang proporsional dengan turunan parsial, tetapi turunan parsial dihitung sehubungan dengan , yang tampaknya benar-benar aneh bagi saya. Biasanya, turunan parsial ketika menggunakan gradient descent adalah sehubungan dengan parameter jaringan. Dalam kasus offset, saya akan berpikir:
lebih masuk akal daripada mengambil turunan sehubungan dengan aktivasi yang dinormalisasi. Saya mencoba memahami mengapa mereka mengambil turunan sehubungan dengan dan saya pikir mungkin mereka mengacu pada delta ketika mereka menulis sejak biasanya itu adalah satu-satunya bagian dari algoritma back-prop yang memiliki turunan sehubungan dengan pra-aktivasi karena persamaan delta adalah:
Hal lain yang membingungkan saya adalah:
Kemudian .
mereka tidak benar-benar mengatakan apa yang mereka coba hitung dalam persamaan di atas, tetapi saya akan menyimpulkan bahwa mereka mencoba menghitung aktivasi dinormalisasi yang diperbarui (untuk lapisan pertama?) setelah diperbarui ke ? Tidak yakin apakah saya membeli poin mereka karena saya pikir persamaan yang benar seharusnya:
yang tidak membatalkan perubahan pada parameter . Namun, saya tidak benar-benar tahu apa yang mereka lakukan jadi saya hanya menebak. Apa sebenarnya persamaan yang telah mereka tulis?
Saya tidak yakin apakah ini pemahaman yang benar, tetapi saya telah memikirkan contoh mereka. Tampaknya contoh mereka tidak memiliki unit aktivasi non-linear (menggunakan identitas) dan mereka berbicara tentang lapisan input pertama saja? Karena mereka meninggalkan banyak detail dan notasi tidak begitu jelas, saya tidak bisa menyimpulkan apa yang mereka bicarakan. Apakah ada yang tahu bagaimana mengekspresikan contoh ini dengan notasi yang mengungkapkan apa yang terjadi di setiap lapisan? Apakah seseorang mengerti apa yang sebenarnya terjadi dengan contoh itu dan ingin membagikan kebijaksanaan mereka kepada saya?
[1]: Ioffe S. dan Szegedy C. (2015),
"Normalisasi Batch: Mempercepat Pelatihan Jaringan Dalam dengan Mengurangi Pergeseran Kovarian Internal",
Prosiding Konferensi Internasional ke-32 tentang Pembelajaran Mesin , Lille, Prancis, 2015.
Jurnal Pembelajaran Mesin Penelitian: W&CP volume 37
sumber
Jawaban:
Saya pikir inti dari paragraf ini adalah, jika langkah gradient descent mengabaikan ketergantungan pada , memperbarui istilah bias b tidak akan menyebabkan perubahan pada outputE[x] b , seperti diklaim dalam kalimat sebelumnya,
Oleh karena itu mereka membuat langkah gradient descent menyadari normalisasi dalam metode mereka.
Tentang pertanyaan Anda
Seperti diklaim dalam kalimat pertama mereka, adalah input dari layer. Apa sebenarnya tidak menjadi masalah, karena mereka menggambarkan hanya efek dalam contoh.u u b
Kita tahu , karena kita mengabaikan ketergantungan pada , kita memiliki jadi .x^=x−E[x]=u+b−E[x] E[x] b
Ini menghitung setelah diperbarui ke , untuk menunjukkan bahwa jika langkah gradient descent mengabaikan ketergantungan pada , memperbarui istilah bias b akan menyebabkan tidak ada perubahan dalam keluaran.x^ b b+Δb E[x] b
Mungkin bermanfaat untuk melihat beberapa implementasi open source dari normalisasi batch, misalnya di Lasagne dan Keras .
Ada pertanyaan lain yang mungkin tampak terkait, Mengapa mengambil gradien momen (mean dan varians) saat menggunakan Batch Normalisasi di Jaringan Saraf Tiruan?
sumber