Apa batasan maxnorm? Bagaimana ini berguna dalam Neural Networks Konvolusional?


Jawaban:


16

Dari http://cs231n.github.io/neural-networks-2/#reg :

Batasan norma maks. Bentuk lain dari regularisasi adalah untuk menegakkan batas atas absolut pada besarnya vektor berat untuk setiap neuron dan menggunakan proyeksi gradien keturunan untuk menegakkan batasan. Dalam praktiknya, ini berhubungan dengan melakukan pembaruan parameter seperti biasa, dan kemudian menegakkan batasan dengan menjepit vektor bobot dari setiap neuron untuk memenuhiNilai khas dari ada di pesanan 3 atau 4. Beberapa orang melaporkan peningkatan saat menggunakan bentuk regularisasi ini. Salah satu properti yang menarik adalah bahwa jaringan tidak dapat "meledak" bahkan ketika tingkat pembelajaran ditetapkan terlalu tinggi karena pembaruan selalu dibatasi.w2<c.ww2<c.c


8

Saya menemukan jawaban oleh McLawrence dalam pertanyaan lain yang sangat membantu. Diproduksi ulang di bawah ini:

Apa yang dilakukan batasan berat max_norm?

maxnorm(m)akan, jika L2-Norm bobot Anda melebihi m, skala seluruh matriks berat Anda dengan faktor yang mengurangi norma m. Seperti yang dapat Anda temukan dalam kode keras di class MaxNorm(Constraint):

def __call__(self, w):
    norms = K.sqrt(K.sum(K.square(w), axis=self.axis, keepdims=True))
    desired = K.clip(norms, 0, self.max_value)
    w *= (desired / (K.epsilon() + norms))
    return w

Adatively, maxnormmemiliki axisargumen, di mana norma dihitung. Dalam contoh Anda, Anda tidak menentukan sumbu, sehingga norma dihitung atas seluruh matriks bobot. Jika misalnya, Anda ingin membatasi norma setiap filter konvolusional, dengan asumsi bahwa Anda menggunakan tfpemesanan dimensi, matriks bobot akan memiliki bentuk (rows, cols, input_depth, output_depth). Menghitung norma lebih axis = [0, 1, 2]akan membatasi setiap filter dengan norma yang diberikan.

Kenapa melakukannya?

Membatasi matriks bobot secara langsung adalah jenis regularisasi lainnya. Jika Anda menggunakan istilah regularisasi L2 sederhana, Anda akan menghukum bobot tinggi dengan fungsi kerugian Anda. Dengan batasan ini, Anda mengatur secara langsung. Seperti juga ditautkan dalam keraskode, ini tampaknya bekerja sangat baik dalam kombinasi dengan dropoutlayer. Info lebih lanjut lihat bab 5.1 dalam makalah ini


Jawaban yang bagus, tetapi berhati-hatilah: "Dalam contoh Anda, Anda tidak menentukan sumbu, sehingga norma dihitung atas seluruh matriks bobot." - Ini sepertinya tidak benar (setidaknya sampai sekarang). Sebaliknya, norma kemudian dihitung di atas default axis=0.
Bobson Dugnutt

Saya setuju, max-norm diambil sebagai panjang dari bobot yang fan-in ke sebuah simpul di lapisan tersembunyi, yaitu, . Juga, apakah Anda memperhatikan bahwa untuk regularisasi dropout, max-norm digunakan untuk semua run (lihat paragraf terakhir di halaman 1934 dari cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf ). ||w||
wrktsj
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.