CLIP

Rubén Rodríguez Abril

CLIP, desarrollado por OpenAI, es un algoritmo diseñado para emparejar correctamente una imagen y la cadena de texto que la describe. El algoritmo establece espacios de características comunes, conocidos como espacios contrastivos, que integran la información textual y visual. Dentro de estos espacios, las similaridades semánticas entre dos vectores se cuantifican a través de su similaridad coseno. Las innovaciones introducidas por CLIP dieron un impulso extraordinario a los sistemas multimodales y al arte generado por IA.

Introducción

Prácticamente todos los sistemas de visión artificial o de procesamiento de lenguaje natural usan hiperespacios de representación, en los que la significación semántica de palabras, frases y textos, así como los rasgos (globales o locales) de las imágenes, son codificados en vectores de miles de dimensiones, cada uno de los cuales puede representar uno o varios conceptos o características. La creación de sistemas multimodales exige la creación de hiperespacios de representación comunes para cadenas de texto e imágenes.

CLIP (Contrastive Language-Image Pretraining) es un algoritmo creado por OpenAI que crea espacios semánticos comunes para imágenes y textos, denominados espacios contrastivos, utilizando funciones de proyección aprendidas que se definen mediante una función de pérdida contrastiva.

Dos modelos entrelazados

El objetivo del algoritmo es emparejar correctamente pares formados por una cadena de texto y su correspondiente ilustración. Para ello se usan dos codificadores, uno para las imágenes y otro para el texto.

Como codificador de imágenes puede utilizarse cualquiera de estos dos modelos:

Redes residuales (ResNet50). La arquitectura experimenta una leve modificación consistente en incorporar como última capa una unidad de atención QKV en la que la atención Q no es una matriz, sino un vector formado a partir del average pooling de los mapas de características de la última capa, que implica que cada uno de éstos es reducido al valor de sus píxeles. La matriz de atención QKT se transforma con ello en un vector y también sucede lo mismo con la salida de esta capa de atención.

Transformers visuales (ViT). En este caso, el vector de salida viene descrito por el token [CLS], correspondiente a la primera fila de la matriz. El transformer es entrenado sobre una base de datos, en el modo señalado en el artículo anterior, para realizar una labor de clasificación de imágenes.

El codificador de texto empleado es GPT-2, con 63 millones de parámetros, vectores de 512 dimensiones, 12 capas y 8 cabezas de atención. La codificación de contenido (embedding) elegida es BPE (Byte Pair Encoding). La cadena de entrada se inicia y finaliza con los token [SOS] y [EOS] respectivamente. Las activaciones (token [CLS]) de la última capa de transformer cuando está leyendo el token [EOS] constituyen el vector representativo del texto.

Como codificador de texto se usa GPT-2, con 63 millones de parámetros, vectores de 512 dimensiones, 12 capas y 8 cabezas de atención. Como codificación de contenido (embedding) se emplea BPE (Byte Pair Encoding). La cadena de entrada se inicia y finaliza con los token [SOS] y [EOS] respectivamente. Las activaciones (token [CLS]) de la última capa de transformer cuando está leyendo el token [EOS] constituyen el vector representativo del texto.

Los vectores representativos del texto y de la imagen se hacen pasar a través de las correspondientes matrices de proyección, para obtener un vectores en un espacio contrastivo, multimodal, común. Tras ello, son normalizados. Matemáticamente, el proceso se describe mediante las ecuaciones siguientes:

If = codificador_imagen(imagen)

Tf = codificador_texto (cadena)

Ie = norm(If·Wi)

Te = norm(Tf·Wt)

donde If y Tf son los vectores de salida de los codificadores de texto e imagen (dentro sus espacios de características respectivos), Ie y Te los vectores representativos de imagen y texto en el espacio contrastivo común y We y Wi las matrices de proyección, que realizan la transformación desde los espacios de características separados al espacio contrastivo común.

En el espacio contrastivo, cada imagen o cadena de texto viene representado por un vector unitario dentro de este espacio (lo cual es equivalente a un punto en una hiperesfera de radio uno). La cercanía semántica de dos vectores viene representada por su similaridad coseno, que es equivalente a su producto escalar (es decir, al coseno del hiperángulo sólido que separa a ambos). Si la similaridad coseno es 1, hay una identidad semántica absoluta. Si es 0, no hay parentesco de significado en absoluto.

Cuando se trata de averiguar qué etiqueta de entre muchas corresponde a una imagen, CLIP realiza un producto escalar del vector de la imagen con cada uno de los vectores de texto. Seguidamente se aplica la función softmax y con ello se obtiene una distribución de probabilidades sobre cada una de las etiquetas.

Figura 1. Las diferentes etiquetas son transformadas en vectores por el codificador de texto. Seguidamente se hace un producto escalar de cada una de ellas con el vector procedente del codificador de imagen. La aplicación de la función softmax transforma al vector resultante en una distribución de probabilidades. “Una foto de un perro” es la etiqueta que ha obtenido mayor puntuación.

Entrenamiento

Los autores desarrollaron una nueva base de datos llamada WIT (WebImageText), que reúne 400 millones de pares de imágenes y textos recopilados de diversas fuentes en Internet. Estos pares están organizados en 500,000 consultas (queries), cada una de las cuales incluye, como máximo, hasta 20,000 pares, lo que garantiza un equilibrio en la representación de datos. El cómputo de palabras de WIT es similar al de WebText, empleada para entrenar a GPT-2.

Durante el entrenamiento, la base de datos se divide en lotes integrados por N parejas de texto-imagen. Seguidamente, se realizan los productos escalares entre cada vector-imagen y cada vector-texto, formando una matriz de similaridad de N2 elementos, en el modo señalado en la imagen:

Figura 2. La columna verde representa los N vectores-imagen del lote. La columna violácea, los vectores-texto. La matriz cuadrada, denominada matriz de similaridad, contiene las similaridades coseno (productos escalares) de todos estos vectores, medidas en logits. Las casillas que se corresponden a emparejamientos correctos se subrayan en azul.

El último paso es el cálculo de la función de pérdida, la entropía cruzada simétrica, que se obtiene sumando las funciones de pérdida de imágenes y texto y dividiendo el resultado por dos.

La función de pérdida de las imágenes se calcula aplicando la función softmax a cada fila de la matriz de similaridad y realizando el contraste (entropía cruzada) con el vector one-hot que contiene el emparejamiento correcto. Tras ello, se suman los resultados de todas las filas. La función de pérdida del texto se calcula del mismo modo, pero columna a columna. Matemáticamente se expresa así:

perdida_imagen = Σ entropía_cruzada(vector_columna, etiqueta_i)

perdida_texto = Σ entropía_cruzada(vector_fila, etiqueta_t)

perdida_total = (perdida_imagen + perdida_texto)/2

En la primera ecuación, el sumatorio se hace a través de todas las filas. En la segunda, a través de todas las columnas. Las etiquetas son vectores 1-de-N (one-hot) que contienen el emparejamiento correcto.

Resultados

CLIP fue probado sobre múltiples bases de datos como MS-COCO o ImageNet, y en todos ellos mostró resultados por encima del estado de la técnica en tareas de reconocimiento de imágenes a partir de datos textuales. Particularmente, el modelo sobresalió en aquellos casos en los que trabajaba sin haber visto ejemplos previos (zero-shot). Esta última característica incrementa su interoperabilidad y capacidad de generación, puesto que le permite ser transferido a nuevas bases de datos que no estén completamente alineadas con la de su entrenamiento.

El rendimiento de CLIP además fue comparado con el de operadores humanos, concretamente en la identificación de razas de perros, con escenarios que involucraban cero (zero-shot), uno (one-shot) o dos (two-shot) ejemplos previos. Y en todos ellos el porcentaje de aciertos de CLIP fue muy superior, como se puede comprobar en la tabla de la Figura 3.

Figura 3. Comparación del rendimiento de CLIP con el de operadores humanos.

Arte y sistemas multimodales

La introducción de espacios contrastivos (espacios de características comunes para lenguaje e imagen) en los modelos posteriores a CLIP incrementó la capacidad de los mismos de integrar información semántica procedente de descripciones textuales y elementos visuales. Y por ello impulsó de manera decisiva el desarrollo de sistemas multimodales (que son un verdadero embrión de la inteligencia artificial general), así como del arte en inteligencia artificial.

En los próximos artículos, examinaremos el funcionamiento de algoritmos generadores de obras artísticas a partir de descripciones textuales, como DALL-E, Midjourney o Stable Difusion. Todos ellos adoptaron el aprendizaje contrastivo del algoritmo CLIP, ya fuera para generar imágenes condicionadas a descripciones de texto o para contrastar la calidad de las ya producidas.

Lecturas Recomendadas

Deep Learning

CLIP