En las entradas previas en el blog hemos estado introduciendo la creación sintética de datos usando modelos basados en datos. Hoy presentamos una técnica diferente, denominada Modelos de difusión.
Los modelos de difusión son modelos generativos, que consiguen generar a raíz de ruido datos sintéticos similares a los datos con los que hemos entrenado el modelo [1], cuentan con dos partes:
- Difusión: En esta primera parte comenzamos con la imagen original e iremos paso a paso añadiendo ruido al dato progresivamente, de esta manera el dato original va perdiendo poco a poco su estructura. Al acabar el proceso, el dato se habrá convertido en algo que parece ruido.
- Ensordecimiento: Este es el paso en el que entrenamos el modelo, el modelo toma como entrada el dato original con el ruido sumado (que realmente le parecerá ruido al modelo) y por pasos el modelo predecirá el ruido del dato y se lo restará, continuando paso a paso hasta que hayamos quitado todo el ruido y volvamos al dato original.
El objetivo de estos pasos es entrenar al modelo a generar datos a raíz de ruido, de tal manera que, para generar datos sintéticos, le daremos un ruido generado aleatoriamente, y el modelo le irá restando ruido hasta llegar a un dato con la estructura de los datos con lo que lo hemos entrenado. Puede parecer difícil de comprender la intuición, pero visualmente se entiende muy bien con este gato [2] :

El nombre esta inspirado en el proceso físico de la difusión, que viene a significar la dispersión de partículas en un medio. Con la imagen podemos ver el símil. Que pasa de tener una estructura coherente a una dispersada.
Nos estamos centrando en la generación de datos sintéticos en este caso, pero esta herramienta también se usa para predecir, generar datos faltantes y encontrar datos anómalos. Si te han interesado estos modelos, te animo a continuar explorando estas áreas.
Aunque son modelos muy útiles, flexibles y me atrevería a decir, bonitos, sufren de una limitación principal: los recursos necesarios. Por su estructura de ir paso a paso, los modelos llevan mucho tiempo de entrenar y de generar datos, por lo que puede ser un problema con, por ejemplo, implementaciones en tiempo real.
Continuaremos presentando más técnicas de este estilo, ¡así que estad atentos al blog!
Referencias:
[1] Weng, L. (2021). What are diffusion models?. lilianweng. github. io, 21.
[2] Kreis, K., Gao, R., & Vahdat, A. (2022). Denoising diffusion-based generative modeling: Foundations and applications. In CVPR.