En el mundo real, los datos se distribuyen de acuerdo con una probabilidad desconocida p(x)p(x). En este contexto, se asume la existencia de un modelo latente que gobierna estos datos, expresado como p(x,z)p(x, z). Para aprender este modelo, se propone una distribución alternativa, más tractable, q(x,z)q(x, z), que puede ser efectivamente estimada utilizando algún método de optimización, en nuestro caso, el descenso de gradiente implementado a través de una red neuronal. Para completar la explicación, presentamos nuevamente el criterio de optimización:

ELBO=Eq(zx)[logp(xz)]KL(q(zx),p(z))ELBO = \mathbb{E}_{q(z|x)}[\log p(x|z)] - KL(q(z|x), p(z))

Volvamos a desglosar lo que tenemos aquí. Siguiendo la idea del VAE, p(xz)p(x|z) corresponde al decodificador y q(zx)q(z|x) al codificador. Nuestras redes neuronales serán entrenadas para maximizar el ELBO, lo que implica dos tareas separadas: (1) Maximizar la probabilidad de los datos xx, obtenidos de los estados latentes zz codificados por nuestra red codificadora, y (2) Minimizar la distancia de Kullback-Leibler (KL) entre los estados latentes encontrados por nuestro codificador y la distribución prioritaria del estado latente en el mundo real p(z)p(z) (recordemos: esta distribución prioritaria es nuestra suposición de modelado). Así, tenemos criterios de entropía cruzada aplicados a la salida del VAE y criterios de KL aplicados para estimar la parte estocástica del codificador. Este enfoque para derivar una función objetiva de aprendizaje es conocido como el principio variacional para estimar modelos generativos. Además, dado que ELBO puede escribirse como energía libre, también se le conoce como la energía libre variacional.

Para facilitar el retropropagación, la implementación de VAE se realiza mediante un truco denominado "reparametrización", que ha sido clave para la popularidad moderna del VAE. En lugar de estimar el codificador por métodos de muestreo, la distribución normal del prior latente zz se distribuye con una media μ\mu y varianza σ2\sigma^2. Esto se puede escribir como una transformación de una variable gaussiana de media cero y varianza unitaria εN(0,σ2)\varepsilon \sim N(0, \sigma^2), es decir, x=σ2ε+μx = \sigma^2 \varepsilon + \mu. Este proceso se implementa eficazmente dibujando una variable aleatoria ε\varepsilon y luego multiplicando su valor por la varianza y añadiendo la media. La figura 6.1 ilustra este proceso de reparametrización.

Este truco de reparametrización se puede generalizar para distribuciones gaussianas multivariantes con un vector de medias y una matriz de covarianzas. Los parámetros de la distribución prior son estimados minimizando la distancia KL entre la codificación y el prior. La expresión KL puede escribirse explícitamente como:

KL(N(μ,σ)N(0,1))=σ2+μ2logσ12KL(N(\mu, \sigma) \| N(0, 1)) = \sigma^2 + \mu^2 - \log \sigma - \frac{1}{2}

La implementación de VAE utiliza dos redes neuronales como aproximaciones funcionales para estimar los parámetros de media y varianza, donde la expresión de KL sirve como función de pérdida para el procedimiento de retropropagación. Un aspecto importante a señalar sobre lo que precede a estas redes es que los datos de entrada se codifican mediante una red neuronal que mapea xx a zz, y luego la media y varianza se obtienen mediante dos redes completamente conectadas que implementan el truco de reparametrización. El tipo de codificación de xx a zz depende del tipo de datos, y puede ser tan simple como una capa densa o tan compleja como una red convolucional profunda. Además, dado que p(xz)p(x|z) en la salida de la red es una distribución gaussiana, la entropía cruzada en la salida puede aproximarse promediando la distancia euclidiana entre los valores decodificados y los valores reales de los datos, una expresión que aparece en el exponente de la función de probabilidad gaussiana.

En este sentido, dado que p(xz)N(μ,σ2I)p(x|z) \sim N(\mu, \sigma^2 I), podemos estimar el parámetro de la media promediando sobre los datos reconstruidos por el decodificador μ^=Eq(zx)[x^]\hat{\mu} = \mathbb{E}_{q(z|x)}[x̂]. Por lo tanto, para estimar Eq(zx)[logp(xz)]\mathbb{E}_{q(z|x)}[\log p(x|z)], tomamos una media aproximada promediando sobre múltiples muestras de reconstrucción codificación-decodificación x^:

logp(xz)logexp(xμ^2)(xx^)2\sum \log p(x|z) \sim \log \exp(-\| x - \hat{\mu} \|^2) \sim - (x - \hat{x})^2

El código de ejemplo que sigue muestra cómo implementar un VAE simple utilizando un Perceptrón Multicapa (MLP) en PyTorch.

En cuanto a la estimación de los parámetros del modelo mediante ELBO, la codificación de datos de manera no supervisada se realiza con frecuencia utilizando VAE. Alemi et al. (2018) demostraron que la maximización del ELBO es equivalente a la minimización de I(X,Z)I(X, Z) para el codificador VAE, con un requisito adicional de minimización del error de reconstrucción del decodificador D(X,Z)D(X, Z). Consideremos los pasos que conducen a esta equivalencia. Consideramos la codificación en términos de la aproximación variacional q(zx)q(z|x) para el codificador y la probabilidad verdadera para los datos p(x)p(x). En consecuencia, la información mutua entre los datos XX y los estados latentes ZZ, cuando se utiliza el codificador, se convierte en una medida para la distribución conjunta, expresada a través del codificador pe(x,z)=p(x)q(zx)p_e(x, z) = p(x)q(z|x), o a través del decodificador pd(x,z)=p(xz)q(z)p_d(x, z) = p(x|z)q(z). Suponemos que pe(x,z)=pd(x,z)p_e(x, z) = p_d(x, z), por lo que los utilizamos de manera intercambiable.

En resumen, la implementación de un VAE no solo depende de la reparametrización de las distribuciones gaussianas, sino también de cómo se organiza y entrena la red neuronal para maximizar el ELBO. La clave del VAE radica en la capacidad de aprender representaciones latentes útiles sin la necesidad de supervisión explícita. Es fundamental comprender que la eficiencia de este enfoque se debe a la optimización simultánea de la reconstrucción y la regularización de las representaciones latentes.

¿Por qué el aprendizaje profundo supera a los modelos lineales tradicionales?

En el ámbito del aprendizaje automático, el objetivo esencial es encontrar patrones relevantes en los datos para generar modelos que permitan realizar predicciones eficaces. Estos modelos, en esencia, son funciones que transforman entradas en salidas significativas. En su forma más básica, como en el caso de un regresor lineal, el modelo busca una relación directa entre las variables de entrada y la salida, ajustando parámetros como pesos y sesgos para representar la mejor función lineal posible dada la información disponible.

Este enfoque, sin embargo, impone una limitación fundamental: la linealidad. Supone que la relación entre variables es siempre una combinación lineal, lo cual rara vez refleja la complejidad del mundo real. Si bien estos modelos son útiles por su simplicidad y capacidad de interpretación, fallan estrepitosamente ante relaciones no lineales intrínsecas en datos complejos. Un ejemplo clásico que ilustra este fallo es la función lógica XOR. Dados cuatro puntos en el plano —(0,0), (0,1), (1,0), (1,1)— con salidas deseadas 0, 1, 1, 0 respectivamente, cualquier modelo estrictamente lineal es incapaz de separar correctamente las clases. Ninguna recta puede dividir el plano de manera que separe los puntos asignados al valor 1 de aquellos asignados al 0. La geometría de la linealidad impone un sesgo estructural que impide la representación fiel de estos patrones.

Para superar esta barrera, se requiere un cambio de paradigma. Aquí es donde entra el aprendizaje profundo, el cual consiste en construir redes de funciones simples (capas) apiladas de forma jerárquica. Cada capa actúa como una transformación no lineal de los datos, permitiendo que el sistema completo se convierta en un aproximador universal de funciones. Esta capacidad se basa en un principio profundamente relacionado con la solución de Kolmogórov al decimotercer problema de Hilbert: la idea de que cualquier función multivariable continua puede representarse como una superposición de funciones univariadas. De forma análoga, las redes neuronales profundas logran representar funciones complejas combinando capas simples de manera compuesta.

La diferencia clave entre los modelos “poco profundos” y las redes profundas no está solo en la cantidad de capas, sino en la capacidad de abstraer características jerárquicas del input. En una red profunda típica, las capas iniciales aprenden patrones locales (como bordes en una imagen), mientras que las capas más profundas combinan esas señales para formar conceptos de mayor nivel (como formas, objetos, categorías). Este enfoque ha sido catalizado por avances técnicos en procesamiento paralelo, especialmente mediante GPUs, que hacen viable entrenar redes con millones de parámetros sobre conjuntos de datos masivos.

El hito representado por AlexNet en 2012 consolidó este enfoque al demostrar que una red profunda entrenada con suficiente datos y capacidad de cómputo podía superar a los métodos tradicionales de visión por computadora en tareas de clasificación de imágenes. Su estructura de múltiples capas convolucionales permitía una extracción automática de características, desplazando métodos anteriores que dependían de ingeniería manual de atributos. A partir de este momento, el aprendizaje profundo se convirtió en el paradigma dominante en tareas perceptivas como visión, audio y procesamiento de lenguaje natural.

Sin embargo, esta potencia no está exenta de desafíos. Las redes profundas tienen un número elevado de parámetros, lo que implica tanto una necesidad significativa de datos como un riesgo latente de sobreajuste. Mientras que un modelo lineal simple puede generalizar bien con pocos ejemplos, una red profunda requiere mecanismos como regularización, normalización, y validación cruzada para evitar capturar ruido en lugar de estructura real. Además, su naturaleza opaca dificulta la interpretación de sus decisiones, lo que ha dado lugar al surgimiento de una subdisciplina completa centrada en la interpretabilidad y la explicabilidad de modelos de caja negra.

Es crucial entender que la razón del éxito del aprendizaje profundo no radica solamente en su complejidad arquitectónica, sino en su capacidad de ajustar la representación de los datos a través del entrenamiento. Mientras que un modelo lineal opera sobre la representación original de los datos, una red profunda aprende simultáneamente la representación y la función de predicción. Esta característica permite que los modelos profundos se adapten a dominios diversos sin requerir una formulación manual de los atributos relevantes, como se hacía en el aprendizaje automático clásico.

Una implicación central de esta evolución es la necesidad de reformular el diseño de algoritmos de aprendizaje: ya no se trata de elegir manualmente las características adecuadas para un modelo simple, sino de diseñar arquitecturas capaces de aprender representaciones útiles directamente desde los datos. Esto marca un cambio epistemológico en la manera de abordar problemas computacionales: de la ingeniería explícita a la abstracción aprendida.

Es importante comprender que el poder del aprendizaje profundo no se limita al tamaño de las redes ni al volumen de los datos, sino a la naturaleza de la composición funcional que permite representar estructuras complejas. Las capas no solo transforman datos: construyen significados. Esta noción transforma completamente nuestra relación con la modelización estadística, abriendo caminos antes inexplorados y replanteando qué significa realmente “aprender” en el contexto de la inteligencia artificial.

¿Cómo generan muestras los modelos de difusión mediante score matching y dinámica de Langevin?

El enfoque de score matching surge como una alternativa elegante al problema de modelar distribuciones complejas sin requerir la estimación directa de la constante de normalización, que suele ser intratable. Inspirado en la física estadística y los procesos de Langevin, este enfoque se centra en aprender el gradiente del logaritmo de la distribución de datos, conocido como función score, a través de una red neuronal paramétrica sθ(x)s_\theta(x). Esta red se entrena para aproximar el campo vectorial que apunta hacia las regiones de alta probabilidad de la distribución, sin necesidad de definir explícitamente dicha distribución.

El procedimiento se fundamenta en la observación de que, si uno conoce el gradiente del logaritmo de una distribución de probabilidad, puede generar muestras de esa distribución utilizando una dinámica estocástica conocida como dinámica de Langevin. Esta dinámica simula una caminata aleatoria guiada por el gradiente de la densidad, permitiendo al modelo recorrer el espacio de datos desde cualquier punto inicial hacia las regiones de mayor densidad de probabilidad.

Este proceso se formaliza como una secuencia iterativa xi+1xi+clogp(xi)+2cϵx_{i+1} \leftarrow x_i + c \nabla \log p(x_i) + \sqrt{2c} \epsilon, donde ϵ\epsilon representa ruido gaussiano. La presencia de este ruido es crucial: impide que las trayectorias se vuelvan deterministas, lo cual sería problemático en regiones donde múltiples modos de la distribución compiten. Gracias a este mecanismo, el modelo evita colapsar en un único modo y mantiene diversidad en las muestras generadas.