Mengapa berbahaya untuk menginisialisasi bobot dengan nol? Apakah ada contoh sederhana yang menunjukkannya?
neural-networks
backpropagation
pengguna8078
sumber
sumber
Jawaban:
sunting lihat komentar alfa di bawah ini. Saya bukan ahli jaring saraf, jadi saya akan tunduk padanya.
Pemahaman saya berbeda dari jawaban lain yang telah diposting di sini.
Saya cukup yakin bahwa backpropagation melibatkan penambahan bobot yang ada, bukan bertambah banyak. Jumlah yang Anda tambahkan ditentukan oleh aturan delta . Perhatikan bahwa wij tidak muncul di sisi kanan persamaan.
Pemahaman saya adalah bahwa setidaknya ada dua alasan bagus untuk tidak menetapkan bobot awal menjadi nol:
Pertama, jaringan saraf cenderung terjebak dalam minimum lokal, jadi itu ide yang baik untuk memberi mereka banyak nilai awal yang berbeda. Anda tidak dapat melakukan itu jika semuanya dimulai dari nol.
Kedua, jika neuron mulai dengan bobot yang sama, maka semua neuron akan mengikuti gradien yang sama, dan akan selalu berakhir melakukan hal yang sama satu sama lain.
sumber
Jika Anda menganggap bobot sebagai prior, seperti dalam jaringan Bayesian, maka Anda telah mengesampingkan kemungkinan bahwa input tersebut mungkin mempengaruhi sistem. Penjelasan lain adalah bahwa backpropagation mengidentifikasi set bobot yang meminimalkan perbedaan kuadrat tertimbang antara target dan nilai yang diamati (E). Lalu bagaimana mungkin algoritma gradient descent diorientasikan dalam hal menentukan arah sistem? Anda menempatkan diri Anda pada titik sadel ruang parameter.
sumber
Di setiap iterasi dari algoritma backpropagation Anda, Anda akan memperbarui bobot dengan mengalikan bobot yang ada dengan delta yang ditentukan oleh backpropagation. Jika nilai bobot awal adalah 0, mengalikannya dengan nilai apa pun untuk delta tidak akan mengubah bobot yang berarti setiap iterasi tidak berpengaruh pada bobot yang Anda coba optimalkan.
sumber
Tampak bagi saya bahwa salah satu alasan mengapa menginisialisasi bobot ke nilai yang sama (bukan hanya nol) adalah karena untuk lapisan tersembunyi tertentu semua node dalam lapisan ini akan memiliki input yang persis sama dan karenanya akan tetap sama seperti masing-masing lain.
sumber
Jawaban untuk ini tidak sepenuhnya "Local Minima / Maxima".
Ketika Anda memiliki lebih dari 1 Lapisan Tersembunyi dan setiap bobot adalah 0's, tidak peduli seberapa besar / kecil perubahan pada Weight_i tidak akan menyebabkan perubahan pada Output.
Ini karena delta Weight_i akan diserap oleh Lapisan Tersembunyi berikutnya.
Ketika tidak ada perubahan dalam Output, tidak ada gradien dan karenanya tidak ada arah.
Ini memiliki sifat yang sama dengan Minima / Maxima Lokal, tetapi sebenarnya karena 0, yang secara teknis berbeda
sumber
Masalah utama dengan inisialisasi semua bobot ke nol secara matematis mengarah ke nilai neuron nol (untuk multi-layer) atau delta akan menjadi nol. Dalam salah satu komentar oleh @alfa dalam jawaban di atas sudah disediakan petunjuk, disebutkan bahwa produk bobot dan delta harus nol. Ini pada dasarnya berarti bahwa untuk gradient descent, ini berada di atas bukit tepat di puncaknya dan tidak dapat memecahkan simetri. Keacakan akan mematahkan simetri ini dan seseorang akan mencapai minimum lokal. Bahkan jika kita sedikit mengganggu berat badan kita akan berada di trek. Referensi: Belajar dari data Kuliah 10.
sumber
Itu adalah ide yang buruk karena 2 alasan:
Mari kita tunjukkan ini (untuk kesederhanaan saya mengasumsikan lapisan hasil akhir dari 1 neuron):
sumber