El Problema de la Fusión

Ahora contamos con codificadores de visión potentes (ViT, SigLIP, DINOv2) que producen secuencias de tokens visuales, y modelos de lenguaje grandes (LLMs) poderosos que procesan secuencias de tokens de texto. La pregunta es: ¿cómo alimentamos información visual al LLM para que pueda razonar sobre imágenes junto con texto?

Este es el problema de fusión , y no es tan simple como concatenar píxeles con palabras. Las salidas del codificador de visión viven en un espacio de embeddings diferente al de los embeddings de tokens del LLM. Un ViT-L/14 produce 256 tokens de dimensión 1024, mientras que un Llama-2 7B espera tokens de dimensión 4096. Los dos conjuntos de vectores no comparten un sistema de coordenadas — una dirección que significa "golden retriever" en el espacio del codificador de visión no tiene razón para corresponder a la misma dirección en el espacio del LLM. Necesitamos un puente: un módulo que traduzca las características visuales a una forma que el LLM pueda procesar como si fueran tokens de texto ordinarios.

Han surgido tres enfoques dominantes, cada uno con un equilibrio diferente entre simplicidad, preservación de información y costo computacional. Recorreremos los tres en detalle, examinaremos las fórmulas que los definen, y luego compararemos sus fortalezas y debilidades para que puedas entender cuándo cada uno tiende a ser la elección correcta.

Proyección Lineal (LLaVA)

LLaVA (Liu et al., 2023) adopta el enfoque más simple posible: una única capa lineal (o un MLP pequeño) mapea cada token visual de la dimensión del codificador de visión a la dimensión del LLM. Sin compresión, sin consultas aprendidas, sin cirugía arquitectónica en el LLM — solo una multiplicación de matrices que re-expresa cada token visual en el sistema de coordenadas del LLM:

$$\mathbf{h}_v^i = \mathbf{W} \mathbf{g}_v^i + \mathbf{b}$$

Desglosemos cada componente de esta fórmula para entender qué hace cada pieza y por qué está ahí.

$\mathbf{g}_v^i \in \mathbb{R}^{d_v}$ : el $i$-ésimo token de salida del codificador de visión. Para ViT-L/14, $d_v = 1024$, e $i$ va de 1 a $N_v = 256$ (el número de tokens de parche que produce el codificador de visión). Cada uno de estos vectores codifica información visual rica sobre el parche de imagen correspondiente — bordes, texturas, objetos, relaciones espaciales — pero en el sistema de coordenadas propio del codificador de visión, que el LLM no puede interpretar de forma nativa.

$\mathbf{W} \in \mathbb{R}^{d_{\text{LLM}} \times d_v}$ : una matriz de pesos aprendible que mapea de la dimensión de visión a la dimensión del LLM. Para ViT-L/14 proyectando hacia Llama-2 7B, esta es una matriz de $4096 \times 1024$ — aproximadamente 4.2 millones de parámetros. Durante el entrenamiento, el modelo aprende cómo rotar y escalar las características visuales para que aterricen en la región correcta del espacio de embeddings del LLM. Piénsalo como un diccionario de traducción entre dos idiomas: el codificador de visión "habla" en vectores de 1024 dimensiones, el LLM "habla" en vectores de 4096 dimensiones, y $\mathbf{W}$ aprende el mapeo entre ellos.

$\mathbf{b} \in \mathbb{R}^{d_{\text{LLM}}}$ : un vector de sesgo. Desplaza los vectores proyectados por un offset constante, permitiendo al modelo centrar los tokens visuales en la ubicación correcta del espacio de embeddings del LLM incluso si el codificador de visión y el LLM tienen diferentes niveles base de activación.

$\mathbf{h}_v^i \in \mathbb{R}^{d_{\text{LLM}}}$ : el token visual proyectado, ahora en el espacio de embeddings del LLM. Tiene la misma dimensionalidad que un embedding de token de texto, por lo que el LLM puede tratarlo exactamente como una palabra — atendiendo a él, construyendo contexto a partir de él, y generando texto condicionado en él, todo a través del mecanismo estándar de autoatención.

Los tokens visuales proyectados simplemente se concatenan con los tokens de texto para formar la secuencia de entrada del LLM:

$$[\mathbf{h}_v^1, \ldots, \mathbf{h}_v^{N_v}, \mathbf{t}_1, \ldots, \mathbf{t}_m]$$

donde $N_v$ es el número de tokens visuales (por ejemplo, 256 de ViT-L/14) y $m$ es el número de tokens de texto. El LLM procesa esta secuencia combinada con su autoatención estándar, lo que significa que cada token de texto puede atender a cada token visual y viceversa. No se necesita ningún mecanismo especial de atención cruzada — los tokens visuales son ciudadanos de primera clase en la entrada del LLM.

Las ventajas de este enfoque son convincentes:

  • Mínimos parámetros nuevos: la proyección añade solo $d_v \times d_{\text{LLM}} + d_{\text{LLM}}$ parámetros — aproximadamente 4 millones para ViT-L proyectando hacia Llama-2. Es una fracción insignificante de los miles de millones de parámetros del LLM.
  • Preservación total de información: cada uno de los tokens de parche del codificador de visión se pasa al LLM. Ninguna información visual se comprime o descarta, por lo que los detalles espaciales finos (la posición de un objeto pequeño, el texto en un letrero) están todos disponibles para que el LLM razone sobre ellos.
  • Simplicidad: todo el mecanismo de fusión es una sola multiplicación de matrices por token. Es trivial de implementar, rápido de entrenar y fácil de depurar.

La desventaja es igualmente clara: el LLM debe procesar todos los $N_v$ tokens visuales (por ejemplo, 256 de ViT-L/14), lo que se suma directamente a la longitud de la secuencia. Como el costo de la autoatención escala cuadráticamente con la longitud de la secuencia, añadir 256 tokens visuales a un prompt de texto de 512 tokens significa que el LLM ahora procesa 768 tokens — un aumento de $2.25\times$ en el costo de atención. Para imágenes de alta resolución (que producen más parches), múltiples imágenes en una conversación, o fotogramas de video, este costo escala rápidamente.

💡 LLaVA-1.5 mejoró la proyección lineal a un MLP de dos capas con activación GELU: $\mathbf{h}_v^i = \mathbf{W}_2 \, \text{GELU}(\mathbf{W}_1 \mathbf{g}_v^i + \mathbf{b}_1) + \mathbf{b}_2$. Este pequeño cambio mejoró el rendimiento notablemente, sugiriendo que el puente lineal era ligeramente demasiado restrictivo para alinear los dos espacios de embeddings. La no-linealidad permite que la proyección aprenda un mapeo más flexible — puede, por ejemplo, suprimir ciertas características visuales irrelevantes para tareas de lenguaje mientras amplifica otras.

Q-Former (BLIP-2)

BLIP-2 (Li et al., 2023) aborda el problema del conteo de tokens de frente. En lugar de pasar todos los $N_v$ tokens visuales al LLM, introduce un mecanismo de atención aprendido llamado Q-Former (Querying Transformer) que comprime la información visual en un conjunto fijo y mucho más pequeño de tokens.

La idea central: introducir $N_q$ tokens de consulta aprendibles donde $N_q \ll N_v$ (típicamente $N_q = 32$). Estas consultas realizan atención cruzada con el conjunto completo de características visuales y extraen la información más relevante, destilando cientos de tokens visuales en un resumen compacto:

$$\mathbf{Q}_{\text{out}} = \text{CrossAttention}(\mathbf{Q}, \mathbf{K}_v, \mathbf{V}_v)$$

Desempaquetemos cada componente de esta ecuación para entender el mecanismo de compresión.

$\mathbf{Q} \in \mathbb{R}^{N_q \times D_q}$ : los tokens de consulta aprendibles. Se inicializan aleatoriamente y se entrenan de extremo a extremo con el resto del modelo. Piensa en ellos como "preguntas" que el modelo aprende a hacer sobre la imagen. A lo largo del entrenamiento, diferentes consultas tienden a especializarse — una podría aprender a atender las identidades de objetos ("¿qué cosas hay en esta imagen?"), otra a la disposición espacial ("¿dónde están unos respecto a otros?"), otra a texto o detalles finos. Con $N_q = 32$, el modelo tiene 32 preguntas aprendidas que puede hacer sobre cualquier imagen. La dimensión $D_q$ es la dimensión interna del módulo Q-Former, típicamente 768.

$\mathbf{K}_v, \mathbf{V}_v \in \mathbb{R}^{N_v \times D_v}$ : las claves y valores derivados de los tokens de salida del codificador de visión mediante proyecciones lineales. Estas son las características visuales a las que las consultas atenderán. $N_v$ es el número de tokens visuales (por ejemplo, 256 para ViT-L/14) y $D_v$ es la dimensión proyectada. Las claves determinan qué tokens visuales son relevantes para cada consulta (a través de las puntuaciones de atención), y los valores llevan la información real que se extrae.

$\mathbf{Q}_{\text{out}} \in \mathbb{R}^{N_q \times D_q}$ : la salida — $N_q$ tokens que ahora llevan información visual comprimida. Cada consulta de salida es una combinación ponderada de los vectores de valor visuales, donde los pesos se determinan por las puntuaciones de atención entre esa consulta y todas las $N_v$ claves visuales. El resultado son 32 tokens que juntos resumen la imagen completa.

Para apreciar la razón de compresión: con $N_q = 32$ y $N_v = 256$, esto es una compresión de 8$\times$ . Los 32 tokens de salida se proyectan luego a la dimensión del LLM (mediante una capa lineal, igual que en LLaVA) y se concatenan con los tokens de texto. Pero ahora el LLM solo procesa 32 tokens visuales en lugar de 256 — una reducción dramática en el costo de atención. Para un prompt de texto de 512 tokens, la secuencia pasa de $256 + 512 = 768$ tokens (estilo LLaVA) a $32 + 512 = 544$ tokens, ahorrando aproximadamente la mitad del cómputo de atención.

Las ventajas del Q-Former:

  • Número fijo y controlable de tokens visuales: independientemente de la resolución de la imagen o el número de parches que produzca el codificador de visión, el Q-Former siempre produce exactamente $N_q$ tokens. Esto hace que los costos computacionales sean predecibles y manejables.
  • Selección aprendida de información: el mecanismo de atención cruzada permite al modelo aprender qué información visual es más importante extraer. Las consultas que atienden a parches irrelevantes (por ejemplo, regiones de fondo vacías) recibirán puntuaciones de atención bajas, por lo que naturalmente se enfocan en las partes informativas de la imagen.

La desventaja es que la compresión puede ser con pérdida. Comprimir 256 tokens en 32 crea un cuello de botella de información — algunos detalles que estaban presentes en los tokens visuales originales pueden no sobrevivir la compresión. Esto tiende a perjudicar en tareas que requieren precisión espacial fina, como contar objetos pequeños en una escena desordenada, leer texto incrustado en imágenes, o responder preguntas sobre las posiciones relativas de objetos. Las 32 consultas pueden no tener suficiente capacidad para preservar todo el detalle espacial que llevan 256 tokens de parche.

Perceiver Resampler y Atención Cruzada con Compuerta (Flamingo)

Flamingo (Alayrac et al., 2022) adopta un enfoque fundamentalmente diferente para la fusión. En lugar de modificar los tokens visuales antes de que entren al LLM (como hacen LLaVA y BLIP-2), Flamingo inserta capas de atención cruzada directamente dentro del LLM, permitiendo que la información visual influya en el procesamiento de texto en cada etapa de la red.

La arquitectura tiene dos componentes clave:

Perceiver Resampler: similar al Q-Former, un conjunto de consultas aprendibles realizan atención cruzada con los tokens visuales, comprimiéndolos en un número fijo de tokens de "resumen visual". Esto maneja el problema del conteo de tokens — no queremos que el LLM procese cientos de tokens visuales sin procesar en cada capa. Los tokens remuestreados son representaciones compactas de la imagen que pueden ser consumidas eficientemente por las capas de atención cruzada.

Capas de atención cruzada con compuerta: nuevas capas de atención intercaladas entre las capas existentes de autoatención del LLM. En cada una de estas capas insertadas, los estados ocultos del LLM atienden a los tokens de resumen visual, permitiendo que las representaciones de texto absorban información visual a múltiples profundidades de la red:

$$\mathbf{h}_{\text{out}} = \mathbf{h}_{\text{in}} + \alpha \cdot \text{CrossAttention}(\mathbf{h}_{\text{in}}, \mathbf{K}_{\text{vis}}, \mathbf{V}_{\text{vis}})$$

Examinemos cada componente de esta ecuación cuidadosamente.

$\mathbf{h}_{\text{in}}$ : los estados ocultos del LLM en una capa dada — estas son las representaciones de texto a mitad de cómputo, que ya llevan información de capas de autoatención previas. En la capa 1, son cercanas a los embeddings de tokens sin procesar; en capas más profundas, llevan representaciones lingüísticas cada vez más abstractas.

$\mathbf{K}_{\text{vis}}, \mathbf{V}_{\text{vis}}$ : claves y valores derivados de los tokens de resumen visual (la salida del Perceiver Resampler). Los estados ocultos del texto consultan estas claves y valores visuales a través de atención cruzada estándar, recuperando información visual relevante para el contexto de texto actual. Diferentes capas del LLM pueden atender a diferentes aspectos de la información visual — las capas tempranas podrían captar características de bajo nivel (colores, formas), mientras que las capas más profundas acceden a semántica de alto nivel (identidades de objetos, relaciones).

$\alpha$ : un escalar de compuerta aprendible, inicializado en cero . Esta es la decisión de diseño más crítica en toda la arquitectura de Flamingo, y merece una explicación cuidadosa.

¿Por qué importa tanto la compuerta? El LLM que se utiliza (por ejemplo, Chinchilla 70B en el paper original de Flamingo) fue pre-entrenado puramente con texto. Sus pesos codifican la comprensión del lenguaje de miles de millones de tokens — gramática, hechos, patrones de razonamiento. Si insertamos capas de atención cruzada inicializadas aleatoriamente y comenzamos a entrenar inmediatamente, las salidas aleatorias de la atención cruzada se sumarían a los estados ocultos del LLM, inyectando ruido en cada capa. Esto perturbaría catastróficamente las representaciones de texto pre-entrenadas del LLM en el primer paso de entrenamiento, potencialmente destruyendo las capacidades lingüísticas que queremos preservar.

Al inicializar $\alpha = 0$, el término de atención cruzada $\alpha \cdot \text{CrossAttention}(\ldots)$ es exactamente cero al inicio del entrenamiento. La ecuación se reduce a $\mathbf{h}_{\text{out}} = \mathbf{h}_{\text{in}}$ — una función identidad pura. El LLM se comporta exactamente como lo hacía antes de que se insertaran las capas de atención cruzada, produciendo las mismas salidas para las mismas entradas de texto. A medida que avanza el entrenamiento, $\alpha$ aumenta gradualmente desde cero, y el modelo aprende suavemente a incorporar información visual a un ritmo que no desestabiliza sus capacidades lingüísticas. La compuerta actúa como una válvula de seguridad: el modelo la abre solo tan rápido como puede utilizar productivamente la señal visual.

Las ventajas del enfoque de Flamingo:

  • Fusión profunda: la información visual puede influir en cada capa del LLM, no solo en la entrada. En LLaVA y BLIP-2, los tokens visuales entran por la parte inferior del LLM e interactúan con el texto solo a través de la autoatención estándar del LLM. En Flamingo, capas de atención cruzada dedicadas a múltiples profundidades le dan al modelo más oportunidades de integrar visión y lenguaje — el LLM puede refinar sus representaciones de texto usando contexto visual en cada etapa de procesamiento.
  • Preservación de capacidades pre-entrenadas: el mecanismo de compuerta asegura que las habilidades lingüísticas del LLM no se degraden durante el entrenamiento multimodal. Los pesos originales del LLM incluso pueden mantenerse congelados, entrenando solo las capas de atención cruzada y las compuertas.
  • Manejo natural de entradas intercaladas: Flamingo puede procesar conversaciones con múltiples imágenes intercaladas con texto (por ejemplo, "Mira esta imagen: [imagen1]. Ahora compárala con esta: [imagen2]. ¿Qué cambió?"). Los tokens visuales de cada imagen están disponibles en las capas de atención cruzada, y el LLM puede atender selectivamente a la imagen relevante en cada punto del texto.

Las desventajas son la otra cara de este poder:

  • Complejidad arquitectónica: nuevas capas de atención cruzada y parámetros de compuerta deben insertarse en cada (o cada otra) capa del LLM. Para un LLM de 32 capas, esto podría significar 16 nuevos módulos de atención cruzada, cada uno con sus propias proyecciones de consulta, clave y valor, y su escalar de compuerta.
  • Dificultad de entrenamiento y ajuste fino: modificar las partes internas del LLM significa que se necesita acceso a la arquitectura del modelo, no solo a su interfaz de entrada. Esto hace que la fusión estilo Flamingo sea más difícil de aplicar a LLMs de código cerrado o solo disponibles por API.

Comparando Enfoques de Fusión

Ahora que hemos examinado los tres enfoques en detalle, coloquémoslos lado a lado para resaltar los equilibrios.

  • Conteo de tokens pasados al LLM: Proyección lineal (LLaVA): $N_v$ — todos los tokens visuales (por ejemplo, 256 para ViT-L/14). Q-Former (BLIP-2): $N_q$ — un número fijo más pequeño (por ejemplo, 32). Flamingo: $N_q$ — también un número fijo a través del Perceiver Resampler.
  • Nuevos parámetros: Proyección lineal: muy pocos, aproximadamente 4M para ViT-L proyectando hacia Llama-2. Q-Former: moderados, aproximadamente 100M para el módulo Q-Former en sí. Flamingo: sustanciales, ya que se añaden parámetros de atención cruzada en cada capa del LLM.
  • Preservación de información: Proyección lineal: la más alta — no se produce compresión, cada token de parche llega al LLM. Q-Former: moderada — la compresión aprendida puede tener pérdidas, y los detalles espaciales finos pueden no sobrevivir al cuello de botella. Flamingo: moderada — compresión similar a través del Perceiver Resampler, pero la fusión profunda con atención cruzada puede compensar parcialmente al permitir que el modelo acceda a la información visual en múltiples capas.
  • Complejidad arquitectónica: Proyección lineal: mínima — una sola multiplicación de matrices. Q-Former: moderada — un módulo transformer independiente que se sitúa entre el codificador de visión y el LLM. Flamingo: alta — requiere modificar la arquitectura interna del LLM insertando nuevas capas.

En la práctica, el enfoque de proyección lineal (estilo LLaVA) se ha convertido en el más ampliamente adoptado por su simplicidad y rendimiento sorprendentemente fuerte. Cuando el codificador de visión es bueno y el LLM es poderoso, un puente lineal simple suele ser suficiente — el LLM puede aprender a interpretar los tokens visuales proyectados a través de sus propias capas de autoatención sin necesitar un mecanismo de fusión complejo. El enfoque Q-Former tiende a favorecerse cuando la eficiencia de tokens es crítica — por ejemplo, al procesar muchas imágenes en un solo contexto (comprensión de video, comparaciones multi-imagen) y el costo cuadrático de atención de cientos de tokens visuales por imagen se vuelve prohibitivo. La atención cruzada con compuerta estilo Flamingo se usa típicamente en sistemas de producción donde la interacción profunda visión-lenguaje vale el costo arquitectónico adicional, particularmente para aprendizaje con pocos ejemplos y conversaciones de imagen-texto intercaladas.

Quiz

Pon a prueba tu comprensión de los enfoques de fusión multimodal, desde proyecciones lineales hasta atención cruzada con compuerta.

¿Qué problema resuelve el Q-Former de BLIP-2 en comparación con la proyección lineal de LLaVA?

¿Por qué Flamingo inicializa su parámetro de compuerta $\alpha$ en cero?

¿Cuál es la principal desventaja del enfoque de proyección lineal utilizado en LLaVA?

En el Q-Former de BLIP-2, ¿qué son los tokens de consulta aprendibles?