¿Cuál es la explicación de la causa de la explosión y desaparición del gradiente de red neuronal recurrente RNN?

Voy a referirme a la introducción de RNN aquí: Tutorial de redes neuronales recurrentes, Parte 1 – Introducción a los RNN

Digamos que tiene la siguiente red:

La ecuación de interés es

[matemáticas] s_t = f (Ux_t + Ws_ {t-1}) [/ matemáticas]

donde [math] f [/ math] es la función sigmoide (). Desea aprender matrices [matemáticas] W [/ matemáticas] y [matemáticas] U [/ matemáticas]. (También desea aprender [matemáticas] V [/ matemáticas], pero eso no es importante para la discusión aquí).

Para simplificar, usemos una simplificación: establezca [math] U [/ math] igual a cero, para obtener

[matemáticas] s_t = f (Ws_ {t-1}) [/ matemáticas]

Suponga que la secuencia [math] s_t [/ math] va de [math] s_0 [/ math] a [math] s_T [/ math]. Deje que [math] \ dfrac {\ partial y} {\ partial s_T} [/ math] sea el gradiente de la salida con respecto al término final.

Para encontrar el gradiente de la salida con respecto a [math] W [/ math], necesita calcular el gradiente de la salida con respecto a cada [math] s_t [/ math] (como parte de la retropropagación). Entonces, obtienes,

[matemáticas] \ dfrac {\ partial y} {\ partial s_ {t-1}} = \ dfrac {\ partial s_t} {\ partial s_ {t-1}} \ cdot \ dfrac {\ partial y} {\ partial s_t} = D_t \ cdot W \ cdot \ dfrac {\ partial y} {\ partial s_t} [/ math]

Aquí, [math] D_t [/ math] es la derivada del sigmoide.

Entonces,

[math] \ dfrac {\ partial y} {\ partial s_ {t-1}} = D_t W \ dfrac {\ partial y} {\ partial s_ {t}} [/ math]

Usando esta ecuación repetidamente para encontrar el gradiente de la salida con respecto a [math] s_0 [/ math], obtenemos

[math] \ dfrac {\ partial y} {\ partial s_ {0}} = D_1 W \ ldots D_ {T-1} W D_T W \ dfrac {\ partial y} {\ partial s_ {T}} [/ math ]

Ahora es la matriz [matemática] W [/ matemática] cuyos valores propios juegan un papel en hacer que el problema sea inestable. Nuevamente, por simplicidad, suponga que [math] \ dfrac {\ partial y} {\ partial s_ {T}} [/ math] está alineado con el vector propio correspondiente al valor propio más grande de [math] W [/ math], y la magnitud de [math] \ dfrac {\ partial y} {\ partial s_ {T}} [/ math] es K. Entonces, ¿cuál es la magnitud de [math] W \ dfrac {\ partial y} {\ partial s_ { T}} [/ matemáticas]? [matemáticas] \ lambda \ cdot K [/ matemáticas].

Entonces esa ecuación eventualmente le dará [math] \ dfrac {\ partial y} {\ partial s_ {0}} [/ math] con una magnitud del orden de [math] \ lambda ^ T K. [/ Math] Entonces, si [math] \ lambda [/ math] es menor que 1, los gradientes van a cero. Si [math] \ lambda [/ math] es mayor que 1, los gradientes van a [math] \ infty [/ math].

Notas:

  1. Aquí se ignora la contribución de [math] D_t [/ math] en la magnitud, porque no hacen mucha diferencia. Para los gradientes que desaparecen, solo aumentan la tasa de gradientes que descienden a cero. Para los gradientes explosivos, si en algún momento durante el entrenamiento, varios de los [matemáticos] D_t [/ matemáticos] consecutivos mantienen la magnitud igual, el gradiente explota debido al término [matemático] W ^ T [/ matemático].
  2. Asumimos que [math] \ dfrac {\ partial y} {\ partial s_ {T}} [/ math] está alineado con el vector propio correspondiente al valor propio más grande. Si eso no es cierto, considere el componente de [math] \ dfrac {\ partial y} {\ partial s_ {T}} [/ math] a lo largo de la dirección del vector propio correspondiente al vector propio más grande, y el mismo argumento es válido.
  3. Debería ser posible hacer que las matemáticas sean más rigurosas, escribiendo explícitamente [math] D_t [/ math], y usando propiedades de matriz para encontrar la magnitud de [math] \ dfrac {\ partial y} {\ partial s_ {0} } [/ math], y también escribiendo [math] \ dfrac {\ partial y} {\ partial s_ {T}} [/ math] como una combinación lineal de todos los vectores propios de [math] W [/ math], pero El análisis anterior ofrece un bosquejo razonablemente bueno del análisis completo sin hacerlo demasiado engorroso.

Porque el backprop a través del tiempo las convierte en redes increíblemente profundas. Es por eso que se usan LSTM.

More Interesting

¿El error de clasificación de las redes neuronales se denomina "tasa de error"?

¿Cuáles son las mejores prácticas para garantizar que los datos adquiridos de la investigación que implica el análisis de Big Data resulten precisos y útiles?

¿Existe algún hardware especializado para algoritmos de aprendizaje profundo?

¿Qué hace que una computadora sea única? ¿Es el HDD? Si es así, ¿eliminarlo y ponerlo en otra máquina hace que esa máquina sea la misma que la original?

¿Cómo puedo explicar el hecho de que el aprendizaje por transferencia ofrece un mejor rendimiento que el entrenamiento estándar?

¿A qué laboratorio puedo unirme en Caltech para hacer investigación de aprendizaje automático?

¿Por qué el aprendizaje profundo solo funciona bien en datos no estructurados?

¿Es suficiente tomar todos los cursos de la especialización de Machine Learning de la Universidad de Washington en el curso para obtener mi primer trabajo / pasantía en ML?

¿Qué especificaciones de computadora se recomiendan para entrenar redes neuronales?

¿Puedo usar videos de YouTube para hacer aprendizaje automático comercial?

¿Es el número de nodos en una capa oculta más que la capa de entrada? ¿Es esto un problema? ¿Qué se puede aprender en tales redes neuronales?

Cómo visualizar Kernel CNN con una profundidad mayor de 3

¿Cuáles son los mejores algoritmos de aprendizaje sin supervisión para la corrección ortográfica?

¿Podemos usar un algoritmo no supervisado para realizar análisis de sentimientos?

¿Por qué la función sigmoidea rara vez se usa en capas ocultas recientemente?