Mengapa kita perlu menormalkan gambar sebelum kita memasukkannya ke CNN?

Jawaban:

34

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)

lollercoaster
sumber
1
bagaimana dengan gambar berwarna? apakah saya melakukannya untuk setiap saluran warna? bukankah itu mengacaukan distribusi warna?
user10024395
2
Percayalah Anda seharusnya ya. Anda bisa melakukan sesuatu seperti:(image - image.mean()) / (image.std() + 1e-8)
JohnAllen
Apakah ini sangat membantu untuk pelatihan? Saya melatih detektor objek, dan menggunakan fitlers ini, gambar sangat membingungkan, sulit untuk melihat objek yang saya deteksi
Darlyn
Ini cukup membantu untuk pelatihan dalam hal kemampuan belajar dan keakuratan - ini bukan untuk Anda melainkan untuk modelnya :) Anda mungkin ingin menampilkan gambar yang tidak dinormalisasi ketika Anda melakukan debug sehingga tampak normal di mata manusia Anda.
lollercoaster