2 puntos por GN⁺ 2024-03-12 | 1 comentarios | Compartir por WhatsApp

Modelos de difusión desde cero desde una nueva perspectiva teórica

  • Los modelos de difusión han mostrado resultados impresionantes recientemente en el modelado generativo, en especial por su capacidad para muestrear distribuciones multimodales.
  • Los modelos de difusión no solo han sido adoptados ampliamente en herramientas de generación de texto a imagen como Stable Diffusion, sino que también muestran un gran desempeño en diversas áreas de aplicación como generación de audio/video/3D, diseño de proteínas y planificación de trayectorias para robots.
  • Este tutorial presenta los modelos de difusión desde una perspectiva de optimización y cubre tanto la teoría como el código para explicar cómo implementarlos desde cero.

Entrenamiento de modelos de difusión

  • Los modelos de difusión tienen como objetivo generar muestras a partir del conjunto aprendido de ejemplos de entrenamiento.
  • El entrenamiento de un modelo de difusión incluye el siguiente proceso:
    1. Muestrear x0 de K, muestrear un nivel de ruido σ entre σmin y σmax, y muestrear ruido ϵ de N(0,I).
    2. Generar los datos con ruido xσ=x0+σϵ.
    3. Predecir ϵ (la dirección del ruido) a partir de xσ mientras se minimiza la pérdida cuadrática.
  • El entrenamiento real se realiza mediante la función training_loop, que itera sobre el x0 del lote y usa generate_train_sample para muestrear el nivel de ruido sigma y el vector de ruido eps.

Programa de ruido

  • En la práctica, σ no se muestrea de manera uniforme en el intervalo [σmin,σmax], sino que este intervalo se discretiza en un programa de σ de N valores distintos.
  • La clase Schedule encapsula la lista de sigmas posibles y muestrea de ella durante el entrenamiento.
  • Se utiliza un programa log-lineal, y se ofrece una gráfica que compara este programa con otros usando parámetros predeterminados.

Ejemplo de juguete

  • En este tutorial se usa un conjunto de datos de juguete compuesto por puntos muestreados de una espiral.
  • Para este conjunto de datos simple, se implementa un denoiser usando un perceptrón multicapa (MLP).
  • El MLP recibe como entrada la concatenación de x∈R2 y el nivel de ruido σ, y predice el ruido ϵ∈R2.
  • Una vez que se tienen todos los componentes esenciales, se puede entrenar el modelo de difusión.

Interpretar el denoising como una proyección aproximada

  • El procedimiento de entrenamiento de difusión aprende un denoiser ϵθ(x,σ), y el artículo interpreta el denoiser aprendido como una proyección aproximada sobre la variedad de datos K.
  • Esto motiva la introducción de un modelo de aproximación de error relativo para analizar la convergencia de los algoritmos de muestreo por difusión.

Funciones de distancia y proyección

  • La función de distancia para un conjunto K⊆Rn se define como distK(x), y la proyección de x∈Rn se define como el conjunto de puntos que alcanzan esa distancia.
  • Si projK(x) es única, entonces el gradiente de distK(x) apunta hacia esa proyección única.

Denoiser ideal

  • El denoiser ideal u óptimo ϵ∗ para un nivel de ruido σ específico es el minimizador exacto de la función de pérdida de entrenamiento.
  • Cuando los datos siguen una distribución uniforme discreta sobre un conjunto finito de K, el denoiser ideal tiene una expresión exacta en forma cerrada.

Modelo de error relativo

  • Para analizar la convergencia de los algoritmos de muestreo por difusión, se introduce un modelo de error relativo.
  • Este modelo asume que la proyección predicha por el denoiser x−σϵθ(x,σ) aproxima bien a projK(x) cuando σ estima adecuadamente distK(x)/n con respecto a la entrada x.

Muestreo en modelos de difusión

  • Para obtener un punto x0 que pertenezca a K muestreando desde el denoiser aprendido ϵθ(x,σ), el denoiser ϵθ(xt,σt) con ruido xt y nivel de ruido σt predice x0.

Interpretar el muestreo por difusión como minimización de distancia

  • La iteración de muestreo por difusión puede interpretarse como descenso por gradiente sobre la función f(x)=12distK(x)2.
  • Cómo debe elegirse el programa σt determina el número y el tamaño de los pasos de gradiente que se tomarán durante el muestreo.

Muestreador mejorado mediante estimación del gradiente

  • A través de la estimación del gradiente se deriva un nuevo muestreador eficiente.
  • Este muestreador muestra una convergencia más rápida que el muestreador DDIM existente.

Ejemplo a gran escala

  • El código de entrenamiento presentado arriba puede usarse no solo para el conjunto de datos de juguete, sino también para entrenar desde cero modelos de difusión de imágenes.
  • El código de muestreo funciona sin modificaciones para muestrear desde modelos de difusión latente de última generación preentrenados.

Otros recursos

  • También se recomiendan las siguientes publicaciones de blog sobre modelos de difusión:
    1. ¿Qué son los modelos de difusión? presenta los modelos de difusión desde una perspectiva de tiempo discreto que invierte un proceso de Markov.
    2. Modelado generativo mediante la estimación del gradiente de la distribución de datos presenta los modelos de difusión desde una perspectiva de tiempo continuo que invierte ecuaciones diferenciales estocásticas.
    3. The Annotated Diffusion Model explica en detalle una implementación en PyTorch de un modelo de difusión.

Opinión de GN⁺

  • Este tutorial presenta los modelos de difusión desde una perspectiva de optimización y los explica conectando el trasfondo teórico con la implementación práctica en código, lo que también los hace accesibles para ingenieros de software principiantes.
  • Los modelos de difusión pueden aplicarse a diversos tipos de datos, lo que sugiere su utilidad en múltiples áreas donde el muestreo de distribuciones multimodales es importante.
  • El tutorial explica paso a paso los procesos de entrenamiento y muestreo de los modelos de difusión, ayudando a lograr una comprensión más profunda de cómo funcionan y cómo se implementan.
  • El entrenamiento y el muestreo en modelos de difusión son relativamente complejos, y para comprenderlos e implementarlos se requiere conocimiento básico de machine learning y deep learning.
  • Al adoptar esta tecnología, hay que considerar factores como el costo computacional, la calidad de los datos de entrenamiento y la complejidad del modelo, y con ello se obtiene el potencial de generar muestras más refinadas y diversas.

1 comentarios

 
GN⁺ 2024-03-12
Comentarios en Hacker News
  • Comentario del autor: al intentar entender los modelos de difusión, se dio cuenta de que se podía simplificar mucho tanto el código como las matemáticas, lo que lo llevó a escribir una entrada de blog y una biblioteca de difusión. Está dispuesto a responder preguntas.

    • El autor descubrió en el proceso de entender los modelos de difusión que era posible simplificar el código y las matemáticas, y escribió una entrada de blog y una biblioteca sobre ello.
  • Otro gran artículo, 'Diffusion Models From Scratch', profundiza más en los detalles matemáticos y viene acompañado de una implementación fácil de entender de menos de 500 líneas.

    • El artículo 'Diffusion Models From Scratch' aborda con más profundidad el contenido matemático de los modelos de difusión y ofrece una implementación de código concisa.
  • Está bueno que este artículo incluya código. Los papers sobre difusión son famosos por tener muchas fórmulas, pero el código es más claro y fácil de entender para gente como nosotros. Todos los papers teóricos deberían venir con código de implementación de referencia.

    • Los papers relacionados con difusión están llenos de fórmulas complejas, pero el código es fácil de entender y preciso. Se opina que los papers teóricos deberían incluir código de implementación de referencia.
  • Me gustaría ver una ampliación sobre diffusion transformers. Se usan para impulsar Sora y otros modelos de generación de video. Estaría bueno combinar este artículo con 'GPT From Scratch' para crear una introducción a 'Diffusion Transformer From Scratch'.

    • Se pide más información sobre los diffusion transformers, y se comenta que sería bueno tener una introducción sobre cómo crear modelos de generación de video con esto.
  • Es un buen artículo, pero se pierde una característica importante: los modelos de difusión modelan la derivada del logaritmo de la probabilidad (función de score), y el muestreo por difusión es similar a la dinámica de Langevin. Eso ayuda a explicar por qué son más fáciles de entrenar que las GAN.

    • Se enfatiza la característica importante de que los modelos de difusión modelan la función de score y que el muestreo por difusión se parece a la dinámica de Langevin, y se sostiene que eso explica por qué son más fáciles de entrenar que las GAN.
  • Muy interesante. Me recuerda al paper Iterative alpha-(de)Blending. Ese paper también plantea un modelo de difusión conceptualmente más simple y lo formula como un proceso de proyección iterativo aproximado. Este enfoque permite experimentos más interesantes, como el análisis de errores de eliminación de ruido.

    • Se menciona el paper Iterative alpha-(de)Blending y que propone una forma de simplificar los modelos de difusión y expresarlos como un proceso de proyección iterativo.
  • ¿Una de las ideas de la difusión es obtener una enorme cantidad de datos de entrenamiento? Es decir, ¿contrastar imágenes difundidas aleatoriamente con imágenes no difundidas?

    • Se plantea la pregunta de si una de las ideas de los modelos de difusión es aprovechar grandes volúmenes de datos de entrenamiento.
  • Buena explicación de la teoría. Parece ser independiente del dataset. Me da curiosidad lo específico de la generación de imágenes. Por ejemplo, ¿por qué a un generador de imágenes le cuesta generar teclas de piano? Parece que hace falta una mejor representación de restricciones de alcance medio.

    • Se comenta que la explicación teórica es buena e independiente del dataset, y se pregunta por las dificultades concretas de la generación de imágenes, especialmente al crear patrones complejos como teclas de piano.
  • Recuerden: todos los modelos de aprendizaje automático son convoluciones.

    • Se expresa la afirmación tajante de que todos los modelos de aprendizaje automático se basan en convoluciones.
  • Hay una sociedad secreta que usa los comentarios de este artículo para enviar mensajes secretos, así que no lo busquen en Google.

    • Se hace una afirmación satírica de que existe una sociedad secreta que intercambia mensajes secretos a través de los comentarios.