Saya tidak jelas alasan kami menormalkan gambar untuk CNN dengan (image - mean_image)? Terima kasih!
Saya tidak jelas alasan kami menormalkan gambar untuk CNN dengan (image - mean_image)? Terima kasih!
Catatan pertama: Anda juga harus membagi dengan standar deviasi dari masing-masing nilai fitur (piksel). Mengurangi rata-rata pusat input ke 0, dan membaginya dengan standar deviasi membuat setiap fitur skala nilai jumlah standar deviasi jauh dari rata-rata.
Untuk menjawab pertanyaan Anda: Pertimbangkan bagaimana jaringan saraf mempelajari bobotnya. C (NN) belajar dengan terus menambahkan vektor kesalahan gradien (dikalikan dengan laju pembelajaran) yang dihitung dari backpropagation ke berbagai matriks bobot di seluruh jaringan saat contoh pelatihan dilewatkan.
Hal yang perlu diperhatikan di sini adalah "dikalikan dengan tingkat pembelajaran".
Jika kami tidak skala vektor pelatihan input kami, rentang distribusi nilai fitur kami mungkin akan berbeda untuk setiap fitur, dan dengan demikian tingkat pembelajaran akan menyebabkan koreksi di setiap dimensi yang akan berbeda (berbicara secara proporsional) dari satu sama lain. Kami mungkin kelebihan kompensasi koreksi dalam satu dimensi berat sementara kurang kompensasi di lain.
Ini tidak ideal karena kita mungkin berada dalam keadaan berosilasi (tidak dapat memusatkan pada ruang biaya (bobot) maksimum) yang lebih baik atau dalam kondisi bergerak lambat (bepergian terlalu lambat untuk mencapai ke maksima yang lebih baik).
Tentu saja dimungkinkan untuk memiliki tingkat pembelajaran per-berat, tetapi masih lebih hyperparameter untuk diperkenalkan ke jaringan yang sudah rumit yang juga harus kami optimalkan untuk menemukannya. Secara umum angka pembelajaran adalah skalar.
Jadi kami mencoba untuk menormalkan gambar sebelum menggunakannya sebagai input ke dalam algoritma NN (atau berbasis gradien)
(image - image.mean()) / (image.std() + 1e-8)