Ketika menginisialisasi bobot koneksi dalam jaringan saraf feedforward, penting untuk menginisialisasi mereka secara acak untuk menghindari simetri yang tidak dapat dipecahkan oleh algoritma pembelajaran.
Rekomendasi yang saya lihat di berbagai tempat (misalnya dalam tutorial MNIST TensorFlow ) adalah menggunakan distribusi normal terpotong menggunakan standar deviasi , di manaNadalah jumlah input ke lapisan neuron yang diberikan.
Saya percaya bahwa standar deviasi formula memastikan bahwa gradien backpropagated tidak larut atau menguatkan terlalu cepat. Tetapi saya tidak tahu mengapa kami menggunakan distribusi normal terpotong sebagai lawan dari distribusi normal biasa. Apakah itu untuk menghindari bobot outlier yang jarang?
Jawaban:
Saya pikir ini tentang saturasi neuron. Pikirkan tentang Anda memiliki fungsi aktivasi seperti sigmoid.
Jika val berat Anda mendapat nilai> = 2 atau <= - 2 neuron Anda tidak akan belajar. Jadi, jika Anda memotong distribusi normal Anda, Anda tidak akan memiliki masalah ini (setidaknya dari inisialisasi) berdasarkan varians Anda. Saya pikir itu sebabnya, lebih baik menggunakan terpotong normal pada umumnya.
sumber
Manfaat menggunakan distribusi normal terpotong adalah untuk mencegah menghasilkan "neuron mati" karena relu_logits yang digunakan, yang dijelaskan di sini .
sumber