¿Qué son las redes generativas adversariales (GAN)?

Autor

Jobit Varughese

Technical Content Writer

IBM

¿Qué es una GAN?

Una red generativa adversarial, 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 una infraestructura de aprendizaje no supervisado mediante el uso de técnicas de aprendizaje profundo, donde dos redes neuronales trabajan en oposición: una genera datos, mientras que la otra evalúa si los datos son reales o generados.

Si bien el aprendizaje profundo 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 desafiante debido a la complejidad de los cálculos en los modelos generativos.

Las GAN, presentadas por Ian Goodfellow en su artículo Generative Adversarial Nets de 2014, ofrecen una solución innovadora a este desafío.1 Esta infraestructura innovadora 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 de 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. La retropropagación se emplea 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. Luego, el generador utiliza la retroalimentación 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 contradictorio. 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 qué tan bien el generador puede engañar al discriminador para que crea que sus datos son reales. Una baja pérdida 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 baja del discriminador 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 contradictorio 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 adversarias que incluyen un generador y un discriminador que participan en un juego típico de adversarios. El generador crea muestras falsas y el discriminador tiene como objetivo 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 generativa adversarial que incluye información adicional, llamada "etiquetas" o "condiciones", tanto para el generador como para el discriminador.2 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 GAN estándar. Esta generación controlada hace que las cGAN sean útiles para tareas que requieren un control preciso sobre la salida. 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 convertir el ruido de entrada en una salida más grande y detallada "acercando" 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 generativa adversarial que produce imágenes de alta resolución, incluso con una resolución de 1024 x 1024. Las StyleGAN se entrenan mediante el uso de un conjunto de datos de imágenes del mismo objeto. La red del generador se compone de múltiples capas, cada una de las cuales es responsable de agregar 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 la calidad general.

CycleGAN

En un CycleGAN, el generador y el discriminador se entrenan de manera cíclica. Está diseñado 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 mediante el uso de un generador y luego traduciéndola de nuevo al estilo original mediante el uso de 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 específicamente útiles para tareas como la transferencia de estilos de imagen y la mejora de imágenes. 

Pirámide laplaciana 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 manejar la complejidad de generar imágenes de alta resolución de manera más efectiva.

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 de IA presentadas por expertos

Obtenga insights curados 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! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. 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 en el video 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íficos y logra resultados de vanguardia en la generación de imágenes.3 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 de BigGAN previamente entrenado 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 la atención médica 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. 

Superresolució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 muy realistas con un control detallado sobre atributos que incluyen contenido, identidad, expresión y pose, lo que permite a los usuarios crear y manipular imágenes para aplicaciones artísticas y prácticas.4

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. 

Retargeting de video 

Las GAN se utilizan para el retargeting de video no supervisado, adaptando el contenido de video para que se ajuste a diferentes relaciones de aspecto y formatos, al tiempo que 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 video. Por ejemplo, Recycle-GAN puede convertir un video de pantalla ancha a un formato cuadrado para plataformas de redes sociales, lo que ayuda a garantizar que los elementos y movimientos clave del video permanezcan intactos.5

Manipulación de atributos faciales 

Las GAN permiten la alteración de características faciales en imágenes, como expresiones cambiantes o 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, incluido el color del cabello y la expresión facial, lo que permite a los usuarios manipular los rostros de acuerdo con características específicas sin necesidad de ajustes manuales. Por ejemplo, StyleGAN se puede usar para cambiar el color del cabello de una persona de marrón a rubio o para agregar una sonrisa a una expresión facial neutral. 

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 se generalice mejor y funcione con mayor precisión. Por ejemplo, la investigación ha demostrado que el rendimiento de los modelos de aprendizaje profundo 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 distorsiones.6 El documento presenta la infraestructura 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 agregar complejidad a la arquitectura del modelo o la velocidad de inferencia. Los resultados experimentales demuestran que GAN-DO supera a los métodos tradicionales de ajuste, lo que lleva a una mayor precisión en la detección de objetos.

AI Academy

El auge de la IA generativa para las empresas

Aprenda sobre el auge histórico de la IA generativa y lo que significa para las empresas.

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

Además de las GAN, los autocodificadores variacionales (VAE) son otro modelo de aprendizaje profundo 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 datos en términos de distribuciones de probabilidad, que describen la posibilidad 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 las 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 adversariales (GAN) pueden generar datos muy realistas y diversos, como imágenes, texto y audio. Se utilizan en aplicaciones que incluyen el procesamiento de 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, incrementando la cantidad y la 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 eficiencia computacional, lo que las hace ideales para el despliegue perimetral. Con menos parámetros en comparación con los transformadores, las GAN ofrecen generación controlada para una manipulación detallada de características (por ejemplo, atributos faciales), lo que simplifica el ajuste para tareas específicas. Las GAN proporcionan 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 redes neuronales para generar resultados). Esto las hace ideales para aplicaciones en tiempo real en dispositivos edge 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 traducción de imágenes, superresolución y síntesis de video en tiempo real en entornos edge. 

Sin embargo, las GAN enfrentan desafíos 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 es posible que las métricas tradicionales no capturen completamente los matices de los datos generados. Ayudar a garantizar el uso ético de la muestra generada es una preocupación creciente, ya que las GAN se pueden utilizar para crear deep fakes y otros contenidos potencialmente dañinos.

Cómo implementar un modelo GAN 

Una GAN se puede implementar mediante 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 comenzar:

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

Paso 2: cargar y preprocesar el conjunto de datos, lo que ayuda a garantizar que represente la distribución de datos objetivo (por ejemplo, imágenes, texto y más).  

Paso 3: crear 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: construir el modelo discriminador para clasificar las muestras de datos reales frente a las falsas generadas por el generador. 

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

Paso 6: combinar el generador y el discriminador en un solo modelo GAN para entrenar al generador para engañar al discriminador. 

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

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

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

Paso 10: trazar o analizar los datos generados para validar qué tan bien la GAN ha aprendido la distribución objetivo. 

Siguiendo estos pasos, se puede implementar un modelo GAN básico mediante 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, continuarán revolucionando diversas industrias y campos.

Soluciones relacionadas
IBM watsonx.ai

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.

Descubra watsonx.ai
Soluciones de inteligencia artificial

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.

Explore las soluciones de IA
Servicios de IA

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.

Conozca los servicios de IA
Dé el siguiente paso

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

Explore watsonx.ai Reserve una demostración en vivo
Notas de pie de página

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

2 Alqahtani, Hamed & Kavakli, Manolya & 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., & 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., & Sheikh, Y. (2018). Recycle-GAN: Unsupervised Video Retargeting. arXiv. https://doi.org/10.48550/arXiv.1808.05174.

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