Cómo verificar si hay neuronas relu muertas

10

Antecedentes: al ajustar las redes neuronales con la activación de relu, descubrí que a veces la predicción se vuelve casi constante. Creo que esto se debe a que las neuronas relu mueren durante el entrenamiento como se indica aquí. ( ¿Cuál es el problema "moribundo ReLU" en las redes neuronales? )

Pregunta: Lo que espero hacer es implementar una verificación en el propio código para verificar si las neuronas están muertas. Después de eso, el código podría reajustar la red si es necesario.

Como tal, ¿cuál es un buen criterio para buscar neuronas muertas? Actualmente estoy pensando en comprobar la baja varianza en la predicción como un criterio.

Si ayuda, estoy usando keras.

Aveiur
fuente
Agregue un resumen de los sesgos en el tensorboard: tensorflow.org/get_started/summaries_and_tensorboard
Emre

Respuestas:

6

Un ReLU muerto simplemente significa que su valor de argumento es negativo, de modo que el gradiente permanece en 0; no importa cómo lo entrenes a partir de ese momento. Simplemente puede echar un vistazo al gradiente durante el entrenamiento para ver si un ReLU está muerto o no.

En la práctica, es posible que simplemente desee utilizar ReLU con fugas, es decir, en lugar de f (x) = max (0, x), configure f (x) = x si x> 0 yf (x) = 0.01x si x <= 0 De esta manera, siempre se permite un pequeño gradiente distinto de cero y la unidad ya no debería quedar completamente atascada en el entrenamiento.

Martin Krämer
fuente
1

Una neurona muerta es una neurona que no se actualiza durante el entrenamiento, es decir. 0 gradiente

Keras permite la extracción de gradiente directamente para una fila de datos dada. (Otro buen ejemplo)

O puede extraer los pesos de las neuronas y calcular el gradiente usted mismo
(por ejemplo, para relu, argumento negativo para relu -> 0 gradiente).

Desafortunadamente, el gradiente es específico del punto de datos. Solo si el gradiente es 0 para cada fila de datos de entrenamiento, puede estar seguro de que la neurona no se actualizará para todos los minibatches durante una época de entrenamiento.

La fuga relu puede ser una estrategia útil ya que no hay valor para la fuga relu donde el gradiente es igual a 0.

D Bolta
fuente