las ecuaciones de esta slide
q(xt | xt−1) = 𝒩(xt; √1−βt xt−1, βt I)(Ec. 1)
el forward: cada paso encoge la imagen anterior en √(1−βt) (un poco menos de señal) y le suma ruido gaussiano de varianza βt. No hay red neuronal aquí: es una receta fija.
xt = √ᾱt x0 + √1−ᾱt ε,  ε ∼ 𝒩(0,I);   SNRt = ᾱt1−ᾱt(forma cerrada)
encadenar los t pasos colapsa en UNA fórmula: la imagen en el paso t es la original multiplicada por √ᾱt más ruido fresco con peso √(1−ᾱt). El cociente señal/ruido SNRt resume cuánta imagen queda viva. Esta fórmula es exactamente la que ejecuta el slider.
guion paso a paso
  1. Pon t = 0 y sube despacio hasta t = 200 mirando la rejilla derecha. La "Z" sigue perfectamente legible: con SNR > 1 la señal domina y el ruido es un grano fino.
  2. Sigue hasta t = 500. El SNR cae por debajo de 0.2: la forma se adivina pero cada píxel individual ya es más ruido que logo.
  3. Llega a t = 1000. Correlación con x0 ≈ 0: la rejilla es indistinguible de ruido gaussiano puro. Toda imagen acaba aquí, sea un logo, una foto o un vestido.
  4. Pulsa "otra semilla" varias veces con t = 1000. Ruidos distintos, estadísticamente idénticos: el destino del forward no depende de ε concreto, solo de t.
Comprueba que entiendes: ¿por qué basta UNA fórmula para saltar del paso 0 al paso t sin simular los t pasos?
Porque la suma de gaussianas independientes es gaussiana: encadenar t ruidos gaussianos con factores √(1−βs) equivale a un único ruido con varianza acumulada 1−ᾱt y una señal encogida √ᾱt. Por eso entrenar es barato: para cada imagen del batch se sortea un t y se fabrica xt en una sola operación, sin bucle.

Setup. La rejilla izquierda es x0: una "imagen" de juguete de 16×16 píxeles en escala de grises con una "Z" (piensa en el equipo de diseño de Zara digitalizando su logotipo). La derecha es xt, calculada píxel a píxel con la forma cerrada del panel: la misma ε sorteada con mulberry32 para que el experimento sea reproducible. Debajo, las dos curvas que gobiernan todo: √ᾱt (peso de la señal) y √(1−ᾱt) (peso del ruido), con el marcador en tu t.

Juega. El slider ejecuta la fórmula de verdad: cada posición del slider recalcula los 256 píxeles. Observa que la destrucción no es lineal: la zona interesante (donde señal y ruido pelean) está entre t ≈ 200 y t ≈ 600 con el schedule lineal. El lector da el SNR exacto, su versión en decibelios y la correlación empírica entre xt y x0.

Lee así. El forward es la mitad "tonta" de la difusión: no aprende nada, solo fabrica pares (xt, ε) que servirán de ejercicios resueltos para entrenar la red. La gracia del negocio está en la otra mitad: deshacer este proceso.

Mensaje. Destruir es fácil y barato; toda imagen termina en el mismo sitio (ruido 𝒩(0,I)). Si una red aprende a deshacer un paso de esta destrucción, podrá partir de ruido puro y fabricar imágenes nuevas: ese es el modelo que está detrás de Stable Diffusion, Midjourney y los generadores de catálogo de Inditex.

Términos. x0: imagen original (píxeles en [−1, 1]). xt: imagen tras t pasos de ruido. ε: ruido gaussiano estándar. SNR: señal/ruido; 0 dB significa "empate". mulberry32: generador pseudoaleatorio con semilla, para que el ruido sea reproducible.

las ecuaciones de esta slide
αt = 1 − βt,    ᾱt = s≤t αs(factores acumulados)
cada paso conserva una fracción αt de la varianza de la señal; ᾱt acumula multiplicando: es "la fracción de señal que sobrevive desde el principio hasta t".
ℰ[xt] = √ᾱt x0,    std(xt) = √1−ᾱt(slide del deck)
con β = (0.1, 0.2, 0.3) y x0 = 1 salen los números exactos de la slide Beamer del día: ᾱ = (0.900, 0.720, 0.504), media (0.949, 0.849, 0.710) y desviación (0.316, 0.529, 0.704). Aquí los recalculas tú moviendo cada β.
guion paso a paso
  1. Con los valores por defecto (0.1, 0.2, 0.3), compara el lector con la slide del deck. Los seis números coinciden dígito a dígito: la simulación ejecuta la misma aritmética que hiciste a mano en clase.
  2. Sube β1 a 0.5. ᾱ3 se desploma: el producto castiga para siempre un primer paso agresivo. El orden de las β no se puede compensar después.
  3. Pon las tres β en 0.01. Tras 3 pasos la señal apenas se ha movido (ᾱ3 ≈ 0.97): con β pequeñas necesitas muchos más pasos para llegar a ruido puro; por eso T ≈ 1000 en los modelos reales.
  4. Busca tres β que dejen la media final igual a la desviación final. Ese es el punto "mitad señal, mitad ruido" (ᾱ3 = 0.5): la frontera donde la imagen deja de dominar.
Comprueba que entiendes: ¿por qué la media decae como √ᾱ y no como ᾱ?
Porque el factor de encogimiento se aplica a la amplitud de la señal y las varianzas son cuadráticas: para que la varianza total de xt se mantenga en 1 cuando x0 tiene varianza 1, hace falta que los pesos al cuadrado sumen 1: (√ᾱ)² + (√(1−ᾱ))² = 1. Es la misma razón por la que en el Día 3 normalizábamos los pesos de una cartera con cuadrados: las varianzas se suman, las amplitudes no.

Setup. Reproduzco con sliders el ejemplo trabajado del deck: una "señal" escalar x0 = 1 (piensa en el valor de un píxel concreto del logo) y tres pasos de forward con β = (β1, β2, β3). Arriba, barras por paso: la media superviviente √ᾱt·x0 contra la desviación del ruido √(1−ᾱt). Abajo, la distribución completa de xt en cada paso: tres gaussianas que se aplanan y se centran hacia 0.

Juega. Cada slider recalcula αt, el producto acumulado ᾱt, las medias y las desviaciones. La pregunta de negocio escondida: ¿cuánto "presupuesto de destrucción" gastas en cada paso? Un schedule es exactamente eso: el reparto del presupuesto de ruido entre los T pasos.

Lee así. Cuando la barra dorada y la gris se cruzan, el ruido empieza a mandar. Con los valores del deck eso ocurre justo en el paso 3 (0.710 contra 0.704): la señal ya es minoría.

Mensaje. El schedule βt controla la velocidad de destrucción y no hay vuelta atrás dentro del producto: elegirlo bien es crucial para la calidad del generador. La siguiente slide compara los dos schedules estándar de la industria.

Términos. βt: fracción de varianza de ruido inyectada en el paso t. ᾱt: fracción de varianza de señal superviviente hasta t. schedule: la sucesión completa (β1,…,βT).

las ecuaciones de esta slide
lineal: βt = βmín + (βmáx−βmín) t−1T−1(DDPM)
el schedule original: β crece en línea recta de 10−4 a 0.02 (reescalado con T para que el total de ruido no dependa de T). Simple, pero gasta el presupuesto de destrucción demasiado pronto.
cosine: ᾱt = f(t/T)f(0),  f(u) = cos²(u+s1+s·π2),  s = 0.008(Nichol–Dhariwal)
el schedule moderno se define al revés: primero decides cómo quieres que caiga la señal acumulada ᾱt (un coseno suave) y de ahí despejas βt = 1 − ᾱt/ᾱt−1. El coseno arranca plano: conserva señal más tiempo.
guion paso a paso
  1. Con T = 1000, pon el cursor en t/T = 0.25. El cosine conserva ≈ 85% de la señal donde el lineal ya ha bajado a ≈ 52%: un tercio de la imagen de diferencia, con el mismo presupuesto de pasos.
  2. Lleva el cursor a t/T = 0.5 y compara los SNR en dB. El cosine va unos 10–12 dB por encima: a mitad de proceso aún hay imagen con la que trabajar.
  3. Lee en el lector el punto de media señal t½. El lineal cruza ᾱ = 0.5 hacia t/T ≈ 0.26; el cosine, hacia 0.50: literalmente "conserva señal el doble de tiempo".
  4. Baja T a 100 y vuelve a mirar las curvas de ᾱ. Apenas cambian: ambos schedules están reescalados para que el destino (ruido puro) no dependa de T. T decide la finura de los pasos, no el destino.
Comprueba que entiendes: ¿por qué "morir despacio al principio" mejora la calidad de la generación?
Los pasos con SNR intermedio son donde la red aprende la estructura de la imagen (composición, formas); los pasos con SNR ≈ 0 solo enseñan a alucinar desde ruido y los de SNR altísimo solo enseñan a copiar. El lineal malgasta la mitad de los pasos en la zona casi-ruido; el cosine reparte los pasos donde hay gradiente útil. Mismo presupuesto T, mejor curriculum: es una decisión de diseño, no de azar.

Setup. Arriba, la señal acumulada ᾱt a lo largo del proceso para los dos schedules: lineal (tinta) y cosine (dorado), ambos calculados de verdad con las fórmulas del panel para el T que elijas. Abajo, las βt correspondientes (la "inyección de ruido por paso"). La línea vertical marca el instante t/T que estás inspeccionando.

Juega. El slider de T reconstruye los dos schedules completos (cientos de productos acumulados); el cursor t/T lee ᾱ, SNR y SNR en dB de cada schedule en ese instante. Nada está precocinado: si cambias T, las β lineales se reescalan y el cosine se reevalúa punto a punto.

Lee así. La diferencia clave no está en el final (ambos llegan a ruido puro) sino en el camino: el cosine mantiene la curva ᾱ alta y plana al principio y concentra la destrucción en el tramo final.

Mensaje. Cuando Stable Diffusion genera la foto del producto para el catálogo, la calidad del detalle fino depende de cuántos pasos de denoising caen en la zona de SNR útil. El schedule es la palanca silenciosa que decide eso, y el cosine es hoy el estándar por esta razón exacta.

Términos. t½: primer paso con ᾱ < 0.5 ("media señal"). dB: decibelios, 10·log10(SNR); 0 dB = empate señal/ruido. DDPM: el modelo de difusión original (Ho et al., 2020), con schedule lineal.

las ecuaciones de esta slide
xt(i) = √ᾱt x0(i) + √1−ᾱt ε(i),  i = 1…400(cada punto)
la misma forma cerrada de la slide 1, aplicada ahora a 400 puntos en 2D a la vez: cada cliente/punto se encoge hacia el origen y recibe su propio ruido.
pt(x) = 1nΣi 𝒩(x; √ᾱt x0(i), (1−ᾱt) I)  ⟹  xT ∼ 𝒩(0, I)
la distribución exacta en el paso t es una mezcla de n gaussianas diminutas centradas en los puntos encogidos. Cuando ᾱt → 0 todas las medias colapsan en 0 y la varianza tiende a 1: cualquier dataset difunde hacia la misma 𝒩(0,I). La curva dorada del histograma es esta mezcla, evaluada de verdad.
guion paso a paso
  1. Con t = 0, mira la nube: es una espiral nítida. Estructura imposible de describir con media y varianza: esto es lo que un modelo gaussiano clásico jamás capturaría.
  2. Sube t a 300 y mira el histograma de la coordenada x₁. Las jorobas de la espiral se funden; la curva dorada (mezcla exacta) empieza a parecerse a la campana negra discontinua (𝒩(0,1)).
  3. Sube t a 1000 y lee la distancia KS del lector. KS < 0.05: estadísticamente indistinguible de la gaussiana estándar. La espiral ha muerto del todo.
  4. Pulsa "otra semilla" en t = 1000. Otra nube, misma campana: el punto final del forward es universal, y por eso el generador puede ARRANCAR siempre desde 𝒩(0,I).
Comprueba que entiendes: ¿por qué es tan importante que el destino sea SIEMPRE 𝒩(0,I), sea cual sea el dataset?
Porque en generación se recorre el camino al revés: hace falta un punto de partida del que sepamos muestrear gratis. Si el forward acabara en una distribución que dependiera de los datos, muestrear el punto de partida sería tan difícil como el problema original. La universalidad de 𝒩(0,I) convierte "generar una imagen nueva" en "sortear ruido y deshacerlo", y eso vale igual para espirales, fotos de producto o segundos de audio.

Setup. En vez de una imagen, ahora difundo un dataset: 400 puntos en 2D con forma de espiral (imagínalo como el embedding 2D de los clientes de un e-commerce: estructura fuerte, nada gaussiana). Arriba, la nube original (gris) y la nube difundida xt (dorado), punto a punto con la forma cerrada. Abajo, el histograma de la primera coordenada de xt, con dos curvas encima: la mezcla exacta pt (computada con las 400 gaussianas del panel) y la 𝒩(0,1) objetivo, discontinua.

Juega. El slider mueve los 400 puntos de verdad y recalcula el histograma, la mezcla exacta y el estadístico de Kolmogorov–Smirnov contra 𝒩(0,1). Mira cómo la convergencia es gradual: primero se pierde la estructura fina (los brazos), luego la global (el hueco central).

Lee así. El lector da media y desviación empíricas de la coordenada y la distancia KS. La media va a 0, la desviación a 1, y KS decae: tres números contando la misma historia que tus ojos.

Mensaje. El forward es un puente entre "tus datos" (cualquier cosa: espirales, catálogos, voces) y una distribución universal y muestreable. La generación consiste en cruzar ese puente en sentido contrario, y eso exige una sola pieza nueva: saber en cada punto hacia dónde está "menos ruido". Esa pieza es la red εθ de las dos slides siguientes.

Términos. mezcla exacta pt: densidad verdadera del dataset difundido (una gaussiana por punto). KS: distancia de Kolmogorov–Smirnov, máx |Femp − Φ|; 0 = idénticas. marginal: distribución de una sola coordenada de la nube.

las ecuaciones de esta slide
ℒ = ℰt, x0, ε[ ‖ε − εθ(xt, t)‖² ](la loss de entrenamiento)
la red solo hace una cosa: mirar la imagen ruidosa xt y el paso t, y adivinar qué ruido ε se añadió. Error cuadrático puro, como una regresión del Día 2.
ε(x, t) = ℰ[ε | xt = x] = −√1−ᾱt ∇x log pt(x)(el óptimo)
el mejor predictor posible bajo esa loss es la media condicionada del ruido, y coincide (salvo signo y escala) con el score ∇log pt: la dirección de "subida" de la densidad. Aquí, con una mezcla de gaussianas conocida, ε se calcula en cerrado: la curva dorada es la red perfecta.
guion paso a paso
  1. Pon t = 1000 y mira la curva dorada del panel inferior. ε(x) ≈ x, la recta identidad: si todo es ruido, la mejor respuesta a "¿qué ruido hay?" es "todo lo que ves". Problema trivial.
  2. Baja a t = 400. La curva se ondula: la red ya debe saber dónde están los modos de los datos para descontar la parte de x que es señal.
  3. Baja a t = 50 y mira la pendiente máxima en el lector. La curva se vuelve casi escalonada entre modos: con poco ruido, equivocarse de modo cuesta carísimo y la respuesta cambia bruscamente. Problema fino.
  4. Observa a la vez el panel superior. Con t pequeño los modos de pt están separados: la dificultad de ε vive exactamente en las fronteras entre modos, donde la densidad es casi cero.
Comprueba que entiendes: si predecir ε con t = 1000 es trivial, ¿por qué no entrenar solo con t pequeños?
Porque en generación la red empieza trabajando en t = T: sin los pasos de mucho ruido no sabría dar el primer brochazo desde ruido puro. Y sin los t pequeños no sabría rematar el detalle. La loss sortea t al azar precisamente para cubrir todo el espectro de dificultad: los t grandes enseñan composición global barata, los t pequeños enseñan el detalle fino caro. Es un curriculum completo dentro de una sola función de pérdida.

Setup. Datos en 1D con distribución conocida: una mezcla de tres gaussianas (piensa en tres segmentos de gasto de clientes: bajo, medio, premium). Como conozco p0 exactamente, puedo calcular en cerrado la densidad difundida pt y el predictor óptimo de ruido ε(x, t): lo que una red εθ perfectamente entrenada respondería. Arriba: p0 (gris) y pt (tinta). Abajo: la curva ε(x) con la recta identidad discontinua como referencia, y la estimación de señal 0(x) que se deduce de ella.

Juega. El slider de t recalcula la mezcla difundida y las dos curvas punto a punto (200 evaluaciones del score en cerrado por fotograma). El lector muestra el SNR y la pendiente máxima de ε: un proxy honesto de la dificultad del problema de regresión que la red afronta en ese t.

Lee así. Con mucho ruido la solución es casi lineal (fácil de aprender, poca información); con poco ruido es casi discontinua (difícil, pero es donde se juega la nitidez). La curva x̂0 cuenta lo mismo al revés: con t grande colapsa a la media global; con t pequeño se pega a la identidad.

Mensaje. "Aprender a generar" se reduce a una regresión: predecir el ruido añadido. Nada de adversarios (GANs) ni de verosimilitudes intratables: una loss cuadrática estable que escala a miles de millones de imágenes. Esta es la razón ingenieril del triunfo de la difusión.

Términos. score: gradiente del log de la densidad, apunta hacia donde hay más datos. εθ: red (U-Net o DiT) que aproxima ε. 0: estimación de la señal limpia implícita en la predicción de ruido: (x − √(1−ᾱ) ε)/√ᾱ.

las ecuaciones de esta slide
pθ(xt−1 | xt) = 𝒩(xt−1; μθ(xt, t), σ̃t² I)(Ec. 2)
μθ(xt, t) = 1√αt(xtβt√1−ᾱt εθ(xt, t)),   σ̃t² = 1−ᾱt−11−ᾱt βt
la receta del paso inverso: a xt le restas la porción de ruido que toca en este pasot/√(1−ᾱt) veces la predicción de la red), reamplificas dividiendo por √αt (deshaces el encogimiento del forward), y añades una pizca de ruido fresco σ̃t. Generar = aplicar esto T veces desde ruido puro.
guion paso a paso
  1. Con t = 400, mueve xt de −3 a 3 mirando la flecha del panel superior. La flecha siempre apunta hacia el modo más cercano de los datos: el paso inverso es "un empujoncito hacia donde hay densidad".
  2. Colócate entre dos modos (xt ≈ −0.6 con t = 200). La flecha se encoge: la red duda y el empujón es tímido. La pizca de ruido σ̃t es la que romperá el empate en pasos sucesivos.
  3. Sube t a 950 sin mover xt. La campana dorada pθ(xt−1|xt) es ancha y el empujón minúsculo: al principio del denoising solo se decide lo grueso.
  4. Baja t a 20. La campana es estrechísima y está casi encima de x̂0: los últimos pasos apenas mueven nada, solo pulen. Compara con la curva μ(x) del panel inferior: ya es casi la identidad.
Comprueba que entiendes: ¿por qué el paso inverso añade ruido σ̃t si lo que queremos es QUITAR ruido?
Porque el inverso de un proceso estocástico es estocástico: condicionar en xt no determina xt−1, solo su distribución. Si sustituyes esa distribución por su media (ruido cero en cada paso), colapsas la diversidad: todas las generaciones desde ruidos parecidos acabarían en la misma imagen "promedio", borrosa. El ruido por paso es lo que hace que de un mismo prompt salgan mil variantes de diseño distintas, que es justo lo que Zara compra.

Setup. La misma mezcla 1D de la slide anterior, pero ahora ejecuto un paso entero de generación con la Ec. 2: en la posición xt que elijas, calculo la predicción óptima ε (la "red perfecta"), la convierto en la media μθ con la fórmula del panel y dibujo la distribución completa del paso anterior: la campana dorada. El punto dorado es xt, la flecha va de xt a μθ, y el rombo 0 es la imagen limpia que la red "tiene en mente" en ese instante. Abajo: μθ(x) y x̂0(x) como funciones de x, para el t elegido.

Juega. Los dos sliders alimentan la fórmula real: cambiar t cambia βt, ᾱt y σ̃t; cambiar xt cambia la predicción de la red. El lector imprime los cuatro números del paso: ε̂, x̂0, μθ y σ̃t.

Lee así. El paso inverso NO salta directamente a x̂0: se mueve solo una fracción hacia ella y conserva incertidumbre. La generación es una negociación de T rondas entre lo que la red cree y el azar que mantiene la variedad.

Mensaje. Esta fórmula, aplicada T veces con una U-Net dentro, ES Stable Diffusion. Todo lo demás (texto, latentes, guidance) son mejoras alrededor de este bucle. En la siguiente slide lo ejecutamos completo en 2D y medimos cuánto cuesta cada paso.

Términos. μθ: media del paso inverso (dónde "cree" la red que estaba xt−1). σ̃t: desviación del ruido fresco del paso inverso. 0: estimación de la señal limpia implícita en ε̂; cambia (y mejora) en cada paso.

las ecuaciones de esta slide
0 = xt − √1−ᾱt ε̂√ᾱt,   xt′ = √ᾱt′ x̂0 + √1−ᾱt′ ε̂(salto DDIM t→t′)
el muestreador DDIM: estima la imagen limpia, y re-proyecta directamente al nivel de ruido t′ < t. Permite saltar de 1000 pasos a K = 20 sin reentrenar: K es el dial coste/calidad que mueves abajo.
∇ log pt(x) = Σk rk(x) √ᾱt mk − xᾱt sk² + 1−ᾱt,  ε̂ = −√1−ᾱt ∇ log pt(score exacto)
como el objetivo es una mezcla de gaussianas conocida, el score se calcula en cerrado (rk = responsabilidad de cada componente): aquí no hay red que pueda fallar, así que TODO el error que midas es del muestreador y de su número de pasos K.
guion paso a paso
  1. Pulsa "animar el denoising" con K = 16. La nube gaussiana inicial se organiza sola en los tres islotes de la densidad objetivo: estás viendo la integración de la ODE inversa, paso a paso, con el score de verdad.
  2. Baja K a 2 y vuelve a animar. Dos brochazos no bastan: las muestras caen entre los modos y la distancia de energía del lector se dispara.
  3. Sube K despacio de 2 a 80 mirando el panel inferior. La curva calidad–coste cae en picado hasta K ≈ 15–25 y luego se aplana: a partir de ahí pagas cómputo casi sin mejorar.
  4. Pulsa "otra semilla" con K fijo. La curva se recalcula con otras muestras y la rodilla apenas se mueve: el trade-off es estructural, no ruido de una corrida.
Comprueba que entiendes: ¿por qué la calidad se ESTANCA a partir de cierto K en vez de seguir mejorando?
Con el score exacto, el único error del muestreador es el de discretización de la trayectoria continua, que decae al refinar los pasos; cuando ese error cae por debajo del error estadístico de comparar dos muestras finitas (250 puntos contra 250), la métrica toca suelo y ya solo mide ruido muestral. En producción hay además un tercer error que aquí no existe (el de la red εθ imperfecta), y por eso los generadores comerciales viven en K = 20–50: más allá, pagas GPU para pulir un error que no es el dominante.

Setup. Objetivo: una mezcla de tres gaussianas en 2D (el "dataset" que queremos aprender a generar; el fondo dorado es su densidad verdadera). Parto de 250 puntos de ruido 𝒩(0,I) y los integro hacia atrás con DDIM usando el score exacto del panel: una "red perfecta" sin error de aprendizaje. La calidad se mide en vivo con la distancia de energía entre las 250 muestras generadas y 250 muestras de verdad de la mezcla (misma semilla de referencia): 0 = distribuciones indistinguibles.

Juega. K es el número de evaluaciones de la red por imagen (NFE): el coste de generación es lineal en K. El panel inferior traza la distancia de energía para K = 2…80 (cada punto es una corrida completa del muestreador) con tu K marcado; el lector añade el tiempo real de cómputo de tu corrida, medido con el reloj del navegador.

Lee así. La curva tiene la forma universal de los muestreadores de difusión: error de discretización que cae rápido y suelo estadístico. La "rodilla" es el punto de operación económicamente racional.

Mensaje. Cuando contratas una API de imagen, el parámetro "steps" es exactamente este K: cobran cómputo proporcional a K y la calidad satura. Quien genera 10.000 variantes de catálogo a K = 50 pudiendo trabajar a K = 25 está pagando el doble de GPU por nada visible. El trade-off pasos–calidad–coste es una decisión de negocio medible, no una superstición.

Términos. NFE: number of function evaluations, pasadas de red por muestra. DDIM: muestreador determinista que salta entre niveles de ruido. distancia de energía: 2ℰ|X−Y| − ℰ|X−X′| − ℰ|Y−Y′|; métrica entre distribuciones computable con muestras.

las ecuaciones de esta slide
ε̂ = εθ(xt, t, ∅) + w (εθ(xt, t, c) − εθ(xt, t, ∅))(Ec. 3, CFG)
classifier-free guidance: dos pasadas de la misma red, una con el prompt c y otra sin él (∅), y se extrapola en la dirección que separa ambas. w = 0 ignora el prompt; w = 1 es el modelo condicionado puro; w > 1 exagera la dirección del prompt. Aquí las dos predicciones son scores exactos de mezclas conocidas, así que el efecto de w se ve sin ruido de red.
pw(x) ∝ p(x|c)w p(x)1−w(qué distribución muestrea CFG)
subir w equivale a elevar la densidad condicionada a una potencia: afila los modos de la clase y mata las zonas ambiguas. Por eso con w alto las muestras se concentran… y con w altísimo colapsan en picos sobresaturados.
guion paso a paso
  1. Pon w = 0. Las muestras se reparten entre las DOS clases (≈ 50% en A): sin guidance, el prompt no pinta nada.
  2. Sube a w = 1. ≈ 100% de las muestras caen en la clase A y la distancia de energía a la clase A toca su mínimo: este es el modelo condicionado "honesto".
  3. Sigue hasta w = 7.5 (el default de Stable Diffusion). Siguen en A, pero la dispersión del lector cae: las muestras se apiñan en los centros de los modos. Más fidelidad, menos variedad.
  4. Llega a w = 15. La distancia de energía VUELVE a subir aunque el 100% siga en A: las muestras ya no representan la clase, son caricaturas apiñadas en dos puntos. Este es el equivalente 2D de los colores quemados.
Comprueba que entiendes: el 100% de las muestras está en la clase A tanto con w = 2 como con w = 15. ¿Por qué decimos que w = 15 es peor?
Porque "estar en la clase" no es el objetivo: el objetivo es muestrear la distribución de la clase. Con w = 15 muestreas p(x|c) elevada a una potencia enorme: toda la masa se concentra en los máximos y la diversidad desaparece (mira la dispersión del lector). En negocio eso es un catálogo donde las 10.000 variantes son casi la misma imagen saturada: cobertura de clase perfecta, valor comercial nulo. La métrica honesta es distribucional (distancia de energía), no un clasificador.

Setup. El dataset tiene dos clases en 2D: la clase A (dos modos, izquierda; el fondo dorado es su densidad) y la clase B (dos modos, derecha). El prompt c = "clase A". Genero 250 muestras con DDIM a 40 pasos usando la fórmula CFG del panel con dos scores exactos: el condicional (mezcla de A) y el incondicional (mezcla de las cuatro componentes). Es el mismo mecanismo con el que "vestido rojo de gala" guía a Stable Diffusion, destilado a su esqueleto matemático.

Juega. El slider de w re-muestrea de verdad las 250 trayectorias. El panel inferior muestra las dos métricas en función de w (curva calculada en vivo para 9 valores de w): la fracción de muestras que un clasificador bayesiano asigna a A (tinta) y la distancia de energía a una muestra de referencia de la clase A (dorado). El lector añade la dispersión de la nube generada.

Lee así. La fracción-A sube con w y satura; la distancia de energía tiene forma de U: mejora hasta w ≈ 1–3 y se degrada después. El óptimo comercial está donde la U toca fondo, no donde el clasificador dice 100%.

Mensaje. CFG es a difusión lo que la temperatura es a los LLMs: un dial continuo entre variedad y obediencia al prompt. En producción publicitaria se trabaja en w = 5–8; para exploración creativa, w = 2–3; w > 10 solo para depurar. Y como Netflix con sus carátulas personalizadas: la fidelidad al concepto no puede pagarse con la muerte de la diversidad.

Términos. c: condición (embedding del prompt). : condición vacía (la red entrenada a ratos sin prompt). w: peso de guidance. clasificador bayesiano: asigna a la clase con mayor p(clase|x); aquí computable en cerrado.

las ecuaciones de esta slide
compresión = H·W·3(H/f)·(W/f)·c = 3 f ²c(autoencoder, SD: f = 8, c = 4 ⇒ 48×)
la difusión latente no trabaja sobre los píxeles sino sobre un resumen z de la imagen producido por un autoencoder: H/f × W/f posiciones con c canales. Para Stable Diffusion, 1024×1024×3 píxeles se convierten en 128×128×4 números: 48 veces menos.
FLOPs ≈ K·L·(12 n d ² + 2 n² d),   n = (H2f)2(K pasos, L capas, anchura d)
el coste de generar: K pasos de denoising por L capas de transformer; en cada capa, el término MLP crece lineal en el número de tokens n y la atención crece cuadrática (n²). Como n cae con f ², la atención cae con f ⁴: ahí está la magia económica del latente.
guion paso a paso
  1. Con H = 1024 y f = 8, lee el ratio de FLOPs del lector. Generar en píxeles cuesta del orden de 1000 veces más que en el latente: de "minutos de GPU por imagen" a "menos de un segundo".
  2. Baja f a 1 (sin latente) y mira la barra de atención. La atención devora el presupuesto: con 262.144 tokens, el término n² es astronómico. Esto es lo que hacía inviable la difusión en píxeles a alta resolución.
  3. Vuelve a f = 8 y sube H a 2048. El coste latente crece pero sigue siendo manejable: el autoencoder absorbe el golpe de la resolución.
  4. Dobla K de 50 a 100 con todo lo demás fijo. El coste se duplica exactamente: K es lineal, sin sorpresas. Combinado con la slide del trade-off pasos–calidad, ya puedes presupuestar una campaña.
Comprueba que entiendes: ¿por qué la atención cae con f ⁴ si la compresión espacial es "solo" f ²?
El número de tokens n cae con f ² (es una rejilla 2D: cada eje se divide por f). La atención compara todos los tokens con todos: cuesta n², así que cae con (f ²)² = f ⁴. Con f = 8 eso es un factor 4096 solo en atención. La parte MLP cae "solo" con f ² = 64. Por eso en píxeles domina la atención y en el latente vuelve a dominar el MLP: el latente no solo abarata, reequilibra la arquitectura.

Setup. La cuenta económica que explica por qué Stable Diffusion se llama "stable" y cabe en una GPU de consumo. Arriba: FLOPs totales por imagen (escala log10) generando en espacio de píxeles contra el espacio latente con tu f, separando la parte de atención (tono oscuro) y la de MLP/convolución (tono claro). Abajo: el coste total en función de la resolución, para ambos regímenes, con tu H marcada. El modelo de coste es el del panel: L = 24 capas, anchura d = 1024, parches de 2×2.

Juega. Todos los números salen de la fórmula en vivo: tokens n, FLOPs de atención y de MLP, ratio píxel/latente, y la traducción a negocio: segundos de una GPU de 200 TFLOP/s efectivos y céntimos de euro a 2.50 €/h de GPU.

Lee así. El eje vertical es logarítmico: cada rayita es 10×. La distancia vertical entre las dos curvas del panel inferior ES el modelo de negocio de la difusión latente.

Mensaje. Los $0.01–0.04 por imagen que viste en la tabla de familias multimodales no son arbitrarios: son FLOPs × precio de GPU con margen. Cuando el proveedor te cobra por "imagen HD" o por "steps", ahora sabes exactamente qué recurso físico estás comprando y por qué el latente lo hizo asequible.

Términos. z, latente: representación comprimida de la imagen donde se ejecuta la difusión. f: factor de reducción espacial del autoencoder. token: parche de la rejilla que procesa el transformer. FLOPs: operaciones de coma flotante; la moneda física del cómputo.

las ecuaciones de esta slide
CosteIA = nimg pimg + svid pvid + maud paud + ncopy pcopy(suma de unidades × precio unitario)
el coste de una campaña generativa es una suma de productos: cada familia multimodal tiene su unidad natural (imagen, segundo de vídeo, minuto de audio, pieza de copy) y su precio de mercado 2026. La nota técnica del día da los rangos: imagen 0.01–0.04 $, vídeo 0.50–2 $ por clip de 5–10 s, audio 0.05–0.30 $/min.
factor de ahorro = CostetradicionalCosteIA(el "×500" del deck, recalculado por ti)
el deck del día estima ≈ 85 € de IA contra ≈ 50.000 € de agencia para las 1.000 creatividades de Mercadona. Ese factor no incluye la selección humana, el control de marca ni la revisión legal: mide escala, no calidad puntual.
guion paso a paso
  1. Reproduce la campaña Mercadona del deck: 1.000 imágenes a 0.04 €, 1.000 copys, audio ≈ 167 min (1.000 cuñas de 10 s) y 0 s de vídeo. El total IA sale ≈ 70–90 €, contra decenas de miles del equivalente tradicional: el factor ×500 del deck aparece solo.
  2. Simula el catálogo Inditex: 10.000 imágenes, resto a cero. 400 € de IA contra 500.000 € de sesiones de foto: una tarde de GPU contra meses de estudio. Es la slide de Zara del deck, en números.
  3. Añade 300 s de vídeo. El vídeo se convierte enseguida en la partida dominante del coste IA: la barra de vídeo adelanta a la de imagen. Cada segundo de vídeo cuesta como 5 imágenes.
  4. Sube el precio de imagen al máximo (0.08 €). Incluso doblando el precio de mercado, el factor de ahorro apenas baja: la conclusión es robusta al precio, lo que cambia el negocio es la unidad.
Comprueba que entiendes: si la IA es 500 veces más barata, ¿por qué el deck insiste en que el factor real es quizá 20–25 veces?
Porque el coste de generación es solo una parte del coste de la campaña: alguien tiene que escribir prompts, seleccionar entre miles de variantes, verificar el manual de marca y pasar revisión legal. Ese trabajo humano no se divide por 500. El ahorro real está en la parte escalable (producir variantes), no en la parte de criterio (elegir y responder por ellas). Aun así, dividir por 20 una partida de 50.000 € sigue siendo un argumento de negocio contundente.

Setup. La calculadora de la campaña multimedia del deck, en vivo. Cada slider fija unidades y precio de una familia multimodal; la tabla central recalcula el coste IA, el equivalente tradicional (sesión de fotos a 50 €/imagen, productora a 600 €/s de vídeo final, estudio de locución a 200 €/min, copy de agencia a 30 €/pieza) y el factor por partida. El gráfico compara ambos mundos en escala logarítmica, porque en lineal las barras de IA ni se verían.

Juega. Los cuatro escenarios del guion son casos del curso: Mercadona (Navidad), Inditex (catálogo), un spot con vídeo generativo y un test de sensibilidad al precio. El lector mantiene siempre el total IA, el total tradicional y el factor de ahorro.

Lee así. En escala log, "barras a la misma altura" significa "mismo orden de magnitud". El factor de ahorro vive en la distancia vertical entre los dos bloques de barras.

Mensaje. El coste multimodal se presupuesta por unidad generada y se acumula rápido en campañas grandes; el riesgo de negocio no es el precio por imagen sino el descontrol del volumen (y el coste oculto del vídeo). Esta tabla es el esqueleto del ejercicio de la práctica: storyboard de 4 imágenes + voz en off, presupuestado antes de generarlo.

Términos. unidad natural: lo que factura cada familia (imagen, segundo, minuto, pieza). equivalente tradicional: coste de producir lo mismo con agencia/estudio. factor de ahorro: cociente entre ambos; mide escala, no calidad.

1 — Forward: destruir es fácil
Slides: Forward img · A mano · Schedule β · Nube 2D
"Una receta fija mezcla la imagen con ruido gaussiano: xt = √ᾱt x0 + √(1−ᾱt) ε. El schedule βt reparte el presupuesto de destrucción (el cosine conserva señal el doble de tiempo que el lineal) y CUALQUIER dataset acaba en la misma 𝒩(0,I): un punto de partida universal y gratis para generar."
2 — La red: una regresión de ruido
Slide: Predecir ε
"Toda la 'inteligencia' del generador es una regresión cuadrática: predecir el ruido añadido. El predictor óptimo es el score reescalado, fácil con mucho ruido (la identidad) y fino con poco (casi un escalón entre modos): por eso la loss sortea t y cubre todo el espectro de dificultad."
3 — Reverse: generar es integrar
Slides: Paso inverso · Reverse 2D
"La Ec. 2 convierte la predicción de ruido en un empujón hacia los datos, T veces desde ruido puro. Con DDIM los T = 1000 pasos se comprimen en K = 20–50: la calidad cae en picado hasta la rodilla y luego satura, así que cada paso extra es coste sin retorno. El parámetro 'steps' de la API es exactamente este dial."
4 — Control: guidance
Slide: Guidance
"Dos pasadas de la misma red (con y sin prompt) y una extrapolación con peso w: el dial entre variedad y obediencia. La métrica honesta es distribucional: la fracción-en-clase satura mientras la distancia de energía dibuja una U. Producción publicitaria: w = 5–8; nunca confundas 100% de clase con calidad."
5 — Escala y negocio
Slides: Latente · Coste €
"Difundir en el latente (f = 8, c = 4) divide los tokens por 64 y la atención por 4096: de ahí los $0.01–0.04 por imagen. Con precios por unidad natural, la campaña se presupuesta en una tabla: Mercadona ≈ 85 € contra 50.000 € de agencia, factor que mide escala, no calidad, y que el vídeo erosiona más rápido que nada."

En una frase. La generación multimodal es un proceso de ruido invertido por una regresión, acelerado en un espacio comprimido y gobernado por dos diales (pasos y guidance) cuyo coste y calidad se miden en euros por unidad: quien entiende la cadena puede presupuestar una campaña; quien no, solo puede maravillarse con la demo.

Garrido-Merchán — ecgarrido@comillas.edu — Deep Learning para Business Analytics — Día 12 · Generación multimodal y difusión