Apa bobot awal yang baik dalam jaringan saraf?


68

Saya baru saja mendengar, bahwa itu adalah ide yang baik untuk memilih bobot awal dari jaringan saraf dari jangkauan (1d,1d) , di mana d adalah jumlah input ke neuron yang diberikan. Diasumsikan, bahwa himpunan dinormalisasi - rata-rata 0, varian 1 (tidak tahu apakah ini penting).

Mengapa ini ide yang bagus?


Lihat tesis master saya, halaman 81 untuk ikhtisar teknik inisialisasi.
Martin Thoma

Jawaban:


47

Saya berasumsi Anda menggunakan neuron logistik, dan bahwa Anda dilatih oleh gradient descent / back-propagation.

Fungsi logistik dekat dengan rata untuk input positif atau negatif yang besar. Turunannya pada input adalah sekitar , tetapi pada turunannya sekitar . Ini berarti bahwa jika input neuron logistik adalah maka, untuk sinyal pelatihan yang diberikan, neuron akan belajar sekitar kali lebih lambat bahwa jika inputnya .21/10101/220001022002

Jika Anda ingin neuron belajar dengan cepat, Anda perlu menghasilkan sinyal pelatihan yang sangat besar (seperti dengan fungsi kehilangan lintas-entropi) atau Anda ingin turunannya menjadi besar. Untuk membuat turunannya besar, Anda mengatur bobot awal sehingga Anda sering mendapatkan input dalam kisaran .[4,4]

Bobot awal yang Anda berikan mungkin atau mungkin tidak berfungsi. Itu tergantung pada bagaimana input dinormalisasi. Jika input dinormalisasi untuk memiliki rata-rata dan standar deviasi , maka jumlah acak dari istilah dengan bobot seragam di akan memiliki rata-rata dan varians , terlepas dari . Probabilitas bahwa Anda mendapatkan jumlah di luar kecil. Itu berarti ketika Anda meningkatkan , Anda tidak menyebabkan neuron mulai jenuh sehingga mereka tidak belajar.01d(1d,1d)013d[4,4]d

Dengan input yang tidak dinormalisasi, bobot tersebut mungkin tidak efektif dalam menghindari kejenuhan.


1
Jadi pada dasarnya, kita harus selalu mempertimbangkan untuk menormalkan data .. Masuk akal sekarang. Bisakah Anda menjelaskan mengapa deviasi std akan menjadi 1/3 dan seberapa kecil probabilitas jumlah input di luar kisaran <-4,4>?
Elmes

1
Ada beberapa sifat dasar varians yang menyiratkan ini: Jika dan adalah independen, maka dan jika dan adalah independen dan memiliki rata-rata , maka . XYVar(X+Y)=Var(X)+Var(Y)XY0Var(XY)=Var(X)Var(Y)
Douglas Zare

1
Anda dapat memperkirakan probabilitas bahwa variabel acak setidaknya deviasi standar dari rata-rata menggunakan ketidaksetaraan Chebyshev. Dalam praktiknya ini tidak tajam, tetapi hasil pastinya tergantung pada distribusinya. 12
Douglas Zare

Ngomong-ngomong, saya salah perhitungan. Variansnya adalah sehingga standar deviasi adalah . 1313
Douglas Zare

1
"Fungsi logistik mendekati flat untuk input positif atau negatif yang besar. Turunan pada input ..." Bukankah subjek yang relevan harus menjadi turunan dari fungsi biaya dari regresi logistik? Dimana input ke turunan dari fungsi biaya sudah diskalakan oleh fungsi logistik ke (0,1) terlepas dari ukuran bobot dan sinyal?
Moobie

28

[1] menjawab pertanyaan:

Pertama, bobot tidak boleh diatur ke nol untuk memecah simetri ketika 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 berkaitan dengan 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 singgung hiperbolik: sampel Seragam (-r, r) dengan (fan-in adalah nomor input unit).r=6fan-in+fan-out
    • untuk unit sigmoid: sampel Seragam (-r, r) dengan (fan-in adalah nomor input unit).r=46fan-in+fan-out
  • 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 umpan dalam yang mendalam ." Konferensi internasional tentang kecerdasan buatan dan statistik. 2010


2
Saya ingin menambahkan dua referensi yang bermanfaat: 1) Menggali Jauh ke Dalam Penyearah: Melampaui Kinerja Level Manusia pada Klasifikasi ImageNet - tentang pentingnya penskalaan sadar-sadar arxiv.org/abs/1502.01852 2) Solusi tepat untuk dinamika nonlinier dari belajar di jaringan saraf linier yang dalam arxiv.org/abs/1312.6120 - matriks ortonormal jauh lebih baik daripada hanya noise Gaussian
old-ufo

1
Editor menyarankan inisialisasi untuk sigmoid dan garis singgung hiperbolik harus dialihkan agar sesuai dengan kertas asli.
gung - Reinstate Monica

2
Apakah Anda ingin tetap mengedit ini, Frank? Jika tidak, Anda dapat mengembalikannya.
gung - Reinstate Monica

Saya pasti melewatkan sesuatu. Di mana dikatakan dalam makalah Glorot dan Bengio (2010) bahwa mereka merekomendasikan untuk menggunakan 4 kali nilai Persamaan 16 saat menggunakan fungsi aktivasi sigmoid logistik? Persamaan 16 mengikuti dari menggunakan Persamaan 12 dan varians dari distribusi seragam, tetapi Persamaan 16 diturunkan dengan asumsi aktivasi simetris dengan unit derivatif pada 0. Dengan demikian, misalnya fungsi aktivasi tanh, tetapi bukan fungsi aktivasi logistik (non-simetris). Lebih lanjut, mereka bahkan tidak menguji inisialisasi yang diusulkan ini dengan sigmoid logistik; mereka hanya mengujinya dengan tanh dan softsign.
Tommy L

10

Penjelasan berikut diambil dari buku: Neural Networks for Pattern Recognition oleh Christopher Bishop. Buku bagus! Asumsikan Anda sebelumnya memutihkan input ke unit input, yaitu dan

<xi>=0
<xi2>=1

Pertanyaannya adalah: bagaimana cara terbaik memilih bobot ?. Idenya adalah untuk memilih nilai bobot secara acak mengikuti distribusi yang membantu proses optimasi untuk menyatu ke solusi yang bermakna.

Anda memiliki untuk aktivasi unit di lapisan pertama, mana . Sekarang, karena Anda memilih bobot secara independen dari input, dan mana sigma adalah varian dari distribusi bobot. Untuk memperoleh hasil ini, Anda perlu mengingat bahwa bobot diinisialisasi secara independen satu sama lain, yaitu

y=g(a)
a=i=0dwixi
<a>=i=0d<wixi>=i=0d<wi><xi>=0
<a2>=(i=0dwixi)(i=0dwixi)=i=0d<wi2><xi2>=σ2d
<wiwj>=δij

Kesalahan kecil: bukannya . <xi2>=10
bayerj

Ini menjelaskan bagaimana Anda mencapai ceratin dengan asumsi Anda tahu diperlukan . Seperti yang saya mengerti, harus kecil untuk memungkinkan nilai besar dari turunan sigmoid, tetapi tidak terlalu kecil sehingga delta tidak akan hilang. Apakah ini benar? Jika demikian - apakah itu aturan praktis yang baik untuk mengatakan bahwa harus ~ 0,2? σααα
Uri

Ini khususnya benar untuk jaringan saraf yang dalam, di mana unit cenderung jenuh dengan cepat saat Anda menambahkan lapisan. Ada sejumlah makalah yang membahas pertanyaan itu. Titik awal yang baik mungkin adalah "Memahami kesulitan melatih jaringan saraf umpan dalam ke depan" oleh glorot dan bengio
jpmuc

10

Baik hanya sebagai pembaruan, Menggali Jauh ke Penyearah: Melampaui Kinerja Level Manusia n Klasifikasi ImageNet oleh He et al memperkenalkan inisialisasi khusus dengan inisialisasi di w = U([0,n]) * sqrt(2.0/n)mana nadalah jumlah input NN Anda. Saya telah melihat inisialisasi ini digunakan dalam banyak karya terbaru (juga dengan ReLU). Mereka benar-benar menunjukkan bagaimana ini mulai mengurangi tingkat kesalahan jauh lebih cepat daripada (-1 / n, 1 / n) yang Anda sebutkan. Untuk penjelasan menyeluruh, lihat makalahnya, tetapi berikut ini seberapa cepat konvergennya: Konvergensi model besar 22-lapisan


Wow! Peningkatan signifikan bagi saya.
Thomas W

Namun tidak untuk sejumlah besar input ... gagal dengan MNIST.
Thomas W

Perhatikan bahwa inisialisasi He dirancang khusus untuk (P) ReLU dan menjelaskan fakta bahwa itu tidak simetris (yang merupakan salah satu asumsi dalam inisialisasi Xavier). Jangan tertipu oleh grafik ini di luar konteks!
Mr Tsjolder

5

Idenya adalah bahwa Anda ingin menginisialisasi bobot dengan cara yang memastikan aliran data maju dan mundur yang baik melalui jaringan. Artinya, Anda tidak ingin aktivasi secara konsisten menyusut atau meningkat saat Anda maju melalui jaringan.

Gambar ini menunjukkan aktivasi ReLU Multi-Layer Perceptron 5 layer di bawah 3 strategi inisialisasi yang berbeda setelah satu kali lulus MNIST melalui jaringan.

Aktivasi dalam MLU ReLU dengan strategi inisialisasi yang berbeda

Dalam ketiga kasus, bobot diambil dari distribusi normal berpusat nol yang ditentukan oleh standar deviasi. Anda dapat melihat bahwa jika bobot awal terlalu kecil (standar deviasi kecil) aktivasi menjadi tersendat, dan jika terlalu besar aktivasi akan meledak. Nilai tengah, yang kira-kira tepat dapat ditemukan dengan mengatur bobot sedemikian rupa sehingga varians dari aktivasi dan pembaruan gradien tetap kira-kira sama seperti ketika Anda melewati jaringan.

Saya menulis posting blog tentang inisialisasi bobot yang lebih detail, tetapi ide dasarnya adalah sebagai berikut.

Jika menunjukkan aktivasi lapisan ke- , ukuran layer, dan bobot yang menghubungkannya ke lapisan -1 , maka satu dapat menunjukkan bahwa untuk fungsi aktivasi dengan kita milikix(i)iniw(i)(i+1)ff(s)1

Var(x(i+1))=niVar(x(i))Var(w(i))

Untuk mencapai kita harus memaksakan kondisi tersebutVar(x(i+1))=Var(x(i))

Var(w(i))=1ni.

Jika kita menyatakan oleh , di bagian belakang kita juga inginLxj(i)Δj(i)

Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).

Kecuali , kita harus berkompromi antara kedua kondisi ini, dan pilihan yang masuk akal adalah mean harmonikni=ni+1

Var(w(i))=2ni+ni+1.

Jika kita mengambil sampel dari distribusi normal kami memenuhi persyaratan ini dengan . Untuk distribusi seragam kita harus mengambil karena . Kami telah tiba di inisialisasi Glorot. Ini adalah strategi inisialisasi default untuk lapisan konvolusi padat dan 2D di Keras, misalnya.N(0,σ)σ=2ni+ni+1U(a,a)a=6ni+ni+1Var(U(a,a))=a2/3

Inisialisasi Glorot berfungsi cukup baik untuk aktivasi sepele dan , tetapi tidak berfungsi dengan baik untuk . Untungnya, karena hanya mengeluarkan nol input negatif, ia secara kasar menghapus setengah varians dan ini mudah diubah dengan mengalikan salah satu kondisi kami di atas dengan dua:tanhReLUf(s)=ReLU(s)

Var(w(i))=2ni.

3

Salah satu teknik lain yang meringankan masalah inisialisasi berat badan adalah Normalisasi Batch . Kerjanya untuk membakukan rata-rata dan varians dari setiap unit untuk menstabilkan pembelajaran seperti yang dijelaskan dalam makalah asli . Dalam praktiknya, jaringan yang menggunakan Normalisasi Batch (BN) secara signifikan lebih kuat untuk inisialisasi buruk. BN berfungsi sebagai berikut: Kami menghitung mean dan varians empiris untuk setiap mini-batch, kemudian kami menstandarisasi input dan bentuk output dengan penskalaan

μB=1mi=1Mxi   and   σB2=1mi=1m(xiμB)2x^i=xiμBσB2+ϵ   and   BN(xi)=γx^i+β
xiBN(xi)x^i oleh dan menambahkan keduanya dipelajari selama pelatihan.γβ

BN memperkenalkan dua parameter tambahan ( dan ) per aktivasi yang memungkinkan memiliki mean dan standar deviasi. Alasan untuk itu adalah normalisasi dapat mengurangi kekuatan ekspresifnya. Parameterisasi baru ini memiliki dinamika pembelajaran yang lebih baik: dalam parameterisasi lama rata-rata ditentukan oleh interaksi yang rumit antara parameter semua lapisan sebelumnya - perubahan kecil pada parameter jaringan menguat ketika jaringan menjadi lebih dalam. Dalam parameterisasi baru rata-rata ditentukan oleh yang kita pelajari bersama denganγβx^ixixix^iβγselama pelatihan. Dengan demikian, Normalisasi Batch menstabilkan pembelajaran.

Sebagai hasilnya, Normalisasi Batch memungkinkan pelatihan yang lebih cepat dengan menggunakan tingkat pembelajaran yang jauh lebih tinggi dan meringankan masalah inisialisasi yang buruk. BN juga memungkinkan untuk menggunakan saturasi non-linearitas dengan mencegah jaringan dari terjebak dalam mode saturasi. Singkatnya, Normalisasi Batch adalah transformasi terdiferensiasi yang memperkenalkan aktivasi yang dinormalisasi ke dalam jaringan. Dalam praktiknya, lapisan BN dapat dimasukkan segera setelah lapisan yang sepenuhnya terhubung.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.