El LSTM se inventó específicamente para evitar el problema del gradiente de fuga. Se supone que debe hacer eso con el carrusel de error constante (CEC), que en el diagrama a continuación (de Greff et al. ) Corresponde al bucle alrededor de la celda .
(fuente: deeplearning4j.org )
Y entiendo que esa parte puede verse como una especie de función de identidad, por lo que la derivada es una y el gradiente permanece constante.
Lo que no entiendo es cómo no desaparece debido a las otras funciones de activación. Las puertas de entrada, salida y olvido usan un sigmoide, cuya derivada es como máximo 0.25, y g y h eran tradicionalmente tanh . ¿Cómo la propagación hacia atrás a través de esos no hace que el gradiente desaparezca?
neural-networks
lstm
TheWalkingCube
fuente
fuente
Respuestas:
El gradiente de fuga se explica mejor en el caso unidimensional. La multidimensional es más complicada pero esencialmente análoga. Puede revisarlo en este excelente artículo [1].
Supongamos que tenemos un estado oculto en el paso de tiempo . Si simplificamos las cosas y eliminamos los sesgos y las entradas, tenemos Entonces puedes demostrar queht t
En LSTM, tiene el estado de celda . La derivada allí tiene la forma Aquí es la entrada a la puerta de olvidar. Como puede ver, no hay un factor de descomposición exponencialmente rápido involucrado. En consecuencia, hay al menos un camino donde el gradiente no desaparece. Para la derivación completa, ver [2].st
[1] Pascanu, Razvan, Tomas Mikolov y Yoshua Bengio. "Sobre la dificultad de entrenar redes neuronales recurrentes". ICML (3) 28 (2013): 1310-1318.
[2] Bayer, Justin Simon. Representaciones de secuencia de aprendizaje. Diss. München, Technische Universität München, Diss., 2015, 2015.
fuente
La imagen del bloque LSTM de Greff et al. (2015) describe una variante que los autores llaman vanilla LSTM . Es un poco diferente de la definición original de Hochreiter y Schmidhuber (1997). La definición original no incluía la puerta de olvidar y las conexiones de mirilla.
El término Carrusel de error constante se usó en el documento original para denotar la conexión recurrente del estado de la celda. Considere la definición original donde el estado de la celda se cambia solo por adición, cuando se abre la puerta de entrada. El gradiente del estado de la celda con respecto al estado de la celda en un paso de tiempo anterior es cero.
El error aún puede ingresar al CEC a través de la puerta de salida y la función de activación. La función de activación reduce un poco la magnitud del error antes de agregarlo al CEC. CEC es el único lugar donde el error puede fluir sin cambios. Nuevamente, cuando se abre la puerta de entrada, el error sale a través de la puerta de entrada, la función de activación y la transformación afín, reduciendo la magnitud del error.
Por lo tanto, el error se reduce cuando se propaga hacia atrás a través de una capa LSTM, pero solo cuando entra y sale de la CEC. Lo importante es que no cambia en la CCA sin importar la distancia que recorra. Esto resuelve el problema en el RNN básico de que cada paso aplica una transformación afín y no linealidad, lo que significa que cuanto mayor sea la distancia de tiempo entre la entrada y la salida, menor será el error.
fuente
http://www.felixgers.de/papers/phd.pdf Consulte la sección 2.2 y 3.2.2 donde se explica la parte de error truncado. No propagan el error si se escapa de la memoria de la celda (es decir, si hay una puerta de entrada cerrada / activada), pero actualizan los pesos de la puerta en función del error solo por ese instante de tiempo. Más tarde se pone a cero durante la propagación posterior. Esto es una especie de pirateo, pero la razón para hacerlo es que el flujo de error a lo largo de las puertas de todos modos decae con el tiempo.
fuente
Me gustaría agregar algunos detalles a la respuesta aceptada, porque creo que es un poco más matizada y el matiz puede no ser obvio para alguien que primero está aprendiendo sobre RNN.
Para el RNN de vainilla, .∂ht′∂ht=∏k=1t′−twσ′(wht′−k)
Para el LSTM,∂st′∂st=∏k=1t′−tσ(vt+k)
La diferencia es para el RNN de vainilla, el gradiente decae con mientras que para el LSTM el gradiente decae con .wσ′(⋅) σ(⋅)
Para el LSTM, hay un conjunto de pesos que se pueden aprender de manera que Suponga que para un peso e ingrese . Entonces la red neuronal puede aprender una gran para evitar que los gradientes desaparezcan.σ(⋅)≈1 vt+k=wx w x w
Por ejemplo, en el caso 1D si , entonces el factor de disminución , o el gradiente muere como:x=1 w=10 vt+k=10 σ(⋅)=0.99995 (0.99995)t′−t
Para el RNN de vainilla, no hay un conjunto de pesos que se pueda aprender de modo quewσ′(wht′−k)≈1
Por ejemplo, en el caso 1D, suponga que . La función alcanza un máximo de en . Esto significa que el gradiente decaerá como,ht′−k=1 wσ′(w∗1) 0.224 w=1.5434 (0.224)t′−t
fuente