machine-learning - tutorial - net forward
¿Qué es el metaparámetro `weight_decay` en Caffe? (2)
Mirando un ejemplo
''solver.prototxt''
, publicado en BVLC / caffe git, hay un meta parámetro de entrenamiento
weight_decay: 0.04
¿Qué significa este metaparámetro? ¿Y qué valor debo asignarle?
El
weight_decay
rige el término de regularización de la red neuronal.
Durante el entrenamiento, se agrega un término de regularización a la pérdida de la red para calcular el gradiente de backprop.
El valor de
weight_decay
determina cuán dominante será este término de regularización en el cálculo del gradiente.
Como regla general, cuantos más ejemplos de entrenamiento tenga, más débil será este término. Cuantos más parámetros tenga (es decir, una red más profunda, filtros más grandes, capas de producto interno más grandes, etc.), mayor será este término.
Caffe también le permite elegir entre la regularización
L2
(predeterminada) y la regularización
L1
, configurando
regularization_type: "L1"
Sin embargo, dado que en la mayoría de los casos los pesos son números pequeños (es decir,
-1<w<1
), la norma
L2
de los pesos es significativamente menor que su norma
L1
.
Por lo tanto, si elige usar
regularization_type: "L1"
es posible que deba ajustar
weight_decay
a un valor significativamente menor.
Si bien la tasa de aprendizaje puede (y generalmente cambia) durante el entrenamiento, el peso de la regularización se fija en todo momento.
La pérdida de peso es un término de regularización que penaliza los grandes pesos. Cuando el coeficiente de caída de peso es grande, la penalización por los pesos grandes también es grande, cuando es pequeño, los pesos pueden crecer libremente.
Mire esta respuesta (no específica para caffe) para una mejor explicación: Diferencia entre la "pérdida de peso" neta neta y la "tasa de aprendizaje" .