🧮 Computational Mathematics

Inicio · Parte 16 — Matemática de Transformers, modelos generativos, grafos y RL

334 — Diffusion models: forward process

experto clase 14 de 20 4 horas demostración diffusion_forward

El proceso directo permite saltar a cualquier paso sin simular los anteriores.

Fórmulas

x_t = √ᾱ_t·x₀ + √(1−ᾱ_t)·ε
ᾱ_t = Π_{s≤t} (1 − β_s)
horario β: de 1e-4 a 0,02

Desarrollo

El proceso directo de difusión destruye progresivamente una muestra añadiendo ruido gaussiano según un horario fijo. Tras suficientes pasos, lo que queda es indistinguible de ruido puro. Este proceso no tiene parámetros aprendidos: es una definición.

Su propiedad más importante es computacional. Como la composición de ruidos gaussianos es gaussiana, existe una fórmula cerrada que da x_t directamente a partir de x₀ sin simular los t−1 pasos intermedios. Sin ella, entrenar exigiría recorrer secuencialmente hasta el paso deseado, y el coste sería prohibitivo.

Con esa fórmula, el entrenamiento es sencillo: se toma una muestra, se elige un t al azar, se salta directamente a x_t y se pide a la red que prediga el ruido añadido. Cada paso de entrenamiento cuesta lo mismo independientemente de t.

El horario de ruido —cómo crece β con t— resulta importar bastante. El horario lineal original funciona, y los horarios coseno posteriores destruyen la información de forma más gradual y mejoran la calidad. Es un ejemplo de hiperparámetro que parecía menor y resultó tener efecto sustancial.

Ejemplo trabajado

Horario de 20 pasos y señal conservada.

T = 20      β de 0,0001 a 0,02

 t     ᾱ_t        señal conservada
 0   0,999900         99,995 %
 5   0,98xxxx         ~99 %
10   0,94xxxx         ~97 %
15   0,879869         ~93,8 %
20   0,80xxxx         ~89 %

Fórmula: x_t = √ᾱ_t·x₀ + √(1−ᾱ_t)·ε

Con t = 15:
  √ᾱ = 0,938     √(1−ᾱ) = 0,347
  la señal aún domina sobre el ruido

Salto directo: para entrenar en t = 15 no hace falta
simular los 14 pasos anteriores.

Qué calcula el laboratorio

Proceso directo de difusión: ruido añadido con horario fijo.

python classes/part-16-matematica-de-transformers-modelos-generativos-grafos-y-rl/334-diffusion-models-forward-process/lab.py
compmath run 334

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "pasos_T": 20,
  "beta_inicial": 0.0001,
  "beta_final": 0.02,
  "formula": "x_t = √ᾱ_t·x₀ + √(1-ᾱ_t)·ε",
  "traza": [
    {
      "t": 0,
      "alpha_barra": 0.9999,
      "señal_conservada_%": 99.995,
      "media_empirica": 0.9997,
      "media_teorica": 0.9999,
      "varianza_teorica": 0.0001
    },
    {
      "t": 5,
      "alpha_barra": 0.98379043,
      "señal_conservada_%": 99.1862,
      "media_empirica": 0.9936,
      "media_teorica": 0.9919,
      "varianza_teorica": 0.01621
    },
    {
      "t": 10,
      "alpha_barra": 0.94277893,
      "señal_conservada_%": 97.0968,
      "media_empirica": 0.9759,
      "media_teorica": 0.971,
      "varianza_teorica": 0.057221
    },
    {
      "t": 19,
      "alpha_barra": 0.8167771,
      "señal_conservada_%": 90.3757,
      "media_empirica": 0.9249,
      "media_teorica": 0.9038,
      "varianza_teorica": 0.183223
    }
  ],
  "salto_directo_a_cualquier_t": "no hace falta simular los t-1 pasos previos"
}

Errores comunes

Dónde se usa

Stable Diffusion, DALL-E, generación de audio y vídeo, y modelos de difusión sobre datos estructurados.

Idea rectora de la parte

El ELBO acota inferiormente la log-verosimilitud con un término de reconstrucción y uno KL.

Error a evitar

Confundir temperatura alta con mayor calidad en lugar de mayor entropía.

Conexión con IA

Esta parte es la traducción matemática directa de los papers que definen el estado del arte actual.

Bibliografía de la clase

Archivos de la clase