Introducción al aprendizaje profundo Parte 2: RNN y LTSM

Bienvenido a la Parte 2 de mi serie Introducción al Aprendizaje Profundo. En el último artículo, cubrimos el perceptrón, las redes neuronales y cómo entrenarlas.

En esta publicación de blog, presentaremos diferentes arquitecturas de redes neuronales y, más específicamente, redes neuronales recurrentes y LSTM.

  • Modelado de secuencias
  • Esta serie de artículos está influenciada por el curso Introducción al aprendizaje profundo 6.S191 del MIT y se puede ver como un resumen.

    Las redes neuronales recurrentes (RNN) son un tipo poderoso de red neuronal artificial que se destacan en el manejo de datos secuenciales. Esto los hace particularmente útiles para una variedad de aplicaciones, como el procesamiento de lenguaje natural, el reconocimiento de voz y la predicción de series temporales. En esta explicación para principiantes, exploraremos el funcionamiento interno de los RNN, su arquitectura y cómo se pueden construir desde cero.

    También te puede interesarPseudo-Inversa de Matrix

    Comencemos discutiendo qué hace que los datos secuenciales sean únicos. A diferencia de otros tipos de datos, los datos secuenciales consisten en una serie de elementos dispuestos en un orden específico. Los ejemplos incluyen texto, señales de voz y datos de series temporales. Los RNN se han diseñado específicamente para manejar este tipo de datos mediante el procesamiento de cada elemento de la secuencia de uno en uno, mientras se realiza un seguimiento de los elementos anteriores de la secuencia a través de un estado oculto.

    La arquitectura de las RNN es lo que las diferencia de otros tipos de redes neuronales. Consisten en una serie de nodos interconectados, con cada nodo responsable de procesar un elemento en la secuencia. Estos nodos están organizados en una estructura similar a una cadena, lo que permite que la información fluya de un nodo al siguiente. El estado oculto es la característica clave de las RNN, ya que captura información de los nodos anteriores de la cadena y la utiliza para influir en el procesamiento de los elementos futuros de la secuencia. Vea la estructura a continuación.

    A medida que la información fluye por la red, los nodos procesan los datos y actualizan el estado oculto. Este estado oculto luego influye en cómo el siguiente nodo procesa su entrada.

    De esta manera, los RNN pueden «recordar» elementos anteriores en la secuencia y usar esta memoria para hacer predicciones o decisiones basadas en la secuencia completa, en lugar de solo la entrada actual.

    También te puede interesarStemming y lematización en el procesamiento del lenguaje natural

    Entonces, ¿cómo entrenamos RNN? La solución es la Algoritmo de retropropagación a través del tiempo (BPTT). BPTT es una modificación del algoritmo de retropropagación estándar, consulte la publicación anterior, diseñado para manejar la estructura única de RNN. La principal diferencia es que BPTT tiene en cuenta las dependencias temporales entre los nodos de la red, lo que permite que el error se propague a lo largo de toda la secuencia.

    Ahora analicemos eso.

    El algoritmo general es el siguiente:

  • Presente un patrón de entrada de entrenamiento y propáguelo a través de la red para obtener una salida.
  • El algoritmo de entrenamiento Backpropagation es adecuado para entrenar redes neuronales de avance en pares de entrada-salida de tamaño fijo, pero ¿qué pasa con los datos de secuencia que pueden ordenarse temporalmente?

    También te puede interesarCiencia de datos: la distribución multinomial.

    PERO a una red neuronal recurrente se le muestra una entrada en cada paso de tiempo y predice una salida.

    Conceptualmente, BPTT funciona desplegando todos los pasos de tiempo de entrada. Cada paso de tiempo tiene un paso de tiempo de entrada, una copia de la red y una salida. Luego, los errores se calculan y acumulan para cada paso de tiempo. La red se revierte y los pesos se actualizan.

    Espacialmente, cada paso de tiempo de la red neuronal recurrente desenrollada puede verse como una capa adicional dada la dependencia del orden del problema y el estado interno del paso de tiempo anterior se toma como entrada en el paso de tiempo subsiguiente.

    Podemos resumir el algoritmo de la siguiente manera:

    También te puede interesarData Science Foundations
  • Presente una secuencia de pasos de tiempo de pares de entrada y salida a la red.
  • BPTT puede ser computacionalmente costoso a medida que aumenta el número de pasos de tiempo. Si las secuencias de entrada se componen de miles de pasos de tiempo, esta será la cantidad de derivadas requeridas para una sola actualización de peso de actualización.

    Esto puede causar que los pesos desaparezcan o exploten (lleguen a cero o se desborden) y que el aprendizaje lento y la habilidad del modelo sean ruidosos.

    Las redes de memoria a corto plazo (LSTM) son un tipo de red neuronal recurrente (RNN) diseñadas específicamente para abordar el problema de los gradientes que se desvanecen.

    El problema del gradiente que desaparece ocurre cuando los gradientes se vuelven cada vez más pequeños a medida que se propagan hacia atrás a través de la red durante la retropropagación, lo que resulta en un aprendizaje más lento o incluso evita que la red aprenda por completo.

    Las redes LSTM abordan este problema mediante la introducción de una celda de memoria, que permite que la red recuerde u olvide información de forma selectiva con el tiempo. La celda de memoria está controlada por tres puertas: la puerta de entrada, la puerta de olvido y la puerta de salida.

    Estas puertas son responsables de controlar el flujo de información dentro, dentro y fuera de la celda de memoria. Trabajan juntos para decidir qué información almacenar, actualizar o descartar en cada paso de tiempo. Vea la celda de memoria a continuación.

    Específicamente, la puerta de entrada controla si se debe agregar o no nueva información a la celda de memoria. La puerta de olvido controla si la información antigua debe eliminarse o no de la celda de memoria. Y la puerta de salida controla la cantidad de la celda de memoria que se debe enviar a la siguiente capa de la red. En el diagrama, ht-1 es el estado anterior, ht es el nuevo estado y xt es la entrada en ese paso actual.

    Ahora que entendemos la estructura de los RNN, veamos para qué se usan. Tienen numerosas aplicaciones en la vida real, particularmente en dominios que involucran datos secuenciales como series de tiempo, lenguaje natural, voz y audio.

    Algunos ejemplos de aplicaciones de RNN en la vida real son:

  • Modelado de lenguaje: los RNN se utilizan para tareas de modelado de lenguaje, como el reconocimiento de voz, la traducción automática y la generación de texto.
  • Los modelos de lenguaje grande, como ChatGPT, usan una forma desarrollada de RNN llamada Transformers

  • Análisis de series temporales: las RNN se pueden utilizar para la previsión de series temporales, donde el objetivo es predecir valores futuros en función de observaciones pasadas.
  • ¡Y eso es! En el próximo artículo veremos Attention Transformers y la nueva moda en torno al procesamiento del lenguaje natural. ¿Vale la pena el bombo?

    Scroll al inicio