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

Las redes generativas adversarias (GAN) son un tipo de arquitectura de aprendizaje profundo que usa dos redes neuronales en competencia para generar datos nuevos. Estas dos redes, el generador y el discriminador, se entrenan entre sí, lo que ayuda a producir un resultado más preciso. Las GAN pueden ser útiles en varios campos, como la visión artificial, la robótica, la generación de imágenes, la síntesis de video y el procesamiento de lenguaje natural.

¿Cómo funcionan las GAN?

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

  • El falsificador (generador): El objetivo del falsificador es crear pinturas que sean indistinguibles de las obras maestras reales. Al principio, sus intentos son burdos y obviamente falsos. Comienza creando una imagen aleatoria (como arrojar pintura sobre un lienzo).
  • El crítico (discriminador): El trabajo del crítico es distinguir las pinturas reales de las falsificaciones. Al principio, esto es fácil. El crítico analiza tanto el arte real como el trabajo del falsificador y proporciona comentarios, diciéndole básicamente al falsificador: "Esto es falso".
  • El ciclo de retroalimentación: El falsificador usa esta retroalimentación para mejorar. Aprende qué hace que una pintura real 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 mejoran.

Este "juego" adversarial continúa, y ambas redes se vuelven progresivamente más inteligentes. Con el tiempo, el falsificador se vuelve tan hábil que el crítico ya no puede distinguir la diferencia de manera confiable. En este punto, la GAN está entrenada y puede generar datos nuevos y muy realistas.

CNN en comparación con GAN

Tanto las redes neuronales convolucionales (CNN) como las redes generativas adversarias (GAN) son arquitecturas de aprendizaje profundo, pero tienen fortalezas y aplicaciones distintas. Las CNN se usan a menudo para tareas de clasificación de imágenes y detección de objetos, mientras que las GAN se diseñan generalmente para generar nuevas instancias de datos.

Función

CNN

GAN

Uso de datos

Conjuntos de datos en su mayoría etiquetados

Conjuntos de datos etiquetados o sin etiquetar

Salida

Clasificación, extracción de atributos

Instancias de datos nuevas y diversas

Tipo de modelo

En general, los

Generativa

Tareas principales

Clasificación de imágenes, reconocimiento de objetos

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

Función

CNN

GAN

Uso de datos

Conjuntos de datos en su mayoría etiquetados

Conjuntos de datos etiquetados o sin etiquetar

Salida

Clasificación, extracción de atributos

Instancias de datos nuevas y diversas

Tipo de modelo

En general, los

Generativa

Tareas principales

Clasificación de imágenes, reconocimiento de objetos

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

Es importante destacar que las CNN se utilizan con frecuencia en las arquitecturas de GAN y suelen servir 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 cual las CNN, con sus sólidas capacidades de extracción de atributos, suelen ser adecuadas.

Tipos comunes de GAN

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

  • GAN condicional (cGAN): ¿Qué sucede si quieres controlar lo que crea la GAN? Una cGAN te permite agregar una condición. En lugar de generar "un rostro aleatorio", puedes pedirle que genere "una mujer sonriente con cabello rubio". Esto es fundamental para las aplicaciones de texto a imagen.
  • CycleGAN: ¿Qué sucede si quieres traducir una imagen de un estilo a otro sin tener pares de imágenes perfectamente coincidentes para el entrenamiento (por ejemplo, convertir una foto de un caballo en una cebra)? CycleGAN está diseñado para esta “traducción de imagen a imagen no emparejada”, lo que lo hace famoso por la transferencia de estilo y la transfiguración de objetos.
  • StyleGAN: Este tipo de GAN se enfoca en crear imágenes realistas de muy alta calidad (especialmente rostros) y le da al usuario un control detallado sobre el "estilo" de la imagen, como la edad, el cabello o la expresión.
  • GAN de superresolución (SRGAN): Esta GAN se especializa en tomar una imagen borrosa de baja resolución y mejorarla a una versión nítida de alta resolución alucinando detalles realistas.

Si bien el concepto fundamental de usar dos redes adversarias sigue siendo coherente en las variaciones de las redes generativas adversarias, los investigadores exploraron una variedad de modificaciones arquitectónicas y de entrenamiento para abordar las limitaciones y mejorar el rendimiento de aplicaciones específicas.

¿Para qué se usan las GAN?

Las GAN han abierto nuevas posibilidades en muchas industrias. Sus aplicaciones generalmente se dividen 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 (definir imágenes borrosas) y la síntesis de texto a imagen.

Magnificación de datos y privacidad

Los datos de alta calidad son el combustible del aprendizaje automático, pero pueden ser escasos, costosos o privados. Las GAN ayudan a resolver este problema; para ello, generan datos sintéticos. En el sector de la atención médica, las GAN pueden crear exámenes médicos realistas, pero anónimos, para entrenar modelos de diagnóstico sin violar la privacidad de los pacientes. En finanzas, pueden generar datos de transacciones sintéticos para entrenar mejores sistemas de detección de fraude. Esto ayuda a superar la escasez de datos y equilibrar los conjuntos de datos.

Simulación y predicción

Las GAN pueden aprender los patrones en sistemas complejos para crear simulaciones realistas. Esto se usa para generar diversos situaciones para entrenar vehículos autónomos, predecir los próximos fotogramas en un video o incluso descubrir posibles estructuras moleculares en el descubrimiento de fármacos.

Detección de anomalías y amenazas

Cuando se entrena una GAN con datos "normales", se vuelve muy buena para detectar cualquier cosa que no se ajuste al patrón. Esto se usa para detectar actividad financiera fraudulenta, identificar intrusiones de red en la ciberseguridad y encontrar defectos en la fabricación.

Compilación con GAN en Google Cloud

El desarrollo y la implementación de GAN requieren una potencia de procesamiento significativa y una plataforma de MLOps sólida. Google Cloud ofrece las herramientas para respaldar todo el flujo de trabajo:

  • Para crear y administrar modelos: Vertex AI es una plataforma de aprendizaje automático administrada que simplifica el proceso de crear, entrenar y, también, implementar modelos complejos como las GAN. Proporciona un entorno unificado para administrar tus datos y experimentos.
  • Para el entrenamiento de alto rendimiento: Entrenar las GAN requiere mucha capacidad de procesamiento. Las Cloud TPU son aceleradores de hardware personalizados de Google diseñados para acelerar drásticamente el entrenamiento de aprendizaje profundo, lo que te permite iterar en arquitecturas GAN complejas mucho más rápido.
  • Para una implementación escalable: Una vez que se entrena tu modelo, Google Kubernetes Engine (GKE) proporciona un entorno potente y escalable para implementar las GAN alojadas en contenedores como parte de una aplicación más grande.

Da el siguiente paso

Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.

Google Cloud