¿En qué se diferencia el estado oculto (h) de la memoria (c) en una celda LSTM?

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]

[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

Para entender esto, tendré que guiarlo a través de un recorrido de desarrollo de LSTM debido a algunas deficiencias de una célula RNN.

El estado oculto (h) transporta la información sobre lo que ha visto una célula RNN a lo largo del tiempo y la suministra hasta el momento actual, de modo que una función de pérdida no solo depende de los datos que está viendo en este instante de tiempo, sino también de los datos. ha visto históricamente.

Si despliega una celda RNN con el tiempo e intenta calcular los gradientes de la función objetivo (o función de pérdida) con los estados ocultos h, obtendrá algo como esto.

Si quieres una ecuación más genérica:

Como, puede ver las derivadas parciales que dependen de los valores de estado ocultos de cada iteración de tiempo. Es problemático si piensa cómo pueden jugar estas interacciones en los cálculos matemáticos:

Ahora, esto es un problema porque los gradientes se basan en variables de estado que contribuyen al gradiente de pérdida final de manera multiplicativa.

¿Qué pasa si de alguna manera diseñamos una estrategia para llevar información histórica a través del tiempo, pero basada en una variable que contribuye al gradiente de la función de pérdida de manera aditiva? De esa manera, el gradiente de una variable de estado de tiempo actual wrt a gradiente de la variable de estado de tiempo anterior siempre permanecerá constante (es decir, 1). Esto aliviará el problema de la desaparición / explosión de gradientes.

Esto es exactamente lo que hacemos en LSTM. En lugar de utilizar h como portador de información en un instante de tiempo particular y como proponente de esa información entre instancias de tiempo, formulamos otra variable llamada estados celulares (c). Realizan una tarea similar a la que solía hacer solo en un RNN, su ecuación recursiva tiene una forma diferente:

Observe, la diferencia en relación de [matemáticas] c_n [/ matemáticas] con [matemáticas] c_ (n-1) [/ matemáticas] de LSTM en comparación con [matemáticas] h_n [/ matemáticas] con [matemáticas] h_ (n- 1) [/ math] de un RNN básico.

Para saber por qué necesitamos otras puertas y por qué las ecuaciones de LSTM se ven así, es posible que deba leer un documento básico sobre LSTM para comprender. Una pista es que el gradiente de desaparición / explosión no es el único problema resuelto por los LSTM, aunque es uno de los principales.

Les animo a pasar por las conferencias 3 y 4 de este MOOC.

Valdrá la pena su tiempo para comprender el concepto en detalle, porque aquí solo he podido proporcionar un breve resumen.

Fuente: oxford-cs-deepnlp-2017 / conferencias

Me gustaría proporcionar una respuesta más concisa (aunque más obvia y quizás menos útil). Considere la definición de un LSTM de ese curso en línea de Stanford:

Entonces la pregunta es; ¿en qué se diferencia [math] h_n [/ math] de [math] c_n [/ math]? Bueno, [math] c_n [/ math] es el estado de celda acumulado que se actualiza a partir de la salida del paso de tiempo anterior ([math] h_ {n-1} [/ math]), y el estado oculto [math] h_n [ / math] es el resultado de aplicar la puerta de salida [math] o_n [/ math] a alguna combinación lineal del estado de celda actual [math] c_n [/ math]. Cabe señalar que la “salida” es lo mismo que el “estado oculto”.

More Interesting

¿Cómo se compara Caffe 2 con TensorFlow?

¿Cuánto del aprendizaje automático es en realidad solo optimización?

¿Necesito un título universitario para trabajar en el aprendizaje automático?

¿Qué funciona mejor, un ANN con miles de unidades por capa pero solo docenas de capas o uno con docenas de unidades por capa, pero cientos de capas?

¿Qué es un núcleo de roles en una máquina de vectores de soporte?

Procesamiento de señal digital: ¿Conoce las razones por las que la deconvolución de imagen (deblur) no siempre funciona?

¿Puedo usar el aprendizaje por refuerzo para ayudar a las personas a elegir la ruta más barata cuando viajan en avión?

¿Cómo podemos suprimir el ruido de fondo en un teléfono durante una llamada telefónica?

¿En qué técnicas de aprendizaje automático se puede confiar para identificar (y posiblemente tratar) la deriva del concepto?

¿Cómo califica Kaggle los envíos?

¿Se mejorará la mayor ganancia en el reconocimiento de objetos en los algoritmos de representación y aprendizaje, en lugar de modelos simples y datos más grandes?

¿En qué se diferencia LSTM de RNN? En una explicación laica.

¿Cómo se debe elegir el parámetro [math] l [/ math] en la regresión de mínimos cuadrados parciales?

Como proyecto de graduación, elegimos hacerlo en el análisis de sentimientos de Twitter, tenemos algunos conceptos básicos de ML obtenidos de los MOOC, ¿a dónde deberíamos ir después?

Cómo usar el aprendizaje automático para unir un patrón a partir de valores CSV