¿Qué son las redes generativas antagónicas (GAN)?

Autor

Jobit Varughese

Technical Content Writer

IBM

¿Qué es una GAN?

Una red adversarial generativa, o GAN, es un modelo de machine learning diseñado para generar datos realistas mediante el aprendizaje de patrones a partir de conjuntos de datos de entrenamiento existentes. Opera dentro de un marco de aprendizaje no supervisado mediante el uso de técnicas de deep learning, donde dos redes neuronales trabajan en oposición: una genera datos, mientras que la otra evalúa si los datos son reales o generados.

Aunque el deep learning se ha destacado en tareas como la clasificación de imágenes y el reconocimiento de voz, generar nuevos datos, incluidas imágenes o texto realistas, ha sido más difícil debido a la complejidad de los cálculos en los modelos generativos.

Las GAN, presentadas por Ian Goodfellow en su artículo de 2014 Generative Adversarial Nets, ofrecen una solución innovadora a este desafío1. Este marco innovador ha transformado el modelado generativo, facilitando el desarrollo de modelos y algoritmos capaces de crear datos realistas y de alta calidad.

¿Cómo funcionan las GAN?

Una arquitectura GAN consta de dos redes neuronales: la red generadora y la red discriminadora. El proceso de entrenamiento GAN implica que el generador comience con una entrada aleatoria (ruido) y cree datos sintéticos como imágenes, texto o sonido que imitan los datos reales del conjunto de entrenamiento dado. El discriminador evalúa tanto las muestras generadas como los datos del conjunto de entrenamiento y decide si son reales o falsos. Asigna una puntuación entre 0 y 1: una puntuación de 1 significa que los datos parecen reales y una puntuación de 0 significa que son falsos. A continuación, se utiliza la retropropagación para optimizar ambas redes. Esto significa que el gradiente de la función de pérdida se calcula de acuerdo con los parámetros de la red, y estos parámetros se ajustan para minimizar la pérdida. A continuación, el generador utiliza el feedback del discriminador para mejorar, tratando de crear datos más realistas.

La estructura de una GAN

El entrenamiento de una arquitectura GAN implica un proceso adversario. El modelo generador intenta engañar al modelo discriminativo para que clasifique los datos falsos como reales, mientras que el discriminador mejora continuamente su capacidad para distinguir entre datos reales y falsos. Este proceso está guiado por funciones de pérdida que miden el rendimiento de cada red. Una pérdida del generador mide la capacidad del generador para engañar al discriminador y hacerle creer que sus datos son reales. Una pérdida baja del generador significa que el generador está creando con éxito datos realistas. Una pérdida de discriminador mide qué tan bien el discriminador puede distinguir entre datos falsos y datos reales. Una pérdida de discriminador baja indica que el discriminador identificó con éxito datos falsos.  

Por ejemplo, en una GAN entrenada para generar imágenes de perros, el generador transforma el ruido aleatorio en imágenes que se asemejan a perros, mientras que el discriminador evalúa estas imágenes con fotos reales de perros del conjunto de entrenamiento.

Con el tiempo, este proceso de confrontación impulsa a ambas redes a mejorar. Permite al generador crear datos convincentes y realistas que se asemejan mucho al conjunto de datos de entrenamiento original, mientras que el discriminador agudiza su capacidad para identificar diferencias sutiles entre datos reales y falsos. 

Tipos de GAN

Vanilla GAN

Las Vanilla GAN son la forma básica de redes generativas de adversarios que incluyen un generador y un discriminador que participan en un típico juego de adversarios. El generador crea muestras falsas y el discriminador pretende distinguir entre las muestras de datos reales y las falsas. Las Vanilla GAN utilizan perceptrones multicapa (MLP) simples o capas de neuronas tanto para el generador como para el discriminador, lo que facilita su implementación. Estos MLP procesan datos y clasifican entradas para distinguir objetos conocidos en un conjunto de datos. Sin embargo, son conocidos por ser inestables durante el entrenamiento y, a menudo, requieren un ajuste cuidadoso de los hiperparámetros para lograr buenos resultados.

GAN condicionales (cGAN)

Una cGAN es un tipo de red adversativa generativa que incluye información adicional, denominada "etiquetas" o "condiciones", tanto para el generador como para el discriminador2. Estas etiquetas proporcionan contexto, lo que permite al generador producir datos con características específicas basadas en la entrada dada, en lugar de depender únicamente del ruido aleatorio como en las Vanilla GAN. Esta generación controlada hace que las cGAN sean útiles para tareas que requieren un control preciso sobre el resultado. Las cGAN se utilizan ampliamente para generar imágenes, texto y datos sintéticos adaptados a objetos, temas o estilos específicos. Por ejemplo, una cGAN puede convertir una imagen en blanco y negro en una imagen en color condicionando el generador para transformar la escala de grises en el modelo de color rojo, verde y azul (RGB). Del mismo modo, puede generar una imagen a partir de entradas de texto, como "crear una imagen de un gato peludo blanco", produciendo resultados que se alinean con la descripción proporcionada.

GAN convolucional profunda (DCGAN)

La GAN convolucional profunda (DCGAN) utiliza redes neuronales convolucionales para el generador y el discriminador. El generador toma ruido aleatorio como entrada y lo transforma en datos estructurados, como imágenes. Utiliza convoluciones transpuestas (o deconvoluciones) para mejorar el ruido de entrada y convertirlo en un resultado más grande y detallado, "ampliando" el ruido para crear una imagen significativa. El discriminador utiliza capas convolucionales estándar para analizar los datos de entrada. Estas capas ayudan al discriminador a "alejarse" y observar la estructura general y los detalles de los datos para tomar una decisión. Este enfoque hace que las DCGAN sean eficaces para generar imágenes de alta calidad y otros datos estructurados. 

StyleGAN

Style GAN es un tipo de red adversaria generativa que produce imágenes de alta resolución incluso con una resolución de 1024 x 1024. Las StyleGAN se entrenan utilizando un conjunto de datos de imágenes del mismo objeto. La red generadora se compone de varias capas, cada una de las cuales es responsable de añadir diferentes niveles de detalle a la imagen, desde características básicas hasta texturas complejas. La red discriminadora también tiene múltiples capas, evaluando el nivel de detalle y evaluando la calidad general.

CycleGAN

En una CycleGAN, el generador y el discriminador se entrenan de forma cíclica. Está diseñada para la traducción de imagen a imagen mediante el uso de conjuntos de datos no emparejados. Funciona traduciendo una imagen a otro estilo como una pintura utilizando un generador y luego traduciéndola de nuevo al estilo original utilizando un generador inverso. Este método ayuda a garantizar que la imagen reconstruida se parezca mucho a la original a través de un proceso llamado coherencia del ciclo. Estos resultados son especialmente útiles para tareas como la transferencia de estilos de imagen y la mejora de imágenes. 

Laplacian pyramid GAN (LAPGAN)

Una pirámide laplaciana GAN (LAPGAN) está diseñada para generar imágenes de alta calidad refinándolas a múltiples escalas. Comienza generando una imagen de baja resolución y luego agrega progresivamente más detalles a mayor resolución mediante el uso de una serie de GAN. Este enfoque multiescala, conocido como pirámide laplaciana, permite a LAPGAN gestionar la complejidad de generar imágenes de alta resolución de forma más eficaz.

DiscoGAN

DiscoGAN se utiliza para aprender relaciones entre dominios sin necesidad de datos de entrenamiento emparejados. Utiliza dos generadores y dos discriminadores para traducir imágenes de un dominio a otro y viceversa, lo que ayuda a garantizar que la imagen reconstruida se parezca mucho a la original a través de la coherencia del ciclo. Esto hace que DiscoGAN sea eficaz para tareas como la traducción de imagen a imagen, la transferencia de estilos y la mejora de imágenes, incluso con conjuntos de datos no emparejados. 

Las últimas tendencias en IA, presentadas por expertos

Obtenga conocimientos organizados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

Aplicaciones de las GAN

Las GAN se pueden utilizar para diversas aplicaciones de visión artificial, generación de imágenes, detección de objetos, traducción de imagen a imagen, generación de texto a imagen, predicción del siguiente fotograma del vídeo y más.

Generación de imágenes

Las GAN se utilizan para generar imágenes fotorrealistas de muestras que nunca existieron y para crear imágenes a partir de descripciones textuales, lo que permite la creación de imágenes basadas en atributos o escenas específicos. BigGAN, entrenado en grandes conjuntos de datos, genera datos basados en clases o condiciones específicas y logra resultados de vanguardia en la generación de imágenes3. Se utiliza para diversas aplicaciones, incluida la síntesis de imágenes, la colorización y la reconstrucción. Por ejemplo, GAN-BVRM, un novedoso método de reconstrucción visual bayesiano basado en GAN, utiliza un clasificador para decodificar datos de resonancia magnética funcional (fMRI). Un generador BigGAN preentrenado produce imágenes específicas de la categoría y los modelos de codificación seleccionan imágenes que se alinean con la actividad cerebral, logrando una mayor naturalidad y fidelidad en la reconstrucción de los estímulos de las imágenes. Las GAN están logrando avances significativos en sanidad al generar datos médicos realistas, como resonancias magnéticas, tomografías computarizadas y rayos X, para entrenamiento y análisis, y al crear nuevas estructuras moleculares para el descubrimiento de fármacos. 

Súper resolución de imagen

Las GAN pueden mejorar las imágenes de baja resolución generando variaciones de alta resolución, mejorando la calidad y el detalle de las imágenes. Por ejemplo, StyleGAN2 de NVIDIA genera imágenes de alta resolución y gran realismo con un control detallado de atributos como el contenido, la identidad, la expresión y la pose, lo que permite a los usuarios crear y manipular imágenes para aplicaciones artísticas y prácticas4.

Traducción de imagen a imagen

Las GAN logran la transferencia de estilo y la edición de imágenes transformando imágenes de un dominio a otro, como convertir un boceto en una versión pintada. Por ejemplo, las CycleGAN se emplean para convertir fotos en pinturas. Este proceso implica que un generador convierta imágenes del dominio de origen (fotografías) al dominio de destino (pinturas) y viceversa a través de una restricción cíclica, lo que ayuda a garantizar que el mapeo conserve la coherencia semántica. 

Reajuste de video 

Las GAN se utilizan para el reajuste de vídeos sin supervisión, adaptando el contenido de los vídeos a diferentes relaciones de aspecto y formatos, al tiempo que se conserva la información visual importante. Las Recycle-GAN utilizan una estrategia cíclica similar a la que se encuentra comúnmente en las CycleGAN, aplicándola específicamente a los datos de vídeo. Por ejemplo, las Recycle-GAN puede convertir un vídeo panorámico a formato cuadrado para plataformas de redes sociales, lo que ayuda a garantizar que los elementos y movimientos clave del vídeo permanezcan intactos5.

Manipulación de atributos faciales 

Las GAN permiten la alteración de las características faciales en las imágenes, como el cambio de expresiones o los efectos de envejecimiento, mostrando su potencial en aplicaciones de entretenimiento y redes sociales. StyleGAN funciona aplicando una modificación por capas a las muestras generadas basada en "estilos" extraídos del espacio latente. Este proceso permite un control intuitivo sobre varios atributos, como el color del cabello y la expresión facial, lo que permite a los usuarios manipular las caras de acuerdo con características específicas sin necesidad de ajustes manuales. Por ejemplo, StyleGAN se puede utilizar para cambiar el color del pelo de una persona de marrón a rubio o para añadir una sonrisa a una expresión facial neutra. 

Detección de objetos 

Las GAN se utilizan en la detección de objetos para mejorar la calidad y la diversidad de los datos de entrenamiento, lo que puede mejorar significativamente el rendimiento de los modelos de detección de objetos. Al generar imágenes sintéticas que se asemejan mucho a los datos reales, las GAN aumentan el conjunto de datos de entrenamiento, lo que ayuda a que el modelo generalice mejor y funcione con mayor precisión. Por ejemplo, la investigación ha demostrado que el rendimiento de los modelos de deep learning para la detección de objetos se deteriora significativamente cuando se aplican a imágenes con calidad reducida, como las afectadas por ruido, desenfoque u otras distorsiones6. El documento presenta el marco GAN-DO, que utiliza GAN para mejorar la solidez de los modelos de detección de objetos frente a la calidad variable de la imagen sin añadir complejidad a la arquitectura del modelo ni a la velocidad de inferencia. Los resultados experimentales demuestran que GAN-DO supera a los métodos tradicionales de ajuste fino, lo que mejora la precisión en la detección de objetos.

Mixture of Experts | 12 de diciembre, episodio 85

Descifrar la IA: resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el bullicio de la IA para ofrecerle las últimas noticias y conocimientos al respecto.

Otros modelos generativos para la generación de datos sintéticos

Además de las GAN, los autocodificadores variacionales (VAE) son otro modelo de deep learning que puede crear nuevas muestras de datos que imitan los datos del mundo real. Los VAE son modelos probabilísticos, lo que significa que representan los datos en términos de distribuciones de probabilidad, que describen la probabilidad de que se produzcan diferentes resultados o valores en los datos. Estos modelos están diseñados para aprender patrones de un conjunto de datos de entrenamiento y crear nuevos datos que son variaciones del conjunto de datos original, en lugar de réplicas exactas. Un autocodificador variacional (VAE) contiene dos componentes. El codificador (modelo de reconocimiento) comprime datos de entrada complejos, como imágenes, en datos más simples de baja dimensión, y el decodificador (modelo generativo) recrea la entrada original a partir de la representación comprimida. Los VAE también pueden generar muestras completamente nuevas de aprendizaje de datos a partir de los patrones del conjunto de datos de entrenamiento. Los VAE suelen producir resultados más borrosos y menos nítidos, pero son más estables de entrenar, mientras que los GAN generan resultados más nítidos y realistas, pero son más difíciles de entrenar debido a la inestabilidad.

En última instancia, la elección entre VAE y GAN depende de los requisitos específicos de la tarea, como la calidad de salida deseada, la estabilidad del entrenamiento y la necesidad de representaciones latentes interpretables, lo que hace que cada modelo tenga un valor único en diferentes aplicaciones.

Beneficios y desafíos de las GAN

Las redes generativas antagónicas (GAN) pueden generar datos muy realistas y diversos, como imágenes, texto y audio. Se utilizan en aplicaciones que incluyen el procesamiento del lenguaje natural (PLN) para generar datos de texto y mejorar los modelos de lenguaje y en la generación de música para crear nuevas composiciones y sonidos de instrumentos realistas. La simulación y los juegos utilizan GAN para generar entornos y personajes realistas y detección de anomalías mediante la identificación de patrones que se desvían de la norma. Las GAN también ayudan a la investigación científica mediante la simulación de datos complejos para experimentos que son costosos o poco prácticos de realizar. Mejoran los procesos de machine learning (ML) a través del aumento de datos, aumentando la cantidad y diversidad de conjuntos de entrenamiento para abordar el desafío de los big data limitados. Se espera que las GAN se integren aún más con tecnologías como el aprendizaje por refuerzo, la robótica y el PLN para avanzar en los sistemas de inteligencia artificial (IA). 

A pesar del auge de los transformadores, las GAN siguen siendo relevantes debido a su arquitectura ligera y su eficiencia computacional, lo que las hace ideales para la implementación en el edge. Con menos parámetros en comparación con los transformadores, las GAN ofrecen una generación controlada para una manipulación detallada de las características (por ejemplo, los atributos faciales), lo que simplifica el ajuste para tareas específicas. Las GAN ofrecen velocidades de inferencia más rápidas, ya que requieren un único paso hacia adelante (o un flujo único de entrada a través de una red neuronal para generar la salida). Esto los hace ideales para aplicaciones en tiempo real en dispositivos periféricos con recursos limitados, como teléfonos móviles y sistemas IoT. Estas ventajas hacen de las GAN una opción práctica para tareas como la traducción de imágenes, la superresolución y la síntesis de vídeo en tiempo real en entornos periféricos. 

Sin embargo, las GAN se enfrentan a retos importantes. Uno de los principales problemas es la inestabilidad del entrenamiento, en la que el generador y el discriminador podrían no converger correctamente, lo que daría lugar a resultados de mala calidad. El colapso modal es otro desafío en el que el generador produce una variedad limitada, sin poder capturar toda la diversidad de los datos de entrenamiento. Las GAN también requieren grandes cantidades de datos y recursos computacionales sustanciales, lo que puede ser una barrera para su uso generalizado. Evaluar la calidad de los resultados generados por GAN es un desafío, ya que las métricas tradicionales podrían no recoger completamente los matices de los datos generados. Ayudar a garantizar el uso ético de las muestras generadas es una preocupación creciente, ya que las GAN pueden utilizarse para crear falsificaciones profundas y otros contenidos potencialmente dañinos.

Cómo implementar un modelo GAN 

Una GAN se puede implementar utilizando Tensorflow y Keras. Requiere un conjunto de datos de entrenamiento, un script generador y un script discriminador para crear un modelo GAN en Python. La siguiente es una guía paso a paso para ayudarle a empezar:

Paso 1: importe las bibliotecas necesarias, incluidas TensorFlow y otras bibliotecas esenciales como numpy y matplotlib para crear y entrenar el modelo GAN. 

Paso 2: cargue y preprocese el conjunto de datos, lo que garantiza que representa la distribución de datos de destino (por ejemplo, imágenes, texto y más).  

Paso 3: cree el modelo generador utilizando capas de TensorFlow o Keras que toman ruido aleatorio y producen muestras de datos que coinciden con la distribución objetivo.

Paso 4: cree el modelo discriminador para clasificar muestras de datos reales frente a muestras de datos falsas generadas por el generador. 

Paso 5: utilice optimizadores adecuados tanto para el generador como para el discriminador y defina las funciones de pérdida.

Paso 6: combine el generador y el discriminador en un único modelo GAN para entrenar al generador para que engañe al discriminador. 

Paso 7: implemente un bucle para alternar entre entrenar el discriminador y el generador con datos reales y falsos.

Paso 8: analice el resultado del generador y la precisión del discriminador a lo largo de las épocas para ayudar a garantizar la convergencia.

Paso 9: utilice el generador entrenado para producir nuevas muestras que imiten la distribución de datos de destino.

Paso 10: trace o analice los datos generados para validar cómo la GAN ha aprendido la distribución objetivo. 

Siguiendo estos pasos, se puede implementar un modelo GAN básico utilizando TensorFlow.  

El futuro de las GAN es prometedor y se esperan avances en realismo, estabilidad, eficiencia y consideraciones éticas. A medida que las GAN se integren más con otras tecnologías y encuentren nuevas aplicaciones, seguirán revolucionando diversos sectores y campos.

Soluciones relacionadas
IBM watsonx.ai

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.

Descubra watsonx.ai
Soluciones de inteligencia artificial

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.

Explore las soluciones de IA
Consultoría y servicios de IA

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.

Explore los servicios de IA
Dé el siguiente paso

Obtenga acceso único a capacidades que abarcan el ciclo de vida de desarrollo de la IA. Produzca potentes soluciones de IA con interfaces intuitivas, flujos de trabajo y acceso a API y SDK estándar del sector.

Explore watsonx.ai Solicite una demostración en directo
Notas a pie de página

1 Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., ... y Bengio, Y. (2014). Generative adversarial nets. Advances in neural information processing systems27.

2 Alqahtani, Hamed & Kavakli, Manolya y Kumar, Gulshan. (2019). Applications of Generative Adversarial Networks (GANs): An Updated Review. Archives of Computational Methods in Engineering. 28. 10.1007/s11831-019-09388-y.

3 Qiao, K., Chen, J., Wang, L., Zhang, C., Tong, L., y Yan, B. (2020). BigGAN-based Bayesian reconstruction of natural images from human brain activity. Neuroscience. 444. 92–105. https://doi.org/10.1016/j.neuroscience.2020.07.040.

4 Alarcon, N. (2020). Synthesizing High-Resolution Images with StyleGAN2. NVIDIA Technical Blog. https://developer.nvidia.com/blog/synthesizing-high-resolution-images-with-stylegan2.

5 Bansal, A., Ma, S., Ramanan, D., y Sheikh, Y. (2018). Recycle-GAN: Unsupervised Video Retargeting. arXiv. https://doi.org/10.48550/arXiv.1808.05174.

6 Prakash, C. D., Shrivastava, A., y Torresani, L. (2019). It GAN DO Better: GAN-based Detection of Objects on Images with Varying Quality. arXiv. https://arxiv.org/abs/1912.01707.