Longformer
O Longformer combina atenção de janela deslizante com alguns tokens globais, fazendo com que seu custo cresça linearmente com o comprimento e permitindo processar documentos de 4.096 tokens.
O Longformer é um Transformer para documentos longos que substitui a autoatenção completa por atenção numa janela deslizante em torno de cada token, além de atenção global em alguns tokens escolhidos para a tarefa; assim, o custo cresce linearmente com o comprimento da entrada, em vez de quadraticamente. Iz Beltagy, Matthew Peters e Arman Cohan, do Allen Institute for AI, apresentaram-no no artigo de 2020 Longformer: The Long-Document Transformer. Codificadores como o BERT e o RoBERTa leem no máximo 512 tokens, pelo que era necessário dividir os textos mais longos em segmentos que perdiam as ligações entre si. Os modelos Longformer lançados leem 4096 tokens numa única passagem, uma janela de contexto oito vezes maior.
Como funciona a atenção do Longformer#
Cada camada combina padrões locais e globais num único mecanismo de atenção:
- Atenção com janela deslizante: Cada token presta atenção a uma janela fixa de tokens vizinhos, 256 de cada lado nos modelos lançados.
- Janela deslizante dilatada: Os intervalos entre as posições às quais se presta atenção permitem que uma cabeça abranja mais posições com o mesmo custo. Os autores utilizaram dilatação em algumas cabeças nas camadas superiores dos seus modelos de linguagem ao nível dos caracteres.
- Atenção global: Os tokens selecionados prestam atenção a todas as posições, e todas as posições prestam atenção a esses tokens, através de projeções separadas de consulta, chave e valor. A tarefa determina quais são: o token
[CLS]para a classificação e os tokens da pergunta para responder a perguntas.
A sobreposição de camadas alarga o alcance da janela, tal como as convoluções sobrepostas aumentam o campo recetivo de uma rede neuronal convolucional (CNN): l camadas com janela w abrangem l × w tokens. Cada camada calcula cerca de n × w pontuações de atenção, em vez de n × n. Contar os pares numa máscara Longformer torna a diferença visível:
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,5M, 1,0M e 2,0M de pontuações Longformer, contra 1,0M, 4,2M e 16,8M para a atenção completa: cada duplicação da entrada duplica o trabalho de atenção do Longformer e quadruplica o trabalho da atenção completa. As implementações reais calculam apenas a faixa de pontuações, o que permite poupar memória.
Treino e resultados#
O Longformer parte do ponto de verificação do RoBERTa. Os autores copiaram oito vezes suas 512 incorporações de posição aprendidas para cobrir 4.096 posições e continuaram o pré-treinamento de modelo de linguagem mascarada em documentos longos. Após o ajuste fino, superou consistentemente o RoBERTa em tarefas com documentos longos e alcançou resultados de ponta na época nos benchmarks de perguntas e respostas WikiHop e TriviaQA. Enquanto isso, o modelo de linguagem em nível de caracteres estabeleceu novos resultados no text8 e no enwik8.
O Longformer-Encoder-Decoder (LED) acrescenta um descodificador para tarefas de resumo de texto e outras tarefas de geração de texto, demonstradas na síntese de artigos científicos completos do arXiv. A biblioteca Transformers da Hugging Face implementa ambos os modelos e recebe os tokens globais como global_attention_mask. Surgiram depois versões para domínios específicos, como o Clinical-Longformer, pré-treinado com grandes corpora de textos clínicos e avaliado em 10 tarefas, incluindo reconhecimento de entidades nomeadas, resposta a perguntas e classificação de documentos.
Longformer e modelos relacionados#
- Transformer-XL: Lê um segmento de texto longo de cada vez e permite que cada segmento preste atenção aos estados ocultos em cache do segmento anterior, alargando o contexto através de recorrência para geração da esquerda para a direita.
- BigBird: Modelo da Google do mesmo ano que acrescenta ligações de atenção aleatórias à atenção de janela e à atenção global e também lê 4096 tokens.
- Atenção esparsa: Família mais abrangente de padrões de atenção fixos à qual pertence o Longformer.
- Atenção Flash: Calcula a atenção completa exata em blocos de memória na memória do chip, pelo que a utilização de memória cresce linearmente com o comprimento, enquanto o número de pontuações continua a crescer quadraticamente.
Atenção local e global em visão#
As imagens de alta resolução colocam o mesmo problema, porque um Transformer de visão (ViT) transforma uma imagem em milhares de tokens de blocos. O Swin Transformer resolve o problema com janelas locais deslocadas, e o Segment Anything Model (SAM) da Meta, executado no pacote Ultralytics, combina atenção em janelas e atenção global bloco a bloco para a segmentação de imagens: o codificador de imagens ViT-B presta atenção em janelas não sobrepostas de 14 × 14 na grelha de blocos de 64 × 64 em 8 dos seus 12 blocos e globalmente nos 4096 blocos nos blocos 2, 5, 8 e 11.










