Una red neuronal recurrente o RNN es una red neuronal profunda entrenada en datos secuenciales o series temporales para crear un modelo de machine learning (ML) que pueda hacer predicciones secuenciales o conclusiones basadas en entradas secuenciales.
Se podría usar una RNN para predecir los niveles diarios de inundación en función de las inundaciones diarias pasadas, las mareas y los datos meteorológicos. Pero las RNN también se pueden utilizar para resolver problemas ordinales o temporales, como la traducción del lenguaje, el procesamiento de lenguaje natural, el análisis de sentimientos, el reconocimiento de voz y los subtítulos de imágenes.
Al igual que las redes neuronales tradicionales, como las redes neuronales feedforward y las redes neuronales convolucionales (CNN), las redes neuronales recurrentes utilizan datos de entrenamiento para aprender. Se distinguen por su "memoria", ya que toman información de entradas anteriores para influir en la entrada y salida actual.
Mientras que las redes de aprendizaje profundo tradicionales asumen que las entradas y los resultados son independientes entre sí, los resultados de las redes neuronales recurrentes dependen de los elementos anteriores dentro de la secuencia. Si bien los eventos futuros también serían útiles para determinar la salida de una secuencia determinada, las redes neuronales recurrentes unidireccionales no pueden tener en cuenta estos eventos en sus predicciones.
Tomemos una frase hecha, como "sentirse mal", que se suele emplear cuando alguien está enfermo, para ayudarnos en la explicación de las RNN. Para que el modismo tenga sentido, debe expresar en ese orden específico. Como resultado, las redes recurrentes deben tener en cuenta la posición de cada palabra en el modismo, y emplean esa información para predecir la siguiente palabra de la secuencia.
Cada palabra en la frase "sentirse mal" es parte de una secuencia, donde el orden importa. La RNN realiza un seguimiento del contexto manteniendo un estado oculto en cada paso de tiempo. Se crea un bucle de retroalimentación pasando el estado oculto de un paso de tiempo al siguiente. El estado oculto actúa como una memoria que almacena información sobre las entradas anteriores. En cada periodo, la RNN procesa la entrada actual (por ejemplo, una palabra en una frase) junto con el estado oculto del periodo anterior. Esto permite que la RNN "recuerde" puntos de datos anteriores y emplee esa información para influir en la salida actual.
Otra característica distintiva de las redes recurrentes es que comparten parámetros en cada capa de la red. Si bien las redes de retroalimentación tienen diferentes pesos en cada nodo, las redes neuronales recurrentes comparten el mismo parámetro de peso dentro de cada capa de la red. Dicho esto, estos pesos aún se ajustan a través de los procesos de retropropagación y descenso de gradiente para facilitar el aprendizaje por refuerzo.
Las redes neuronales recurrentes emplean algoritmos de propagación hacia adelante y hacia atrás a través del tiempo (BPTT) para determinar los gradientes (o derivados), que es ligeramente diferente de la retropropagación tradicional, ya que es específica de los datos de secuencia. Los principios de la BPTT son los mismos que los de la retropropagación tradicional, en la que el modelo se entrena a sí mismo calculando los errores de su capa de salida a su capa de entrada. Estos cálculos nos permiten ajustar y ajustar los parámetros del modelo de forma adecuada. La BPTT difiere del enfoque tradicional en que suma errores en cada paso de tiempo, mientras que las redes neuronales sin retroalimentación no necesitan sumar errores, ya que no comparten parámetros en cada capa.
Una función de activación es una función matemática aplicada a los resultados de cada capa de neuronas en la red para introducir no linealidad y permitir que la red aprende más patrones complejos en los datos. Sin funciones de activación, la RNN simplemente calcularía transformaciones lineales de la entrada, lo que la haría incapaz de manejar problemas no lineales. La no linealidad es crucial para aprender y modelar patrones complejos, particularmente en tareas como PLN, análisis de series de tiempo y predicción de datos secuenciales.
La función de activación controla la magnitud de la salida de la neurona, manteniendo los valores dentro de un rango especificado (por ejemplo, entre 0 y 1 o -1 y 1), lo que ayuda a evitar que los valores crezcan demasiado o sean demasiado pequeños durante los pases hacia adelante y hacia atrás. En las RNN, las funciones de activación se aplican en cada paso de tiempo a los estados ocultos, controlando cómo la red actualiza su memoria interna (estado oculto) en función de la entrada actual y los estados ocultos pasados.
Las funciones de activación comunes (en la imagen a continuación) incluyen:
La función sigmoidea sirve para interpretar la salida como probabilidades o para controlar puertas que deciden cuánta información retener u olvidar. Sin embargo, la función sigmoidea es propensa al problema del gradiente evanescente (explicado a continuación), lo que la hace menos ideal para redes más profundas.
La función Tanh (tangente hiperbólica), que se utiliza a menudo porque ofrece resultados centrados alrededor de cero, lo que ayuda a mejorar el flujo de gradiente y facilitar el aprendizaje de las dependencias a largo plazo.
La ReLU (unidad lineal rectificada) podría causar problemas con gradientes explosivos debido a su naturaleza ilimitada. Sin embargo, se han utilizado variantes, como Leaky ReLU y Parametric ReLU, para mitigar algunos de estos problemas.
Si desea conocer más a fondo el funcionamiento de las RNN, consulte nuestra inmersión en redes neuronales recurrentes.
Las redes de propagación hacia adelante mapean las entradas y resultados uno a uno, y si bien visualizamos redes neuronales recurrentes de esta manera en los diagramas anteriores, no tienen esta restricción. En cambio, sus entradas y salidas pueden variar en longitud, y se emplean diferentes tipos de RNN para diferentes casos de uso, como la generación de música, la clasificación de sentimientos y la traducción automática. Las variantes populares de arquitectura de redes neuronales recurrentes incluyen:
La versión más básica de una RNN, donde la salida en cada paso de tiempo depende tanto de la entrada actual como del estado oculto del paso de tiempo anterior, sufre problemas tales, como gradientes evanescentes, lo que dificulta que aprendan dependencias a largo plazo. Se destacan en tareas simples con dependencias a corto plazo, como predecir la siguiente palabra en una oración (para oraciones cortas y simples) o el siguiente valor en una serie de tiempo simple.
Las RNN son buenas para tareas que procesan datos secuencialmente en tiempo real, como el procesamiento de datos de sensores para detectar anomalías en periodos cortos, donde las entradas se reciben una a la vez y las predicciones deben realizarse de inmediato en función de las entradas más recientes.
Mientras que las RNN unidireccionales solo se pueden extraer de entradas anteriores para hacer predicciones sobre el estado actual, las RNN bidireccionales o BRNN extraen datos futuros para mejorar la precisión de los mismos. Volviendo al ejemplo de "sentirse mal", un modelo basado en una BRNN puede predecir mejor que la segunda palabra de esa frase es "sentirse" si sabe que la última palabra de la secuencia es "mal".
LSTM es una arquitectura RNN popular, que fue introducida por Sepp Hochreiter y Juergen Schmidhuber como solución al problema de gradiente evanescente. Este trabajo abordó el problema de las dependencias a largo plazo. Es decir, si el estado anterior que influye en la predicción actual no está en el pasado reciente, el modelo RNN podría no ser capaz de predecir con precisión el estado actual.
A modo de ejemplo, digamos que queríamos predecir las palabras en cursiva en: “Alice es alérgica a los frutos secos. No puede comer mantequilla de maní”. El contexto de una alergia a las nueces puede ayudarnos a anticipar que el alimento que no se puede comer contiene frutos secos. No obstante, si ese contexto fuera unas pocas frases anteriores, entonces haría difícil o incluso imposible que la RNN conectara la información.
Para corregir esto, las redes LSTM tienen “celdas” en las capas ocultas de la red neuronal artificial, que tienen tres puertas: una puerta de entrada, una puerta de resultados y una puerta de olvido. Estas puertas controlan el flujo de información que se necesita para predecir la salida en la red. Por ejemplo, si los pronombres de género, como "ella", se repitieron varias veces en oraciones anteriores, podría excluirlos del estado de la celda.
Un GRU es similar a un LSTM ya que también funciona para dirección el problema de memoria a corto plazo de los modelos RNN. En lugar de usar un “estado de celda” para regular la información, utiliza estados ocultos, y en lugar de 3 puertas, tiene 2: una puerta de reinicio y una puerta de actualización. De manera similar a las puertas dentro de los LSTM, las puertas de reinicio y actualización controlan cuánta y qué información retener.
Debido a su arquitectura más simple, las GRU son computacionalmente más eficientes y requieren menos parámetros en comparación con los LSTM. Esto los hace más rápidos de entrenar y, a menudo, más adecuados para ciertas aplicaciones en tiempo real o con recursos limitados.
Se emplean habitualmente para tareas de secuencia a secuencia, como la traducción automática. El codificador procesa la secuencia de entrada en un vector de longitud fija (contexto) y el decodificador emplea ese contexto para generar la secuencia de salida. Sin embargo, el vector de contexto de longitud fija puede ser un cuello de botella, especialmente para secuencias de entrada largas.
El uso de RNN ha disminuido en inteligencia artificial, especialmente a favor de arquitecturas como los modelos transformadores, pero las RNN no están obsoletas. Tradicionalmente, las RNN eran populares para el procesamiento de datos secuencial (por ejemplo, series de tiempo y modelos de lenguaje) debido a su capacidad para manejar dependencias temporales.
Sin embargo, la debilidad de las RNN ante los problemas de gradiente evanescente y explosivo, junto con el auge de modelos transformadores como BERT y GPT, han provocado este declive. Los transformadores pueden capturar dependencias de largo alcance de forma mucho más eficaz, son más fáciles de paralelizar y rinden mejor en tareas como el PLN, el reconocimiento del habla y el forecasting de series temporales.
Dicho esto, las RNN todavía se utilizan en contextos específicos donde su naturaleza secuencial y su mecanismo de memoria pueden ser útiles, especialmente en entornos más pequeños y con recursos limitados o para tareas en las que el procesamiento de datos se beneficia de la recurrencia paso a paso.
Para aquellos que quieran experimentar con tales casos de uso, Keras es una popular biblioteca de código abierto, ahora integrada en la biblioteca TensorFlow, que proporciona una interfaz Python para RNN. La API está diseñada para facilitar su uso y personalización, lo que permite a los usuarios definir su propia capa de células RNN con un comportamiento personalizado.
Conozca en profundidad las redes neuronales, sus funciones básicas y los fundamentos para construir una.
IBM Granite es nuestra familia de modelos de IA abiertos, de alto rendimiento y confiables, diseñados para empresas y optimizados para escalar sus aplicaciones de IA. Explore opciones de lenguaje, código, series de tiempo y medidas de protección.
Encuestamos a 2000 organizaciones sobre sus iniciativas de IA para descubrir qué funciona, qué no y cómo pueden avanzar.
Aprenda a incorporar con confianza la IA generativa y el aprendizaje automático en su negocio.
Aprenda a seleccionar el modelo fundacional de IA más adecuado para su caso de uso.
Descubra cómo los directores ejecutivos (CEO) pueden equilibrar el valor que la IA generativa puede crear con la inversión que exige y los riesgos que representa.
¿Quiere rentabilizar mejor sus inversiones en IA? Descubra cómo la IA generativa escalable en áreas clave impulsa el cambio ayudando a sus mejores mentes a crear y ofrecer nuevas soluciones innovadoras.
Entrene, valide, ajuste y despliegue IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de próxima generación para creadores de IA. Diseñe aplicaciones de IA en menos tiempo y con menos datos.
Ponga la IA a trabajar en su negocio con la experiencia en IA líder en la industria y la cartera de soluciones de IBM a su lado.
Reinvente los flujos de trabajo y las operaciones críticas añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.