Esta es una pregunta que me ha molestado por mucho tiempo. Debajo está mi entendimiento.
El LSTM funciona con tres puertas: entrada, olvidar y salida, indicadas como [matemáticas] i, f, [/ matemáticas] y [matemáticas] o [/ matemáticas] respectivamente. La entrada [matemática] x [/ matemática] y el estado oculto anterior [matemática] h ^ {(t-1)} [/ matemática] es utilizado por estas compuertas en las siguientes ecuaciones:
[matemáticas] i ^ {(t)} = \ sigma (W ^ {ix} .x ^ {(t)} + W ^ {ih} .h ^ {(t-1)} + b_i) [/ matemáticas]
- ¿Cuál sería la arquitectura más apropiada para entrenar una red neuronal basada en dos imágenes de entrada?
- ¿Puedo usar el aprendizaje profundo para aprender el aprendizaje profundo?
- ¿Qué tan útiles son los límites de convergencia en la aplicación práctica del aprendizaje automático?
- Cómo construir mi propio sistema de inteligencia artificial
- ¿La normalización por lotes ayuda con las funciones de activación de ReLU?
[matemáticas] f ^ {(t)} = \ sigma (W ^ {fx} .x ^ {(t)} + W ^ {fh} .h ^ {(t-1)} + b_f) [/ matemáticas]
[matemáticas] o ^ {(t)} = \ sigma (W ^ {ox} .x ^ {(t)} + W ^ {oh} .h ^ {(t-1)} + b_o) [/ matemáticas]
Observe que las puertas dependen de [matemáticas] h [/ matemáticas] y [matemáticas] x [/ matemáticas]. Según los nombres de estas puertas, uno esperaría que el nuevo estado de memoria (celda) se calcule de la siguiente manera.
[matemáticas] c ^ {(t)} = f ^ {(t)} * c ^ {(t-1)} + i ^ {(t)} [/ matemáticas]
La ecuación anterior olvida algo del estado anterior e introduce algo también. Pero se requiere más información para determinar qué pasa como entrada en la celda. Por lo tanto, además de [math] i ^ {(t)} [/ math], tenemos que calcular lo que podría entrar en el estado de la celda (memoria). Esta información del candidato se calcula como:
[matemáticas] g ^ {(t)} = tanh (W ^ {gx} .x ^ {(t)} + W ^ {gh} .h ^ {(t-1)} + b_g) [/ math]
Ahora queremos corregir la ecuación anterior para [matemáticas] c ^ {(t)} [/ matemáticas]. Olvidamos partes del estado anterior [matemáticas] c ^ {(t-1)} [/ matemáticas] y utilizamos [matemáticas] i ^ {(t)} [/ matemáticas] para ingresar los candidatos [matemáticas] g ^ {( t)} [/ math] y calcula el nuevo estado.
[matemáticas] c ^ {(t)} = f ^ {(t)} * c ^ {(t-1)} + i ^ {(t)} * g ^ {(t)} [/ matemáticas]
El nuevo estado oculto se calcula como
[matemáticas] h ^ {(t)} = tanh (c ^ {(t)}) * o ^ {(t)} [/ matemáticas]
Este estado oculto ahora se usa para calcular qué olvidar, ingresar y emitir por la celda en el siguiente paso de tiempo.
El problema con la comprensión de estos términos es la falta de anotaciones consistentes que se utilizan en todos los documentos para describirlos. El estado oculto a menudo se denomina salida de una celda LSTM. Esto es confuso porque también hay una puerta de salida. La memoria también se conoce simplemente como el estado.
Otra confusión para mí fue la siguiente: los LSTM se conocen como versiones elegantes de RNN de vainilla . Estos RNN de vainilla no tienen un estado celular, solo tienen un estado oculto y se dice que este estado oculto sirve como memoria para los RNN. Entonces, la pregunta obvia es: ¿por qué un LSTM tiene tanto un estado de celda como un estado oculto? Algunas dependencias en las ecuaciones anteriores se pueden observar de la siguiente manera:
[math] h ^ {(t)} [/ math] es una transformación no lineal que depende de [math] c ^ {(t)} [/ math].
[matemáticas] c ^ {(t)} [/ matemáticas] se calcula usando [matemáticas] f ^ {(t)} [/ matemáticas] y [matemáticas] i ^ {(t)} [/ matemáticas].
Finalmente [matemáticas] f [/ matemáticas] [matemáticas] ^ {(t)} [/ matemáticas] y [matemáticas] i ^ {(t)} [/ matemáticas] dependen de [matemáticas] h ^ {(t-1 )}.[/mates]
Por lo tanto, en mi opinión, [math] c [/ math] sirve como memoria, mientras que [math] h [/ math] actúa una copia del mismo que se puede pasar para procesar aún más las entradas en el siguiente paso de tiempo. Quizás esa haya sido la motivación en los GRU para fusionar los dos.
Otras lecturas:
[1506.00019] Una revisión crítica de las redes neuronales recurrentes para el aprendizaje de secuencias
Memorias escritas: comprensión, derivación y extensión del LSTM
Comprender las redes LSTM