Comment vérifier les neurones relu morts

10

Contexte: Lors de l'adaptation de réseaux neuronaux à l'activation de relu, j'ai constaté que parfois la prédiction devient presque constante. Je crois que cela est dû à la mort des neurones relu pendant l'entraînement, comme indiqué ici. ( Quel est le problème "mourant ReLU" dans les réseaux de neurones? )

Question: Ce que j'espère faire, c'est implémenter une vérification dans le code lui-même pour vérifier si les neurones sont morts. Après cela, le code pourrait réaménager le réseau si nécessaire.

En tant que tel, quel est un bon citeria pour vérifier les neurones morts? Je pense actuellement à vérifier la faible variance de la prévision en tant que citeria.

Si cela aide, j'utilise des keras.

Aveiur
la source
Ajouter un résumé des biais dans tensorboard: tensorflow.org/get_started/summaries_and_tensorboard
Emre

Réponses:

6

Un ReLU mort signifie à peu près simplement que sa valeur d'argument est négative de sorte que le gradient reste à 0; peu importe comment vous l'entraînez à partir de ce moment-là. Vous pouvez simplement regarder le gradient pendant l'entraînement pour voir si un ReLU est mort ou non.

En pratique, vous pouvez simplement utiliser des ReLU qui fuient, c'est-à-dire qu'au lieu de f (x) = max (0, x) vous définissez f (x) = x si x> 0 et f (x) = 0,01x si x <= 0 De cette façon, vous autorisez toujours un petit gradient non nul et l'appareil ne devrait plus être complètement bloqué à l'entraînement.

Martin Krämer
la source
1

Un neurone mort est un neurone qui ne se met pas à jour pendant l'entraînement, c'est-à-dire. 0 dégradé.

Keras permet l' extraction de gradient directement pour une ligne de données donnée. (Un autre bel exemple)

Ou vous pouvez extraire les poids des neurones et calculer le gradient vous-même
(par exemple pour relu, argument négatif pour relu -> 0 gradient.)

Malheureusement, le gradient est spécifique au point de données. Ce n'est que si le gradient est de 0 pour chaque ligne de données d'entraînement que vous pouvez être sûr que le neurone ne se mettra pas à jour pour tous les minibatches pendant une période d'entraînement.

Relu qui fuit peut être une stratégie utile car il n'y a aucune valeur pour relu qui fuit lorsque le gradient est égal à 0.

D Bolta
la source