Maxnorm kısıtı nedir? Evrişimli Sinir Ağlarında nasıl faydalıdır?


Yanıtlar:



8

Bir buldum McLawrence tarafından cevap içinde başka bir soru çok yardımcı olmaktır. Aşağıda çoğaltıldı:

Kilo kısıtı ne yapar max_norm?

maxnorm(m)ağırlıklarınızın L2-Normu aşılırsa m, tüm ağırlık matrisinizi normu azaltan bir faktörle ölçeklendirir m. Keras kodunda bulabileceğiniz gibi 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

Ek olarak, normun hesaplandığı maxnormbir axisargüman vardır . Örneğinizde bir eksen belirtmezsiniz, bu nedenle norm tüm ağırlık matrisi üzerinde hesaplanır. Örneğin, tfboyut düzenini kullandığınızı varsayarsak, her evrişimsel filtrenin normunu sınırlamak istiyorsanız , ağırlık matrisi şekle sahip olacaktır (rows, cols, input_depth, output_depth). Normun hesaplanması axis = [0, 1, 2]her filtreyi verilen norm ile sınırlar.

Neden yapmalı?

Ağırlık matrisini doğrudan sınırlamak başka bir tür düzenlemedir. Basit bir L2 düzenleme terimi kullanırsanız, kayıp fonksiyonunuzla yüksek ağırlıkları cezalandırırsınız. Bu kısıtlama ile doğrudan düzenli hale gelirsiniz. Kodda da bağlandığı kerasgibi, bu özellikle bir dropoutkatmanla birlikte iyi çalışıyor gibi görünüyor . Daha fazla bilgi için bu yazıda bölüm 5.1'e bakınız.


Güzel cevap, ama dikkat: "Örneğinizde bir eksen belirtmezsiniz, böylece norm tüm ağırlık matrisi üzerinde hesaplanır." - Bu doğru gibi görünmüyor (en azından şu andan itibaren). Aksine, norm daha sonra varsayılan değer üzerinden hesaplanır axis=0.
Bobson Dugnutt

||w||
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.