Cómo los modelos generativos aprenden a crear algo nuevo

En este post, voy a escribir sobre modelos generativos. Cubrirá la dicotomía entre modelos generativos y discriminativos, y cómo los modelos generativos realmente pueden aprender la esencia de los objetos de interés al poder realizar interpolaciones.

0. Modelos generativos (G) frente a modelos discriminativos (D)

Para ser honesto, simplemente comencé a contemplar la naturaleza de los modelos estadísticos y de aprendizaje automático después de que despegaran las redes adversas generativas (GAN). En la versión original de GAN, llamémosla GAN de vainilla, tienes una red generativa (G) que genera datos sintéticos a partir del ruido gaussiano y una red discriminativa (D) que trata de distinguir lo falso de lo real. Obviamente, G y D en el GAN ​​de vainilla son modelos generativos y discriminativos, respectivamente. De hecho, GAN es quizás el primer algoritmo ML que armoniza los modelos generativos y discriminativos, que aprende los parámetros de ambos modelos a través del innovador entrenamiento adversarial.

Fuente de la imagen: https://www.slideshare.net/ckmarkohchang / generative-adversarial-networks

Tanto para mi propia experiencia, ¿cuáles son los modelos generativos y discriminativos? Intuitivamente, los modelos generativos intentan abstraer algunos patrones generalizables de alguna colección de objetos, mientras que los modelos discriminativos intentan encontrar las diferencias entre las colecciones. Concretamente, en el contexto de un problema de clasificación, por ejemplo, los modelos generativos aprenderán las características de cada clase, mientras que los modelos discriminativos encontrarán los límites de decisión que mejor separan las clases. Más formalmente, representemos una instancia como un vector de características x etiquetado por algún valor escalar y, los modelos generativos aprenden la distribución de probabilidad conjunta p ( x y), mientras que los modelos discriminativos aprenden la distribución de probabilidad condicional p (y ]

También hay algunos pares de generador-discriminador interesantes para pensar:

  • Clasificación binaria: Baya ingenua vs Regresión logística
  • Modelado de secuencias: Modelo de Markov oculto vs Campos aleatorios condicionales

También vale la pena mencionar que la mayoría Los clasificadores ML tradicionales son modelos discriminativos, que incluyen Regresión logística, SVM, Árboles de decisión, Bosque aleatorio, LDA. Los modelos discriminatorios son parsimoniosos en términos de los parámetros que deben aprenderse, y se ha demostrado que tienen un rendimiento superior al de su contraparte generativa en muchas tareas de clasificación.

Pero me gustaría argumentar que aprender a distinguir una clase de otra no es realmente aprendiendo, ya que generalmente no puede funcionar cuando está situado en otro contexto. Por ejemplo, un clasificador discriminativo entrenado para distinguir gatos y aves con una precisión excepcional puede fallar miserablemente cuando se agrega una clase invisible, perro, al conjunto de prueba, ya que el clasificador discriminativo puede simplemente aprender que algo con cuatro patas es un gato y otras aves.

Para ilustrar mejor lo que aprenden realmente los modelos generativos y discriminatorios consideremos los modelos de clasificación más simples de cada uno, Naive Bayes y Regresión logística. La siguiente figura visualiza el “conocimiento” aprendido por Naive Bayes y los clasificadores de Regresión logística sobre un problema de clasificación binaria.

El clasificador Naive Bayes aprende la media y los vectores de varianza para las dos clases, mientras que la Regresión logística aprende la pendiente y la intersección de un límite lineal que separan de manera óptima las dos clases. Con los medios y las variaciones aprendidas del clasificador Naive Bayes, podemos generar muestras sintéticas para cada clase mediante el muestreo de la distribución multivariada de Gauss. Esto es similar a generar muestras sintéticas usando GAN, pero obviamente Naive Bayes no podrá generar imágenes de alta calidad de alta calidad porque es demasiado ingenuo modelar las características de manera dependiente.

1. Modelos generativos

Me referí brevemente al algoritmo Naive Bayes, posiblemente la forma más simple de modelo generativo. Los modelos generativos modernos usualmente involucran arquitecturas de redes neuronales profundas, por lo que se denominan modelos generativos profundos. Hay tres tipos de modelos generativos profundos:

1.1. VAE

VAE fue introducido por Kingma & Welling, 2014 como una extensión probabilística del autoencoder (AE). Tiene las siguientes tres características adicionales sobre AE de vainilla:

  1. Codificador probabilístico qϕ ( z | x ) y decodificador pθ ( x | z )
  2. Una distribución de probabilidad previa para el espacio latente (la capa de cuello de botella del AE): pθ ( z )
  3. Una pérdida latente definida por divergencia de Kullback-Leibler : D (qϕ ( z | x ) ‖pθ ( z | x )) para cuantificar la distancia entre estos dos distribuciones de probabilidad
Ilustración VAE de https://lilianweng.github.io/lil-log/2018/08/12/12/from-autoencoder-to-beta-vae.html

1.2. GANs

GAN fue introducido por Goodfellow et al., 2014 y está compuesto por un par de redes Generador y Discriminador que juegan un juego de minimax entre sí. Se han desarrollado muchas variantes de GAN, tales como GAN bidireccional (BiGAN), CycleGAN, InfoGAN, Wasserstein GAN y la lista sigue creciendo .

BiGAN es particularmente atractiva porque aprende explícitamente una red Encoder, E ( x ) para asignar la entrada al espacio latente:

Fuente de la figura: Donahue et al, 2016 Adversarial Aprendizaje de la característica

2. Interpolación con modelos generativos

Con un conocimiento de algunos de los modelos generativos profundos, examinaremos sus capacidades. Los modelos generativos son capaces de aprender la distribución de probabilidad dimensional inferior para muestras de diferentes clases. Dicha distribución de probabilidad se puede usar para aprendizaje supervisado y para generar muestras sintéticas. Si bien estas capacidades son tremendamente útiles, me impresiona más la capacidad de los modelos generativos para realizar interpolaciones para muestras reales a lo largo de cualquier eje arbitrario para generar muestras manipuladas que no existen. Por ejemplo, los modelos generativos profundos pueden manipular imágenes de rostros humanos a lo largo de ejes como la edad, el sexo, el color del cabello, etc. En mi opinión, esto sugiere que los modelos generativos profundos pueden obtener la capacidad de imaginar, como la imaginación es el proceso de producir imágenes mentales . A continuación, profundicemos en cómo realizar la interpolación.

La interpolación funciona al realizar un álgebra lineal simple en el espacio latente ( z ) aprendida por el modelo generativo. Primero, queremos encontrar un eje en el espacio latente para interpolar, que puede ser algo así como el sexo biológico. El vector de interpolación para el sexo biológico se puede calcular simplemente como el vector que apunta desde el centroide de los machos al centroide de las hembras en el espacio latente.

Más genéricamente, primero debemos encontrar los centroides de dos clases ( a b ) en el espacio latente:

El vector de interpolación en el espacio latente que apunta desde la clase b a la clase a es: [19659047] Dada cualquier muestra invisible de cualquier clase x_ c podemos manipular la muestra invisible con el vector de interpolación mediante: 1) codificar la muestra en el espacio latente; 2) realizar la interpolación lineal en el espacio latente; y 3) descodificar la muestra interpolada al espacio original:

α en la ecuación anterior es un escalar que determina la magnitud y la dirección de la interpolación. A continuación, jugaré con el α para deslizar a lo largo de diferentes vectores de interpolación. La siguiente función de Python puede hacer que un modelo generativo entrenado realice dicha interpolación:

https://medium.com/media/fc55e427a11085effee7cec01feafe75/href

3. Experimentos de modelos generativos con datos MNIST

Entrené algunos modelos generativos, incluidos Naive Bayes, VAE y BiGAN, en el conjunto de datos de dígitos manuscritos MNIST para experimentar con interpolación. A continuación se muestra una figura que visualiza el espacio latente de un VAE con solo dos neuronas en la capa del cuello de botella. Aunque hay algunos patrones distintivos para los diferentes dígitos, la calidad de la reconstrucción es bastante mala. Tal vez sea difícil comprimir el espacio de 784 dimensiones en un espacio de 2 días. Descubrí que VAE con 20 neuronas en la capa de cuello de botella puede reconstruir los datos del MNIST con una calidad decente.

El espacio latente aprendido por un VAE con 2 neuronas en la capa de cuello de botella

También vale la pena señalar que los modelos generativos se entrenan sin supervisión . Por lo tanto, el espacio latente aprendido no tiene conocimiento de las etiquetas de clase. Los vectores de interpolación se calculan una vez que los modelos han terminado de aprender.

Para jugar con la interpolación, primero visualicé los vectores de interpolación entre todos los 45 pares posibles de los 10 dígitos:

Visualización de los vectores de interpolación de dígitos MNIST en el espacio latente de un VAE con 20 neuronas en la capa del cuello de botella

En la figura anterior, cada fila corresponde a un vector de interpolación que apunta de un dígito a otro, mientras que cada columna corresponde a un valor alfa. Es interesante observar los dígitos generados desde el espacio latente de izquierda a derecha para ver cómo un número cambia gradualmente a otro. De aquí también podemos encontrar los dígitos ambiguos que se encuentran entre dos centroides de nuestros 10 dígitos.

A continuación, hice otro experimento interesante con la interpolación: pregunté si podemos convertir un dígito 7 en un dígito 6 o 0 moviendo a lo largo del vector 6-> 0. Aquí están los resultados de las imágenes generadas. Muestra algunas imágenes de aspecto relativamente 0 a la derecha, mientras que las de la izquierda no se parecen a 6 en absoluto.

Estas imágenes también pueden cuantificarse utilizando un clasificador de Regresión logística entrenado en MNIST para predecir las probabilidades de las etiquetas. Y el clasificador está bastante de acuerdo con nuestra percepción de observar las imágenes.

Probabilidad pronosticada para las imágenes de dígitos interpolados de un clasificador Logit

Los aparentemente aburridos experimentos de prueba de concepto con el conjunto de datos MNIST demostraron la capacidad de los modelos generativos profundos imaginar. Puedo imaginar muchas aplicaciones prácticas con la interpolación.

Esta publicación se basa en mi repo de GitHub si desea obtener más detalles técnicos:

wangz10 / Generative-Models

Versión para portátiles de esta publicación se presentó en la reunión de laboratorio de Ma’ayan:

Jupyter Notebook Viewer

Referencias


Interpolación con modelos generativos se publicó originalmente en Hacia la ciencia de datos en Medio, donde las personas están continuando la conversación resaltando una En respuesta a esta historia.