DALL-E
Rubén Rodríguez Abril
En el año 2021 Open AI, la empresa líder a la sazón en grandes modelos de lenguaje, presentó una nueva arquitectura generativa capaz de crear imágenes de contenido artístico a partir de descripciones textuales ofrecidas por el usuario. La característica esencial del modelo era la combinación de la arquitectura de transformers, particularmente GPT-3, con la de los autocodificadores variacionales. La aparición de DALL-E tuvo gran un impacto en el ámbito de la cultura popular de Internet y abrió paso la llegada de otros modelos similares.
Introducción
DALL-E es una variedad de los modelos texto-a-imagen, que generan una imagen u obra de arte a partir de una descripción textual (conocida como “prompt”) proporcionada por el propio usuario. Como hemos visto en artículos anteriores, los modelos generadores de imágenes no eran ni mucho menos una novedad en el año 2021. Y tampoco lo era la creación de arte digital asistida por la IA. Algoritmos como el de la transferencia neuronal de estilo (introducido en el año 2015) ya eran capaces de crear una obra de arte a partir de una fotografía y dándole el estilo de un autor conocido, como Van Gogh o Kandinsky.
DALL-E puede ser considerado como un desarrollo de la arquitectura de transformers. Se compone de dos partes principales: La primera es un modelo GPT-3 entrenado para generar autorregresivamente una cadena de tokens de imagen a partir de los tokens de una descripción textual. La segunda es el descodificador de un VAE (autocodificador variacional) que se encarga dichos tokens en una imagen.
Funcionamiento en inferencia
Durante la inferencia, el prompt introducido por el usuario se codifica usando el sistema BPE (Byte Pair Encoding), que transforma cada par de bytes en un token de texto. Los tokens de la cadena son introducidos entonces en el transformer, que va produciendo autorregresivamente la nueva imagen mediante sus tokens de salida. En algunos modelos anteriores, cada token determinaba directamente los valores RGB de un pixel. En DALL-E, la imagen de 256×256 píxeles es dividida en celdillas (patches) de 8×8 píxeles. Un token corresponde a una celdilla y puede tomar hasta 8.192 valores diferentes de un código visual (diccionario de tokens) predefinido. El descodificador VAE se encarga de convertir dicho token en los valores RGB de los píxeles de su celdilla.
El descodificador se erige, pues, como un formidable mecanismo de descompresión semántico: cada token de imagen, que contiene tan sólo 13 bits de información (un número del 0 al 8.191), es transformado en 1.536 bits (3 bytes, 24 bits, por pixel, en una celdilla de 64 pixeles), más de 100 veces más. La diferencia viene representada por la información relativa a patrones y rasgos, de mayor y menor nivel, que es introducida en la imagen por las diferentes capas convolucionales del descodificador.
Entrenamiento
El entrenamiento se estructura en dos fases:
Fase 1. El VAE es entrenado para comprimir y descomprimir una imagen RGB 256×256 en una retícula de 32×32 tokens de imagen. En la última capa del codificador, que constituye el espacio latente, cada token de salida se describe por un vector de 8.192 componentes, donde cada componente representa la afinidad, medida en logits, con los 8.192 tokens del diccionario visual. Sobre ellos se aplica una variante de la función softmax (gumbel-softmax) que las transforma los logits en probabilidades sobre uno. El token con mayor probabilidad asignada es el que se transmite al descodificador.
Figura 1. Imágenes originales (arriba) y reconstruidas (abajo) por el descodificador VAE. Sin duda alguna, se trata de reconstrucciones bastante bien logradas, a pesar de la enorme pérdida de información durante la compresión.
Fase 2. Se toman pares de texto-imagen de la base de datos. Las descripciones textuales son codificadas (BPE) en cadenas de hasta 256 tokens. Paralelamente, las imágenes son transformadas en tokens visuales por el codificador VAE. Un modelo basado en GPT-3 es afinado para predecir los tokens de imagen a partir de las descripciones textuales.
La función de pérdida es ELBO (Evidence Low Bound), que debe ser maximizada. Su expresión algebraica es la siguiente:
Ez∼q(z∣x) (ln pθ(x∣y,z) − βDKL(qϕ(y,z∣x), pψ(y,z)))
donde x es la imagen RGB original que ha de ser reconstruida por DALL-E a partir de su descripción textual y, mientras que z es el conjunto de tokens que conforman en el estado latente. Son tres las distribuciones que aparecen en la fórmula, correspondientes a las tres partes del modelo:
-pθ(x∣y,z) es la distribución de píxeles RGB generada por el descodificador VAE a partir de los tokens z.
-qϕ(y,z∣x) es la distribución de tokens visuales generados por el codificador VAE a partir de la imagen x.
-pψ(y,z) es la cadena de tokens visuales (x) y textuales (y) generada por un transformer de modelo fundacional GPT-3.
La expresión z∼qϕ(z∣x), que aparece junto a la letra E, indica que hay un proceso de muestreo (sampling): sólo el token z que recibe mayor puntuación por el codificador es transmitido hacia el descodificador.
ELBO se divide en dos partes: El término de regularización, que busca que aproximar el comportamiento de codificador VAE y el transformer, y el término de reconstrucción, que penaliza las reconstrucciones erróneas de pixeles realizadas por el descodificador VAE.
El término de regularización (en azul, en la ecuación anterior) viene constituido por la divergencia de Kulback-Leibler (representada como “DKL” en la fórmula) de dos distribuciones diferentes: la del transformer y la del codificador VAE. Como ya se vio en otros artículos, la divergencia KL cuantifica la cantidad de bits necesaria para construir una distribución (distribución posterior) a partir de otra (distribución prior). Es nula cuando las dos distribuciones son iguales y, en el caso que nos atañe, cuando los tokens visuales producidos por el codificador VAE (a partir de la imagen original) y por el transformer (a partir de los tokens textuales) son los mismos.
Como término de reconstrucción (en verde) en las algoritmos generativos suelen utilizarse variantes de L1 o L2, obtenidos a partir de la diferencia entre los valores RGB reconstruidos y los originales. En DALL-E se usa una variedad L1, particularmente un tipo especial de distribución de Laplace denominada distribución logit-Laplace. Para cada pixel se construyen tres distribuciones (una por color). La labor del descodificador es generar los parámetros μ (ubicación, que representa el valor predicho) y b (escala, que representa la confianza en dicha predicción) de cada una de ellas. La función de pérdida se expresa como el logaritmo de dicha distribución, equivalente a:
ln(b) – ln(x(1-x)) – (|logit (x) – μ|)/b
donde x es el valor RGB del pixel en la imagen original mientras que logit(x) es la función inversa de la sigmoide.
Durante la primera fase del entrenamiento, que afecta sólo a los parámetros del VAE, éste tiene que transformar una imagen en tokens visuales y a partir de éstos reconstruir la imagen original. Como distribución prior se utiliza una distribución uniforme sobre todos los tokens visuales del diccionario. Esto garantiza que, a través del término de regularización, todos ellos tengan la misma probabilidad de ser producidos por el codificador, promoviendo una representación balanceada.
En la segunda fase, DALL-E debe reconstruir la imagen original a partir de su descripción textual. El gradiente del término de reconstrucción se calcula en la capa final y es retropropagado a través del descodificador VAE y el transformer, aunque sólo los parámetros de este último son modificados. Por su parte, el gradiente del término de regularización se deriva comparando las distribuciones de tokens producidas por el codificador y el transformer. Es retropropagando a través de este último. La segunda fase, como vemos, sólo afecta a los parámetros del modelo fundacional, basado en GPT-3.
En el entrenamiento de DALL-E se utilizaron diversas bases de datos, entre las que podemos citar las siguientes:
-Todos los pares texto-imagen contenidos enWikipedia.
-Una nueva base de datos integrada por 250 millones de pares texto-imagen, en una escala similar a JFT-300M, de Google. Incluye Conceptual Captions -una extensión de MS-COCO integrada por 3,3 millones de pares texto-imagen- y un subconjunto filtrado de YFCC100M (Yahoo Flickr Creative Commons 100 Million).
Los parámetros, las activaciones y los gradientes se almacenan en números de coma flotante de 16 bits, de los cuales 4 pertenecen al exponente.
Resultados
DALL-E mostró habilidades notables en la generación de gráficos desde cero (zero-shot) así como capacidades inesperadas de generalización. También evidenció aptitudes de generalización combinatoria, interpretando frases complejas como “dibuja este mismo gato, que está arriba, en la parte inferior de la cama”.
Figura 2. “El mismo gato de arriba, dibujado como boceto abajo”. Para ejecutar este “prompt”, DALL-E combinó dos tareas de naturaleza visual: la segmentación de objetos y la transferencia neuronal de estilo.
Las pruebas demostraron que también podía realizar transformaciones, como cambios de color, introducción de escala de grises o alteración del estilo de una imagen. Estas habilidades demostraron su competencia en tareas de visión artificial pura como la segmentación semántica o la transferencia neuronal de estilo.
Figura 3. “El mismo gato de arriba, coloreado de rojo abajo”. Un ejemplo de segmentación semántica.
En general, en el plano del gran público, el modelo ayudó a la popularización de la IA como instrumento auxiliar de los artistas o los diseñadores gráficos.
Modelos posteriores
Aunque la utilización de los transformers para dibujar gráficos es, sin duda alguna, sugestiva, hemos de señalar que las siguientes versiones del modelo DALL-E (2 y 3) abandonaron el concepto de tokens de imagen y retornaron al esquema de pérdida contrastiva que ya había adoptado CLIP. Los detalles de estas innovaciones serán analizados en nuestros próximos artículos, dedicads a las dos versiones siguientes de DALL-E.
Lecturas Recomendadas
– Zero-Shot Text-to-Image Generation (artículo original de DALL-E).