Una suave introducción a las Redes Generativas Adversariales (GANs)

Tweet Share Share

Última actualización el 19 de julio de 2019

Las Redes Generativas Adversariales, o GANs para abreviar, son una aproximación al modelado generativo utilizando métodos de aprendizaje profundo, como las redes neuronales convolucionales.

El modelado generativo es una tarea de aprendizaje no supervisado en el aprendizaje automático que implica descubrir y aprender automáticamente las regularidades o patrones en los datos de entrada de tal manera que el modelo puede ser utilizado para generar o dar salida a nuevos ejemplos que plausiblemente podrían haber sido extraídos del conjunto de datos original.

Los GAN son una forma inteligente de entrenar un modelo generativo enmarcando el problema como un problema de aprendizaje supervisado con dos submodelos: el modelo generador que entrenamos para generar nuevos ejemplos, y el modelo discriminador que intenta clasificar los ejemplos como reales (del dominio) o falsos (generados). Los dos modelos se entrenan juntos en un juego de suma cero, adversario, hasta que el modelo discriminador es engañado aproximadamente la mitad de las veces, lo que significa que el modelo generador está generando ejemplos plausibles.

Los GANs son un campo emocionante y que está cambiando rápidamente, cumpliendo con la promesa de los modelos generativos en su capacidad de generar ejemplos realistas a través de una serie de dominios de problemas, sobre todo en las tareas de traducción de imagen a imagen, como la traducción de fotos de verano a invierno o de día a noche, y en la generación de fotos fotorrealistas de objetos, escenas y personas que incluso los humanos no pueden decir que son falsas.

En este post, descubrirás una suave introducción a las Redes Adversariales Generativas, o GANs.

Después de leer este post, sabrás:

  1. ¿Qué son los modelos generativos?
  2. ¿Qué son las redes generativas adversariales?
  3. ¿Por qué redes adversariales generativas?

¿Qué son los modelos generativos?

En esta sección, repasaremos la idea de los modelos generativos, pasando por los paradigmas de aprendizaje supervisado vs. no supervisado y el modelado discriminativo vs. generativo.

Aprendizaje supervisado vs. aprendizaje no supervisado. Aprendizaje no supervisado

Un problema típico de aprendizaje automático implica el uso de un modelo para hacer una predicción, por ejemplo, el modelado predictivo.

Esto requiere un conjunto de datos de entrenamiento que se utiliza para entrenar un modelo, compuesto por múltiples ejemplos, llamados muestras, cada uno con variables de entrada (X) y etiquetas de clase de salida (y). Un modelo se entrena mostrando ejemplos de entradas, haciendo que prediga las salidas y corrigiendo el modelo para que las salidas se parezcan más a las esperadas.

En el enfoque de aprendizaje predictivo o supervisado, el objetivo es aprender un mapeo de las entradas x a las salidas y, dado un conjunto etiquetado de pares de entrada-salida …

– Página 2, Machine Learning: A Probabilistic Perspective, 2012.

Esta corrección del modelo se conoce generalmente como forma de aprendizaje supervisado, o aprendizaje supervisado.

Ejemplo de aprendizaje supervisado

Ejemplo de aprendizaje supervisado

Los ejemplos de problemas de aprendizaje supervisado incluyen la clasificación y la regresión, y los ejemplos de algoritmos de aprendizaje supervisado incluyen la regresión logística y el bosque aleatorio.

Hay otro paradigma de aprendizaje en el que el modelo sólo recibe las variables de entrada (X) y el problema no tiene ninguna variable de salida (y).

Un modelo se construye extrayendo o resumiendo los patrones en los datos de entrada. No hay corrección del modelo, ya que el modelo no está prediciendo nada.

El segundo tipo principal de aprendizaje automático es el enfoque de aprendizaje descriptivo o no supervisado. Aquí sólo se nos dan entradas, y el objetivo es encontrar «patrones interesantes» en los datos. Se trata de un problema mucho menos definido, ya que no se nos dice qué tipo de patrones hay que buscar, y no hay una métrica de error obvia que utilizar (a diferencia del aprendizaje supervisado, donde podemos comparar nuestra predicción de y para una x dada con el valor observado).

– Página 2, Machine Learning: A Probabilistic Perspective, 2012.

Esta falta de corrección se conoce generalmente como una forma de aprendizaje no supervisada, o aprendizaje no supervisado.

Ejemplo de aprendizaje no supervisado

Ejemplo de aprendizaje no supervisado

Los ejemplos de problemas de aprendizaje no supervisado incluyen el clustering y el modelado generativo, y los ejemplos de algoritmos de aprendizaje no supervisado son K-means y Generative Adversarial Networks.

¿Quieres desarrollar GANs desde cero?

Tome mi curso intensivo gratuito de 7 días por correo electrónico ahora (con código de ejemplo).

Haga clic para inscribirse y también obtenga una versión gratuita del curso en formato PDF Ebook.

Descargue su minicurso gratuito

Discriminativo vs. Modelado Generativo

En el aprendizaje supervisado, podemos estar interesados en desarrollar un modelo para predecir una etiqueta de clase dado un ejemplo de variables de entrada.

Esta tarea de modelado predictivo se llama clasificación.

La clasificación también se conoce tradicionalmente como modelado discriminativo.

… utilizamos los datos de entrenamiento para encontrar una función discriminante f(x) que mapea cada x directamente en una etiqueta de clase, combinando así las etapas de inferencia y decisión en un único problema de aprendizaje.

— Page 44, Pattern Recognition and Machine Learning, 2006.

This is because a model must discriminate examples of input variables across classes; it must choose or make a decision as to what class a given example belongs.

Example of Discriminative Modeling

Example of Discriminative Modeling

Alternately, unsupervised models that summarize the distribution of input variables may be able to be used to create or generate new examples in the input distribution.

As such, these types of models are referred to as generative models.

Example of Generative Modeling

Example of Generative Modeling

For example, a single variable may have a known data distribution, such as a Gaussian distribution, or bell shape. Un modelo generativo puede ser capaz de resumir suficientemente esta distribución de datos, y luego ser utilizado para generar nuevas variables que se ajustan plausiblemente a la distribución de la variable de entrada.

Los enfoques que modelan explícita o implícitamente la distribución de las entradas, así como las salidas, se conocen como modelos generativos, porque mediante el muestreo de los mismos es posible generar puntos de datos sintéticos en el espacio de entrada.

– Página 43, Pattern Recognition and Machine Learning, 2006.

De hecho, un modelo generativo realmente bueno puede ser capaz de generar nuevos ejemplos que no sólo son plausibles, sino que son indistinguibles de los ejemplos reales del dominio del problema.

Ejemplos de modelos generativos

Naive Bayes es un ejemplo de modelo generativo que se utiliza más a menudo como modelo discriminativo.

Por ejemplo, Naive Bayes funciona resumiendo la distribución de probabilidad de cada variable de entrada y la clase de salida. Cuando se realiza una predicción, se calcula la probabilidad de cada resultado posible para cada variable, se combinan las probabilidades independientes y se predice el resultado más probable. Utilizado a la inversa, las distribuciones de probabilidad para cada variable pueden ser muestreadas para generar nuevos valores de características plausibles (independientes).

Otros ejemplos de modelos generativos incluyen la Asignación Latente de Dirichlet, o LDA, y el Modelo de Mezcla Gaussiana, o GMM.

Los métodos de aprendizaje profundo pueden ser utilizados como modelos generativos. Dos ejemplos populares incluyen la Máquina de Boltzmann Restringida, o RBM, y la Red de Creencia Profunda, o DBN.

Dos ejemplos modernos de algoritmos de modelado generativo de aprendizaje profundo incluyen el Autoencoder Variacional, o VAE, y la Red Adversarial Generativa, o GAN.

¿Qué son las Redes Generativas Adversariales?

Las Redes Generativas Adversariales, o GANs, son un modelo generativo basado en el aprendizaje profundo.

De forma más general, las GANs son una arquitectura de modelos para entrenar un modelo generativo, y lo más habitual es utilizar modelos de aprendizaje profundo en esta arquitectura.

La arquitectura GAN se describió por primera vez en el artículo de 2014 de Ian Goodfellow, et al. titulado «Generative Adversarial Networks»

Un enfoque estandarizado llamado Deep Convolutional Generative Adversarial Networks, o DCGAN, que condujo a modelos más estables, fue formalizado posteriormente por Alec Radford, et al. en el artículo de 2015 titulado «Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks».

La mayoría de las GAN actuales se basan, al menos vagamente, en la arquitectura DCGAN …

– Tutorial NIPS 2016: Generative Adversarial Networks, 2016.

La arquitectura del modelo GAN implica dos submodelos: un modelo generador para generar nuevos ejemplos y un modelo discriminador para clasificar si los ejemplos generados son reales, del dominio, o falsos, generados por el modelo generador.

  • Generador. Modelo que se utiliza para generar nuevos ejemplos plausibles del dominio del problema.
  • Discriminador. Modelo que se utiliza para clasificar los ejemplos como reales (del dominio) o falsos (generados).
    • Las redes adversariales generativas se basan en un escenario teórico de juego en el que la red generadora debe competir contra un adversario. La red generadora produce directamente las muestras. Su adversario, la red discriminadora, intenta distinguir entre las muestras extraídas de los datos de entrenamiento y las muestras extraídas del generador.

      – Página 699, Deep Learning, 2016.

      El modelo generador

      El modelo generador toma un vector aleatorio de longitud fija como entrada y genera una muestra en el dominio.

      El vector se extrae de forma aleatoria de una distribución gaussiana, y el vector se utiliza para sembrar el proceso generativo. Tras el entrenamiento, los puntos de este espacio vectorial multidimensional se corresponderán con puntos del dominio del problema, formando una representación comprimida de la distribución de datos.

      Este espacio vectorial se denomina espacio latente, o espacio vectorial compuesto por variables latentes. Las variables latentes, o variables ocultas, son aquellas variables que son importantes para un dominio pero que no son directamente observables.

      Una variable latente es una variable aleatoria que no podemos observar directamente.

      – Página 67, Deep Learning, 2016.

      A menudo nos referimos a las variables latentes, o a un espacio latente, como una proyección o compresión de una distribución de datos. Es decir, un espacio latente proporciona una compresión o conceptos de alto nivel de los datos brutos observados, como la distribución de datos de entrada. En el caso de las GANs, el modelo generador aplica un significado a los puntos en un espacio latente elegido, de tal manera que los nuevos puntos extraídos del espacio latente pueden ser proporcionados al modelo generador como entrada y utilizados para generar nuevos y diferentes ejemplos de salida.

      Los modelos de aprendizaje automático pueden aprender el espacio latente estadístico de las imágenes, la música y las historias, y luego pueden muestrear desde este espacio, creando nuevas obras de arte con características similares a las que el modelo ha visto en sus datos de entrenamiento.

      – Página 270, Deep Learning with Python, 2017.

      Después del entrenamiento, el modelo generador se mantiene y se utiliza para generar nuevas muestras.

      Ejemplo del modelo generador GAN

      Ejemplo del modelo generador GAN

      El modelo discriminador

      El modelo discriminador toma un ejemplo del dominio como entrada (real o generado) y predice una etiqueta de clase binaria de real o falso (generado).

      El ejemplo real proviene del conjunto de datos de entrenamiento. Los ejemplos generados son emitidos por el modelo generador.

      El discriminador es un modelo de clasificación normal (y bien entendido).

      Después del proceso de entrenamiento, el modelo discriminador se descarta ya que nos interesa el generador.

      A veces, el generador puede ser reutilizado ya que ha aprendido a extraer eficazmente las características de los ejemplos del dominio del problema. Algunas o todas las capas de extracción de características pueden ser utilizadas en aplicaciones de aprendizaje de transferencia utilizando los mismos o similares datos de entrada.

      Proponemos que una forma de construir buenas representaciones de imágenes es entrenando Redes Adversariales Generativas (GANs), y posteriormente reutilizando partes de las redes generadoras y discriminadoras como extractores de características para tareas supervisadas

      – Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.

      Ejemplo del modelo discriminador de GAN

      Ejemplo del modelo discriminador de GAN

      Las GAN como juego de dos jugadores

      El modelado generativo es un problema de aprendizaje no supervisado, como hemos comentado en la sección anterior, aunque una propiedad inteligente de la arquitectura GAN es que el entrenamiento del modelo generativo se enmarca como un problema de aprendizaje supervisado.

      Los dos modelos, el generador y el discriminador, se entrenan conjuntamente. El generador genera un lote de muestras, y éstas, junto con ejemplos reales del dominio, se proporcionan al discriminador y se clasifican como reales o falsas.

      El discriminador se actualiza entonces para mejorar la discriminación de las muestras reales y falsas en la siguiente ronda, y lo que es más importante, el generador se actualiza en función de lo bien, o no, que las muestras generadas engañaron al discriminador.

      Podemos pensar que el generador es como un falsificador, que intenta hacer dinero falso, y el discriminador es como la policía, que intenta permitir el dinero legítimo y atrapar el dinero falso. Para tener éxito en este juego, el falsificador debe aprender a hacer dinero que sea indistinguible del dinero genuino, y la red generadora debe aprender a crear muestras que se extraigan de la misma distribución que los datos de entrenamiento.

      – NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

      De este modo, los dos modelos compiten entre sí, son adversarios en el sentido de la teoría de juegos, y están jugando un juego de suma cero.

      Debido a que el marco GAN puede ser analizado naturalmente con las herramientas de la teoría de juegos, llamamos a las GAN «adversariales».

      – NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.

      En este caso, suma cero significa que cuando el discriminador identifica con éxito las muestras reales y falsas, es recompensado o no es necesario cambiar los parámetros del modelo, mientras que el generador es penalizado con grandes actualizaciones de los parámetros del modelo.

      Alternamente, cuando el generador engaña al discriminador, es recompensado, o no es necesario cambiar los parámetros del modelo, pero el discriminador es penalizado y sus parámetros del modelo son actualizados.

      En un límite, el generador genera réplicas perfectas del dominio de entrada cada vez, y el discriminador no puede distinguir la diferencia y predice «inseguro» (por ejemplo, 50% para real y falso) en todos los casos. Esto es sólo un ejemplo de un caso idealizado; no necesitamos llegar a este punto para llegar a un modelo de generador útil.

      Ejemplo de la arquitectura del modelo adversarial generativo

      Ejemplo de la arquitectura del modelo adversarial generativo

      impulsa el discriminador para intentar aprender a clasificar correctamente las muestras como reales o falsas. Simultáneamente, el generador intenta engañar al clasificador para que crea que sus muestras son reales. Al llegar a la convergencia, las muestras del generador son indistinguibles de los datos reales, y el discriminador da un resultado de 1/2 en todas partes. El discriminador puede entonces ser descartado.

      – Página 700, Deep Learning, 2016.

      GANs y Redes Neuronales Convolucionales

      LosGANs suelen trabajar con datos de imágenes y utilizan Redes Neuronales Convolucionales, o CNNs, como modelos generadores y discriminadores.

      La razón de esto puede ser tanto porque la primera descripción de la técnica fue en el campo de la visión por ordenador y utilizó CNNs y datos de imagen, como por el notable progreso que se ha visto en los últimos años utilizando CNNs de forma más general para lograr resultados de vanguardia en un conjunto de tareas de visión por ordenador como la detección de objetos y el reconocimiento de caras.

      Modelar datos de imagen significa que el espacio latente, la entrada al generador, proporciona una representación comprimida del conjunto de imágenes o fotografías utilizadas para entrenar el modelo. También significa que el generador genera nuevas imágenes o fotografías, proporcionando una salida que puede ser fácilmente visualizada y evaluada por los desarrolladores o usuarios del modelo.

      Puede que sea este hecho por encima de otros, la capacidad de evaluar visualmente la calidad de la salida generada, lo que ha conducido tanto al enfoque de las aplicaciones de visión por ordenador con CNNs como a los enormes saltos en la capacidad de los GANs en comparación con otros modelos generativos, basados en el aprendizaje profundo o de otro tipo.

      GANs condicionales

      Una importante extensión de los GANs está en su uso para generar condicionalmente una salida.

      El modelo generativo puede ser entrenado para generar nuevos ejemplos a partir del dominio de entrada, donde la entrada, el vector aleatorio del espacio latente, está provisto de (condicionado por) alguna entrada adicional.

      La entrada adicional podría ser un valor de clase, como hombre o mujer en la generación de fotografías de personas, o un dígito, en el caso de generar imágenes de dígitos manuscritos.

      Las redes adversariales generativas pueden extenderse a un modelo condicional si tanto el generador como el discriminador están condicionados por alguna información extra y. y podría ser cualquier tipo de información auxiliar, como etiquetas de clase o datos de otras modalidades. Podemos realizar el condicionamiento introduciendo y en el discriminador y el generador como capa de entrada adicional.

      – Conditional Generative Adversarial Nets, 2014.

      El discriminador también está condicionado, lo que significa que se le proporciona tanto una imagen de entrada que es real o falsa como la entrada adicional. En el caso de una entrada condicionada del tipo de etiqueta de clasificación, el discriminador esperaría entonces que la entrada fuera de esa clase, enseñando a su vez al generador a generar ejemplos de esa clase para engañar al discriminador.

      De este modo, una GAN condicionada puede utilizarse para generar ejemplos de un dominio de un tipo determinado.

      Llevado un paso más allá, los modelos GAN pueden estar condicionados a un ejemplo del dominio, como una imagen. Esto permite aplicaciones de GANs como la traducción de texto a imagen, o la traducción de imagen a imagen. Esto permite algunas de las aplicaciones más impresionantes de las GANs, como la transferencia de estilo, la coloración de fotos, la transformación de fotos de verano a invierno o de día a noche, etc.

      En el caso de las GANs condicionadas para la traducción de imagen a imagen, como la transformación de día a noche, el discriminador recibe como entrada ejemplos de fotos reales y nocturnas generadas, así como (condicionadas) fotos reales de día. Al generador se le proporciona un vector aleatorio del espacio latente así como (condicionado a) fotos diurnas reales como entrada.

      Ejemplo de arquitectura de un modelo de red adversarial generativa condicional

      Ejemplo de arquitectura de un modelo de red adversarial generativa condicional

      ¿Por qué redes adversariales generativas?

      Uno de los muchos avances importantes en el uso de métodos de aprendizaje profundo en dominios como la visión por ordenador es una técnica llamada aumento de datos.

      El aumento de datos da lugar a modelos de mejor rendimiento, tanto aumentando la habilidad del modelo como proporcionando un efecto regularizador, reduciendo el error de generalización. Funciona mediante la creación de ejemplos nuevos, artificiales pero plausibles, a partir del dominio del problema de entrada sobre el que se entrena el modelo.

      Las técnicas son primitivas en el caso de los datos de imágenes, e implican recortes, giros, zooms y otras transformaciones simples de las imágenes existentes en el conjunto de datos de entrenamiento.

      El éxito del modelado generativo proporciona un enfoque alternativo y potencialmente más específico del dominio para el aumento de datos. De hecho, el aumento de datos es una versión simplificada del modelado generativo, aunque rara vez se describe de esta manera.

      … ampliando la muestra con datos latentes (no observados). Esto se llama aumento de datos. En otros problemas, los datos latentes son datos reales que deberían haberse observado pero que faltan.

      – Página 276, The Elements of Statistical Learning, 2016.

      En dominios complejos o con una cantidad limitada de datos, el modelado generativo proporciona un camino hacia un mayor entrenamiento para el modelado. Los GANs han visto mucho éxito en este caso de uso en dominios como el aprendizaje de refuerzo profundo.

      Hay muchas razones de investigación por las que los GANs son interesantes, importantes y requieren más estudio. Ian Goodfellow esboza varias de ellas en su discurso de apertura de la conferencia de 2016 y en el informe técnico asociado titulado «NIPS 2016 Tutorial: Generative Adversarial Networks»

      Entre estas razones, destaca la exitosa capacidad de las GAN para modelar datos de alta dimensión, manejar los datos que faltan y la capacidad de las GAN para proporcionar salidas multimodales o múltiples respuestas plausibles.

      Quizás la aplicación más convincente de las GAN sea la de las GAN condicionales para tareas que requieren la generación de nuevos ejemplos. Aquí, Goodfellow indica tres ejemplos principales:

      • Superresolución de imágenes. La capacidad de generar versiones de alta resolución de las imágenes de entrada.
      • Creación de arte. La capacidad de grandes imágenes nuevas y artísticas, bocetos, pintura, y más.
      • Traducción de imagen a imagen. La capacidad de traducir fotografías a través de dominios, como el día a la noche, el verano al invierno, y más.
      • Quizás la razón más convincente por la que los GANs son ampliamente estudiados, desarrollados y utilizados es debido a su éxito. Los GAN han sido capaces de generar fotos tan realistas que los humanos son incapaces de decir que son de objetos, escenas y personas que no existen en la vida real.

        Asombroso no es un adjetivo suficiente para su capacidad y éxito.

        Ejemplo de la progresión en las capacidades de las GANs de 2014 a 2017

        Ejemplo de la progresión en las capacidades de las GANs de 2014 a 2017. Tomado de El uso malicioso de la inteligencia artificial: Forecasting, Prevention, and Mitigation, 2018.

        Lectura adicional

        Esta sección ofrece más recursos sobre el tema si buscas profundizar.

        Posts

        • Best Resources for Getting Started With Generative Adversarial Networks (GANs)
        • 18 Impressive Applications of Generative Adversarial Networks (GANs)

        Books

        • Chapter 20. Deep Generative Models, Deep Learning, 2016.
        • Chapter 8. Generative Deep Learning, Deep Learning with Python, 2017.
        • Machine Learning: A Probabilistic Perspective, 2012.
        • Pattern Recognition and Machine Learning, 2006.
        • The Elements of Statistical Learning, 2016.

        Papers

        • Generative Adversarial Networks, 2014.
        • Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks, 2015.
        • NIPS 2016 Tutorial: Generative Adversarial Networks, 2016.
        • Conditional Generative Adversarial Nets, 2014.
        • The Malicious Use of Artificial Intelligence: Previsión, prevención y mitigación, 2018.

        Artículos

        • Modelo generativo, Wikipedia.
        • Variable latente, Wikipedia.
        • Red adversarial generativa, Wikipedia.

        Resumen

        En este post, descubriste una suave introducción a las Redes Generativas Adversariales, o GANs.

        Específicamente, aprendiste:

        • Contexto para GANs, incluyendo aprendizaje supervisado vs. aprendizaje no supervisado y modelado discriminativo vs. generativo.
        • Las GANs son una arquitectura para entrenar automáticamente un modelo generativo tratando el problema no supervisado como supervisado y utilizando tanto un modelo generativo como uno discriminativo.
        • Las GANs proporcionan un camino para el aumento sofisticado de datos específicos del dominio y una solución a los problemas que requieren una solución generativa, como la traducción de imagen a imagen.

        Do you have any questions?
        Ask your questions in the comments below and I will do my best to answer.

        Develop Generative Adversarial Networks Today!

        Generative Adversarial Networks with Python

        Develop Your GAN Models in Minutes

        …with just a few lines of python code

        Discover how in my new Ebook:
        Generative Adversarial Networks with Python

        It provides self-study tutorials and end-to-end projects on:
        DCGAN, conditional GANs, image translation, Pix2Pix, CycleGAN
        and much more…

        Finally Bring GAN Models to your Vision Projects

        Skip the Academics. Just Results.See What’s Inside

        Tweet Share Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *