Introducción

¿Para quién está dirigido este curso?

Este curso corresponde con el material que me hubiera gustado encontrarme cuando empecé a interesarme por los modelos generativos (allá por el 2017).

Para quienes tienen un background de ingeniería, explorar la literatura de Machine Learning puede resultar intimidante. Álgebra, cálculo, estadística, etc., son asignaturas de los primeros cursos cuyos detalles tienden a olvidarse. En consecuencia, conceptos como la optimización de la ELBO, la transformación de densidades o la entropía de Shannon pueden parecer más difíciles de lo que realmente son.

Este curso va dirigido a cualquier persona que se sienta identificada con esta situación, tenga un mínimo de trasfondo técnico y, sobre todo, interés por conocer a más bajo nivel cómo funcionan estos modelos. Mi objetivo es acompañarte a aprender sobre los conceptos subyacentes, pero que a su vez puedas utilizarlos desde un punto de vista práctico. Por ello, en cada capítulo vas a ver que hay código para reforzar el entendimiento de las explicaciones y para que puedas experimentar por tu cuenta.

Antes de empezar, dos cosas a aclarar:

  1. Si buscas material que profundice en estadística, cálculo o probabilidad, este no es el sitio. En Internet puedes encontrar contenido especializado de gran calidad.

  2. He intentado mantener una estética visualmente atractiva para que sea un recurso al que quieras volver, pero es importante remarcar que entender y consolidar el conocimiento lleva tiempo.

"Learning is not supposed to be fun. It doesn't have to be actively not fun either, but the primary feeling should be that of effort."Andrej Karpathy

IA Generativa

Panorama de IA generativa

Como puedes ver en la figura, dentro del panorama de la inteligencia artificial, la IA generativa engloba métodos y técnicas capaces de generar nuevas muestras de datos.

Desde el punto de vista probabilístico, ajustamos un modelo a la distribución de entrenamiento pdata(x)p_{\mathrm{data}}(x) para después muestrear de la distribución aprendida pθ(x)p_\theta(x).

Un modelo generativo aprende la distribución de imágenes de pangolines para crear muestras nuevas

Este proceso es aplicable a diversos dominios. A continuación te dejo algunos ejemplos que seguramente ya conoces.

Generación de imágenes

Nano Banana (Google), GPT Image 2 (OpenAI), DALL·E, Stable Diffusion, Adobe Firefly, Midjourney, FLUX…

Ejemplos de generación de imágenes

Generación de texto / código

ChatGPT, Claude, Gemini, Grok, Mixtral…

Ejemplo de generación y edición de texto asistida por Notion AI

Generación de audio

Suno, ElevenLabs, WaveNet, VALL-E, Stable Audio, Udio…

Interfaz de Suno para generar música a partir de una descripción textual

Modelos generativos condicionales

Generalmente queremos controlar lo que se genera. Por ello, se utilizan modelos generativos condicionales de la forma p(xc)p(x \mid c). Algunos ejemplos:

  • cc = texto, xx = imagen: modelo text-to-image. Ejemplo: Nano Banana.
  • cc = imagen, xx = texto: modelo image-to-text. Ejemplo: pásale una imagen a ChatGPT y pídele que te la describa.
  • cc = imagen, xx = imagen: modelo image-to-image. Ejemplo: edición de imágenes en Adobe Firefly.
  • cc = audio, xx = texto: modelo speech-to-text. Ejemplo: Whisper, o cualquier dictado por voz.
  • cc = texto, xx = audio: modelo text-to-speech. Ejemplo: ElevenLabs TTS.
  • cc = texto, xx = texto: modelo sequence-to-sequence. Ejemplo: traductores (aquí también entrarían modelos de generación de texto).

Otras aplicaciones

Lo bueno de modelar una distribución es que no solo permite generar datos, si no muchas otras cosas más.

Estimación de densidad

Consiste en evaluar la probabilidad de que una muestra de datos pertenezca a una distribución concreta, es decir, calcular p(x)p(x). Esto es útil para problemas como la compresión de datos, detección de anomalías, clasificación, comparación de modelos, etc.

El enfoque más simplista para la estimación de densidad consiste en utilizar la kernel density estimation o KDE. Sin embargo, KDE enfrenta limitaciones en espacios de alta dimensión (curse of dimensionality), donde la densidad de los datos se vuelve extremadamente dispersa.

Las redes generativas modernas superan esta limitación al aprender representaciones compactas y complejas que permiten estimar o modelar la densidad de manera mucho más eficiente y escalable en datos de alta dimensionalidad como imágenes, audio o texto.

Imputación de datos

Consiste en "rellenar" los valores que faltan en un vector o matriz de datos. Por ejemplo, una forma sencilla de rellenar datos perdidos en datos tabulares es utilizar el valor medio de cada columna (imputación del valor medio).

Podemos generalizarlo aprendiendo un modelo conjunto sobre todas las variables y, para cada registro incompleto, muestreando los valores ausentes XmX_m condicionados en los observados XoX_o: pθ(XmXo)p_\theta(X_m\mid X_o). Esto se denomina imputación múltiple.

Las variables ausentes se muestrean condicionadas en las variables observadas

Un modelo generativo puede utilizarse para rellenar tipos de datos más complejos, como píxeles enmascarados en una imagen.

Representation learning

Algunos tipos de modelos generativos tienen variables latentes zz, que se pueden entender como las causas que generaron los datos observados xx. Estas variables en general reducen la dimensionalidad de los datos y permiten descubrir patrones / representaciones útiles.

Un encoder transforma observaciones en representaciones latentes útiles

Interpolación en el espacio latente

El espacio latente es donde viven las variables latentes. Se puede entender como el espacio al que los modelos comprimen los datos.

Una de las capacidades más interesantes de ciertos modelos de variables latentes es la posibilidad de generar muestras que tengan ciertas propiedades deseadas interpolando entre puntos de datos existentes en el espacio latente.

En el siguiente ejemplo reducimos el espacio latente a dos dimensiones: cada silla es un punto en un plano. Elegimos cuatro muestras e interpolamos sus coordenadas. Al decodificar los puntos intermedios obtenemos representaciones que combinan propiedades de las muestras seleccionadas.

Interpolación entre cuatro puntos de un espacio latente de sillas y sus decodificaciones

Compresión de datos

Los modelos que pueden asignar una alta probabilidad a datos que aparecen con frecuencia y una baja probabilidad a los poco frecuentes se pueden utilizar para compresión de datos, ya que pueden asignar códigos más cortos a los elementos más comunes. De hecho, la longitud de codificación óptima para un vector xx procedente de una fuente estocástica p(x)p(x) es l(x)=logp(x)l(x) = -\log p(x), como demostró Shannon. La compresión es un campo muy bonito que se superpone directamente con la Teoría de la Información. Veremos algo de esto en el capítulo de Autoencoders Variacionales.

Timeline

Este timeline reúne una selección de trabajos especialmente influyentes en la evolución de los modelos generativos. No te preocupes si no entiendes de qué tratan ahora, es una referencia a la que puedes volver más adelante.

También abordaremos modelos fundacionales. Sin embargo, la literatura es mucho más amplia así que he decidido ceñirme únicamente a trabajos relacionados con modelos generativos.

Evolución de los modelos generativos

26 publicaciones visibles.

2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026