¿Qué es el meta parámetro `weight_decay` en Caffe?

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 debería asignarle?

El meta parámetro weight_decay rige el término de regularización de la neural network.

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 qué tan 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 más grandes de InnerProduct, etc.), más alto debe ser este término.

Caffe también le permite elegir entre la regularización L2 (por defecto) 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 ), la norma L2 de los pesos es significativamente menor que su norma L1 . Por lo tanto, si elige usar regularization_type: "L1" , puede que necesite ajustar weight_decay a un valor significativamente menor.

Si bien la tasa de aprendizaje puede cambiar (y generalmente lo hace) durante el entrenamiento, el peso de regularización se fija en todo momento.

La disminución de peso es un término de regularización que penaliza los grandes pesos. Cuando el coeficiente de reducción de peso es grande, la penalización por grandes pesos también es grande, cuando es pequeña, los pesos pueden crecer libremente.

Mire esta respuesta (no específica para caffe) para una mejor explicación: Diferencia entre la “reducción de peso” de la neural network y la “tasa de aprendizaje” .