Una red neuronal recurrente o RNN es una red neuronal profunda que se entrena con datos secuenciales o de series temporales para crear un modelo de machine learning (ML) que pueda hacer predicciones o conclusiones secuenciales basándose en entradas secuenciales.
Una RNN podría utilizarse para predecir los niveles diarios de inundación basándose en los datos diarios anteriores sobre inundaciones, mareas y meteorología. Pero las RNN también se pueden utilizar para resolver problemas ordinales o temporales, como la traducción de idiomas, el procesamiento del lenguaje natural (PLN), el análisis de sentimientos, el reconocimiento de voz y el subtitulado de imágenes.
Al igual que las redes neuronales tradicionales, como las redes neuronales prealimentadas y las redes neuronales convolucionales (CNN), las redes neuronales recurrentes utilizan los datos de entrenamiento para aprender. Se distinguen por su "memoria", puesto que toman la información de las entradas anteriores para influir en la entrada y la salida actuales.
Mientras que las redes tradicionales de deep learning asumen que las entradas y las salidas son independientes entre sí, las salidas de las redes neuronales recurrentes depende de los elementos anteriores dentro de la secuencia. Mientras que las redes neuronales profundas tradicionales asumen que las entradas y las salidas son independientes entre sí, la salida de las RNN depende de los elementos anteriores dentro de la secuencia.
Tomemos un modismo, como “feeling under the weather”, que se usa habitualmente cuando alguien está enfermo, para ayudarnos en la explicación de las RNN. Para que el modismo tenga sentido, debe expresarse en ese orden específico. En consecuencia, las redes recurrentes deben tener en cuenta la posición de cada palabra en el modismo y utilizan esa información para predecir la siguiente palabra de la secuencia.
Cada palabra de la frase "feeling under the weather" forma parte de una secuencia, en la que el orden importa. La RNN rastrea el contexto manteniendo un estado oculto en cada paso temporal. Se crea un bucle de feedback al pasar el estado oculto de un paso temporal al siguiente. El estado oculto actúa como una memoria que almacena información sobre entradas anteriores. En cada paso temporal, la RNN procesa la entrada actual (por ejemplo, una palabra de una frase) junto con el estado oculto del paso temporal anterior. Esto permite a la RNN "recordar" puntos de datos anteriores y utilizar 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. Mientras que las redes prealimentadas 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 todavía 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 utilizan algoritmos de propagación directa y retropropagación en el tiempo (BPTT) para determinar los gradientes (o derivadas), lo que difiere ligeramente de la retropropagación tradicional, ya que es específico de los datos de secuencia. Los principios de la BPTT son los mismos que los de la retropropagación tradicional, donde 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 adecuadamente. BPTT difiere del enfoque tradicional en que BPTT suma errores en cada paso de tiempo mientras que las redes prealimentadas no necesitan sumar errores, ya que no comparten parámetros a través de cada capa.
Una función de activación es una función matemática que se aplica a la salida de cada capa de neuronas de la red para introducir no linealidad y permitir que la red aprenda patrones más 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 temporales 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 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 (que se muestran en la imagen a continuación) incluyen:
La función Sigmoid es interpretar el resultado como probabilidades o controlar puertas que deciden cuánta información retener u olvidar. Sin embargo, la función Sigmoid es propensa al problema del gradiente de fuga (explicado más adelante), lo que la hace menos ideal para redes más profundas.
La función Tanh (tangente hiperbólica), que se suele utilizar porque produce un resultado centrados en torno a cero, lo que ayuda a mejorar el flujo de gradiente y a aprender más fácilmente las dependencias a largo plazo.
La ReLU (unidad lineal rectificada) podría causar problemas con la explosión de gradientes debido a su naturaleza no limitada. Sin embargo, se han utilizado variantes como Leaky ReLU y Parametric ReLU para mitigar algunos de estos problemas.
Para ver más de cerca cómo funcionan las RNN, consulte nuestra inmersión profunda en redes neuronales recurrentes.
Las redes prealimentadas mapean las entradas y las salidas una a una, y, aunque hemos visto 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 utilizan 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, en la que la salida en cada paso temporal depende tanto de la entrada actual como del estado oculto del paso temporal anterior, adolece de problemas como los gradientes evanescentes, lo que les dificulta el aprendizaje de dependencias a largo plazo. Destacan en tareas sencillas con dependencias a corto plazo, como predecir la siguiente palabra de una frase (para frases cortas y sencillas) o el siguiente valor de una serie temporal sencilla.
Las RNN son buenas para tareas que procesan datos secuencialmente en tiempo real, como procesar datos de sensores para detectar anomalías en períodos de tiempo cortos, donde las entradas se reciben de a una y las predicciones deben realizarse inmediatamente en función de las entradas más recientes.
Mientras que las RNN unidireccionales solo pueden extraerse de las entradas previas para hacer predicciones sobre el estado actual, las RNN bidireccionales o BRNN, incorporan datos futuros para mejorar la precisión de ello. Volviendo al ejemplo de “feeling under the weather”, un modelo basado en una BRNN puede predecir mejor que la segunda palabra de esa frase es “under” si sabe que la última palabra de la secuencia es “weather”.
LSTM es una arquitectura RNN popular, que fue introducida por Sepp Hochreiter y Juergen Schmidhuber como solución al problema del gradiente que desaparece. 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 se encuentra en el pasado reciente, es posible que el modelo RNN no pueda predecir con exactitud el estado actual.
Como ejemplo, digamos que queremos predecir las palabras en cursiva en "Alicia es alérgica a los frutos secos". No puede comer mantequilla de cacahuete". El contexto de una alergia a los frutos secos puede ayudarnos a anticipar que los alimentos que no se pueden comer contienen frutos secos. Sin embargo, si ese contexto estuviera unas frases antes, dificultaría, o incluso imposibilitaría, que la RNN conectara la información.
Para remediarlo, las redes LSTM disponen de "células" en las capas ocultas de la red neuronal artificial, que tienen tres puertas: una entrada, una salida y una puerta de olvido. Estas puertas controlan el flujo de información necesario 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ías excluirlos del estado de la celda.
Una GRU es similar a una LSTM, ya que también funciona para abordar el problema de la memoria a corto plazo de los modelos RNN. En lugar de usar un "estado celular" para regular la información, utiliza estados ocultos y, en lugar de tres puertas, tiene dos: una puerta de reinicio y otra de actualización. Al igual que las puertas dentro de las LSTM, las puertas de restablecimiento 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 hace que sea más rápido entrenarlos y, a menudo, más adecuados para ciertas aplicaciones en tiempo real o con recursos limitados.
Se suelen utilizar 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 utiliza ese contexto para generar la secuencia de output. 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 en favor de arquitecturas como los modelos de transformadores, pero las RNN no están obsoletas. Las RNN eran tradicionalmente populares para el procesamiento de datos secuenciales (por ejemplo, series temporales y modelado del lenguaje) debido a su capacidad para manejar dependencias temporales.
Sin embargo, la debilidad de las RNN a los problemas de gradiente que se desvanecen y explotan, junto con el aumento de modelos de transformadores como BERT y GPT, han dado lugar a este declive. Los transformadores pueden capturar dependencias de largo alcance de forma mucho más eficaz, son más fáciles de paralelizar y funcionan mejor en tareas como el PLN, el reconocimiento de voz y la previsión.
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 donde el proceso de datos se beneficia de la recurrencia paso a paso.
Para aquellos que quieren experimentar con estos casos de uso, Keras es una popular biblioteca de código abierto, ahora integrada en la biblioteca de TensorFlow, que proporciona una interfaz Python para los RNN. La API está diseñada para facilitar su uso y personalización, y 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, eficaces y de confianza, adaptados a la empresa y optimizados para escalar sus aplicaciones de IA. Explore las opciones de idioma, código, series de tiempo y salvaguardas.
Hemos encuestado a 2000 organizaciones sobre sus iniciativas de IA para descubrir qué funciona, qué no y cómo puede adelantarse.
Aprenda a incorporar con confianza la IA generativa y el machine learning a su negocio.
Aprenda a seleccionar el modelo fundacional de IA más adecuado para su caso de uso.
Descubra cómo pueden los CEO equilibrar el valor que la IA generativa es capaz de crear frente a la inversión que exige y los riesgos que introduce.
¿Quiere obtener un mayor rendimiento de sus inversiones en IA? Descubra cómo escalar la IA generativa en áreas clave impulsa el cambio ayudando a sus mentes más brillantes a crear y ofrecer nuevas soluciones innovadoras.
Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.
Ponga la IA a trabajar en su negocio con la experiencia líder en IA del sector de IBM y junto a su cartera de soluciones.
Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.