En este artículo, explicaré qué son las redes neuronales recurrentes (RNN), cómo funcionan y qué puedes hacer con ellas. También mostraré un excelente ejemplo de generación de música usando inteligencia artificial.
Sin embargo, antes de hablar de RNN, necesitamos explicar el concepto de las secuencias de datos.
Secuencias de datos
Como su nombre lo indica, las secuencias de datos son una colección de datos en diferentes estados a lo largo del tiempo, de modo que la sucesión de los mismos forma otra cosa más grande. Estos son algunos ejemplos:
- Todas las diferentes notas que forman una canción.
- Todas las palabras que forman una frase.
- Todas las imágenes que forman un video.
Tomemos, por ejemplo, todas las imágenes que forman el siguiente video clip.
Individualmente, solo pueden decirnos que son imágenes de un tipo jugando al golf.
Pero si miramos todas las imágenes en el orden correcto (de izquierda a derecha), podemos ver el swing que está teniendo lugar. Esta es una “secuencia” de datos que debe analizarse en su conjunto si queremos darle sentido y llegar a la conclusión de que todas estas imágenes representan un “swing”.
Entonces, ¿qué son las redes neuronales recurrentes?
Si ha estado leyendo mi blog, ahora debes estar familiarizado con las redes neuronales, si no lo estás, te recomiendo leer este artículo primero.
Las redes neuronales son muy divertidas y fáciles de usar, pero tienen un pequeño problema. Solo pueden tomar una entrada de tamaño fijo y proporcionar una salida de tamaño fijo … En otras palabras, no pueden analizar secuencias de datos.
Si tomas el ejemplo de clasificación de imágenes, la red neuronal ingresará un vector (X) de todos los valores de píxeles de la misma y la salida será un vector de clasificación (Y) que representará una predicción de lo que es la imagen.
Aunque parezca increible, los profesionales de machine learning, a menudo se refieren a estos modelos como redes neuronales “vainilla”, ya que son de arquitectura “uno a uno” y para ellos son “regulares” y “no tienen mayor misterio”. ..
Relación de vainilla
Las Redes Neuronales Recurrentes (RNN), por otro lado, son un tipo de red neuronal artificial más pervertida en la que el (los) resultado(s) depende(n) de la(s) entrada(s).
Esto significa que la predicción tendrá en cuenta toda la información previa que se le ha dado.
La función autocompletar en nuestros teléfonos inteligentes es un gran ejemplo de lo que puede hacer una red neuronal recurrente.
Cada vez que escribes una palabra, el software tomará todas las palabras anteriores que hayas escrito para predecir cuál es la más probable que vayas a escribir después. Darle un RNN solo a la primera palabra y dejar que él prediga el resto puede ser muy divertido.
Puedes probar que si cambias cualquiera de las palabras escritas a la mitad de una oración, tu teléfono propondrá palabras diferentes. Así es como sabes que la función tiene en cuenta toda la secuencia de datos en el orden en que la proporcionas y que no te está dando simplemente palabras al azar.
La función de autocompletar es un ejemplo de RNN “Muchos a uno”, porque el software necesita analizar muchas palabras en el orden correcto a través del tiempo para llegar a una conclusión … ¿Cuál será la próxima palabra?
Pero hay otros tipos de arquitecturas RNN:
- Una entrada para muchas salidas
- Muchas entradas y una salida
- Muchas entradas y muchas salidas
- Muchas entradas y muchas salidas (con diferentes longitudes)
Espero que la imagen de abajo te dé una mejor comprensión de estas diferentes arquitecturas.
La celda “NN” representa una red neuronal y puede ser tan profunda como lo desees, incluso con cientos de capas ocultas.
Algunos académicos e investigadores a menudo representan las RNN con un diagrama diferente, pero el concepto es exactamente el mismo.
Personalmente prefiero el diagrama “desenrollado” que presenté primero porque creo que es más fácil de entender.
Entrenando un RNN
Entrenar a un RNN es como entrenar una red neuronal vainilla.
- Comienzas estableciendo los parámetros (pesos y bias) al azar.
- Haces una forward propagation para calcular el costo.
- Haces back propagation para encontrar los parámetros que minimizan el error del modelo.
- Repites el mismo proceso muchas veces hasta que tu modelo sea lo más preciso posible (el error más pequeño)
Si eres nuevo en el mundo del machine learning y que no entendiste nada de lo que escribe antes, ni la imagen anterior, no te preocupes.
Lo único que debes entender es que debes tener en cuenta los resultados de la NN anterior al calcular el resultado de la NN actual y así sucesivamente hasta el final.
En otras palabras, el modelo tiene en cuenta todas las secuencias de datos anteriores, cuando se entrena, pero también cuando te proporciona predicciones.
Generando música con RNN
Por ahora, debes entender el concepto básico de redes neuronales recurrentes. Como puedes ver, puedes entrenar un modelo con palabras para que prediga las siguientes o puedes entrenarlo con poemas de Shakespare para que genere su propia poesía.
Pero personalmente encuentro que uno de los ejemplos más sorprendentes de RNN es generar música, una nota a la vez.
Si eres nuevo en mi blog, debes entender que mis artículos están destinados a una audiencia no técnica, por lo que no cubriré los detalles de implementación de este proyecto, ni proporcionaré el código que utilicé. Hay cientos de tutoriales por ahí sobre cómo lograr lo que hice, por lo que si estás interesado en hacer lo mismo, simplemente puedes googlearlo o contactarme para obtener más detalles.
En este artículo, solo proporcionaré una idea general de lo que hice.
- Recogí diferentes clips de música Jazz
- Los usé para entrenar a un RNN
- Le di al RNN una primera nota aleatoria para que pudiera predecir las siguientes notas.
- ¡El modelo generó algo de música jazz!
Este es el resultado final que puse en youtube.http://www.youtube.com/embed/V1a3gYwo2mA?modestbranding=0&html5=1&rel=0&autoplay=0&wmode=opaque&loop=0&controls=1&autohide=0&showinfo=0&theme=dark&color=red
Las imágenes en el video también se generaron con AI utilizando una técnica llamada “transferencia neuronal” que definitivamente cubriré en un artículo diferente.
Así que eso es todo por ahora. Hay otros conceptos interesantes detrás de las RNN como “memoria” y RNN bidireccionales que también abordaré en otros artículos. Espero que hayas disfrutado leyendo sobre este tema y que dejes rus comentarios a continuación.