Comprender la topología de LSTM

9

Como muchos otros lo han hecho, descubrí que los recursos aquí y aquí son inmensamente útiles para comprender las células LSTM. Estoy seguro de que entiendo cómo fluyen y se actualizan los valores, y estoy lo suficientemente seguro como para agregar las "conexiones de mirilla" mencionadas, etc. también.

En mi ejemplo, tengo en cada paso un vector de entrada de longitud iy un vector de salida de longitud o, donde o < i.

Lo que ninguna de las páginas realmente cubre es cómo están organizadas y formadas.

Tengo 2 preguntas:

  1. En mis datos de entrenamiento, tengo muchos pares de vectores de entrada / salida correspondientes a muchas, muchas unidades de tiempo. Supongamos que entreno el LSTM con todos los datos. ¿Puedo ejecutar una entrada de longitud arbitraria establecida a través de él? Lo que quiero decir es que, si tengo datos de capacitación para, por ejemplo, todo el 2015 y 2016, ¿puedo ejecutar los datos a través de la red para 2017? ¿O tal vez 2017 hasta 2020?
  2. Según lo que he leído, parece que tengo una celda LSTM por unidad de tiempo, por lo que si tengo muchas unidades de tiempo, entonces tengo muchas celdas LSTM encadenadas. Dado que la longitud de la cadena depende de la longitud de los datos que quiero ejecutar a través de la red, y eso es presumiblemente arbitrario, no puedo ver cómo entrenaría esto, a menos que solo entrene una sola celda LSTM que luego duplica un número veces. Entonces, ¿parece que entrenaría una sola celda LSTM y luego las encadenaría npara una lista de longitud de vector de entrada dada n? A pesar de que una sola celda LSTM contiene una serie de elementos y funciones, ¿parece que no es suficiente capturar tanta información en algo tan pequeño?

Gracias. ¿Hay otros recursos que pueda consumir (relativamente rápido) que me ayuden a comprender los detalles de la implementación? Los 2 enlaces anteriores dieron una imagen fantástica de alto nivel de lo que está sucediendo, pero no logran capturar estos detalles más finos.

AKrip4k
fuente

Respuestas:

1

Supongamos que entreno el LSTM con todos los datos. ¿Puedo ejecutar una entrada de longitud arbitraria establecida a través de él?

Abstractamente sí. Sin embargo, algunas implementaciones de software tienen reglas estrictas sobre si las variables deben tener un tamaño fijo o no, o si pueden ser de tamaños variables, por lo que, en términos de programación, deberá verificar que está implementando las cosas correctamente.

Entonces parece que entrenaría una sola celda LSTM, y luego encadenaría n de ellas para una lista de vectores de entrada dada de longitud n.

xtxt+1

Sycorax dice reinstalar a Mónica
fuente