El principio explicativo más claro de la red LSTM
Las redes neuronales tradicionales no pueden hacer esto, lo que parece ser un gran inconveniente. Por ejemplo, digamos que desea clasificar lo que sucede en cada punto de una película. Actualmente, no está claro cómo una red neuronal tradicional puede utilizar su razonamiento sobre eventos anteriores de la película para informar a estos últimos.
Las redes neuronales recurrentes solucionan este problema. Son redes cíclicas que permiten que la información persista.
Uno de los atractivos de los RNN es que pueden conectar información previa con la tarea actual; por ejemplo, el uso de fotogramas de vídeo anteriores puede ayudar a comprender el fotograma actual. Si los RNN pudieran hacer esto, serían muy útiles. ¿Pero pueden? Eso depende.
A veces, sólo necesitamos ver la información más reciente para realizar la tarea actual. Por ejemplo, considere un modelo de lenguaje que intenta predecir la siguiente palabra basándose en la palabra anterior. Si intentamos predecir la última palabra "nubes en el cielo", no necesitamos más contexto; obviamente, la siguiente palabra será cielo. En este caso, RNN puede aprender a utilizar información pasada si la brecha entre la información relevante y la información requerida es pequeña.
Pero hay algunas situaciones que requieren más contexto. Considere intentar predecir la última palabra del texto: "Crecí en Francia... hablo francés con fluidez. La información reciente sugiere que la siguiente palabra puede ser el nombre de un idioma, pero si desea limitarlo a". Idioma, hay que mirarlo desde otro contexto, el contexto francés. Es muy posible que la brecha entre la información relevante y el punto en el que debe llegar a ser muy grande.
Desafortunadamente, a medida que la brecha se amplía, el RNN no puede aprender la información de conexión.
Las redes de memoria de secuencia larga y corta, a menudo llamadas redes LSTM, son un tipo especial de red RNN que puede aprender dependencias entre secuencias largas. La red LSTM fue propuesta por primera vez por Hochreiter y Schmidt Huber (1997) y muchas personas la han perfeccionado y promovido. Las mejoras que propusieron funcionaron bien en una variedad de problemas y ahora se utilizan ampliamente.
LSTM obviamente evita el problema de la dependencia de secuencias largas. Memorizar información durante largos períodos de tiempo es en realidad su comportamiento predeterminado, no algo que estén tratando de aprender.
Todas las redes neuronales recurrentes están compuestas por una serie de módulos de neuronas que se repiten. En un RNN estándar, la estructura de estos módulos repetidos es muy simple, como una sola capa tanh.
La clave de lstm es el estado de la celda y la línea horizontal pasa por la parte superior del gráfico.
El estado de la unidad es un poco como una cinta transportadora: corre directamente a lo largo de toda la cadena con solo algunas interacciones lineales menores. La información fluye fácilmente a lo largo de él.
LSTM tiene la capacidad de eliminar o agregar información sobre los estados de las células, lo cual se ajusta a través de una estructura llamada puerta.
Las puertas son otro medio de paso. Consiste en una capa de red neuronal sigmoidea y una multiplicación puntual.
El primer paso en LSTM es determinar qué información descartaremos del estado de la celda. Esta estrategia está determinada por una capa sigmoidea llamada puerta del olvido. Introduzca ht? La puerta de olvido de 1 y xt genera un número entre 0 y 1, correspondiente a cada número en el estado de celda Ct-1. 1 significa "conservar por completo", 0 significa "olvidar por completo".
Volvamos a nuestro ejemplo de modelo de lenguaje e intentemos predecir cuál será la siguiente palabra en función de todas las palabras anteriores. En este problema Yang, el estado de la unidad puede incluir el género del tema actual, por lo que se puede predecir el pronombre correcto. Cuando vemos el género de un sujeto nuevo, queremos olvidar el género del sujeto anterior.
El siguiente paso será decidir qué nueva información guardaremos en el estado de la celda. Hay dos partes. Primero, una capa sigmoidea llamada "capa de puerta de entrada" determina qué valores actualizaremos.
A continuación, la capa tanh crea un nuevo vector de valores candidatos Ct~ que se pueden agregar al estado. En el siguiente paso, combinaremos los dos para crear una actualización de estado.
En nuestro ejemplo de modelo de lenguaje, queremos agregar el género del nuevo sujeto al estado de la celda, reemplazando el antiguo sujeto que nos olvidamos.
Finalmente, debemos decidir qué queremos generar. Esta salida se basará en el estado de nuestra celda, pero será una versión filtrada. Primero, ejecutamos una capa sigmoidea, que determina qué partes del estado de la celda queremos generar. Luego configuramos el estado de la celda en tanh (empujando el valor entre -1 y 1) y multiplicamos la salida de la puerta sigmoidea para que solo emitamos lo que decidimos.
Para el ejemplo del modelo de lenguaje, dado que solo ve un tema, es posible que desee generar información relacionada con el verbo en caso de que suceda lo siguiente. Por ejemplo, podría mostrar si el sujeto es singular o plural, de modo que sepamos con qué forma de verbo debe combinarse, si sigue.
Lo que he descrito hasta ahora es un LSTM muy normal. Pero no todos los LSTM son iguales a los anteriores. De hecho, parece que casi todos los artículos relacionados con LSTM utilizan una versión ligeramente diferente. Las diferencias son menores, pero vale la pena mencionar algunas de ellas.
Una variación popular de LSTM introducida por Gers Schmidhuber (2000) es agregar "conexiones de mirilla". Esto significa que dejamos que la capa de puerta vea el estado de la celda.
Otra variación es utilizar puertas de entrada y olvido acopladas. No decidimos qué olvidar o qué nueva información agregar, pero tomamos estas decisiones juntos. Simplemente olvidamos cuando necesitamos escribir algo en su lugar. Cuando olvidamos las cosas viejas, simplemente introducimos nuevos valores en el estado.
¿Qué variante es mejor? ¿Importa la diferencia? Greff et al. (2015) hicieron una buena comparación de variedades populares y descubrieron que son similares. Jozefowicz et al. (2015) probaron más de 10.000 arquitecturas RNN y encontraron algunas que eran mejores que LSTM en algunas tareas.
Anteriormente, mencioné los resultados notables que las personas han logrado mediante el uso de RNN. Básicamente, todo esto se implementa mediante LSTM. Para la mayoría de las tareas, ¡realmente hacen un mejor trabajo!
Escrito como un conjunto de ecuaciones, LSTM puede parecer desalentador. Espero hacerlos más accesibles presentándolos paso a paso en este artículo.
LSTM es un paso importante en nuestra implementación a través de RNN. Naturalmente quería saber: ¿hay algún otro paso importante? El consenso entre los investigadores es: "¡Sí! ¡Lo siguiente es su atención!". La idea es permitir que RNN seleccione información de un conjunto de información más grande en cada paso. Por ejemplo, si usa un RNN para crear un título que describe una imagen, puede seleccionar una parte de la imagen para ver cada palabra que genera. De hecho, Xu et al. (2015) hicieron precisamente eso: si desea explorar la atención, ¡este podría ser un lugar interesante para comenzar! Se han obtenido muchos resultados muy interesantes al utilizar la atención y parece que hay muchos más por venir. …
La atención no es el único hilo interesante en la investigación de RNN. Por ejemplo, Gridlist MS (2015) de Kalchbrenner et al. parece prometedor. Los trabajos que utilizan RNN en modelos generacionales, como Gregor et al (2015), Chung et al (2015) o Bayer Osendorfer (2015), también parecen interesantes. Los últimos años han sido una época emocionante para las redes neuronales recurrentes, ¡y la próxima promesa de las redes neuronales solo lo hará aún más emocionante!