Cómo funcionan los modelos de difusión: las matemáticas desde cero

Los modelos de difusión son una nueva clase de modelos generativos de última generación que generan diversas imágenes de alta resolución. Ya han llamado mucho la atención después de que OpenAI, Nvidia y Google consiguieran entrenar modelos a gran escala. Las arquitecturas de ejemplo que se basan en modelos de difusión son GLIDE, DALLE-2, Imagen y la difusión estable completa de código abierto.

Pero, ¿cuál es el principio principal detrás de ellos?

En esta publicación de blog, nos abriremos camino a partir de los principios básicos. Ya hay un montón de diferentes arquitecturas basadas en difusión. Nos centraremos en el más destacado, que es el modelo probabilístico de difusión de eliminación de ruido (DDPM) inicializado por Sohl-Dickstein et al. y luego propuesto por Ho. y otros 2020. Se discutirán varios otros enfoques en menor medida, como la difusión estable y los modelos basados ​​en puntajes.

Los modelos de difusión son fundamentalmente diferentes de todos los métodos generativos anteriores. Intuitivamente, tienen como objetivo descomponer el proceso de generación de imágenes (muestreo) en muchos pequeños pasos de «eliminación de ruido».

La intuición detrás de esto es que el modelo puede corregirse a sí mismo con estos pequeños pasos y gradualmente producir una buena muestra. En cierta medida, esta idea de afinar la representación ya ha sido utilizada en modelos como plegado alfabético. Pero bueno, nada viene a costo cero. Este proceso iterativo los hace lentos en el muestreo, al menos en comparación con las GAN.

Proceso de difusión

La idea básica detrás de los modelos de difusión es bastante simple. Toman la imagen de entrada

X0mathbf_0

y agregarle gradualmente ruido gaussiano a través de una serie de

TT

pasos. Llamaremos a esto el proceso directo. En particular, esto no está relacionado con el paso hacia adelante de una red neuronal. Si lo desea, esta parte es necesaria para generar los objetivos para nuestra red neuronal (la imagen después de aplicar

tTt

pasos de ruido).

Posteriormente, se entrena una red neuronal para recuperar los datos originales invirtiendo el proceso de ruido. Al poder modelar el proceso inverso, podemos generar nuevos datos. Este es el llamado proceso de difusión inversa o, en general, el proceso de muestreo de un modelo generativo.

¿Cómo? Sumerjámonos en las matemáticas para que quede muy claro.

Difusión hacia adelante

Los modelos de difusión pueden verse como modelos de variables latentes. Latente significa que nos referimos a un espacio de características continuo oculto. De tal manera, pueden parecer similares a los autocodificadores variacionales (VAEs).

En la práctica, se formulan utilizando una cadena de Markov de

TT

pasos. Aquí, una cadena de Markov significa que cada paso solo depende del anterior, lo cual es una suposición moderada. Es importante destacar que no estamos obligados a utilizar un tipo específico de red neuronal, a diferencia de modelos basados ​​en flujo.

Dado un punto de datos

X0textbf_0

muestreado de la distribución de datos reales

q(X)q(x)

(

X0q(X)textbf_0 sim q(x)

), se puede definir un proceso de difusión directa agregando ruido. Específicamente, en cada paso de la cadena de Markov agregamos ruido gaussiano con varianza

βtbeta_

a

Xt1textbf_

produciendo una nueva variable latente

Xttextbf_

con distribución

q(XtXt1)q(textbf_t |textbf_)

. Este proceso de difusión se puede formular de la siguiente manera:

q(XtXt1)=norte(Xt;mt=1βtXt1,Σt=βtyo)q(mathbf_t vert mathbf_) = mathcal(mathbf_t; boldsymbol_t=sqrt mathbf_, boldsymbol_t = beta_tmathbf)


difusión hacia adelante


Proceso de difusión directa. Imagen modificada por Ho et al. 2020

Ya que estamos en el escenario multidimensional

yotextbf

es la matriz identidad, que indica que cada dimensión tiene la misma desviación estándar

βtbeta_t

. Tenga en cuenta que

q(XtXt1)q(mathbf_t vert mathbf_)

sigue siendo una distribución normal, definida por la media

mboldsymbol

y la varianza

Σboldsymbol

dónde

mt=1βtXt1boldsymbol_t =sqrt mathbf_

y

Σt=βtyoboldsymbol_t=beta_tmathbf

.

Σboldsymbol

siempre será una matriz diagonal de varianzas (aquí

βtbeta_t

)

Así, podemos ir de forma cerrada a partir de los datos de entrada

X0mathbf_0

a

XTmathbf_

de manera manejable. Matemáticamente, esta es la probabilidad posterior y se define como:

q(X1:TX0)=t=1Tq(XtXt1)q(mathbf_ vert mathbf_0) = prod^T_ q(mathbf_t vert mathbf_)

El símbolo

::

en

q(X1:T)q(mathbf_)

establece que aplicamos

qq

repetidamente desde el paso de tiempo

11

a

TT

. También se llama trayectoria.

¿Hasta aquí todo bien? ¡Pues no! por paso de tiempo

t=500Tt=500

tenemos que aplicar

qq

500 veces para muestrear

Xtmathbf_t

. ¿No podemos realmente hacerlo mejor?

El truco de la reparametrización proporciona un remedio mágico a esto.

El truco de la reparametrización: muestreo de forma cerrada manejable en cualquier paso de tiempo

si definimos

αt=1βtalpha_t= 1- beta_t

,

αˉt=s=0tαsbar_t = prod_^t alfa_s

dónde

ϵ0,...,ϵt2,ϵt1norte(0,yo)boldsymbol_,…, epsilon_, epsilon_ sim mathcal(textbf,mathbf)

se puede usar el truco de la reparametrización de manera recursiva para probar que:

Xt=1βtXt1+βtϵt1=αtXt2+1αtϵt2==αˉtX0+1αˉtϵ0begin mathbf_t &=sqrt mathbf_ + sqrtboldsymbol_\ &= sqrtmathbf_ + sqrtboldsymbol_ \ &= dots &= sqrtmathbf_0 + sqrtboldsymbol end

Nota: Dado que todos los pasos de tiempo tienen el mismo ruido gaussiano, solo usaremos el símbolo

ϵboldsymbol

de aquí en adelante.

Por lo tanto, para producir una muestra

Xtmathbf_t

podemos usar la siguiente distribución:

Xtq(XtX0)=norte(Xt;αˉtX0,(1αˉt)yo)mathbf_t sim q(mathbf_t vert mathbf_0) = mathcal(mathbf_t; sqrt mathbf_0, (1 – bar_t)mathbf)

Ya que

βtbeta_t

es un hiperparámetro, podemos precalcular

αtalpha_t

y

αˉtbar_t

para todos los tiempos. Esto significa que muestreamos el ruido en cualquier paso de tiempo

tt

y obten

Xtmathbf_t

en una ida. Por lo tanto, podemos muestrear nuestra variable latente

Xtmathbf_t

en cualquier paso de tiempo arbitrario. Este será nuestro objetivo más adelante para calcular nuestra pérdida objetivo manejable

LtL_t

.

horario de variación

El parámetro de varianza

βtbeta_t

puede fijarse a una constante o elegirse como un programa sobre el

TT

pasos de tiempo De hecho, se puede definir un programa de varianza, que puede ser lineal, cuadrático, coseno, etc. Los autores originales de DDPM utilizaron un programa lineal que aumenta de

β1=104beta_1= 10^

a

βT=0.02beta_T = 0.02

. Nichol et al. 2021 mostró que emplear un programa de coseno funciona incluso mejor.


horario de variación


Muestras latentes de horarios lineales (arriba) y coseno (abajo) respectivamente. Fuente: Nichol y Dhariwal 2021

difusión inversa

Como

TT to infty

el latente

XTx_T

es casi un isotrópico Distribución gaussiana. Por lo tanto, si logramos aprender la distribución inversa

q(Xt1Xt)q(mathbf_ vert mathbf_)

podemos probar

XTx_T

de

norte(0,yo)mathcal(0,mathbf)

ejecute el proceso inverso y adquiera una muestra de

q(X0)q(x_0)

generando un nuevo punto de datos a partir de la distribución de datos original.

La pregunta es cómo podemos modelar el proceso de difusión inversa.

Aproximando el proceso inverso con una red neuronal

En términos prácticos, no sabemos

q(Xt1Xt)q(mathbf_ vert mathbf_)

. Es intratable ya que las estimaciones estadísticas de

q(Xt1Xt)q(mathbf_ vert mathbf_)

requieren cálculos relacionados con la distribución de datos.

En su lugar, nos aproximamos

q(Xt1Xt)q(mathbf_ vert mathbf_)

con un modelo parametrizado

pagsθp_

(por ejemplo, una red neuronal). Ya que

q(Xt1Xt)q(mathbf_ vert mathbf_)

también será gaussiano, para lo suficientemente pequeño

βtbeta_t

podemos elegir

pagsθp_

para ser gaussiano y simplemente parametrizar la media y la varianza:

pagsθ(Xt1Xt)=norte(Xt1;mθ(Xt,t),Σθ(Xt,t))p_theta(mathbf_ vert mathbf_t) = mathcal(mathbf_; boldsymbol_ theta(mathbf_t, t), boldsymbol_theta(mathbf_t, t))


difusión inversa


Proceso de difusión inversa. Imagen modificada por Ho et al. 2020

Si aplicamos la fórmula inversa para todos los intervalos de tiempo (

pagsθ(X0:T)p_theta(mathbf_)

también llamada trayectoria), podemos ir desde

XTmathbf_T

a la distribución de datos:

pagsθ(X0:T)=pagsθ(XT)t=1Tpagsθ(Xt1Xt)p_theta(mathbf_) = p_(mathbf_T) prod^T_ p_theta(mathbf_ vert mathbf_t)

Al condicionar adicionalmente el modelo en el paso de tiempo

tt

aprenderá a predecir los parámetros gaussianos (es decir, la media

mθ(Xt,t)boldsymbol_theta(mathbf_t, t)

y la matriz de covarianza

Σθ(Xt,t)boldsymbol_theta(mathbf_t, t)

) para cada paso de tiempo.

Pero, ¿cómo entrenamos a ese modelo?

Entrenamiento de un modelo de difusión

Si damos un paso atrás, podemos notar que la combinación de

qq

y

pagspags

es muy similar a un autocodificador variacional (VAE). Por lo tanto, podemos entrenarlo optimizando la probabilidad logarítmica negativa de los datos de entrenamiento. Después de una serie de cálculos, que no analizaremos aquí, podemos escribir el límite inferior de evidencia (ELBO) como sigue:

yoogramopags(X)miq(X1X0)[logpθ(x0x1)]DkL(q(XTX0)pags(XT))t=2Tmiq(XtX0)[DKL(q(xt1xt,x0)pθ(xt1xt))]=L0LTt=2TLt1begin log p(mathbf) geq &mathbb_ [log p_ (mathbf_0 vert mathbf_1)] – \ &D_(q(mathbf_T vert mathbf_0) vertvert p(mathbf_T))- \ &sum_ ^T mathbb_ [D_(q(mathbf_ vert mathbf_t, mathbf_0) vert vert p_(mathbf_ vert mathbf_t)) ] \ & = L_0 – L_T – sum_^T L_ end

Analicemos estos términos:

  1. los

    miq(X1X0)[logpθ(x0x1)]mathbb_ [log p_ (mathbf_0 vert mathbf_1)]

    término puede ser como un término de reconstrucción, similar al del ELBO de un autocodificador variacional. En Ho et al 2020 este término se aprende usando un decodificador separado.

  2. DkL(q(XTX0)pags(XT))D_(q(mathbf_T vert mathbf_0) vertvert p(mathbf_T))

    muestra lo cerca

    XTmathbf_T

    es a la Gaussiana estándar. Tenga en cuenta que el término completo no tiene parámetros entrenables, por lo que se ignora durante el entrenamiento.

  3. el tercer termino

    t=2TLt1sum_^T L_

    también conocido como

    LtL_t

    formule la diferencia entre los pasos de eliminación de ruido deseados

    pagsθ(Xt1Xt))p_(mathbf_ vert mathbf_t))

    y los aproximados

    q(Xt1Xt,X0)q(mathbf_ vert mathbf_t, mathbf_0)

    .

Es evidente que a través del ELBO, maximizar la probabilidad se reduce a aprender los pasos de eliminación de ruido.

LtL_t

.

Nota IMPORTANTE: A pesar de

q(Xt1Xt)q(mathbf_ vert mathbf_)

es intratable Sohl-Dickstein et al. ilustró que al condicionar adicionalmente en

X0textbf_0

lo hace manejable.

Intuitivamente, un pintor (nuestro modelo generativo) necesita una imagen de referencia (

X0textbf_0

) para dibujar lentamente (paso de difusión inversa

q(Xt1Xt,X0)q(mathbf_ vert mathbf_t, mathbf_0)

) una imagen. Por lo tanto, podemos dar un pequeño paso atrás, es decir, desde el ruido para generar una imagen, si y solo si tenemos

X0textbf_0

como una referencia.

En otras palabras, podemos probar

Xttextbf_t

a nivel de ruido

tt

condicionado a

X0textbf_0

. Ya que

αt=1βtalpha_t= 1- beta_t

y

αˉt=s=0tαsbar_t = prod_^t alfa_s

podemos probar que:

q(Xt1Xt,X0)=norte(Xt1;m~(Xt,X0),β~tyo)β~t=1αˉt11αˉtβtm~t(Xt,X0)=αˉt1βt1αˉtX0+αt(1αˉt1)1αˉtXtbegin q(mathbf_ vert mathbf_t, mathbf_0) &= mathcal(mathbf_; (mathbf_t, mathbf_0), mathbf) \ tilde_t &= frac cdot beta_t \ tilde_t (mathbf_t, mathbf_0) &= frac mathbf + frac mathbf_t end

Tenga en cuenta que

αtalpha_t

y

αˉtbar_t

depender solo de

βtbeta_t

por lo que pueden precalcularse.

Este pequeño truco nos proporciona un ELBO completamente manejable. La propiedad anterior tiene un efecto secundario más importante, como ya vimos en el truco de reparametrización, podemos representar

X0mathbf_0

como

X0=1αˉt(Xt1αˉtϵ)),mathbf_0 = frac(mathbf_t – sqrt boldsymbol)),

dónde

ϵnorte(0,yo)boldsymbol sim mathcal(textbf,mathbf)

.

Al combinar las dos últimas ecuaciones, cada paso de tiempo ahora tendrá una media

m~ttilde_t

(nuestro target) que solo depende de

Xtmathbf_t

:

m~t(Xt)=1αt(Xtβt1αˉtϵ))tilde_t (mathbf_t) =

Por lo tanto podemos usar una red neuronal

ϵθ(Xt,t)epsilon_(mathbf_t,t)

para aproximar

ϵboldsymbol

y en consecuencia la media:

mθ~(Xt,t)=1αt(Xtβt1αˉtϵθ(Xt,t))tilde( mathbf_t,t) =

Por lo tanto, la función de pérdida (el término de eliminación de ruido en ELBO) se puede expresar como:

Lt=miX0,t,ϵ[12Σθ(xt,t)22μ~tμθ(xt,t)22]=miX0,t,ϵ[βt22αt(1αˉt)Σθ22ϵtϵθ(aˉtx0+1aˉtϵ,t)2]begin L_t &= mathbb_Grande[fracboldsymbol_theta (x_t,t) ||tilde_t – boldsymbol_theta(mathbf_t, t)||_2^2 Big] \ &= mathbb_Grande[fracboldsymbol_theta | boldsymbol_- boldsymbol_(sqrt mathbf_0 + sqrtboldsymbol, t ) ||^2 Big]

end

Esto nos muestra efectivamente que en lugar de predecir la media de la distribución, el modelo predecirá el ruido

ϵboldsymbol

en cada paso de tiempo

tt

.

Ho et al 2020 hizo algunas simplificaciones al término de pérdida real ya que ignoran un término de ponderación. La versión simplificada supera el objetivo completo:

Ltsimple=miX0,t,ϵ[ϵϵθ(aˉtx0+1aˉtϵ,t)2]L_t^text = mathbb_ Big[|boldsymbol- boldsymbol_(sqrt mathbf_0 + sqrt boldsymbol, t ) ||^2 Big]

Los autores encontraron que optimizar el objetivo anterior funciona mejor que optimizar el ELBO original. La demostración de ambas ecuaciones se puede encontrar en este excelente publicación de Lillian Weng o en Luo et al. 2022.

Además, Ho et. al 2020 Decida mantener la varianza fija y hacer que la red aprenda solo la media. Esto fue mejorado posteriormente por Nichol et al. 2021que deciden dejar que la red aprenda la matriz de covarianza

(Σ)( símbolo de negrita )

también (modificando

LtsimpleL_t^text

), logrando mejores resultados.


entrenamiento-muestreo-ddpm


Algoritmos de entrenamiento y muestreo de DDPMs. Fuente: Ho et al. 2020

Arquitectura

Una cosa que no hemos mencionado hasta ahora es cómo se ve la arquitectura del modelo. Tenga en cuenta que la entrada y la salida del modelo deben ser del mismo tamaño.

Para tal fin, Ho et al. empleó un U-Net. Si no está familiarizado con U-Nets, no dude en consultar nuestro artículo anterior sobre las principales arquitecturas de U-Net. En pocas palabras, una U-Net es una arquitectura simétrica con entrada y salida del mismo tamaño espacial que utiliza conexiones de salto entre los bloques de codificador y decodificador de la dimensión de característica correspondiente. Por lo general, la imagen de entrada primero se reduce y luego se aumenta hasta alcanzar su tamaño inicial.

En la implementación original de DDPM, U-Net consta de bloques Wide ResNet, normalización de grupos y bloques de autoatención.

El tiempo de difusión

tt

se especifica agregando una posición sinusoidal incrustada en cada bloque residual. Para más detalles, no dude en visitar el repositorio oficial de GitHub. Para una implementación detallada del modelo de difusión, echa un vistazo a este impresionante publicación de Hugging Face.


une


La arquitectura U-Net. Fuente: Ronneberger et al.

Generación de imágenes condicionales: difusión guiada

Un aspecto crucial de la generación de imágenes es condicionar el proceso de muestreo para manipular las muestras generadas. Aquí, esto también se conoce como difusión guiada.

Incluso ha habido métodos que incorporan incrustaciones de imágenes en la difusión para «guiar» a la generación. Matemáticamente, la orientación se refiere a condicionar una distribución previa de datos

pags(X)p(textbf)

con una condición

yy

es decir, la etiqueta de clase o una incrustación de imagen/texto, lo que da como resultado

pags(Xy)p(textbf|y)

.

Para convertir un modelo de difusión

pagsθp_theta

en un modelo de difusión condicional, podemos agregar información condicionante

yy

en cada paso de difusión.

pagsθ(X0:Ty)=pagsθ(XT)t=1Tpagsθ(Xt1Xt,y)p_theta(mathbf_ vert y) = p_theta(mathbf_T) prod^T_ p_theta(mathbf_ vert mathbf_t, y)

El hecho de que el condicionamiento se vea en cada paso de tiempo puede ser una buena justificación para las excelentes muestras de un mensaje de texto.

En general, los modelos de difusión guiada pretenden aprender

Iniciar sesiónpagsθ(Xty)nabla log p_theta( mathbf_t vert y)

. Entonces, usando la regla de Bayes, podemos escribe:

XtIniciar sesiónpagsθ(Xty)=XtIniciar sesión(pagsθ(yXt)pagsθ(Xt)pagsθ(y))=Xtyoogramopagsθ(Xt)+Xtyoogramo(pagsθ(yXt))begin nabla_ log p_theta(mathbf_t vert y) &= nabla_ log (frac) \ &= nabla_ log p_theta(mathbf_t) + nabla_ log (p_theta( y vertmathbf_t)) end

pagsθ(y)p_theta(y)

se elimina ya que el operador de gradiente

Xtnabla_

se refiere solo a

Xttextbf_

por lo que no hay gradiente para

yy

. Además recuerda que

Iniciar sesión(ab)=Iniciar sesión(a)+Iniciar sesión(b)log(ab)= log(a) + log(b)

.

Y al agregar un término escalar de guía

ss

tenemos:

Iniciar sesiónpagsθ(Xty)=Iniciar sesiónpagsθ(Xt)+sIniciar sesión(pagsθ(yXt))nabla log p_theta(mathbf_t vert y) = nabla log p_theta(mathbf_t) + s cdot nabla log (p_theta( y vert mathbf_t ))

Usando esta formulación, hagamos una distinción entre clasificador y orientación sin clasificador. A continuación, presentaremos dos familias de métodos destinados a inyectar información en la etiqueta.

Guía del clasificador

Sohl-Dickstein et al.. y después Dhariwal y Nichol mostró que podemos usar un segundo modelo, un clasificador

Fϕ(yXt,t)f_phi(y vert mathbf_t, t)

para orientar la difusión hacia la clase objetivo

yy

durante el entrenamiento. Para lograr eso, podemos entrenar un clasificador

Fϕ(yXt,t)f_phi(y vert mathbf_t, t)

en la imagen ruidosa

Xtmathbf_t

para predecir su clase

yy

. Entonces podemos usar los gradientes.

Iniciar sesión(Fϕ(yXt))nabla log (f_phi( y vertmathbf_t ))

para guiar la difusión. ¿Cómo?

Podemos construir un modelo de difusión condicional de clase con media

mθ(Xty)mu_theta(mathbf_t|y)

y varianza

Σθ(Xty)boldsymbol_theta(mathbf_t |y)

.

Ya que

pagsθnorte(mθ,Σθ)p_theta sim mathcal(mu_, Sigma_)

podemos mostrar usando la formulación guía de la sección anterior que la media está perturbada por los gradientes de

Iniciar sesiónFϕ(yXt)Iniciar sesión f_phi(y|mathbf_t)

de clase

yy

Resultando en:

m^(Xty)=mθ(Xty)+sΣθ(Xty)XtyoogramoFϕ(yXt,t)hat(mathbf_t |y) =mu_theta(mathbf_t |y) + s cdot boldsymbol_theta(mathbf _t |y) nabla_ logf_phi(y vert mathbf_t, t)

en el famoso Documento GLIDE de Nichol et al., los autores ampliaron esta idea y utilizan incrustaciones CLIP para guiar la difusión. CLIP propuesto por Saharia et al.consta de un codificador de imágenes

gramogramo

y un codificador de texto

hh

. Produce incrustaciones de una imagen y texto.

gramo(Xt)g(mathbf_t)

y

h(C)h(c)

respectivamente, donde

CC

es el título de texto.

Por lo tanto, podemos perturbar los gradientes con su producto escalar:

m^(XtC)=m(XtC)+sΣθ(XtC)Xtgramo(Xt)h(C)hat(mathbf_t |c) =mu(mathbf_t |c) + s cdot boldsymbol_theta(mathbf_t | c) nabla_ g(mathbf_t) cdot h(c)

Como resultado, logran «dirigir» el proceso de generación hacia una leyenda de texto definida por el usuario.


guía del clasificador


Algoritmo de muestreo por difusión guiado por clasificador. Fuente: Dhariwal y Nichol 2021

Orientación sin clasificador

Usando la misma formulación que antes, podemos definir un modelo de difusión guiada sin clasificador como:

Iniciar sesiónpags(Xty)=syoogramo(pags(Xty))+(1s)yoogramopags(Xt)nabla log p(mathbf_t vert y) =s cdot nabla log(p(mathbf_t vert y)) + (1-s) cdot nabla log p( mathbf_t)

La orientación se puede lograr sin un segundo modelo clasificador como lo propone Ho y Salimans. En lugar de entrenar un clasificador separado, los autores entrenaron un modelo de difusión condicional

ϵθ(Xty)boldsymbol_theta (mathbf_t|y)

junto con un modelo incondicional

ϵθ(Xt0)boldsymbol_theta (mathbf_t |0)

. De hecho, utilizan exactamente la misma red neuronal. Durante el entrenamiento, establecen la clase al azar.

yy

a

00

de modo que el modelo esté expuesto tanto a la configuración condicional como a la incondicional:

ϵ^θ(Xty)=sϵθ(Xty)+(1s)ϵθ(Xt0)=ϵθ(Xt0)+s(ϵθ(Xty)ϵθ(Xt0))begin hat_theta(mathbf_t |y) & = s cdot boldsymbol_theta(mathbf_t | y) + (1-s) cdot boldsymbol_theta(mathbf_t |0) \ &= boldsymbol_theta(mathbf_t | 0) + s cdot (boldsymbol_theta(mathbf_t |y) -boldsymbol_theta(mathbf_t |0) ) end

Tenga en cuenta que esto también se puede usar para «inyectar» incrustaciones de texto como mostramos en la guía del clasificador.

Este proceso ciertamente «extraño» tiene dos ventajas principales:

  • Utiliza un único modelo para guiar la difusión.

  • Simplifica la orientación al condicionar información que es difícil de predecir con un clasificador (como incrustaciones de texto).

Imagen propuesta por Saharia et al.. se basa en gran medida en la orientación sin clasificador, ya que encuentran que es un contribuyente clave para generar muestras con una fuerte alineación de imagen y texto. Para obtener más información sobre el enfoque de Imagen, mira este video de AI Coffee Break con Letitia:

Ampliación de los modelos de difusión

Quizás se pregunte cuál es el problema con estos modelos. Bueno, computacionalmente es muy costoso escalar estas redes U en imágenes de alta resolución. Esto nos lleva a dos métodos para ampliar los modelos de difusión a resoluciones más altas: modelos de difusión en cascada y modelos de difusión latente.

Modelos de difusión en cascada

Ho et al. 2021 introdujo modelos de difusión en cascada en un esfuerzo por producir imágenes de alta fidelidad. Un modelo de difusión en cascada consiste en una canalización de muchos modelos de difusión secuencial que generan imágenes de resolución creciente. Cada modelo genera una muestra con una calidad superior a la anterior mediante el aumento sucesivo de muestras de la imagen y la adición de detalles de mayor resolución. Para generar una imagen, tomamos muestras secuencialmente de cada modelo de difusión.


difusión en cascada


Canalización del modelo de difusión en cascada. Fuente: Ho & Saharia et al.

Para obtener buenos resultados con arquitecturas en cascada, son cruciales fuertes aumentos de datos en la entrada de cada modelo de superresolución. ¿Por qué? Porque alivia el error de composición de los modelos en cascada anteriores, así como también debido a un desajuste de prueba de tren.

Se encontró que el desenfoque gaussiano es una transformación crítica para lograr una alta fidelidad. Se refieren a esta técnica como aumento de acondicionamiento.

Difusión estable: modelos de difusión latente

Los modelos de difusión latente se basan en una idea bastante simple: en lugar de aplicar el proceso de difusión directamente en una entrada de alta dimensión, proyectamos la entrada en un espacio latente más pequeño y aplicamos la difusión allí.

Con más detalle, Rombach et al.. propuso usar una red codificadora para codificar la entrada en una representación latente, es decir

zt=gramo(Xt)mathbf_t = g(mathbf_t)

. La intuición detrás de esta decisión es reducir las demandas computacionales de los modelos de difusión de entrenamiento al procesar la entrada en un espacio dimensional más bajo. Posteriormente, se aplica un modelo de difusión estándar (U-Net) para generar nuevos datos, que son muestreados por una red decodificadora.

Si la pérdida para un modelo de difusión típico (DM) se formula como:

LDMETRO=miX,t,ϵ[ϵϵθ(xt,t)2]L _ = mathbb_ Big[| boldsymbol- boldsymbol_( mathbf_t, t ) ||^2 Big]

luego dado un codificador

mimathcal

y una representación latente

zz

la pérdida para un modelo de difusión latente (LDM) es:

LLDMETRO=mimi(X),t,ϵ[ϵϵθ(zt,t)2]L _ = mathbb_ Big[| boldsymbol- boldsymbol_( mathbf_t, t ) ||^2 Big]


difusión estable


Modelos de difusión latente. Fuente: Rombach et al.

Para más información echa un vistazo a este vídeo:

Modelos generativos basados ​​en puntajes

Casi al mismo tiempo que el documento DDPM, Canción y Ermon propuso un tipo diferente de modelo generativo que parece tener muchas similitudes con los modelos de difusión. Los modelos basados ​​en puntajes abordan el aprendizaje generativo utilizando la coincidencia de puntajes y la dinámica de Langevin.

Coincidencia de puntuación se refiere al proceso de modelado del gradiente de la función de densidad de probabilidad logarítmica, también conocida como función de puntuación. Dinámica de Langevin es un proceso iterativo que puede extraer muestras de una distribución utilizando solo su función de puntuación.

Xt=Xt1+d2XIniciar sesiónpags(Xt1)+dϵ, dónde ϵnorte(0,yo)mathbf_t=mathbf_+frac nabla_ log pleft(mathbf_right)+sqrt boldsymbol, quad text boldsymbol sim mathcal(mathbf, mathbf )

dónde

ddelta

es el tamaño del paso.

Supongamos que tenemos una densidad de probabilidad

pags(X)p(x)

y que definimos la función de puntuación como

XIniciar sesiónpags(X)nabla_x log p(x)

. Entonces podemos entrenar una red neuronal

sθs_

para estimar

XIniciar sesiónpags(X)nabla_x log p(x)

sin estimar

pags(X)p(x)

primero. El objetivo de la formación se puede formular como sigue:

mipags(X)[xlogp(x)sθ(x)22]=pags(X)XIniciar sesiónpags(X)sθ(X)22dXmathbb_[| nabla_mathbf log p(mathbf) – mathbf_theta(mathbf) |_2^2] = int p(mathbf) | nabla_mathbf log p(mathbf) – mathbf_theta(mathbf) |_2^2 mathrmmathbf

Luego, al usar la dinámica de Langevin, podemos muestrear directamente de

pags(X)p(x)

utilizando la función de puntuación aproximada.

En caso de que se lo haya perdido, los modelos de difusión guiada utilizan esta formulación de modelos basados ​​en puntajes a medida que aprenden directamente

XIniciar sesiónpags(X)nabla_x log p(x)

. Por supuesto, no se basan en la dinámica de Langevin.

Adición de ruido a modelos basados ​​en puntuaciones: Redes de puntuación condicional de ruido (NCSN)

El problema hasta ahora: las funciones de puntuación estimada suelen ser inexactas en regiones de baja densidad, donde hay pocos puntos de datos disponibles. Como resultado, la calidad de los datos muestreados utilizando la dinámica de Langevin es no bien.

Su solución fue perturbar los puntos de datos con ruido y entrenar modelos basados ​​en puntajes en los puntos de datos ruidosos. De hecho, utilizaron múltiples escalas de perturbaciones de ruido gaussiano.

Por lo tanto, agregar ruido es la clave para que funcionen tanto los modelos DDPM como los basados ​​en puntajes.


basado en puntaje


Modelado generativo basado en puntajes con coincidencia de puntajes + dinámica de Langevin. Fuente: Modelado generativo mediante la estimación de gradientes de la distribución de datos

Matemáticamente, dada la distribución de datos

pags(X)p(x)

perturbamos con ruido gaussiano

norte(0,σi2yo)mathcal(textbf, sigma_i^2 I)

dónde

i=1,2,,Li=1,2,cpuntos,L

para obtener una distribución perturbada por ruido:

pagsσi(X)=pags(y)norte(X;y,σi2yo)dyp_(mathbf) = int p(mathbf) mathcal(mathbf; mathbf, sigma_i^2 I) mathrm mathbf

Luego entrenamos una red

sθ(X,i)s_theta(mathbf,i)

conocida como red basada en puntaje condicional de ruido (NCSN) para estimar la función de puntaje

XIniciar sesióndσi(X)nabla_mathbf log d_(mathbf)

. El objetivo de entrenamiento es una suma ponderada de divergencias de pescador para todas las escalas de ruido.

i=1Lλ(i)mipagsσi(X)[xlogpσi(x)sθ(x,i)22]sum_^L lambda(i) mathbb_[| nabla_mathbf log p_(mathbf) – mathbf_theta(mathbf, i) |_2^2]

Modelado generativo basado en puntaje a través de ecuaciones diferenciales estocásticas (SDE)

Canción et al. 2021 exploró la conexión de los modelos basados ​​en puntajes con los modelos de difusión. En un esfuerzo por encapsular tanto los NSCN como los DDPM bajo el mismo paraguas, propusieron lo siguiente:

En lugar de perturbar los datos con un número finito de distribuciones de ruido, usamos un continuo de distribuciones que evolucionan con el tiempo según un proceso de difusión. Este proceso está modelado por una ecuación diferencial estocástica prescrita (SDE) que no depende de los datos y no tiene parámetros entrenables. Al invertir el proceso, podemos generar nuevas muestras.


puntuación-sde


Modelado generativo basado en puntaje a través de ecuaciones diferenciales estocásticas (SDE). Fuente: Canción et al. 2021

Podemos definir el proceso de difusión

t[0,T]{ mathbf


descripción general basada en puntajes


Descripción general del modelado generativo basado en puntaje a través de SDE. Fuente: Canción et al. 2021

Resumen

Hagamos un resumen rápido de los puntos principales que aprendimos en esta entrada de blog:

  • Los modelos de difusión funcionan agregando gradualmente ruido gaussiano a través de una serie de

    TT

    pasos en la imagen original, un proceso conocido como difusión.

  • Para muestrear nuevos datos, aproximamos el proceso de difusión inversa utilizando una red neuronal.

  • El entrenamiento del modelo se basa en maximizar el límite inferior de evidencia (ELBO).

  • Podemos condicionar los modelos de difusión en etiquetas de imágenes o incrustaciones de texto para «guiar» el proceso de difusión.

  • La difusión en cascada y latente son dos enfoques para escalar modelos a alta resolución.

  • Los modelos de difusión en cascada son modelos de difusión secuencial que generan imágenes de resolución creciente.

  • Los modelos de difusión latente (como la difusión estable) aplican el proceso de difusión en un espacio latente más pequeño para la eficiencia computacional utilizando un codificador automático variacional para el muestreo ascendente y descendente.

  • Los modelos basados ​​en puntajes también aplican una secuencia de perturbaciones de ruido a la imagen original. Pero están entrenados utilizando la dinámica de Langevin y el emparejamiento de puntajes. Sin embargo, terminan en un objetivo similar.

  • El proceso de difusión se puede formular como un SDE. Resolver el SDE inverso nos permite generar nuevas muestras.

Finalmente, para más asociaciones entre modelos de difusión y VAE o AE echa un vistazo a estos blogs realmente agradables.

Citar como

@article

Referencias

[1] Sohl-Dickstein, Jascha, et al. Aprendizaje profundo no supervisado usando termodinámica sin equilibrio. arXiv:1503.03585, arXiv, 18 de noviembre de 2015

[2] Ho, Jonathan, et al. Modelos probabilísticos de difusión de eliminación de ruido. arXiv:2006.11239, arXiv, 16 de diciembre de 2020

[3] Nichol, Alex y Prafulla Dhariwal. Modelos probabilísticos de difusión de eliminación de ruido mejorados. arXiv:2102.09672, arXiv, 18 de febrero de 2021

[4] Dhariwal, Prafulla y Alex Nichol. Los modelos de difusión superan a las GAN en la síntesis de imágenes. arXiv:2105.05233, arXiv, 1 de junio de 2021

[5] Nichol, Alex, et al. GLIDE: Hacia la generación y edición de imágenes fotorrealistas con modelos de difusión guiados por texto. arXiv:2112.10741, arXiv, 8 de marzo de 2022

[6] Ho, Jonathan y Tim Salimans. Guía de difusión sin clasificador. 2021. openreview.net

[7] Ramesh, Aditya, et al. Generación de imágenes condicionales de texto jerárquico con latentes CLIP. arXiv:2204.06125, arXiv, 12 de abril de 2022

[8] Saharia, Chitwan, et al. Modelos fotorrealistas de difusión de texto a imagen con comprensión profunda del lenguaje. arXiv:2205.11487, arXiv, 23 de mayo de 2022

[9] Rombach, Robin, et al. Síntesis de imágenes de alta resolución con modelos de difusión latente. arXiv:2112.10752, arXiv, 13 de abril de 2022

[10] Ho, Jonathan, et al. Modelos de difusión en cascada para la generación de imágenes de alta fidelidad. arXiv:2106.15282, arXiv, 17 de diciembre de 2021

[11] Weng, Lilian. ¿Qué son los modelos de difusión? 11 julio 2021

[12] O´Connor, Ryan. Introducción a los modelos de difusión para el aprendizaje automático Blog de la AsambleaAI, 12 de mayo de 2022

[13] Rogge, Niels y Rasul, Kashif. El modelo de difusión anotado . Blog de Hugging Face, 7 de junio de 2022

[14] Das, Ayan. “Una introducción a los modelos probabilísticos de difusión.” Ayan Das, 4 de diciembre de 2021

[15] Song, Yang y Stefano Ermon. Modelado generativo mediante la estimación de gradientes de la distribución de datos. arXiv:1907.05600, arXiv, 10 de octubre de 2020

[16] Song, Yang y Stefano Ermon. Técnicas mejoradas para entrenar modelos generativos basados ​​en puntajes. arXiv:2006.09011, arXiv, 23 de octubre de 2020

[17] Canción, Yang, et al. Modelado generativo basado en puntaje a través de ecuaciones diferenciales estocásticas. arXiv:2011.13456, arXiv, 10 de febrero de 2021

[18] Canción, Yang. Modelado generativo mediante la estimación de gradientes de la distribución de datos5 de mayo de 2021

[19] Luo, Calvino. Comprender los modelos de difusión: una perspectiva unificada. 25 de agosto de 2022

Libro Aprendizaje Profundo en Producción 📖

Aprenda a crear, entrenar, implementar, escalar y mantener modelos de aprendizaje profundo. Comprenda la infraestructura de ML y MLOps con ejemplos prácticos.

Aprende más

* Divulgación: tenga en cuenta que algunos de los enlaces anteriores pueden ser enlaces de afiliados y, sin costo adicional para usted, ganaremos una comisión si decide realizar una compra después de hacer clic.

Fuente del artículo

Deja un comentario