Introducción a las GAN: Redes Generativas Adversariales

Uno de los algoritmos de aprendizaje automático que más me gusta es el de Redes Generativas Antagónicas o GAN (por sus siglas en inglés). En este caso, se enfrentan dos modelos de inteligencia artificial, de ahí la parte «antagónica». La mayoría de los modelos de aprendizaje automático se utilizan para generar predicciones, por lo que comenzamos con datos de entrenamiento de entrada que alimentamos a nuestro modelo. El modelo luego hace una predicción en forma de salida, y podemos comparar la salida predicha con la salida esperada del conjunto de datos de entrenamiento. Luego, basándonos en esta salida esperada y la salida predicha real, podemos determinar cómo debemos actualizar nuestro modelo para generar mejores resultados. Este es un ejemplo de aprendizaje supervisado.

Un GAN es un ejemplo de aprendizaje no supervisado, ya que se supervisa a sí mismo y consta de dos submodelos: el generador y el discriminador. El trabajo del generador es crear muestras falsas o de entrada falsas, mientras que el trabajo del discriminador es tomar una muestra dada y determinar si es una muestra falsa o una muestra real del dominio. Ahí radica la naturaleza antagónica de este algoritmo. El generador crea muestras falsas y se las envía al discriminador, que analiza la muestra y determina si es falsa (generada por el generador) o real (del conjunto de datos).

Este tipo de algoritmo se aplica a menudo en la generación de imágenes. Existen imágenes en Internet de generadores que se han utilizado para crear modelos 3D falsos, rostros falsos, gatos falsos, entre otros. El generador itera muchas veces a través de diferentes ciclos, creando muestras, actualizando su modelo, hasta que puede crear una muestra tan convincente que pueda engañar tanto al discriminador como a los humanos.

Tomemos un ejemplo para comprender cómo funciona: digamos que queremos entrenar un generador para crear flores falsas muy convincentes. Para hacer esto, primero necesitamos entrenar a nuestro modelo discriminador para que reconozca cómo se ve una imagen de una flor real. Alimentamos muchas imágenes de flores al modelo discriminador y le pedimos que observe los atributos que conforman esas imágenes, como los colores, la sombra, las formas, etc. Cuando nuestro discriminador se vuelve bueno en reconocer flores reales, entonces le introducimos imágenes que no son flores en absoluto y nos aseguramos de que pueda discriminar entre lo que es una flor y lo que no lo es. Mientras tanto, nuestro generador está en pausa, sin hacer nada, hasta que nuestro discriminador se vuelve lo suficientemente bueno como para reconocer cosas de nuestro dominio. Luego, aplicamos el generador para comenzar a crear versiones falsas de esas imágenes. El generador toma un vector de entrada aleatorio y lo utiliza para crear una flor falsa. Esta imagen de flor falsa se envía al discriminador, que tiene que decidir si es real (del dominio) o falsa (generada por el generador). La respuesta se revela tanto al generador como al discriminador. Si el generador fue engañado, es decir, si el discriminador identificó correctamente la flor falsa, el discriminador no necesita cambiar su modelo. Pero el generador necesita cambiar su modelo para generar falsificaciones mejores. Y si el generador engañó al discriminador, entonces el discriminador debe actualizarse para ser más difícil de engañar. Así es como funciona este proceso, y se repite muchas veces hasta que el generador sea tan bueno que el discriminador no pueda detectar sus falsificaciones. Y así se crea un generador exitoso que puede hacer lo que queramos.

Artículos relacionados  Introducción a OpenShift en IBM Cloud

Aplicaciones adicionales de GANs

Aunque a menudo se utilizan para imágenes, los generadores y discriminadores también pueden implementarse en redes neuronales convolucionales (CNN, por sus siglas en inglés), que son una forma muy eficiente de reconocer patrones en datos de imágenes y, especialmente, en la identificación de objetos. Pero el proceso de un GAN no se trata solo de crear imágenes de flores o imágenes falsas de gatos en Internet. Se puede aplicar a muchos otros casos de uso. Por ejemplo, la predicción de fotogramas en videos: si le damos a un GAN un fotograma específico de un video, puede predecir cómo se verá el siguiente fotograma de la secuencia. Esto es útil en sistemas de vigilancia, donde poder predecir qué va a suceder en el futuro inmediato puede ser fundamental para tomar acciones adecuadas. También se puede utilizar GAN para mejorar imágenes. Si tenemos una imagen de baja resolución, un GAN puede crear una versión de mayor resolución mediante la identificación de cada píxel individual y la creación de una versión de mayor resolución de esa imagen. Incluso se pueden utilizar GANs para casos que no están relacionados con imágenes en absoluto, como el cifrado. Mediante la aplicación del aprendizaje adversarial, se puede crear un algoritmo de cifrado seguro que puede ser descifrado y cifrado por el remitente y el receptor, pero que no puede ser interceptado fácilmente.

Tabla resumen

AlgoritmoDescripciónEjemplo de uso
GANPits two AI models off against each other where one creates fake samples and the other tries to discriminate themGeneración de imágenes, predicción de fotogramas en videos, mejoramiento de imágenes, cifrado seguro, entre otros
Artículos relacionados  Data Warehousing con Netezza Performance Server: Más allá del almacenamiento de datos

Preguntas frecuentes

1. ¿Cuál es la diferencia entre el aprendizaje supervisado y el aprendizaje no supervisado?

El aprendizaje supervisado implica tener un conjunto de datos de entrenamiento donde se conocen las entradas y las salidas esperadas, y el modelo se entrena para predecir esas salidas. En cambio, el aprendizaje no supervisado no tiene salidas esperadas y el modelo se entrena para encontrar patrones o estructuras en los datos sin una guía externa.

2. ¿Cuál es el papel del generador y el discriminador en un GAN?

El generador crea muestras falsas a partir de un vector de entrada aleatorio, mientras que el discriminador analiza esas muestras para determinar si son reales o falsas. El objetivo es que el generador mejore sus falsificaciones hasta el punto en que el discriminador no pueda detectarlas.

3. ¿Qué es una red neuronal convolucional?

Una red neuronal convolucional (CNN) es un tipo de red neuronal especializada en el procesamiento de imágenes. Utiliza capas convolucionales que permiten detectar características locales, como bordes, esquinas o texturas, y se utiliza ampliamente en aplicaciones de reconocimiento y clasificación de imágenes.

4. ¿En qué otros casos de uso se pueden aplicar los GANs además de la generación de imágenes?

Los GANs también se pueden utilizar para la predicción de fotogramas en videos, mejoramiento de imágenes de baja resolución, cifrado seguro y en muchos otros campos donde se busca generar datos sintéticos o mejorar la calidad de los datos existentes.

Si tienes alguna pregunta más, déjanos un comentario. Si deseas ver más artículos como este en el futuro, suscríbete a nuestro blog.

¡Gracias por leer!

Deja una respuesta 0

Your email address will not be published. Required fields are marked *