CARA: Inisialisasi berat jaringan Neural Deep

10

Mengingat tugas belajar yang sulit (misalnya dimensi tinggi, kompleksitas data yang melekat) Deep Neural Networks menjadi sulit untuk dilatih. Untuk meringankan banyak masalah, orang mungkin:

  1. Normalisasi && data kualitas pilihan sendiri
  2. pilih algoritma pelatihan yang berbeda (misalnya RMSprop alih-alih Gradient Descent)
  3. pilih fungsi Biaya gradien yang lebih curam (mis. Cross Entropy, bukan MSE)
  4. Gunakan struktur jaringan yang berbeda (mis. Lapisan konvolusi alih-alih Feedforward)

Saya telah mendengar bahwa ada cara cerdas untuk menginisialisasi bobot yang lebih baik. Misalnya Anda dapat memilih besarnya lebih baik: Glorot dan Bengio (2010)

  • untuk unit sigmoid: sampel Seragam (-r, r) denganr=6Nsayan+NHaikamut
  • atau unit tangen hiperbolik: sampel Seragam (-r, r) denganr=46Nsayan+NHaikamut

Apakah ada cara yang konsisten untuk menginisialisasi bobot lebih baik?

Joonatan Samuel
sumber

Jawaban:

7

Sejauh yang saya tahu dua formula yang Anda berikan cukup banyak inisialisasi standar. Saya telah melakukan tinjauan literatur beberapa waktu lalu, saya menyalinnya di bawah ini jika tertarik.


[1] menjawab pertanyaan:

Pertama, bobot tidak boleh diatur ke nol untuk memecah simetri saat memprogram kembali:

Bias umumnya dapat diinisialisasi ke nol tetapi bobot harus diinisialisasi dengan hati-hati untuk memecah simetri antara unit tersembunyi dari lapisan yang sama. Karena unit output yang berbeda menerima sinyal gradien yang berbeda, masalah pemecahan simetri ini tidak menyangkut bobot output (ke dalam unit output), yang karenanya dapat juga diatur ke nol.

Beberapa strategi inisialisasi:

  • [2] dan [3] merekomendasikan penskalaan dengan kebalikan dari akar kuadrat dari kipas-in
  • Glorot dan Bengio (2010) dan Tutorial Belajar Dalam menggunakan kombinasi fan-in dan fan-out:
    • untuk unit sigmoid: sampel Seragam (-r, r) dengan (fan-in adalah jumlah input unit).r=6kipas angin+kipas angin
    • untuk unit singgung hiperbolik: sampel Seragam (-r, r) dengan (fan-in adalah jumlah input unit).r=46kipas angin+kipas angin
  • dalam kasus RBM, Gaussian rata-rata nol dengan standar deviasi kecil sekitar 0,1 atau 0,01 bekerja dengan baik (Hinton, 2010) untuk menginisialisasi bobot.
  • Inisialisasi matriks acak ortogonal, yaitu W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)kemudian digunakan usebagai matriks inisialisasi Anda.

Juga, pra-pelatihan tanpa pengawasan dapat membantu dalam beberapa situasi:

Pilihan penting adalah apakah seseorang harus menggunakan pra-pelatihan tanpa pengawasan (dan algoritma pembelajaran fitur tanpa pengawasan yang digunakan) untuk menginisialisasi parameter. Dalam sebagian besar pengaturan kami telah menemukan pra-pelatihan tanpa pengawasan untuk membantu dan sangat jarang menyakitkan, tetapi tentu saja itu menyiratkan waktu pelatihan tambahan dan parameter hiper tambahan.

Beberapa perpustakaan ANN juga memiliki beberapa daftar menarik, misalnya Lasagna :

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Bengio, Yoshua. " Rekomendasi praktis untuk pelatihan arsitektur mendalam berbasis gradien. " Neural Networks: Tricks of the Trade. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, GB, dan Muller, K. (1998a). Backprop yang efisien. Dalam Jaringan Saraf Tiruan, Trik Perdagangan .

[3] Glorot, Xavier, dan Yoshua Bengio. " Memahami kesulitan melatih jaringan saraf feedforward yang mendalam ." Konferensi internasional tentang kecerdasan buatan dan statistik. 2010

Franck Dernoncourt
sumber
2
Sesuatu yang sepertinya Anda lewatkan adalah Normalisasi Batch. Dijelaskan di sini: arxiv.org/abs/1502.03167 Mungkin bermanfaat.
Joonatan Samuel
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun telah menerbitkan artikel yang lebih baru yang mencakup variasi inisialisasi bobot Xavier dari Glorot dan Bengio: " Menggali Jauh ke dalam Penyearah: Melampaui Kinerja Level Manusia pada Klasifikasi ImageNet" .
mjul