web-dev-qa-db-fra.com

Qu'est-ce que le méta-paramètre `weight_decay` dans Caffe?

En regardant un exemple 'solver.prototxt' , publié sur BVLC/caffe git, il existe un méta-paramètre de formation

weight_decay: 0.04

Que signifie ce méta-paramètre? Et quelle valeur dois-je lui attribuer?

24
Shai

Le weight_decay un méta paramètre régit le terme de régularisation du réseau neuronal.

Pendant la formation, un terme de régularisation est ajouté à la perte du réseau pour calculer le gradient de backprop. Le weight_decay value détermine la dominance de ce terme de régularisation dans le calcul du gradient.

En règle générale, plus vous avez d'exemples de formation, plus ce terme devrait être faible. Plus vous avez de paramètres (c.-à-d. Un filet plus profond, des filtres plus grands, des couches InnerProduct plus grandes, etc.), plus ce terme doit être élevé.

Caffe vous permet également de choisir entre L2 régularisation (par défaut) et L1 régularisation, en définissant

regularization_type: "L1"

Cependant, comme dans la plupart des cas, les poids sont de petits nombres (c'est-à-dire -1<w<1), le L2 la norme des poids est nettement inférieure à leur L1 norme. Ainsi, si vous choisissez d'utiliser regularization_type: "L1" vous devrez peut-être régler weight_decay à une valeur nettement inférieure.

Bien que le taux d'apprentissage puisse changer (et change généralement) pendant la formation, le poids de régularisation est fixe tout au long.

44
Shai

La décroissance pondérale est un terme de régularisation qui pénalise les gros poids. Lorsque le coefficient de décroissance du poids est grand, la pénalité pour les gros poids est également grande, quand il s'agit de petits poids, ils peuvent croître librement.

Regardez cette réponse (non spécifique à caffe) pour une meilleure explication: Différence entre le réseau neuronal "décroissance du poids" et "taux d'apprentissage" .

14
Tal Darom