Longformer
Longformer combina l'attenzione a finestra scorrevole con alcuni token globali, così il costo cresce linearmente con la lunghezza e può leggere documenti di 4.096 token.
Longformer è un Transformer per documenti lunghi che sostituisce l'attenzione automatica completa con un'attenzione a finestre scorrevoli attorno a ogni token, più un'attenzione globale su alcuni token scelti in base all'attività; il suo costo cresce così linearmente con la lunghezza dell'input anziché quadraticamente. Iz Beltagy, Matthew Peters e Arman Cohan dell'Allen Institute for AI lo hanno presentato nel 2020 nell'articolo Longformer: The Long-Document Transformer. Gli encoder come BERT e RoBERTa leggono al massimo 512 token, quindi i testi più lunghi dovevano essere suddivisi in blocchi che perdevano i collegamenti tra loro. I modelli Longformer pubblicati leggono 4.096 token in un solo passaggio, una finestra di contesto otto volte più lunga.
Come funziona l'attenzione di Longformer#
Ogni livello combina schemi locali e globali all'interno di un unico meccanismo di attenzione:
- Attenzione a finestra scorrevole: Ogni token presta attenzione a una finestra fissa di token vicini, 256 per lato nei modelli pubblicati.
- Finestra scorrevole dilatata: Gli intervalli tra le posizioni a cui si presta attenzione permettono a una testa di raggiungere distanze maggiori a parità di costo. Gli autori hanno usato la dilatazione in alcune teste dei livelli superiori dei loro modelli linguistici a livello di carattere.
- Attenzione globale: I token selezionati prestano attenzione a tutte le posizioni e ogni posizione presta attenzione a loro, tramite proiezioni distinte di query, key e value. La scelta dipende dall'attività: il token
[CLS]per la classificazione e i token della domanda per la risposta alle domande.
La sovrapposizione dei livelli amplia la portata della finestra, proprio come le convoluzioni sovrapposte ampliano il campo recettivo di una rete neurale convoluzionale (CNN): l livelli con finestra w coprono l × w token. Ogni livello calcola circa n × w punteggi di attenzione invece di n × n. Contare le coppie in una maschera Longformer rende evidente la differenza:
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")Stampa 0,5 M, 1,0 M e 2,0 M punteggi Longformer, rispetto a 1,0 M, 4,2 M e 16,8 M per l'attenzione completa: a ogni raddoppio dell'input, il lavoro di attenzione di Longformer raddoppia, mentre quello dell'attenzione completa quadruplica. Le implementazioni reali calcolano solo la banda dei punteggi, da cui deriva il risparmio di memoria.
Addestramento e risultati#
Longformer parte dal checkpoint RoBERTa. Gli autori hanno copiato otto volte i 512 embedding posizionali appresi, per coprire 4.096 posizioni, e hanno continuato il preaddestramento del modello linguistico mascherato su documenti lunghi. Dopo il fine-tuning, ha superato sistematicamente RoBERTa nei task su documenti lunghi e raggiunto all'epoca risultati all'avanguardia nei benchmark di risposta a domande WikiHop e TriviaQA; il modello linguistico a livello di carattere ha stabilito nuovi risultati su text8 ed enwik8.
Longformer-Encoder-Decoder (LED) aggiunge un decoder per la sintesi del testo e altre attività di generazione di testo, dimostrato nella sintesi di interi articoli scientifici provenienti da arXiv. Hugging Face Transformers implementa entrambi i modelli e accetta i token globali come global_attention_mask. In seguito sono state sviluppate versioni specifiche per settore, come Clinical-Longformer, preaddestrato su ampi corpus di testi clinici e valutato su 10 attività, tra cui il riconoscimento di entità nominate, la risposta alle domande e la classificazione di documenti.
Longformer e modelli correlati#
- Transformer-XL: Legge un testo lungo un segmento alla volta e consente a ogni segmento di prestare attenzione agli stati nascosti memorizzati nella cache del segmento precedente, estendendo il contesto tramite ricorrenza per la generazione da sinistra a destra.
- BigBird: Un modello di Google dello stesso anno che aggiunge collegamenti di attenzione casuali all'attenzione a finestra e globale e legge anch'esso 4.096 token.
- Attenzione sparsa: La famiglia più ampia di schemi di attenzione fissi a cui appartiene Longformer.
- Attenzione flash: Calcola l'attenzione completa esatta in blocchi di memoria on-chip, così la memoria cresce linearmente con la lunghezza mentre il numero di punteggi resta quadratico.
Attenzione locale e globale nella visione#
Le immagini ad alta risoluzione presentano lo stesso problema, perché un Transformer visivo (ViT) trasforma un'immagine in migliaia di token di patch. Lo Swin Transformer risolve il problema usando finestre locali traslate; il Segment Anything Model (SAM) di Meta, incluso nel pacchetto Ultralytics, alterna blocchi di attenzione a finestre e globale per la segmentazione delle immagini: l'encoder d'immagini ViT-B presta attenzione all'interno di finestre non sovrapposte di 14 × 14 su una griglia di patch 64 × 64 in 8 dei suoi 12 blocchi e globalmente su tutte le 4.096 patch nei blocchi 2, 5, 8 e 11.










