¿Cómo puedo explicar que las unidades tradicionales de red neuronal recurrente (RNN) sufren el problema del gradiente de fuga?

Ayuda a pensar en las redes neuronales como una cadena de transformaciones aplicadas al vector de entrada. Por ejemplo, una red neuronal de alimentación hacia adelante realiza una transformación afín (seguida de una no linealidad por elementos) en cada capa.

Cuando se retropropagan los errores, aplicamos las transformaciones inversas para calcular el gradiente de la pérdida con respecto a los pesos. Si la mayoría de estas transformaciones inversas hacen que el error sea más pequeño o más grande, el gradiente desaparece o explota, respectivamente.

Del mismo modo, una red neuronal recurrente realiza una transformación a su estado en cada paso de tiempo. Sin embargo, en este caso, la transformación aplicada es la misma en cada paso de tiempo, ya que la red usa repetidamente la misma matriz de peso.

Por lo tanto, la misma transformación inversa se aplica a la pérdida. Esto hace que sea mucho más probable que los gradientes desaparezcan o exploten, ya que las transformaciones inversas aplicadas se acoplan y, por lo tanto, reducen la señal o la reducen.

El truco para hacer que los RNN entrenen es alentar la transformación que se aplica a los estados para preservar aproximadamente la escala. Es por eso que los LSTM calculan el siguiente estado de contexto multiplicando el estado de contexto anterior con la puerta de olvido, un escalar cercano a 1.

Trataré de hacer esto matemáticamente riguroso, en lugar de que todas las respuestas no lo hagan. En el corazón de este problema, en realidad está tomando un límite simple a una matriz exponencial.

Tome un RNN Vanilla con una capa oculta. [math] \ theta, \ theta_ {x} y \ theta_ {y} [/ math] son ​​parámetros de la red neuronal que necesitamos determinar (estoy ignorando términos constantes por conveniencia), [math] x_ {i} [/ math] son ​​entradas a la red. No debemos preocuparnos por las dimensiones exactas por ahora. Además, [math] E_ {t} [/ math] es la función de error, podemos ignorar de forma segura la forma exacta de la misma, usted va con diferentes formas, como la pérdida de entropía cruzada, etc., según sus tareas.

Las dos ecuaciones centrales para un RNN Vanilla son:

  • [matemáticas] h_ {t} = \ theta * \ phi \ left (h_ {t-1} \ right) + \ theta_ {x} * x_ {t} [/ math]
  • [matemáticas] y_ {t} = \ theta_ {y} * \ phi \ left (h_ {t} \ right) [/ math]

El primero proporciona la función de transición de un estado [matemático] h_ {t-1} [/ matemático] al estado [matemático] h_ {t} [/ matemático]. Además, [math] \ phi [/ math] aquí es una función básica o popularmente llamada no linealidad como ReLU o tanh, nuevamente podemos ignorar con seguridad su forma exacta para nuestros propósitos. El segundo calcula la salida de su red neuronal.

Los RNN de Vanilla son difíciles de entrenar a través de métodos basados ​​en gradientes como Gradient Descent. Al final, queremos poder calcular:

[math] \ frac {\ partial E} {\ partial \ theta} = \ sum_ {t} \ frac {\ partial E_ {t}} {\ partial \ theta} [/ math]

Tomemos un valor particular de [math] t [/ math] y calcule [math] \ frac {\ partial E_ {t}} {\ partial \ theta}. [/matemáticas]

[matemáticas] \ frac {\ partial E_ {t}} {\ partial \ theta} = \ sum_ {k = 1} ^ {t-1} \ frac {\ partial E_ {t}} {\ partial y_ {t} } \ frac {\ partial y_ {t}} {\ partial h_ {t}} \ frac {\ partial h_ {t}} {\ partial h_ {k}} \ frac {\ partial h_ {k}} {\ parcial \ theta} [/ math]

[matemáticas] = \ frac {\ partial E_ {t}} {\ partial y_ {t}} \ frac {\ partial y_ {t}} {\ partial h_ {t}} \ sum_ {k = 1} ^ {t -1} \ frac {\ partial h_ {t}} {\ partial h_ {k}} \ phi (h_ {k-1}) [/ math]

Lo que realmente necesitamos calcular ahora es [math] \ frac {\ partial h_ {t}} {\ partial h_ {k}}. [/ Math]

Algún ingenioso matemático debería convencerte de que …

[matemáticas] \ frac {\ partial h_ {t}} {\ partial h_ {k}} = \ prod_ {i = t} ^ {k + 1} \ frac {\ partial h_ {i}} {\ partial h_ { i-1}} [/ matemáticas]

que se simplifica aún más a [matemáticas] \ prod_ {i = t} ^ {k + 1} \ theta {\ phi} ‘(h_ {i-1}) [/ matemáticas]

que es equivalente a [math] \ theta ^ {tk} \ prod_ {i = t} ^ {k + 1} {\ phi} ‘(h_ {i-1}). [/ math] Finalmente tenemos [math] \ frac {\ partial h_ {t}} {\ partial h_ {k}} = \ theta ^ {tk} \ prod_ {i = t} ^ {k + 1} {\ phi} ‘(h_ {i-1} )[/matemáticas].

Ahora utilizaremos una prueba matemática que relaciona el radio espectral, es decir, el valor propio máximo con la convergencia de la potencia de una matriz. Esto es de Wikipedia –

El radio espectral está estrechamente relacionado con el comportamiento de la convergencia de la secuencia de potencia de una matriz; a saber, se cumple el siguiente teorema:

Teorema. Deje AC n × n con radio espectral ρ ( A ). Entonces ρ ( A ) <1 si y solo si

[matemáticas] {\ displaystyle \ lim _ {k \ to \ infty} A ^ {k} = 0.} [/ matemáticas]

Por otro lado, si ρ ( A )> 1, [math] {\ displaystyle \ lim _ {k \ to \ infty} \ | A ^ {k} \ | = \ infty} [/ math].

Sustituya nuestra matriz requerida [matemática] \ theta [/ matemática] en lugar de A y deduciría que dependiendo del radio espectral de [matemática] \ theta [/ matemática] nuestra matriz requerida [matemática] \ theta ^ {tk}, [ / math] en la expresión para [math] \ frac {\ partial h_ {t}} {\ partial h_ {k}} [/ math] convergería a cero (problema de gradiente de fuga) o infinito (problema de gradiente de explosión). Esta es la razón por la cual es difícil para los RNN aprender dependencias a largo plazo, es decir, [matemática] \ frac {\ parcial h_ {t}} {\ parcial h_ {k}} [/ matemática] mediante métodos basados ​​en gradiente.

Referencias:

Lección de aprendizaje profundo 12: redes neuronales recurrentes y LSTM

Radio espectral – Wikipedia

Consejo: Mire la conferencia de Nando Freitas que he vinculado, detalla un poco más la esencia de la que he tratado de obtener aquí. He elaborado notas, comente a continuación si desea que las cargue.

Comprueba si este tutorial te ayuda: https://cs.stanford.edu/~quocle/
Mira la sección 4.6. No dude en volver para cualquier aclaración en la sección de comentarios.

Creo que, en teoría, no se puede explicar el problema del gradiente de fuga. El problema se realiza cuando se les pone en formación. Intente dibujar los gráficos para los pesos, gradientes, costo, optimizador, verá por sí mismo que los gradientes caen en picado a 0.

sigues multiplicando un número menor que cero con otro número menor que cero. finalmente llegará a .0000000000000000012 o menos. así es como RNN enfrenta este problema.

More Interesting

¿Cuál es más adecuado para un aprendizaje automático de codificador o desarrollo web?

¿Podría la red neuronal de convolución completa aprender a discriminar entre clases si no hay muestreo descendente y la entrada es igual a salida?

¿Cuál es la diferencia entre minería de datos, aprendizaje automático y reconocimiento de patrones?

Según muchas personas, la inteligencia artificial y el aprendizaje automático son las principales razones de los despidos de trabajo de TI. ¿Qué trabajos han sido reemplazados por estas disciplinas?

¿Cuál es el método del núcleo? ¿Cómo se usa en los sistemas de recomendación?

¿Qué tan difícil es aprender TensorFlow?

¿Qué es una herramienta Weka?

¿Cuál es el mejor foro de red neuronal en Internet?

¿Cuál es la diferencia entre la función de pérdida y la función de activación?

¿Qué es un sistema o algoritmo de recomendación que dice 'Dado que consumiste X {a} veces, Y {b} veces y Z {c} veces, ¿cuál de {X, Y, Z} debería recomendarte que consumas a continuación'?

¿Cómo ayuda el enfoque ontológico con la clasificación de texto?

¿Cuál es la ventaja del modelo espacial autorregresivo?

¿Qué es una capa de disminución de resolución en la red neuronal convolucional (CNN)?

¿Las estadísticas necesitan un cambio de marca en respuesta a la ciencia de datos y el aprendizaje automático, que están superando las estadísticas en términos de relevancia? ¿Por qué o por qué no?

¿Cómo afecta el término de regularización a la constante de Lipschitz en la minimización empírica regularizada del riesgo?