Wie man nach toten Relu-Neuronen sucht

10

Hintergrund: Beim Anpassen neuronaler Netze mit Relu-Aktivierung stellte ich fest, dass die Vorhersage manchmal nahezu konstant wird. Ich glaube, dass dies daran liegt, dass die Relu-Neuronen während des Trainings sterben, wie hier angegeben. ( Was ist das "sterbende ReLU" -Problem in neuronalen Netzen? )

Frage: Ich hoffe, eine Überprüfung im Code selbst durchzuführen, um zu überprüfen, ob die Neuronen tot sind. Danach kann der Code das Netzwerk bei Bedarf neu einrichten.

Was ist als solches eine gute Citeria, um nach toten Neuronen zu suchen? Derzeit denke ich daran, die Vorhersage als Citeria auf geringe Varianz zu überprüfen.

Wenn es hilft, benutze ich Keras.

Aveiur
quelle
Fügen Sie eine Zusammenfassung für die Verzerrungen in Tensorboard hinzu: tensorflow.org/get_started/summaries_and_tensorboard
Emre

Antworten:

6

Eine tote ReLU bedeutet so ziemlich nur, dass ihr Argumentwert negativ ist, so dass der Gradient bei 0 bleibt; egal wie du es von diesem Punkt an trainierst. Sie können einfach während des Trainings einen Blick auf den Gradienten werfen, um festzustellen, ob eine ReLU tot ist oder nicht.

In der Praxis möchten Sie möglicherweise einfach undichte ReLUs verwenden, dh anstelle von f (x) = max (0, x) setzen Sie f (x) = x, wenn x> 0 und f (x) = 0,01x, wenn x <= 0 Auf diese Weise lassen Sie immer einen kleinen Gradienten ungleich Null zu und das Gerät sollte nicht mehr vollständig im Training stecken bleiben.

Martin Krämer
quelle
1

Ein totes Neuron ist ein Neuron, das während des Trainings nicht aktualisiert wird, d. H. 0 Gradient.

Keras ermöglicht die Gradientenextraktion direkt für eine bestimmte Datenzeile. (Ein weiteres schönes Beispiel)

Oder Sie können die Neuronengewichte extrahieren und den Gradienten selbst berechnen
(z. B. für relu, negatives Argument für relu -> 0 Gradient).

Leider ist der Gradient datenpunktspezifisch. Nur wenn der Gradient für jede Zeile von Trainingsdaten 0 ist, können Sie sicher sein, dass das Neuron während einer Trainingsepoche nicht für alle Minibatches aktualisiert wird.

Leaky Relu kann eine hilfreiche Strategie sein, da es keinen Wert für Leaky Relu gibt, bei dem der Gradient gleich 0 ist.

D Bolta
quelle