Jawaban:
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. ‖ → w ‖2<c.
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 melebihim
, skala seluruh matriks berat Anda dengan faktor yang mengurangi normam
. Seperti yang dapat Anda temukan dalam kode keras diclass 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,
maxnorm
memilikiaxis
argumen, 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 menggunakantf
pemesanan dimensi, matriks bobot akan memiliki bentuk(rows, cols, input_depth, output_depth)
. Menghitung norma lebihaxis = [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
keras
kode, ini tampaknya bekerja sangat baik dalam kombinasi dengandropout
layer. Info lebih lanjut lihat bab 5.1 dalam makalah ini
axis=0
.