Longformer
Longformer combina la atención con ventana deslizante con unos pocos tokens globales, por lo que su coste aumenta linealmente con la longitud y puede procesar documentos de 4.096 tokens.
Longformer es un Transformer para documentos largos que sustituye la autoatención completa por atención de ventana deslizante alrededor de cada token, más atención global sobre unos pocos tokens elegidos para cada tarea; así, su coste crece de forma lineal con la longitud de la entrada en lugar de cuadrática. Iz Beltagy, Matthew Peters y Arman Cohan, del Allen Institute for AI, lo presentaron en el artículo de 2020 Longformer: el Transformer para documentos largos. Los codificadores como BERT y RoBERTa procesan como máximo 512 tokens, por lo que había que dividir los textos más largos en fragmentos que perdían las conexiones entre ellos. Los modelos Longformer publicados procesan 4096 tokens de una vez, una ventana de contexto ocho veces mayor.
Cómo funciona la atención de Longformer#
Cada capa combina patrones locales y globales dentro de un mecanismo de atención:
- Atención de ventana deslizante: Cada token atiende a una ventana fija de tokens vecinos: 256 a cada lado en los modelos publicados.
- Ventana deslizante dilatada: Los espacios entre las posiciones atendidas permiten que una cabeza llegue más lejos con el mismo coste. Los autores utilizaron dilatación en algunas cabezas de las capas superiores de sus modelos de lenguaje a nivel de carácter.
- Atención global: Los tokens seleccionados atienden a todas las posiciones y todas las posiciones atienden a ellos, mediante proyecciones independientes de consulta, clave y valor. La tarea determina cuáles se eligen: el token
[CLS]para clasificación y los tokens de la pregunta para responder preguntas.
Apilar capas amplía el alcance de la ventana del mismo modo que las convoluciones apiladas amplían el campo receptivo de una red neuronal convolucional (CNN): l capas con una ventana de tamaño w cubren l × w tokens. Cada capa calcula aproximadamente n × w puntuaciones de atención en lugar de n × n. Contar los pares de una máscara de Longformer permite ver la diferencia:
import torch
window = 512 # Longformer-base: 256 tokens on each side of every token
for n in (1024, 2048, 4096):
pos = torch.arange(n)
# Sliding window: each token attends to neighbors within window / 2 positions
mask = (pos[:, None] - pos[None, :]).abs() <= window // 2
# Global attention on token 0 ([CLS]): it sees every token and every token sees it
mask[0, :] = True
mask[:, 0] = True
print(f"{n} tokens: full attention {n * n / 1e6:.1f}M scores, Longformer {mask.sum().item() / 1e6:.1f}M")Imprime 0,5 M, 1,0 M y 2,0 M puntuaciones de Longformer frente a 1,0 M, 4,2 M y 16,8 M para la atención completa: cada vez que se duplica la entrada, el trabajo de atención de Longformer se duplica, mientras que el de la atención completa se cuadruplica. Las implementaciones reales calculan únicamente la banda de puntuaciones, de donde procede el ahorro de memoria.
Entrenamiento y resultados#
Longformer parte del punto de control de RoBERTa. Los autores copiaron ocho veces sus 512 incrustaciones posicionales aprendidas para cubrir 4.096 posiciones y continuaron el preentrenamiento de modelos de lenguaje enmascarados con documentos largos. Tras el ajuste fino, superó sistemáticamente a RoBERTa en tareas con documentos largos y logró en su momento resultados de vanguardia en los bancos de pruebas de respuesta a preguntas WikiHop y TriviaQA, mientras que el modelo de lenguaje a nivel de carácter obtuvo nuevos resultados en text8 y enwik8.
Longformer-Encoder-Decoder (LED) añade un decodificador para tareas de resumen de texto y otras de generación de texto, como demuestra el resumen de artículos científicos completos de arXiv. Transformers de Hugging Face implementa ambos modelos y recibe los tokens globales mediante un global_attention_mask. Después aparecieron versiones específicas de dominio, como Clinical-Longformer, preentrenado con grandes corpus de textos clínicos y evaluado en 10 tareas, entre ellas el reconocimiento de entidades nombradas, la respuesta a preguntas y la clasificación de documentos.
Longformer frente a modelos relacionados#
- Transformer-XL: Lee un texto largo segmento a segmento y permite que cada segmento atienda a los estados ocultos almacenados en caché del segmento anterior, ampliando el contexto mediante recurrencia para la generación de izquierda a derecha.
- BigBird: Modelo de Google del mismo año que añade enlaces de atención aleatorios a la atención de ventana y a la global, y también procesa 4096 tokens.
- Atención dispersa: Familia más amplia de patrones de atención fijos a la que pertenece Longformer.
- Atención Flash: Calcula la atención completa exacta en bloques de memoria en chip, por lo que el consumo de memoria crece de forma lineal con la longitud, aunque el número de puntuaciones sigue siendo cuadrático.
Atención local y global en visión#
Las imágenes de alta resolución plantean el mismo problema, porque un Transformer de visión (ViT) convierte una imagen en miles de tokens de parches. El Swin Transformer lo resuelve con ventanas locales desplazadas, y el Segment Anything Model (SAM) de Meta, que se ejecuta en el paquete Ultralytics, combina atención por ventanas y atención global bloque a bloque para la segmentación de imágenes: su codificador de imágenes ViT-B atiende dentro de ventanas no superpuestas de 14 × 14 sobre una cuadrícula de parches de 64 × 64 en 8 de sus 12 bloques, y globalmente sobre los 4096 parches en los bloques 2, 5, 8 y 11.










