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

Las redes generativas antagónicas (GAN) son un tipo de arquitectura de aprendizaje profundo que utiliza dos redes neuronales en competencia para generar nuevos datos. Estas dos redes, el generador y el discriminador, se entrenan mutuamente, lo que ayuda a producir una salida más precisa. Las GAN pueden ser útiles en diversos campos, como la visión artificial, la robótica, la generación de imágenes, la síntesis de vídeo y el procesamiento del lenguaje natural.

¿Cómo funcionan las GAN?

La mejor forma de entender cómo funcionan las GAN es mediante una analogía: una competición entre un falsificador de arte (el generador) y un crítico de arte (el discriminador).

  • El falsificador (generador): el objetivo del falsificador es crear cuadros que sean indistinguibles de las obras maestras reales. Al principio, sus intentos son toscos y obviamente falsos. Empieza creando una imagen aleatoria (como si se lanzara pintura sobre un lienzo).
  • El crítico (discriminador): su trabajo consiste en distinguir los cuadros reales de las falsificaciones. Al principio, es fácil. El crítico examina tanto la obra de arte real como la del falsificador y le da su opinión, diciéndole básicamente: "Esto es falso".
  • El bucle de retroalimentación: el falsificador usa esta información para mejorar. Aprende qué hace que una pintura parezca real y ajusta su técnica. El crítico también mejora y aprende a detectar imperfecciones más sutiles a medida que las falsificaciones son más perfectas.

Este "juego" antagónico continúa y ambas redes se vuelven progresivamente más inteligentes. Al final, el falsificador se vuelve tan hábil que el crítico ya no puede distinguir la diferencia de forma fiable. En este punto, la GAN está entrenada y puede generar datos nuevos y muy realistas.

CNN frente a GAN

Tanto las redes neuronales convolucionales (CNN) como las redes generativas antagónicas (GAN) son arquitecturas de aprendizaje profundo, pero tienen puntos fuertes y aplicaciones distintos. Las CNN se suelen utilizar para tareas de clasificación de imágenes y detección de objetos, mientras que las GAN se suelen diseñar para generar nuevas instancias de datos.

Función

CNN

GAN

Uso de datos

Conjuntos de datos etiquetados en su mayoría

Conjuntos de datos etiquetados o sin etiquetar

Salida

Clasificación, extracción de características

Nuevas instancias de datos diversos

Tipo de modelo

Discriminativo

Generativa

Tareas principales

Clasificación de imágenes, reconocimiento de objetos

Generación de imágenes, aumento de datos, creación de datos sintéticos

Función

CNN

GAN

Uso de datos

Conjuntos de datos etiquetados en su mayoría

Conjuntos de datos etiquetados o sin etiquetar

Salida

Clasificación, extracción de características

Nuevas instancias de datos diversos

Tipo de modelo

Discriminativo

Generativa

Tareas principales

Clasificación de imágenes, reconocimiento de objetos

Generación de imágenes, aumento de datos, creación de datos sintéticos

Es importante tener en cuenta que las CNN se utilizan con frecuencia en las arquitecturas de las GAN, normalmente como red discriminadora. La tarea del discriminador de distinguir imágenes reales de falsas es un problema de clasificación de imágenes, para el que las CNN, con sus sólidas capacidades de extracción de características, suelen ser muy adecuadas.

Tipos comunes de GAN

Aunque todas las GAN comparten la estructura generador-discriminador, se han desarrollado diferentes variaciones para resolver problemas específicos. Estos son algunos de los tipos más importantes:

  • GAN condicional (cGAN): ¿Qué ocurre si quieres controlar lo que crea la GAN? Una cGAN te permite añadir una condición. En lugar de generar "una cara aleatoria", puedes pedirle que genere "una mujer rubia sonriendo". Esto es fundamental para las aplicaciones de texto a imagen.
  • CycleGAN: ¿Qué ocurre si quieres traducir una imagen de un estilo a otro sin tener pares de imágenes perfectamente emparejados para el entrenamiento (por ejemplo, convertir una foto de un caballo en una cebra)? CycleGAN se ha diseñado para esta "traducción de imagen a imagen no emparejada", lo que la ha hecho famosa por la transferencia de estilos y la transfiguración de objetos.
  • StyleGAN este tipo de GAN se centra en crear imágenes realistas de una calidad extremadamente alta (especialmente caras) y ofrece al usuario un control preciso sobre el "estilo" de la imagen, como la edad, el pelo o la expresión.
  • GAN de superresolución (SRGAN): esta GAN está especializada en tomar una imagen borrosa de baja resolución y aumentarla a una versión nítida de alta resolución alucinando detalles realistas.

Aunque el concepto fundamental de usar dos redes antagónicas sigue siendo el mismo en todas las variaciones de las redes generativas antagónicas, los investigadores han explorado una variedad de modificaciones arquitectónicas y de entrenamiento para abordar las limitaciones y mejorar el rendimiento en aplicaciones específicas.

¿Para qué se usan las GAN?

Las GAN han abierto nuevas posibilidades en muchos sectores. Sus aplicaciones suelen clasificarse en estas áreas clave:

Creación y manipulación de contenido

Esta es la aplicación más famosa de las GAN. Esto incluye generar imágenes realistas de personas, lugares y objetos; crear arte digital y música; y habilitar potentes herramientas de edición de imágenes, como la transferencia de estilo (hacer que una foto parezca una pintura), la superresolución (mejorar la nitidez de las imágenes borrosas) y la síntesis de texto a imagen.

Aumento de datos y privacidad

Los datos de alta calidad son el combustible del aprendizaje automático, pero pueden ser escasos, caros o privados. Las GAN ayudan a resolver este problema generando datos sintéticos. En el ámbito de la sanidad, las GAN pueden crear exploraciones médicas realistas pero anónimas para entrenar modelos de diagnóstico sin violar la privacidad de los pacientes. En el ámbito de las finanzas, pueden generar datos de transacciones sintéticos para entrenar sistemas de detección de fraudes más eficaces. Esto ayuda a superar la escasez de datos y a equilibrar los conjuntos de datos.

Simulación y predicción

Las GAN pueden aprender los patrones de sistemas complejos para crear simulaciones realistas. Se usa para generar diversos escenarios para entrenar coches autónomos, predecir los siguientes fotogramas de un vídeo o incluso descubrir posibles estructuras moleculares en el descubrimiento de fármacos.

Detección de anomalías y amenazas

Al entrenar una GAN con datos "normales", se vuelve muy buena detectando cualquier cosa que no encaje con el patrón. Se usa para detectar actividades financieras fraudulentas, identificar intrusiones en la red en el ámbito de la ciberseguridad y encontrar defectos en la fabricación.

Desarrollar con GAN en Google Cloud

Desarrollar e implementar GAN requiere una gran potencia computacional y una plataforma de MLOps sólida. Google Cloud ofrece las herramientas necesarias para todo el flujo de trabajo:

  • Para crear y gestionar modelos: Vertex AI es un centro de aprendizaje automático gestionado que simplifica el proceso de creación, entrenamiento y despliegue de modelos complejos como las GAN. Proporciona un entorno unificado para gestionar tus datos y experimentos.
  • Para el entrenamiento de alto rendimiento: entrenar GANs requiere muchos recursos computacionales. Las TPUs de Cloud son aceleradores por hardware diseñados a medida por Google para agilizar considerablemente el entrenamiento de modelos de aprendizaje profundo, lo que te permite iterar en arquitecturas GAN complejas mucho más rápido.
  • Para un despliegue escalable: una vez que tu modelo esté entrenado, Google Kubernetes Engine (GKE) te ofrece un entorno potente y escalable para desplegar GANs en contenedores como parte de una aplicación más grande.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.

Google Cloud