Connect with us

IA 101

¿Qué es una Red Adversaria Generativa (GAN)?

mm

Las Redes Adversarias Generativas (GANs) son tipos de arquitecturas de redes neuronales capaces de generar nuevos datos que se ajustan a patrones aprendidos. Las GANs se pueden utilizar para generar imágenes de caras humanas o otros objetos, para realizar traducciones de texto a imagen, para convertir un tipo de imagen en otro y para mejorar la resolución de las imágenes (super resolución) entre otras aplicaciones. Debido a que las GANs pueden generar datos completamente nuevos, están a la vanguardia de muchos sistemas, aplicaciones y investigaciones de inteligencia artificial de vanguardia. Sin embargo, ¿cómo funcionan exactamente las GANs? Exploraremos cómo funcionan las GANs y veremos algunos de sus usos principales.

Definiendo Modelos Generativos y GANs

Una GAN es un ejemplo de un modelo generativo. La mayoría de los modelos de inteligencia artificial se pueden dividir en una de dos categorías: modelos supervisados y no supervisados. Los modelos de aprendizaje supervisado se utilizan típicamente para discriminar entre diferentes categorías de entradas, para clasificar. En contraste, los modelos no supervisados se utilizan típicamente para resumir la distribución de los datos, a menudo aprendiendo una distribución normal de los datos. Debido a que aprenden la distribución de un conjunto de datos, pueden extraer muestras de esta distribución aprendida y generar nuevos datos.

Diferentes modelos generativos tienen diferentes métodos para generar datos y calcular distribuciones de probabilidad. Por ejemplo, el modelo Naive Bayes opera calculando una distribución de probabilidad para las diferentes características de entrada y la clase generativa. Cuando el modelo Naive Bayes realiza una predicción, calcula la clase más probable tomando la probabilidad de las diferentes variables y combinándolas. Otros modelos generativos no basados en aprendizaje profundo incluyen Modelos de Mezcla Gaussianos y Asignación Dirichlet Latente (LDA). Los modelos generativos basados en aprendizaje profundo incluyen Máquinas de Boltzmann Restringidas (RBMs), Autoencoders Variacionales (VAEs) y, por supuesto, GANs.

Las Redes Adversarias Generativas fueron propuestas por primera vez por Ian Goodfellow en 2014, y fueron mejoradas por Alec Redford y otros investigadores en 2015, lo que llevó a una arquitectura estandarizada para GANs. Las GANs son en realidad dos redes diferentes unidas. Las GANs están compuestas por dos mitades: un modelo de generación y un modelo de discriminación, también referido como el generador y el discriminador.

La Arquitectura GAN

Las Redes Adversarias Generativas están construidas a partir de un modelo de generador y un modelo de discriminador unidos. El trabajo del modelo de generador es crear nuevos ejemplos de datos, basados en los patrones que el modelo ha aprendido de los datos de entrenamiento. El trabajo del modelo de discriminador es analizar imágenes (asumiendo que se entrena en imágenes) y determinar si las imágenes son generadas/falsas o genuinas.

Los dos modelos están enfrentados entre sí, entrenados de una manera teórica de juegos. El objetivo del modelo de generador es producir imágenes que engañen a su adversario, el modelo de discriminador. Mientras tanto, el trabajo del modelo de discriminador es superar a su adversario, el modelo de generador, y detectar las imágenes falsas que el generador produce. El hecho de que los modelos estén enfrentados entre sí resulta en una carrera armamentista en la que ambos modelos mejoran. El discriminador recibe retroalimentación sobre qué imágenes eran genuinas y cuáles fueron producidas por el generador, mientras que el generador recibe información sobre cuáles de sus imágenes fueron marcadas como falsas por el discriminador. Ambos modelos mejoran durante el entrenamiento, con el objetivo de entrenar un modelo de generación que pueda producir datos falsos que sean básicamente indistinguibles de los datos genuinos.

Una vez que se ha creado una distribución normal de datos durante el entrenamiento, se puede utilizar el modelo generativo. El modelo de generador se alimenta inicialmente con un vector aleatorio, que transforma según la distribución normal. En otras palabras, el vector siembra la generación. Cuando el modelo está entrenado, el espacio vectorial será una versión comprimida, o representación, de la distribución normal de los datos. La versión comprimida de la distribución de los datos se refiere como espacio latente, o variables latentes. Más adelante, el modelo GAN puede tomar la representación del espacio latente y dibujar puntos de ella, que se pueden dar al modelo de generación y utilizar para generar nuevos datos que sean muy similares a los datos de entrenamiento.

El modelo de discriminador se alimenta con ejemplos del dominio de entrenamiento completo, que está compuesto por ejemplos de datos reales y generados. Los ejemplos reales están contenidos dentro del conjunto de datos de entrenamiento, mientras que los datos falsos son producidos por el modelo de generación. El proceso de entrenar el modelo de discriminador es exactamente el mismo que el entrenamiento de un modelo de clasificación binaria básico.

Proceso de Entrenamiento de GAN

Veamos el proceso de entrenamiento completo para una tarea hipotética de generación de imágenes.

Para comenzar, la GAN se entrena utilizando imágenes genuinas, reales como parte del conjunto de datos de entrenamiento. Esto configura el modelo de discriminador para distinguir entre imágenes generadas y reales. También produce la distribución de los datos que el generador utilizará para producir nuevos datos.

El generador toma un vector de datos numéricos aleatorios y los transforma según la distribución normal, devolviendo una imagen. La imagen generada, junto con algunas imágenes genuinas del conjunto de datos de entrenamiento, se alimenta al modelo de discriminador. El discriminador renderizará una predicción probabilística sobre la naturaleza de las imágenes que recibe, saliendo con un valor entre 0 y 1, donde 1 es típicamente una imagen auténtica y 0 es una imagen falsa.

Hay un bucle de retroalimentación doble en juego, ya que el discriminador se alimenta con la verdad fundamental de las imágenes, mientras que el generador recibe retroalimentación sobre su rendimiento por parte del discriminador.

Los modelos generativo y de discriminación están jugando un juego de suma cero con cada uno. Un juego de suma cero es aquel en el que las ganancias de un lado provienen a expensas del otro lado (la suma es cero ex). Cuando el modelo de discriminador puede distinguir con éxito entre ejemplos reales y falsos, no se realizan cambios en los parámetros del discriminador. Sin embargo, se realizan actualizaciones grandes en los parámetros del modelo cuando no puede distinguir entre imágenes reales y falsas. Lo inverso es cierto para el modelo generativo, se penaliza (y se actualizan sus parámetros) cuando no puede engañar al modelo de discriminación, pero de lo contrario sus parámetros no cambian (o se recompensa).

Idealmente, el generador puede mejorar su rendimiento hasta el punto en que el discriminador no pueda discernir entre las imágenes falsas y reales. Esto significa que el discriminador siempre renderizará probabilidades del 50% para imágenes reales y falsas, lo que significa que las imágenes generadas deben ser indistinguibles de las imágenes genuinas. En la práctica, las GANs generalmente no alcanzarán este punto. Sin embargo, el modelo generativo no necesita crear imágenes perfectamente similares para seguir siendo útil para las muchas tareas para las que se utilizan las GANs.

Aplicaciones de GAN

Las GANs tienen una serie de aplicaciones diferentes, la mayoría de ellas giran en torno a la generación de imágenes y componentes de imágenes. Las GANs se utilizan comúnmente en tareas donde los datos de imagen requeridos están faltando o limitados de alguna manera, como un método para generar los datos requeridos. Veamos algunos de los casos de uso comunes para las GANs.

Generar Nuevos Ejemplos Para Conjuntos De Datos

Las GANs se pueden utilizar para generar nuevos ejemplos para conjuntos de datos de imágenes simples. Si solo tiene un puñado de ejemplos de entrenamiento y necesita más, las GANs podrían utilizarse para generar nuevos datos de entrenamiento para un clasificador de imágenes, generando nuevos ejemplos de entrenamiento en diferentes orientaciones y ángulos.

Generar Caras Humanas Únicas

La mujer de esta foto no existe. La imagen fue generada por StyleGAN. Foto: Owlsmcgee a través de Wikimedia Commons, Dominio Público (https://commons.wikimedia.org/wiki/File:Woman_1.jpg)

Cuando se entrenan suficientemente, las GANs se pueden utilizar para generar imágenes extremadamente realistas de caras humanas. Estas imágenes generadas se pueden utilizar para ayudar a entrenar sistemas de reconocimiento de caras.

Traducción De Imagen A Imagen

Las GANs sobresalen en la traducción de imagen. Las GANs se pueden utilizar para colorear imágenes en blanco y negro, traducir bocetos o dibujos a imágenes fotográficas, o convertir imágenes de día a noche.

Traducción De Texto A Imagen

La traducción de texto a imagen es posible mediante el uso de GANs. Cuando se proporciona texto que describe una imagen y la imagen que acompaña, una GAN se puede entrenar para crear una nueva imagen cuando se proporciona una descripción de la imagen deseada.

Edición Y Reparación De Imágenes

Las GANs se pueden utilizar para editar fotografías existentes. Las GANs pueden eliminar elementos como la lluvia o la nieve de una imagen, pero también se pueden utilizar para reparar imágenes antiguas dañadas o imágenes corruptas.

Super Resolución

La super resolución es el proceso de tomar una imagen de baja resolución y insertar más píxeles en la imagen, mejorando la resolución de esa imagen. Las GANs se pueden entrenar para tomar una imagen y generar una versión de mayor resolución de esa imagen.

Bloguero y programador con especialidades en Machine Learning y Deep Learning temas. Daniel espera ayudar a otros a utilizar el poder de la IA para el bien social.