Introducción a Modelos Generativos Profundos

Enrique Blanco    6 junio, 2019

Es muy probable que en las últimas semanas se hayan encontrado con el resultado de una investigación realizada por Tero Karrasm, Samuli Laine y Timo Aila por parte de NVIDIA Corporation. En este paper se indica cómo han entrenado un modelo generativo para generar rostros humanos de gente que no existe, y todo esto sólo descargando imágenes públicas de Flickr de alta calidad y, eso sí, un tiempo extenso de entrenamiento con HW de alto rendimiento. Os dejamos un enlace al vídeo generado tras esta investigación que, con total seguridad, les llamará la atención.


A Style-Based Generator Architecture for Generative Adversarial Networks. NVIDIA Corporation.

Introducción

Pero, ¿qué es un modelo generativo? Un modelo generativo es una arquitectura profunda dotada de algoritmos de aprendizaje que tiene como misión aprender cualquier tipo de distribución de datos, todo esto aplicado dentro del paradigma de aprendizaje no supervisado. Todos los tipos de modelos generativos buscan aprender la verdadera distribución de datos del conjunto de entrenamiento y, una vez logrado, ser capaces generar nuevas muestras con ligeras variaciones. No siempre resulta posible abstraer la distribución exacta de nuestros datos, por lo que, haciendo uso de las redes neuronales, se intenta modelar una distribución lo más similar posible a la distribución verdadera.

Fig. 1. Distribución de probabilidad aprendida por el modelo generativo y distribución real. Fuente.

Para entrenar un modelo generativo, primero se recopilan una gran cantidad de datos en algún campo, como por ejemplo un elevado número de imágenes para, posteriormente, entrenar una arquitectura dotada de un algoritmo capaz de generar datos similares. Ya que nos movemos en un paradigma no supervisado, el científico de datos se ahorra el tiempo de etiquetar los datos, por lo que se cuenta con una gran información con la que alimentar el modelo.

Mientras que un modelo discriminativo es un modelo de probabilidad condicionada de un target Y dada una variable independiente x, que matemáticamente queda representado como P(Y|X=x). Los modelos generativos permiten calcular la distribución de probabilidad conjunta entre un observable X y una variable Y tal que P(X, Y).

Dos arquitecturas profundas se han erigido como los principales pilares para desarrollar modelos generativos: Variational Autoencoders (VAEs) y Generative Adversarial Networks (GANs).

Variational Autoencoders

Los VAEs intenta maximizar la similitud entre las imágenes generadas y las imágenes con las que han sido alimentadas registro de datos y las GANs se entrenan con la intención de lograr un equilibrio entre un generador y un discriminador.

Los VAEs son modelos generativos sencillos cuya aplicación va desde la generación de imágenes hasta la generación de muestras de audio. De manera más precisa, un Autoencoder es un tipo especial de red neuronal cuyo objetivo es hacer coincidir la entrada que se le proporcionó con la salida con la mayor semejanza posible. Este tipo de arquitecturas pueden extraer patrones de las entradas que realizan en las capas más profundas de su topología. El Autoencoder debe comprimir la información para poder reconstruirla a posteriori.

Fig. 2. Arquitectura de un Autoencoder. Fuente.

Tras un entrenamiento correcto, el Autoencoder aprenderá a representar los valores de entrada en una forma diferente, pero mucho más compacta. De hecho, haciendo un muestreo en la distribución aprendida en el espacio latente de la arquitectura, se es capaz de generar muestras de datos. A esta variación, haciendo uso del conocido como Reparametrizaton Trick, se le conoce como Variational Autoencoder.

Fig. 3. Ejemplo de arquitectura de Variational Autoencoder. Véase el sampling de la distribución del espacio latente.

En el siguiente vídeo mostramos cómo un Variational Autencoder aprende a reproducir un rostro con el tiempo. Este vídeo fue generado como parte de una investigación sobre la aplicación de estos modelos generativos del equipo de Ideas Locas CDO para la RootedCON 2019 que tuvo lugar el pasado mes de marzo. Podéis consultar los detalles en este enlace a las diapositivas presentadas y en este otro al paper derivado de la investigación.

Generative Adversarial Networks

Por otro lado, las GANs son el perfecto ejemplo de una red neuronal que constituye un modelo generativo haciendo uso del paradigma de aprendizaje no supervisado para entrenar dos modelos en paralelo en un juego de suma cero. El principio del entrenamiento de este tipo de redes es fácil a la par que ingenioso.

Se lleva a cabo un entrenamiento simultáneo de dos arquitecturas que se alimentan la una a la otra: un modelo generativo G captura la distribución de los datos y genera muestras a partir de un modelo estadístico, mientras que un modelo discriminador D, que se comporta como un clasificador. Éste estima la probabilidad de que una muestra provenga bien de los datos con los que se entrena el modelo o de que hay sido generado por G. El entrenamiento de este tipo de redes busca entrenar D para desenmascarar a G maximizando la probabilidad de que D esté equivocado.

Fig. 4. Generative Adversarial Network example.

Cuando el modelo discriminador D, que funciona como un clasificador binario, rechaza un ejemplo producido por el generador, el modelo generador aprende a refinar cada vez mejor la generación de nuevas muestras. 

De acuerdo con Goodfellow et al. Generative Adversarial Nets, el problema reside en que este tipo de arquitecturas son difíciles de optimizar. Se intenta encontrar un punto de silla en vez de un mínimo de la función, por lo que el proceso de optimización resulta inestable.

Esto ha sido todo sobre esta breve introducción a los modelos generativos. Seguiremos profundizando en el potencial que ofrecen este tipo de tecnologías.

Para mantenerte al día con LUCA visita nuestra página web,  suscríbete a LUCA Data Speaks o síguenos en TwitterLinkedIn YouTube.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada.