Logotipo de Zephyrnet

Introducción a los modelos de difusión para el aprendizaje automático

Fecha:

Este artículo se publicó originalmente el AsambleaAI y reeditado en TOPBOTS con permiso del autor.

Los modelos de difusión son modelos generativos que han ganado una popularidad significativa en los últimos años, y por una buena razón. Un puñado de artículos seminales publicados en la década de 2020 solo han mostrado al mundo de lo que son capaces los modelos Diffusion, como vencer a las GAN[6] en la síntesis de imágenes. Más recientemente, los profesionales habrán visto modelos de difusión utilizados en DALL-E2, el modelo de generación de imágenes de OpenAI lanzado el mes pasado.

Varias imágenes generadas por DALL-E 2 (fuente).

Dada la reciente ola de éxito de Diffusion Models, muchos practicantes de Machine Learning seguramente están interesados ​​en su funcionamiento interno. En este artículo, examinaremos la fundamentos teóricos de los modelos de difusióny luego demostrar cómo generar imágenes con un Modelo de difusión en PyTorch. ¡Vamos a sumergirnos!

Si este contenido educativo en profundidad es útil para usted, suscríbase a nuestra lista de correo de IA ser alertado cuando lancemos nuevo material. 

Modelos de difusión – Introducción

Los modelos de difusión son generativo modelos, lo que significa que se utilizan para generar datos similares a los datos en los que se entrenan. Fundamentalmente, los modelos de difusión funcionan por destrucción de datos de entrenamiento mediante la adición sucesiva de ruido gaussiano, y luego aprendiendo a recuperar los datos por revirtiendo este proceso de ruido. Después del entrenamiento, podemos usar el modelo de difusión para generar datos simplemente pasar ruido muestreado aleatoriamente a través del proceso de eliminación de ruido aprendido.

Los modelos de difusión se pueden utilizar para generar imágenes a partir del ruido (adaptado de fuente)

Más específicamente, un Modelo de Difusión es un modelo de variable latente que mapea el espacio latente usando una cadena de Markov fija. Esta cadena agrega gradualmente ruido a los datos para obtener la q posterior aproximada (x1:T|x0), donde x1,…,XT son las variables latentes con la misma dimensionalidad que x0. En la figura a continuación, vemos una cadena de Markov de este tipo manifestada para datos de imagen.

En última instancia, la imagen se transforma asintóticamente en ruido gaussiano puro. los objetivo de entrenar un modelo de difusión es aprender el marcha atrás proceso – es decir, formación pθ(xt-1|xt). Al viajar hacia atrás a lo largo de esta cadena, podemos generar nuevos datos.

Beneficios de los modelos de difusión

Como se mencionó anteriormente, la investigación sobre modelos de difusión se ha disparado en los últimos años. Inspirado en la termodinámica de no equilibrio[1], los modelos de difusión producen actualmente Calidad de imagen de vanguardia, cuyos ejemplos se pueden ver a continuación:

Más allá de la calidad de imagen de vanguardia, los modelos de difusión vienen con una serie de otros beneficios, que incluyen no requiere entrenamiento contradictorio. Las dificultades del entrenamiento adversario están bien documentadas; y, en los casos en que existan alternativas no antagónicas con rendimiento y eficiencia de entrenamiento comparables, generalmente es mejor utilizarlas. En el tema de la eficiencia del entrenamiento, los modelos de difusión también tienen los beneficios adicionales de escalabilidad y paralelización.

Si bien los modelos de difusión casi parecen estar produciendo resultados de la nada, hay muchas opciones y detalles matemáticos cuidadosos e interesantes que brindan la base para estos resultados, y las mejores prácticas aún están evolucionando en la literatura. Echemos un vistazo a la teoría matemática que sustenta los modelos de difusión con más detalle ahora.

Modelos de difusión: una inmersión profunda

Como se mencionó anteriormente, un modelo de difusión consiste en un proceso de reenvío (o proceso de difusión), en el que un dato (generalmente una imagen) es progresivamente ruidosado, y un proceso inverso (o proceso de difusión inversa), en el que el ruido se transforma de nuevo en una muestra de la distribución objetivo.

Las transiciones de la cadena de muestreo en el proceso directo se pueden establecer en Gaussianas condicionales cuando el nivel de ruido es lo suficientemente bajo. La combinación de este hecho con la suposición de Markov conduce a una parametrización simple del proceso directo:

nota matematica

Hemos estado hablando de corromper los datos por la adición de Ruido gaussiano, pero al principio puede no estar claro dónde estamos realizando esta adición. De acuerdo con la ecuación anterior, en cada paso de la cadena simplemente estamos tomando muestras de una distribución gaussiana cuya media es el valor anterior (es decir, la imagen) en la cadena.

Estas dos afirmaciones son equivalentes. Eso es

Para entender por qué, utilizaremos un ligero abuso de notación al afirmar

Donde la implicación final surge de la equivalencia matemática entre una suma de variables aleatorias y la convolución de sus distribuciones – ver esta página de Wikipedia para obtener más información.

En otras palabras, hemos demostrado que afirmar la distribución de un paso de tiempo condicionado al anterior a través de la media de una distribución gaussiana es equivalente a afirmar que la distribución de un paso de tiempo dado es la del anterior con la adición de ruido gaussiano. Omitimos los escalares introducidos por el programa de varianza y mostramos esto para una dimensión por simplicidad, pero una prueba similar es válida para las gaussianas multivariadas.

donde β1,…,βT es un programa de variación (ya sea aprendido o fijo) que, si se comporta bien, asegura que xT es casi una gaussiana isotrópica para T suficientemente grande.

Dada la suposición de Markov, la distribución conjunta de las variables latentes es el producto de las transiciones de la cadena condicional gaussiana (modificada de fuente).

Como se mencionó anteriormente, la "magia" de los modelos de difusión viene en el proceso inverso. Durante el entrenamiento, el modelo aprende a revertir este proceso de difusión para generar nuevos datos. Partiendo del ruido gaussiano puro p(xT):=N(xT,0,I) el modelo aprende la distribución conjunta pθ(x0:T) como

donde se aprenden los parámetros dependientes del tiempo de las transiciones gaussianas. Tenga en cuenta en particular que la formulación de Markov afirma que una distribución de transición de difusión inversa dada depende solo del paso de tiempo anterior (o del paso de tiempo siguiente, dependiendo de cómo se mire):

Formacion

Un modelo de difusión es entrenado por encontrar las transiciones inversas de Markov que maximicen la probabilidad de los datos de entrenamiento. En la práctica, el entrenamiento consiste de manera equivalente en minimizar el límite superior variacional en la verosimilitud logarítmica negativa.

Detalle de notación

Tenga en cuenta que LVLB es técnicamente un superior límite (el negativo del ELBO) que estamos tratando de minimizar, pero nos referimos a él como LVLB por coherencia con la literatura.

Buscamos reescribir la LVLB en términos de Divergencias de Kullback-Leibler (KL). La Divergencia KL es una medida de distancia estadística asimétrica de cuánto una distribución de probabilidad P difiere de una distribución de referencia Q. Estamos interesados ​​en formular LVLB en términos de divergencias KL porque las distribuciones de transición en nuestra cadena de Markov son gaussianas, y la divergencia KL entre gaussianas tiene forma cerrada.

¿Qué es la divergencia KL?

La forma matemática de la divergencia KL para distribuciones continuas es

Las barras dobles indican que la función no es simétrica con respecto a sus argumentos.

A continuación puede ver la divergencia KL de una distribución variable P (azul) de una distribución de referencia Q (rojo). La curva verde indica la función dentro de la integral en la definición anterior de la divergencia KL, y el área total bajo la curva representa el valor de la divergencia KL de P en Q en cada momento, valor que también se muestra numéricamente.

Casting Nvlb en términos de divergencias KL

Como se mencionó anteriormente, es posible [1] para reescribir LVLB casi completamente en términos de divergencias KL:

donde

Detalles de derivación

El límite variacional es igual a

Reemplazando las distribuciones con sus definiciones dada nuestra suposición de Markov, obtenemos

Usamos reglas logarítmicas para transformar la expresión en una suma de logaritmos y luego sacamos el primer término

Usando el teorema de Bayes y nuestra suposición de Markov, esta expresión se convierte en

Luego dividimos el término medio usando reglas logarítmicas

Aislando el segundo término, vemos

Reemplazando esto en nuestra ecuación para LVLB, Tenemos

Usando reglas de registro, reorganizamos

d8

A continuación, observamos la siguiente equivalencia para la divergencia KL para dos distribuciones cualesquiera:

Finalmente, aplicando esta equivalencia a la expresión anterior, llegamos a

Condicionando el proceso de avance posterior en x0 en Lt-1 resulta en una forma tratable que conduce a todas las divergencias KL son comparaciones entre gaussianas. Esto significa que las divergencias se pueden calcular exactamente con expresiones de forma cerrada en lugar de estimaciones de Monte Carlo.[3].

Opciones de modelo

Con la base matemática para nuestra función objetivo establecida, ahora debemos tomar varias decisiones con respecto a cómo se implementará nuestro modelo de difusión. Para el proceso de avance, la única opción requerida es definir el programa de variación, cuyos valores generalmente aumentan durante el proceso de avance.

Para el proceso inverso, elegimos la(s) arquitectura(s) del modelo/parametrización de distribución gaussiana. Nota la alto grado de flexibilidad que ofrecen los modelos de difusión: la , solamente El requisito de nuestra arquitectura es que su entrada y salida tengan la misma dimensionalidad.

Exploraremos los detalles de estas opciones con más detalle a continuación.

Proceso de reenvío y LT

Como se señaló anteriormente, con respecto al proceso directo, debemos definir el programa de variación. En particular, los configuramos para que sean constantes dependientes del tiempo, ignorando el hecho de que se pueden aprender. Por ejemplo[3], un programa lineal desde β1= 10-4 a βT=0.2 podría usarse, o quizás una serie geométrica.

Independientemente de los valores particulares elegidos, el hecho de que el programa de varianza sea fijo da como resultado LT convirtiéndose en una constante con respecto a nuestro conjunto de parámetros aprendibles, lo que nos permite ignorarlo en lo que respecta al entrenamiento.

Proceso inverso y L1:T-1

Ahora discutimos las elecciones requeridas para definir el proceso inverso. Recuerde lo anterior, definimos las transiciones inversas de Markov como gaussianas:

Ahora debemos definir las formas funcionales de μθ o Σθ. Si bien hay formas más complicadas de parametrizar Σθ[5], simplemente establecemos

Es decir, asumimos que la Gaussiana multivariada es un producto de Gaussianas independientes con varianza idéntica, un valor de varianza que puede cambiar con el tiempo. Nosotros establezca estas variaciones para que sean equivalentes a nuestro programa de variación del proceso hacia adelante.

Dada esta nueva formulación de Σθ, Tenemos

que nos permite transformar

a

donde el primer término de la diferencia es una combinación lineal de xt yx0 eso depende del programa de varianza βt. La forma exacta de esta función no es relevante para nuestros propósitos, pero se puede encontrar en [3].

La importancia de la proporción anterior es que la parametrización más sencilla de μθ simplemente predice la difusión posterior media. Es importante destacar que los autores de [3] en realidad descubrió que entrenar μθ para predecir el ruido componente en cualquier paso de tiempo dado produce mejores resultados. En particular, deja

donde

Esto conduce a la siguiente función de pérdida alternativa, que los autores de [3] que conduce a un entrenamiento más estable y mejores resultados:

Los autores de [3] también observe las conexiones de esta formulación de modelos de difusión con modelos generativos de coincidencia de puntaje basados ​​en la dinámica de Langevin. De hecho, parece que los modelos de difusión y los modelos basados ​​en puntajes pueden ser dos caras de la misma moneda, similar al desarrollo independiente y concurrente de la mecánica cuántica basada en ondas y la mecánica cuántica basada en matrices que revelan dos formulaciones equivalentes de los mismos fenómenos.[2].

Red de arquitectura

Mientras que nuestra función de pérdida simplificada busca entrenar un modelo ϵθ, aún no hemos definido la arquitectura de este modelo. Tenga en cuenta que el , solamente El requisito para el modelo es que su dimensionalidad de entrada y salida sean idénticas.

Dada esta restricción, tal vez no sea sorprendente que los modelos de difusión de imágenes se implementen comúnmente con arquitecturas similares a U-Net.

Decodificador de proceso inverso y L0

El camino a lo largo del proceso inverso consta de muchas transformaciones bajo distribuciones gaussianas condicionales continuas. Al final del proceso inverso, recuerde que estamos tratando de producir un imagen, que se compone de valores de píxeles enteros. Por lo tanto, debemos idear una manera de obtener probabilidades discretas (log) para cada valor de píxel posible en todos los píxeles.

La forma en que esto se hace es estableciendo la última transición en la cadena de difusión inversa a un decodificador discreto independiente. Para determinar la probabilidad de una imagen dada x0 dado x1, primero imponemos la independencia entre las dimensiones de los datos:

donde D es la dimensionalidad de los datos y el superíndice i indica la extracción de una coordenada. El objetivo ahora es determinar qué tan probable es cada valor entero para un píxel dado dado la distribución entre los valores posibles para el píxel correspondiente en la imagen ligeramente ruidosa en el momento t=1:

donde las distribuciones de píxeles para t=1 se derivan de la siguiente Gaussiana multivariada cuya matriz de covarianza diagonal nos permite dividir la distribución en un producto de Gaussianas univariadas, una para cada dimensión de los datos:

Suponemos que las imágenes consisten en números enteros en 0,1,…,255 (como lo hacen las imágenes RGB estándar) que se han escalado linealmente a [−1,1]. Luego dividimos la línea real en pequeños "cubos", donde, para un valor de píxel escalado dado x, el cubo para ese rango es [x−1/255, x+1/255]. La probabilidad de un valor de píxel x, dada la distribución gaussiana univariada del píxel correspondiente en x1, es el área bajo esa distribución gaussiana univariante dentro del cubo centrado en x.

A continuación, puede ver el área de cada uno de estos cubos con sus probabilidades para una Gaussiana de media 0 que, en este contexto, corresponde a una distribución con un valor de píxel promedio de 255/2 (brillo medio). La curva roja representa la distribución de un píxel específico en el t = 1 imagen, y las áreas dan la probabilidad del valor de píxel correspondiente en la t = 0 imagen.

Nota técnica

Los cubos primero y final se extienden a -inf y +inf para preservar la probabilidad total.

Dado un t = 0 valor de píxel para cada píxel, el valor de pθ(x0|x1) es simplemente su producto. Este proceso se resume sucintamente en la siguiente ecuación:

donde

y

Dada esta ecuación para pθ(x0|x1), podemos calcular el término final de LVLB que no está formulado como una divergencia KL:

Objetivo Final

Como se mencionó en la última sección, los autores de [3] encontró que predecir el componente de ruido de una imagen en un paso de tiempo dado produjo los mejores resultados. En última instancia, utilizan el siguiente objetivo:

Los algoritmos de entrenamiento y muestreo para nuestro modelo de difusión, por lo tanto, se pueden capturar sucintamente en la siguiente figura:

Resumen de la teoría del modelo de difusión

En esta sección, nos sumergimos detalladamente en la teoría de los modelos de difusión. Puede ser fácil quedar atrapado en los detalles matemáticos, por lo que anotamos los puntos más importantes dentro de esta sección a continuación para mantenernos orientados desde una perspectiva panorámica:

  1. Nuestro modelo de difusión está parametrizado como un Cadena de Markov, lo que significa que nuestras variables latentes x1,…,XT dependen sólo del paso de tiempo anterior (o siguiente).
  2. La distribuciones de transición en la cadena de Markov son Gauss, donde el proceso directo requiere un programa de variación y se aprenden los parámetros del proceso inverso.
  3. El proceso de difusión asegura que xT is distribuido asintóticamente como un gaussiano isotrópico para T suficientemente grande.
  4. En nuestro caso, el se fijó el horario de variación, pero también se puede aprender. Para horarios fijos, seguir una progresión geométrica puede dar mejores resultados que una progresión lineal. En cualquier caso, las varianzas generalmente aumentan con el tiempo en la serie (es decir, βij para mi
  5. Los modelos de difusión son altamente flexible y permitir cualquier arquitectura cuya dimensionalidad de entrada y salida sea la misma a utilizar. Muchas implementaciones usan Tipo U-Net arquitecturas
  6. La objetivo de entrenamiento es maximizar la probabilidad de los datos de entrenamiento. Esto se manifiesta ajustando los parámetros del modelo para minimizar el límite superior variacional de la verosimilitud logarítmica negativa de los datos.
  7. Casi todos los términos de la función objetivo pueden expresarse como KL divergencias como resultado de nuestra suposición de Markov. Estos valores llegar a ser sostenible para calcular dado que estamos usando gaussianas, por lo tanto, omitimos la necesidad de realizar la aproximación de Monte Carlo.
  8. En última instancia, utilizando un objetivo de entrenamiento simplificado entrenar una función que predice el componente de ruido de una variable latente dada produce los mejores y más estables resultados.
  9. decodificador discreto se utiliza para obtener probabilidades logarítmicas a través de valores de píxel como último paso en el proceso de difusión inversa.

Con esta descripción general de alto nivel de los modelos de difusión en nuestras mentes, avancemos para ver cómo usar modelos de difusión en PyTorch.

Modelos de difusión en PyTorch

Si bien los modelos de difusión aún no se han democratizado en la misma medida que otras arquitecturas/enfoques más antiguos en el aprendizaje automático, todavía hay implementaciones disponibles para su uso. La forma más fácil de usar un modelo de difusión en PyTorch es usar el denoising-diffusion-pytorch paquete, que implementa un modelo de difusión de imágenes como el que se analiza en este artículo. Para instalar el paquete, simplemente escriba el siguiente comando en la terminal:

pip install denoising_diffusion_pytorch

Ejemplo mínimo

Para entrenar un modelo y generar imágenes, primero importamos los paquetes necesarios:

import torch
from denoising_diffusion_pytorch import Unet, GaussianDiffusion

A continuación, definimos nuestra arquitectura de red, en este caso una U-Net. los dim El parámetro especifica el número de mapas de características antes de la primera reducción de muestreo, y el dim_mults El parámetro proporciona multiplicandos para este valor y submuestreos sucesivos:

model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
)

Ahora que nuestra arquitectura de red está definida, necesitamos definir el modelo de difusión en sí. Pasamos el modelo U-Net que acabamos de definir junto con varios parámetros: el tamaño de las imágenes a generar, la cantidad de pasos de tiempo en el proceso de difusión y una elección entre las normas L1 y L2.

diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
)

Ahora que el modelo de difusión está definido, es hora de entrenar. Generamos datos aleatorios para entrenar y luego entrenamos el modelo de difusión de la manera habitual:

training_images = torch.randn(8, 3, 128, 128)
loss = diffusion(training_images)
loss.backward()

Una vez que el modelo está entrenado, finalmente podemos generar imágenes usando el sample() método de la diffusion objeto. Aquí generamos 4 imágenes, que son solo ruido dado que nuestros datos de entrenamiento fueron aleatorios:

sampled_images = diffusion.sample(batch_size = 4)

Capacitación sobre datos personalizados

La denoising-diffusion-pytorch El paquete también le permite entrenar un modelo de difusión en un conjunto de datos específico. Simplemente reemplace el 'path/to/your/images' cadena con la ruta del directorio del conjunto de datos en el Trainer() objeto debajo, y cambiar image_size al valor apropiado. Después de eso, simplemente ejecute el código para entrenar el modelo y luego pruebe como antes. Tenga en cuenta que PyTorch debe estar compilado con CUDA habilitado para usar el Trainer clase:

from denoising_diffusion_pytorch import Unet, GaussianDiffusion, Trainer
model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
).cuda()
diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
).cuda()
trainer = Trainer(
 diffusion,
 'path/to/your/images',
 train_batch_size = 32,
 train_lr = 2e-5,
 train_num_steps = 700000, # total training steps
 gradient_accumulate_every = 2, # gradient accumulation steps
 ema_decay = 0.995, # exponential moving average decay
 amp = True # turn on mixed precision
)
trainer.train()

A continuación, puede ver la eliminación de ruido progresiva desde el ruido gaussiano multivariable hasta los dígitos MNIST similares a la difusión inversa:

Palabras finales

Los modelos de difusión son un enfoque conceptualmente simple y elegante para el problema de la generación de datos. Sus resultados de vanguardia combinados con el entrenamiento no confrontativo los han impulsado a grandes alturas, y se pueden esperar más mejoras en los próximos años dado su estado incipiente. En particular, se ha descubierto que los modelos de difusión son esenciales para el rendimiento de modelos de vanguardia como DALL-E2.

Referencias

[ 1 ] Aprendizaje profundo no supervisado usando termodinámica sin equilibrio

[ 2 ] Modelado generativo mediante la estimación de gradientes de la distribución de datos

[ 3 ] Modelos probabilísticos de difusión de eliminación de ruido

[ 4 ] Técnicas mejoradas para entrenar modelos generativos basados ​​en puntajes

[ 5 ] Modelos probabilísticos de difusión de eliminación de ruido mejorados

[ 6 ] Los modelos de difusión superan a las GAN en la síntesis de imágenes

[ 7 ] GLIDE: Hacia la generación y edición de imágenes fotorrealistas con modelos de difusión guiados por texto

[ 8 ] Generación de imágenes condicionales de texto jerárquico con latentes CLIP

¿Disfrutas este artículo? Regístrese para obtener más actualizaciones de investigación de IA.

Le informaremos cuando publiquemos más artículos de resumen como este.

punto_img

Información más reciente

punto_img