image.png

Probabilistic Denosing Diffusion Models imagined by Dall-e 2

Modelos Probabilísticos de Difusión para Eliminación de Ruido

Probabilistic Denoising Diffusion Models

M Rivera

Noviembre 2023

version 1.0.0

En estas notas presentamos la derivación del Modelo de Difusión de Eliminación de Ruido para generar imágenes. Esta derivación corresponde a la presentada en el artículo original.

Recomendado el Blog de Lilian Weng, What are Diffusion Models?

Otros

Ho, J., Jain, A., & Abbeel, P. (2020). Denoising diffusion probabilistic models. Advances in neural information processing systems, 33, 6840-6851. PDF

Stains Diffusion Model Clearly Explained!

Jonathan Ho, Ajay Jain, Pieter Abbeel Diffusion Models Explained with Math From Scratch

import numpy as np
import matplotlib.pyplot as plt
import PIL.Image as Image
import imageio as io

Cargar imagen de prueba

img = Image.open('cameraman.pgm')
x0 = np.array(img)/255

plt.imshow(x0, 'gray')
plt.axis('off')
(-0.5, 255.5, 255.5, -0.5)

png

Difusión hacia adelante

Proceso de difusión

Definimos el proceso de difusión dado por la fórmula de evolución

(1)
xt=1βtxt1+βtηt x_{t} = \sqrt{1 - \beta_t} x_{t-1} + \sqrt{\beta_t} \eta_t
donde

(2)
ηN(0,I), \eta \sim \mathcal{N}(0, I),

βt\beta_t no es constante en el tiempo y satisface

(3)
β0<β1<βT \beta_0 < \beta_1 < \ldots \beta_T

Interpretando a xtx_{t} como la muestra obtenida de nuestro proceso de difusión en tiempo t{t}, tenemos

(4)
xtq(xtxt1)=N(xt;1βtxt1,βtI) x_{t} \sim q(x_{t} | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I} )
Esto es, xtx_{t} resulta de muestrear una distribución Gaussiana con media 1βtxt1\sqrt{1 - \beta_t} x_{t-1} y varianza βtI\beta_t \mathbf{I}. El primer xtx_t antes del ‘;’ indica que los parámetros de la distribución estan asociados a xtx_t.

def linear_beta_schedule(timesteps, start=0.0001, end=0.02):
    return np.linspace(start, end, timesteps)
schedule = 'cosine' 

timesteps = 100
if schedule =='linear':
    betas = linear_beta_schedule(timesteps, start=0.0001, end=0.02)
elif schedule == 'cosine':
    betas = 1-np.cos(np.pi/2 * linear_beta_schedule(timesteps, start=0.0001, end=0.3))


plt.figure(figsize=(6,3))
plt.plot(betas)
plt.xlabel("time (t)")
plt.ylabel(r"beta ($\beta$)")

Text(0, 0.5, 'beta ($\\beta$)')

png

Otros esquemas de calendarización para α\alpha se pueden revisar en

Nichol, Alexander Quinn, and Prafulla Dhariwal. “Improved denoising diffusion probabilistic models.” International Conference on Machine Learning. PMLR, 2021. PDF.

Difusión hacia adelante q(xtxt1)q(x_{t}| x_{t-1})

X = []
X.append(x0)

Imgs=[]
im = (np.clip(x0, 0,1)*255).astype('uint8')
Imgs.append(im)

for t,beta in enumerate(betas): 
    x_tp1 = np.sqrt(1-beta)*X[t]  + np.sqrt(beta)* np.random.normal(0, 1, size=x0.shape)
    X.append(x_tp1)
    
    im = (np.clip(x_tp1, 0,1)*255).astype('uint8')
    Imgs.append(im)
    
    print(t, end=', ')
    
io.mimsave('diffusion.gif', Imgs, duration = 0.2)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 

Cálculo de una imagen xt+1x_{t+1} evitando los pasos previos de difusión

De acuerdo a la fórmula (1), para obtener la muestra xtx_{t} es necesario haber generado la secuencia {xk}k=0:t\{x_k\}_{k=0:t}. Sin embargo veremos una simplificación al proceso, consideramos dos pasos de difusión, digamos

(5)
xt=αtxt1+1αtηt1       xt1=αt1xt2+1αt1ηt2 x_{t} = \sqrt{\alpha_{t}} x_{t-1} + \sqrt{1-\alpha_{t}} \eta_{t-1} \,\,\,\,\,\,\, \\ x_{t-1} = \sqrt{\alpha_{t-1}} x_{t-2} + \sqrt{1- \alpha_{t-1}} \eta_{t-2}
donde hemos definido

(6)
αt=1βt. \alpha_t = 1- \beta_t.

Luego, sustituimos xt1x_{t-1} en la primera ecuación:

(7)
xt=αtαt1xt2+αt(1αt1)ηt2undefineda+1αtηt1undefinedb x_{t} = \sqrt{\alpha_t \, \alpha_{t-1}} x_{t-2} + \underbrace{ \sqrt{\alpha_t (1-\alpha_{t-1})} \eta_{t-2} }_{ a} + \underbrace{ \sqrt{1-\alpha_t} \eta_{t-1}}_{ b}
Dado que ηkN(0,I)\eta_k \sim \mathcal{N}(0, I), tenemos que aN(0,αt(1αt1)I)a \sim \mathcal{N}\left(0, \alpha_t (1-\alpha_{t-1}) I\right) y bN(0,(1αt)I)b \sim \mathcal{N}\left(0, (1-\alpha_{t}) I\right). Luego, la suma de dos variabes aleatorias Gaussianas, independientes, con media cero resulta en una variable aleatoria con media cero y cuya varianza es la suma de la varianza de los sumandos:

a+bN(0,(αtαtαt1+1αt)I)N(0,(1αtαt1)I) a+b \sim \mathcal{N}\left(0, (\alpha_t - \alpha_t \alpha_{t-1} + 1 - \alpha_{t}) I\right) \sim \mathcal{N}\left(0, (1- \alpha_t \alpha_{t-1}) I\right)
Reescribiendo (7):

(8)
xt=αtαt1xt2+(1αtαt1)η x_{t} = \sqrt{\alpha_t \, \alpha_{t-1}} x_{t-2} + \sqrt{(1-\alpha_t \alpha_{t-1})} \eta

Procediendo hasta que encontramos xtx_{t} a partir de x0x_0 (ver Anexo A):

(9)
xt=αˉtx0+1αˉtη. \boxed{ x_{t} = \sqrt{\bar \alpha_t} x_0 + \sqrt{ 1- \bar\alpha_{t} } \eta. }
Donde hemos definido

(10)
αˉt=k=1:tαk \bar \alpha_t = \prod_{k=1:t} \alpha_k

A (9) le denonominan los autores “la propiedad bonita” (the nice property). Ecuación (9) es muy importante porque permite obtener la muestra en tiempo tt sin necesidad de realizar todo el proceso de difusión para {0:t1}\{0:t-1 \}. Lo que nos lleva a la condicional:

(11)
xtq(xtx0)=N(x0;αˉtx0,(1αˉt)I). x_{t} \sim q(x_{t} | x_0) = \mathcal{N} \left(x_0; \sqrt{\bar \alpha_t} x_0 , (1- \bar\alpha_{t}) I \right).

alphas_bar = (1-betas)
for t, alpha in enumerate(alphas_bar[0:-2]): 
    alphas_bar[t+1] *= alpha
X2 = []
X2.append(x0)

Imgs=[]
im = (np.clip(x0, 0,1)*255).astype('uint8')
Imgs.append(im)

for t,alpha_bar in enumerate(alphas_bar): 
    x_tp1 = np.sqrt(alpha_bar)*x0  + np.sqrt(1-alpha_bar)* np.random.normal(0, 1, size=x0.shape)
    X2.append(x_tp1)
    
    im = (np.clip(x_tp1, 0,1)*255).astype('uint8')
    Imgs.append(im)
    
    print(t, end=', ')
    
io.mimsave('difusion2.gif', Imgs, duration = 0.2)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
# a manera de demostración

plt.imshow(X2[10]-X[10], 'gray')
plt.axis('off')
plt.show()

png

Difusión Inversa

En la siguiente figura se ilustra el proceso de difusion inversa.

reverse diffusion

Imagen de https://theaisummer.com/diffusion-models, modificado de Ho et al. 2020

En la figura de arriba el proceso de difusión hacia adelante es conocido se representa por el muestreo de la distribución verdadera q(xtxt1)q(x_t | x_{t-1}). Luego, dada xtx_t y tt, la difusión inversa equivale a muestrear la condicional desconocida q(xt1xt)q(x_{t-1} | x_{t}). Este proceso es intratable, pues requeririamos de conocer las de contar con q(xt1)q(x_{t-1}) para intentar usar Bayes.

La estrategia que se sigue se basa en los siguientes puntos:

(12)
pθ(xt1xt)q(xt1xt,x0); p_\theta(x_{t-1} | x_{t}) \simeq q(x_{t-1} | x_{t}, x_0);
donde θ\theta son los parámetros de las aproximación y hemos condicionado sobre una imagen de referencia x0x_0 que sirve de guía del tipo de imagen esperamos reconstruir.

(13)
qθ(xt1xt,x0)=N(xt1;μ(xt,x0,t),Σ(xt,x0,t)). q_{\theta} (x_{t-1} | x_{t}, x_0) = \mathcal{N} \left( x_{t-1}; \mu(x_t, x_0, t), \Sigma(x_t, x_0, t) \right).

Notamos que la media y varianza se estiman para cada paso y dependen únicamente de xtx_t y tt:

(14)
μ(xt,t)=1αt(xtβt1αˉtηt) \mu(x_t,t) = \frac{1}{\sqrt{ \alpha_t}} \left( x_t - \frac{ \beta_t}{\sqrt{1-\bar \alpha_{t}} } \, \eta_t \right)
y

(15)
Σ(xt,t)=1αˉt11αˉtβt, \Sigma(x_t, t) = \frac{1-\bar \alpha_{t-1}} {1-\bar\alpha_{t}} \beta_t,

Ver Apéndice B para los detalles de la derivación.

(16)
pθ(x0:T)=pθ(xT)t=1Tpθ(xt1xt) p_\theta(x_{0:T}) = p_\theta(x_T) \prod_{t=1}^T p_\theta(x_{t-1} | x_{t})

Siguiendo a (13), (14) y (15); la aproximación paramétrica está dada por

(17)
pθ(xt1xt)=N(xt1;μθ(xtt),Σθ(xt,t)) p_{\theta} (x_{t-1} | x_{t}) = \mathcal{N} \left( x_{t-1}; \mu_\theta(x_t t), \Sigma_\theta(x_t, t) \right)
con

(18)
μθ(xt,t)=1αt(xtβt1αˉtηθ(xt,t)) \mu_{\theta}(x_t, t) = \frac{1}{\sqrt{ \alpha_t}} \left( x_t - \frac{ \beta_t}{\sqrt{1-\bar \alpha_{t}} } \, \eta_{\theta}(x_t, t) \right)
y

(19)
Σθ(xt,t)=I1αˉt11αˉtβt. \Sigma_\theta(x_t, t) = \mathbf{I} \frac{1-\bar \alpha_{t-1}} {1-\bar\alpha_{t}} \beta_t.
donde I\mathbf{I} denota la matriz identidad.

Notemos que la varianza del la aproximación paramétrica se puede calcular con una fórmula cerrada, por lo que no necesitamos estimarla, por lo que solo debemos estimar la media (18) del modelo approximado. En la propuesta original de Ho et al. (2020) toman esta expresion para las entradas en la matriz diagonal de covarianza, por tanto su propuesta no involucra aprender estos coeficientes. Es, sin embargo posible diseñaar un modelo que involucre también aprender esos coeficientes.

Estimación del modelo inverso

Los parámetos θ\theta se obtienen resolviendo el problema de optimización:

(18)
θt=argminθμ(xt,t)μθ(xt,t)2                                                                                          =1αtxtβtαt1αˉtη1αtxt+βtαt1αˉtηθ(xt,t)2ηη^θ(xt,t)2                                                                                              \theta_t^* = \underset{\theta} {\arg \min} \| \mu(x_{t}, t) - \mu_{\theta}(x_t, t)\|^2 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, \\ \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, = \Big\| \frac{1}{\sqrt{\alpha_t}} x_{t} - \frac{\beta_t}{ \sqrt{\alpha_t} \sqrt{ 1- \bar\alpha_{t} }} \eta - \frac{1}{\sqrt{\alpha_t}} x_{t} + \frac{\beta_t}{ \sqrt{\alpha_t}\sqrt{ 1- \bar\alpha_{t} }} \eta_\theta(x_t, t) \Big\|^2 \\ \propto \Big\| \eta - \hat \eta_\theta(x_t, t) \Big\|^2 \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,
Donde hemos obviado el término de escala.

El algoritmo para entrenar el modelo que estima el ruido se resume a continuación.

Ho algo

Este algoritmo se puede entender como la iteración hasta convergencia de los siguientes pasos:

Una vez entrenado el modelo (red neuronal del tipo UNet). Luego, para realizar la difusion inversa (denoising) en una imagen xtx_t, es decir estimar x^t1\hat x_{t-1}, es necesario estimamos el ruido ηθ(xt,t)\eta_\theta(x_t, t) mediante el modelo de red neuronal; luego

(20)
xt1=μθ(xt,t)+Σθ(xt,t)η, \boxed{ x_{t-1} = \mu_{\theta}(x_t, t) + \Sigma_\theta(x_t, t) \, \eta, }
con ηN(0,I)\eta \sim \mathcal{N}(0,I). Y así sucesivamente hasta calcular x^0\hat x_0.
El Algoritmo 2 (Samplig) presenta abajo los detalles de este proceso.

Ho algorithm

Imagen de https://theaisummer.com/diffusion-models, modificado de Ho et al. 2020

En Algoritmo 2: ϵθ(xt,t)η^θ(xt,t)\epsilon_\theta(x_t, t) \equiv \hat \eta_\theta(x_t, t), el ruido estimado por la red neuronal.

Función de costo

La estrategia es aproximar el modelo real qq por una estimación paramétrica pθp_\theta. Similar a como se realiza en los Autoencodificadores Variacionales (VAEs). En una VAE esta estimación se realiza mediante la minimización del Límite Inferior de Evidencia (Evidence Lower Bound, ELBO). En este caso el ELBO está dado por

(19)

logp(x)Eq(x0x1){logpθ(x1x0)}DKL(q(xTx0)p(xT))t=2TEq(x1x0){DKL(q(xt1xt,x0)pθ(xt1xt))}=L0LTt=2TLt1 \log p(x) \ge \mathbb{E}_{q(x_0 | x_1)} \{ \log p_\theta (x_1 | x_0)\} - D_{KL} \left( q(x_T | x_0) \| p(x_T) \right) - \sum_{t=2}^T \mathbb{E}_{q(x_1 | x_0)} \{ D_{KL} \left(q (x_{t-1} | x_t, x_0) \| p_\theta (x_{t-1} | x_t ) \right) \} \\ = L_0 -L_T - \sum_{t=2}^T L_{t-1}

Donde hemos definido las LL que aparecen en los términos L0L_0, LTL_T y en la suma; estos corresponden término a término.

Analizando cada uno de los tres términos:

  1. Primer término, L0=Eq(x1x0){logpθ(x1x0)}L_0 = \mathbb{E}_{q(x_1 | x_0)} \{\log p_\theta (x_1 | x_0)\}. Es un término de recontrucción (datos) similar al del ELBO en VAEs.

  2. Segundo término, DKL(q(xTx0)p(xT))D_{KL} \left( q (x_T | x_0) \| p(x_T) \right). Forza a p(xT)p(x_T) sea cercana a una Gaussiana.; que no tienen parámetros por lo que no es entrenable.

  3. Tercer término, Lt=t=2TLt1L_t = \sum_{t=2}^T L_{t-1}. Penaliza las diferencia entre la estimación pθ(xt1xt)p_\theta(x_{t-1} | x_t) y q(xt1xt,x0)q(x_{t-1} |x_t, x_0)

Modelo para estimar el Ruido

A continuación veremos como definir como es el modelo que extrae el ruido de la imagen xtx_t.

Podemos notar que una red neuronal profunda del tipo UNet seria el mas adecuado para representar la red que extrae al componente de ruido de la imagen contaminada xtx_t a grado equivalente a un tiempo tt. Notemos que nuestro modelo de red profunda debe estar condicionado por tt.


ANEXOS


Anexo A. Calcular xtx_t directamente de x0x_0

Si además sustituimos xt2x_{t-2}, y usando “la propiedad bonita”, tenemos

(A.1)
xt=αtαt1αt2xt3+αtαt1(1αt2)ηt3+(1αtαt1)η=αtαt1αt2xt3+1αtαt1αt2η                                                       x_{t} = \sqrt{\alpha_t \, \alpha_{t-1} \, \alpha_{t-2}} x_{t-3} + \sqrt{\alpha_t \, \alpha_{t-1} \, (1-\alpha_{t-2})} \eta_{t-3} + \sqrt{(1-\alpha_t \alpha_{t-1})} \eta \\ = \sqrt{\alpha_t \, \alpha_{t-1} \, \alpha_{t-2}} x_{t-3} + \sqrt{1-\alpha_t \, \alpha_{t-1} \, \alpha_{t-2}} \eta \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,

Sustituyendo xt3x_{t-3} resulta en:

(A.2)
xt=αtαt1αt2αt3xt4+1αtαt1αt2αt3η x_{t} = \sqrt{\alpha_t \, \alpha_{t-1} \, \alpha_{t-2} \, \alpha_{t-3} } x_{t-4} + \sqrt{1-\alpha_t \, \alpha_{t-1} \, \alpha_{t-2} \, \alpha_{t-3}} \eta

Esto es

(A.3)
xt=k=0K1αtkxtK+1k=0K1αtkη. x_{t} = \sqrt{ \prod_{k=0}^{K-1} \alpha_{t-k} } x_{t-K} + \sqrt{1- \prod_{k=0}^{K-1} \alpha_{t-k} } \eta .

Anexo B. Demostración de (19)

Seguimos el excelente blod de L. Weng.

Para hacer el procedimiento tratable usaremos una imagen de referencia x0x_0, ésto nos permite tener una guía del tipo de imagen que queremos reconstruir. Partimos de (18) condicionandola también en x0x_0:

(B.1)
q(xt1xt,x0)=N(xt1;μ(xt,x0,t),β~tI) q(x_{t-1} | x_t, x_0) = \mathcal{N} \left( x_{t-1}; \mu(x_t, x_0, t), \tilde \beta_t I \right)

Luego usamos la regla de Bayes

(B.2)
q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0) q(x_{t-1} | x_t, x_0) = \frac{q(x_{t} | x_{t-1}, x_0) q(x_{t-1} | x_0) } {q(x_{t} | x_0)}

Notamos que usando las medias y las varianzas a partir de (9) y (11)

(B.3-B.5)
q(xtxt1,x0)exp[12((xtαtxt1)2βt)],             q(xt1x0)exp[12((xt1αˉt1x0)21αˉt1)],        q(xtx0)exp[12((xtαˉtx0)21αˉt)]. q(x_{t} | x_{t-1}, x_0) \propto \exp \left[ -\frac{1}{2} \left( \frac{(x_t - \sqrt{\alpha_t} x_{t-1})^2}{\beta_t} \right) \right] , \\ \,\,\,\,\,\,\,\,\,\,\,\,\, q(x_{t-1} | x_0) \propto \exp \left[ -\frac{1}{2} \left( \frac{(x_{t-1} - \sqrt{\bar \alpha_{t-1}} x_{0})^2}{1- \bar \alpha_{t-1}} \right) \right] , \\ \,\,\,\,\,\,\,\, q(x_{t} | x_0) \propto \exp \left[ -\frac{1}{2} \left( \frac{(x_{t} - \sqrt{\bar \alpha_{t}} x_{0})^2}{1- \bar \alpha_{t}} \right) \right].

Sustituyendo en (B.2):

(B.6)
q(xtxt1,x0)exp[12((xtαtxt1)2βt+(xt1αˉt1x0)21αˉt1(xtαˉtx0)21αˉt)]. q(x_{t} | x_{t-1}, x_0) \propto \exp \left[ -\frac{1}{2} \left( \frac{(x_t - \sqrt{\alpha_t} x_{t-1})^2}{\beta_t} + \frac{(x_{t-1} - \sqrt{\bar \alpha_{t-1}} x_{0})^2}{1- \bar \alpha_{t-1}} - \frac{(x_{t} - \sqrt{\bar \alpha_{t}} x_{0})^2}{1- \bar \alpha_{t}} \right) \right].

Luego

(B.7)
(xtαtxt1)2βt+(xt1αˉt1x0)21αˉt1(xtαˉtx0)21αˉt \frac{(x_t - \sqrt{\alpha_t} x_{t-1})^2}{\beta_t} + \frac{(x_{t-1} - \sqrt{\bar \alpha_{t-1}} x_{0})^2}{1- \bar \alpha_{t-1}} -\frac{(x_t - \sqrt{\bar \alpha_t} x_0)^2}{1- \bar \alpha_t}

=xt22αtxtxt1+αtxt12βt+xt122αˉt1xt1x0+αˉt1x021αˉt1xt22αˉtxtx0+αˉtx021αˉt = \frac{x_t^2 - 2 \sqrt{\alpha_t} x_{t} x_{t-1} + \alpha_t x_{t-1}^2}{\beta_t} +\frac{x_{t-1}^2 - 2 \sqrt{\bar \alpha_{t-1}} x_{t-1} x_{0} + \bar \alpha_{t-1} x_{0}^2}{1- \bar \alpha_{t-1}} - \frac{ x_{t}^2 - 2 \sqrt{\bar \alpha_{t}} x_{t} x_{0} + \bar \alpha_{t} x_{0}^2}{1- \bar \alpha_{t}}

=(αtβt+11αˉt1)xt12(2αtβtxt+2αˉt11αˉt1x0)xt1+C(xt,x0) = \left(\frac{\alpha_t}{\beta_t} + \frac{1}{1-\bar \alpha_{t-1}}\right) x_{t-1}^2 - \left(\frac{2 \sqrt{\alpha_t}}{\beta_t} x_t + \frac{2 \sqrt{\bar \alpha_{t-1}}}{1-\bar \alpha_{t-1}} x_0 \right) x_{t-1}+ C(x_t, x_0)

=1αˉt(1αˉt1)βt[xt122(αtβtxt+αˉt11αˉt1x0)(1αˉt1)βt1αˉtxt1+C~(xt,x0)] =\frac{1-\bar\alpha_{t}}{(1-\bar \alpha_{t-1}) \beta_t} \left[ x_{t-1}^2 -2 \left(\frac{\sqrt{\alpha_t}}{\beta_t} x_t + \frac{ \sqrt{\bar \alpha_{t-1}}}{1-\bar \alpha_{t-1}} x_0 \right) \frac{(1-\bar \alpha_{t-1}) \beta_t} {1-\bar\alpha_{t}} x_{t-1} +\tilde C(x_t, x_0) \right]

=1β~t[xt122(αtβtxt+αˉt11αˉt1x0)β~txt1+C(xt,x0)β~t]. = \frac{1}{\tilde \beta_t} \left[ x_{t-1}^2 -2 \left(\frac{ \sqrt{\alpha_t}}{\beta_t} x_t + \frac{ \sqrt{\bar \alpha_{t-1}}}{1-\bar \alpha_{t-1}} x_0 \right) \tilde \beta_t \, x_{t-1} + C(x_t, x_0) \, \tilde \beta_t \right].

Donde definimos

(B.10)
β~t=1αˉt11αˉtβt, \tilde \beta_t = \frac{1-\bar \alpha_{t-1}} {1-\bar\alpha_{t}} \beta_t,
usando
αtβt+11αˉt1=αtαtαˉt1+βt(1αˉt1)βt=αtαˉt+1αt(1αˉt1)βt, \frac{\alpha_t}{\beta_t} + \frac{1}{1-\bar \alpha_{t-1}} = \frac{\alpha_t - \alpha_t \bar\alpha_{t-1} + \beta_t}{(1-\bar\alpha_{t-1})\beta_t} = \frac{\alpha_t - \bar\alpha_{t} + 1-\alpha_t}{(1-\bar\alpha_{t-1})\beta_t},

y CC contiene los términos independientes de xt1x_{t-1}.

(B.11)
C(xt,x0)=1βtxt2+αˉt11αˉt1x02xt22αˉtxtx0+αˉtx021αˉt. C(x_t, x_0) = \frac{1}{\beta_t} x_t^2 + \frac{\bar \alpha_{t-1}}{1- \bar \alpha_{t-1}} x_0^2 - \frac{ x_{t}^2 - 2 \sqrt{\bar \alpha_{t}} x_{t} x_{0} + \bar \alpha_{t} x_{0}^2}{1- \bar \alpha_{t}} .
Ahora definimos

(B.12)
M(xt,x0)=αtβtxt+αˉt11αˉt1x0. M(x_t, x_0) = \frac{ \sqrt{\alpha_t}}{\beta_t} x_t + \frac{ \sqrt{\bar \alpha_{t-1}}}{1-\bar \alpha_{t-1}} x_0.

Continuamos con el lado derecho de (B.7):

(B.9b)
=1β~t[xt122M(xt,x0)β~txt1+(M(xt,x0)β~t)2(M(xt,x0)β~t)2+C(xt,x0)β~t]=1β~t[xt1M(xt,x0)β~tundefinedμ(xt,x0)]21β~t[(M(xt,x0)β~t)2C(xt,x0)β~t]undefinedK(xt,x0). = \frac{1}{\tilde \beta_t} \left[ x_{t-1}^2 -2 M(x_t, x_0) \tilde \beta_t \, x_{t-1} + \left(M(x_t, x_0) \tilde \beta_t \right)^2 - \left(M(x_t, x_0) \tilde \beta_t \right)^2 +C(x_t, x_0) \, \tilde \beta_t \right] \\ = \frac{1}{\tilde \beta_t} \left[ x_{t-1} - \underbrace{ M(x_t, x_0) \tilde \beta_t }_{\mu(x_t, x_0)}\right]^2 - \underbrace{ \frac{1}{\tilde \beta_t} \left[ \left(M(x_t, x_0) \tilde \beta_t \right)^2 - C(x_t, x_0) \, \tilde \beta_t \right]}_{K(x_t, x_0)}.
Sustitulimos en (B.6):

(B.13)
q(xtxt1,x0)exp[12β~t(xt1μ(xt,x0))2]. q(x_{t} | x_{t-1}, x_0) \propto \exp \left[ -\frac{1}{2 \, \tilde \beta_t} \left( x_{t-1} - \mu(x_t, x_0) \right)^2 \right].

Dado que exp[12K(xt,x0)]\exp\left[-\frac{1}{2} K(x_t,x_0) \right] es independiente de xt1x_{t-1}.

Ahora
(B.14)
μ(xt,x0)=(αtβtxt+αˉt11αˉt1x0)1αˉt11αˉtβt                                               \mu(x_t, x_0) = \left( \frac{ \sqrt{\alpha_t}}{\beta_t} x_t + \frac{ \sqrt{\bar \alpha_{t-1}}}{1-\bar \alpha_{t-1}} x_0 \right) \frac{1-\bar \alpha_{t-1}} {1-\bar\alpha_{t}} \beta_t \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;
=αt(1αˉt1)1αˉtxt+αˉt1βt1αˉtx0                                   = \frac{ \sqrt{\alpha_t} (1-\bar \alpha_{t-1}) }{1-\bar \alpha_{t}} x_t + \frac{ \sqrt{\bar \alpha_{t-1}} \beta_t }{1-\bar \alpha_{t}} x_0 \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;
                                    =αt(1αˉt1)1αˉtxt+αˉt1βt1αˉt[1αˉt(xt1αˉtη)]. \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; = \frac{ \sqrt{\alpha_t} (1-\bar \alpha_{t-1}) }{1-\bar \alpha_{t}} x_t + \frac{ \sqrt{\bar \alpha_{t-1}} \beta_t }{1-\bar \alpha_{t}} \left[ \frac{1}{\sqrt{\bar \alpha_t}} \left( x_t - \sqrt{1-\bar \alpha_t} \eta \right) \right].

Notamos que el témino que multiplica a xtx_t se reduce de la siguiente manera:

(B.15)
αt(1αˉt1)1αˉt+αˉt1βt1αˉt1αˉt=1(1αˉt)[αt(1αˉt1)+αˉt1αˉt(1αt)] \frac{ \sqrt{\alpha_t} (1-\bar \alpha_{t-1}) }{1-\bar \alpha_{t}} + \frac{ \sqrt{\bar \alpha_{t-1}} \beta_t }{1-\bar \alpha_{t}} \frac{1}{\sqrt{\bar \alpha_t}} = \frac{1}{ (1-\bar \alpha_{t})}\left[ \sqrt{ \alpha_{t}} (1- \bar\alpha_{t-1}) + \frac{\sqrt{\bar \alpha_{t-1}}}{\sqrt{\bar \alpha_{t}}} (1-\alpha_t) \right]

=1(1αˉt)[αtαtαt(1αˉt1)+1αt(1αt)]=1(1αˉt)αt[αt(1αˉt1)+(1αt)] = \frac{1}{ (1-\bar \alpha_{t}) }\left[ \frac{\sqrt{ \alpha_{t}}}{\sqrt{ \alpha_{t}}} \sqrt{ \alpha_{t}} (1- \bar\alpha_{t-1}) + \frac{1}{\sqrt{ \alpha_{t}}} (1-\alpha_t) \right] = \frac{1}{ (1-\bar \alpha_{t}) \sqrt{ \alpha_{t}} }\left[ \alpha_{t}(1- \bar\alpha_{t-1}) + (1-\alpha_t) \right]

=1(1αˉt)αt[αtαˉt+1αt]=1(1αˉt)αt(1αˉt)=1αt; = \frac{1}{ (1-\bar \alpha_{t}) \sqrt{ \alpha_{t}} }\left[ \alpha_{t} - \bar\alpha_{t} + 1-\alpha_t \right] = \frac{1}{ (1-\bar \alpha_{t}) \sqrt{ \alpha_{t}} }\left(1 - \bar\alpha_{t} \right) = \frac{1}{\sqrt{ \alpha_{t}}};
y que

(B.16)
αˉt1βt1αˉt1αˉtαˉt=αˉt1αˉt1αˉtβt1αˉt=βtαt1αˉt. \frac{\sqrt{\bar \alpha_{t-1}} \beta_t }{1-\bar \alpha_{t}} \frac{\sqrt{1-\bar \alpha_t}}{\sqrt{\bar \alpha_t}} = \frac{\sqrt{\bar \alpha_{t-1}} }{\sqrt{\bar \alpha_t}} \frac{\sqrt{1-\bar \alpha_t} \, \beta_t} {1-\bar \alpha_{t} } = \frac{\beta_t}{\sqrt{\alpha_t} \sqrt{1-\bar \alpha_t}}.

Sustitutendo (B.15) y (B.16) en (B.14), Finalmente tenemos que

(B.17)
μ(xt,t)=1αt[xtβt1αˉtηt] \mu(x_t,t) = \frac{1}{\sqrt{ \alpha_{t}}} \left[ x_t - \frac{\beta_t}{\sqrt{1-\bar \alpha_t}} \eta_t \right]
y de (B.10) y (B.13)

(B.18)
Σ(xt,t)=[1αˉt11αˉtβt]I. \Sigma(x_t, t) = \left[ \frac{1-\bar \alpha_{t-1}} {1-\bar\alpha_{t}} \beta_t \right] \mathbf{I} .

Lo que nos lleva a

(B.19)
xt1N(xt;μ(xt,t),Σ(xt,t).) x_{t-1} \sim \mathcal{N}\left( x_{t}; \mu(x_t,t), \Sigma(x_t, t). \right)


Nota: Agradezco los comentarios y la revisión de este documento a Luis M. Nuñez Beltrán.