¿Qué es la restricción maxnorm? ¿Cómo es útil en redes neuronales convolucionales?

Respuestas:

16

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

Restricciones de la norma máxima. Otra forma de regularización es imponer un límite superior absoluto en la magnitud del vector de peso para cada neurona y usar el descenso de gradiente proyectado para imponer la restricción. En la práctica, esto corresponde a realizar la actualización de parámetros de forma normal y luego hacer cumplir la restricción sujetando el vector de peso de cada neurona para satisfacerLos valores típicos de están en órdenes de 3 o 4. Algunas personas informan mejoras cuando usan esta forma de regularización. Una de sus propiedades atractivas es que la red no puede "explotar" incluso cuando las tasas de aprendizaje son demasiado altas porque las actualizaciones siempre están limitadas.ww2<c.c

Franck Dernoncourt
fuente
8

Encontré una respuesta de McLawrence en otra pregunta muy útil. Reproducido a continuación:

¿Qué hace una restricción de peso max_norm?

maxnorm(m)Si la norma L2 de sus pesos excede m, escalará toda su matriz de peso por un factor que reduce la norma a m. Como puede encontrar en el código keras en 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

Además, maxnormtiene un axisargumento, a lo largo del cual se calcula la norma. En su ejemplo, no especifica un eje, por lo tanto, la norma se calcula sobre toda la matriz de peso. Si, por ejemplo, desea restringir la norma de cada filtro convolucional, suponiendo que esté utilizando el tfordenamiento de dimensiones, la matriz de peso tendrá la forma (rows, cols, input_depth, output_depth). Calcular la norma sobre axis = [0, 1, 2]limitará cada filtro a la norma dada.

¿Por qué hacerlo?

Restringir la matriz de peso directamente es otro tipo de regularización. Si usa un término de regularización L2 simple, penaliza los pesos altos con su función de pérdida. Con esta restricción, se regulariza directamente. Como también está vinculado en el kerascódigo, esto parece funcionar especialmente bien en combinación con una dropoutcapa. Más más información, consulte el capítulo 5.1 de este documento

jeremysprofile
fuente
Buena respuesta, pero tenga cuidado: "En su ejemplo no especifica un eje, por lo tanto, la norma se calcula sobre toda la matriz de peso". - Esto no parece ser cierto (al menos a partir de ahora). Por el contrario, la norma se calcula sobre el valor predeterminado axis=0.
Bobson Dugnutt
Estoy de acuerdo, la norma máxima se toma como la longitud de los pesos que se despliegan en un nodo en una capa oculta, es decir, . Además, ¿notó que para la regularización del abandono, se usó max-norm para todas las ejecuciones (consulte el último párrafo en la página 1934 de cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf ). ||w||
wrktsj