thumb|Uma arquitetura transformer padrão, mostrando à esquerda um codificador e à direita um decodificador. Nota: usa a convenção pre-LN, que é diferente da convenção post-LN usada no transformer original de 2017 No aprendizado profundo, o transformer ou transformador é uma arquitetura de rede neural artificial baseada no mecanismo de atenção multicabeça (multi-head), em que o texto é convertido em representações numéricas chamadas tokens, e cada token é convertido num vetor através da procura numa tabela de embedding de palavras. Em cada camada, cada token é então contextualizado dentro do escopo da janela de contexto com outros tokens (não mascarados) através de um mecanismo de atenção multicabeça paralelo, permitindo que o sinal dos tokens-chave seja amplificado e o dos tokens menos importantes seja diminuído.
Os transformers têm a vantagem de não terem unidades recorrentes, necessitando por isso de menos tempo de treinamento do que as arquiteturas neurais recorrentes (RNNs) anteriores, como a LSTM. Variações posteriores têm sido amplamente adotadas para o treinamento de grandes modelos de linguagem (LLMs) em grandes conjuntos de dados (de linguagem).
A versão moderna do transformer foi proposta no artigo de 2017 "Attention Is All You Need" por investigadores da Google. Os antecessores dos transformers foram desenvolvidos como uma melhoria em relação às arquiteturas anteriores para tradução automática, mas desde então têm encontrado muitas aplicações. São utilizados no processamento de linguagem natural em larga escala, em visão computacional (Transformer de Visão), na aprendizagem por reforço, em áudio, na aprendizagem multimodal, na robótica, e para jogar xadrez. Também levaram ao desenvolvimento de sistemas pré-treinados, tais como os transformers pré-treinados generativos (GPTs) e o BERT (representações de codificador bidirecional de transformers).
História
Antecessores Durante muitos anos, a modelagem e geração de sequências foi feita usando redes neurais recorrentes (RNNs) simples. Um exemplo inicial muito citado foi a Rede de Elman (1990). Em teoria, a informação de um token pode propagar-se arbitrariamente ao longo da sequência, mas, na prática, o problema do desvanecimento do gradiente deixa o estado do modelo, no final de uma frase longa, sem informações precisas e extraíveis sobre os tokens anteriores.
Um avanço fundamental foi a LSTM (1995), uma RNN que utilizou várias inovações para superar o problema do desvanecimento do gradiente, permitindo a aprendizagem eficiente na modelagem de sequências longas. Uma inovação fundamental foi o uso de um mecanismo de atenção que utilizava neurônios que multiplicam as saídas de outros neurônios, as chamadas unidades multiplicativas. Redes neurais usando unidades multiplicativas foram mais tarde chamadas de redes sigma-pi ou redes de ordem superior. A LSTM tornou-se a arquitetura padrão para modelagem de sequências longas até à publicação dos transformers em 2017. No entanto, a LSTM ainda usava processamento sequencial, como a maioria das outras RNNs. Especificamente, as RNNs operam um token de cada vez, do primeiro ao último; elas não podem operar em paralelo sobre todos os tokens de uma sequência.
Os transformers modernos superam este problema, mas, ao contrário das RNNs, exigem um tempo de computação que é uma função quadrática do tamanho da janela de contexto. O controlador de pesos rápidos de escala linear (1992) aprende a calcular uma matriz de pesos para processamento adicional, dependendo da entrada. Uma das suas duas redes tem "pesos rápidos" ou "links dinâmicos" (1981).Christoph von der Malsburg: The correlation theory of brain function. Internal Report 81-2, MPI Biophysical Chemistry, 1981. http://cogprints.org/1380/1/vdM_correlation.pdf Ver Reimpressão em Models of Neural Networks II, capítulo 2, páginas 95–119. Springer, Berlim, 1994.Jerome A. Feldman, "Dynamic connections in neural networks," Biological Cybernetics, vol. 46, no. 1, pp. 27–39, Dez. 1982. Uma rede neural lenta aprende por descida de gradiente a gerar chaves e valores para calcular as mudanças de peso da rede neural rápida que calcula respostas a consultas. Mais tarde, demonstrou-se que isso era equivalente ao transformer linear não normalizado.
Atenção com seq2seq
A ideia de transdução de sequência codificador-decodificador foi desenvolvida no início da década de 2010; comumente citados como os originadores que produziram seq2seq estão dois artigos publicados simultaneamente em 2014. [primeira versão publicada no arXiv em 10 de set. de 2014]
Um modelo de 380 milhões de parâmetros para tradução automática utiliza duas memórias curtas de longo prazo (LSTM). A sua arquitetura consiste em duas partes. O codificador é uma LSTM que recebe uma sequência de tokens e transforma-a num vetor. O decodificador é outra LSTM que converte o vetor numa sequência de tokens. Da mesma forma, outro modelo de 130 milhões de parâmetros utilizou unidades recorrentes bloqueadas (GRU) em vez de LSTM. Pesquisas posteriores mostraram que as GRUs não são nem melhores nem piores do que as LSTMs para seq2seq.
Estes primeiros modelos seq2seq não possuíam mecanismo de atenção e o vetor de estado só é acessível após o processamento da última palavra do texto de origem. Embora, em teoria, esse vetor retenha a informação sobre toda a frase original, na prática a informação é mal preservada. Isso ocorre porque a entrada é processada sequencialmente por uma rede recorrente num vetor de saída de tamanho fixo, que é então processado por outra rede recorrente numa saída. Se a entrada for longa, o vetor de saída não seria capaz de conter todas as informações relevantes, degradando a saída. Como evidência, a inversão da frase de entrada melhorou a tradução seq2seq.
O modelo RNN search introduziu um mecanismo de atenção ao seq2seq para a tradução automática, a fim de resolver o problema de estrangulamento (bottleneck) (do vetor de saída de tamanho fixo), permitindo ao modelo processar dependências de longa distância com mais facilidade. O nome deve-se ao fato de que ele "emula a pesquisa através de uma frase de origem durante a decodificação de uma tradução".
Os desempenhos relativos foram comparados entre as arquiteturas do modelo de atenção global (a do RNN search) e local (janela deslizante) para tradução automática, concluindo-se que a atenção mista apresentava maior qualidade do que a atenção global, ao passo que a atenção local reduzia o tempo de tradução.
Em 2016, o Google Tradutor foi remodelado para a Tradução Automática Neural do Google, o que substituiu o modelo anterior baseado na tradução automática estatística. O novo modelo era um modelo seq2seq em que o codificador e o decodificador eram ambos compostos por 8 camadas de LSTM bidirecional. Demorou nove meses a ser desenvolvido, e superou a abordagem estatística, que demorou dez anos a ser desenvolvida.
Paralelizando a atenção
Os modelos seq2seq com atenção (incluindo a autoatenção) continuavam a sofrer do mesmo problema das redes recorrentes: são difíceis de paralelizar, o que os impedia de serem acelerados em GPUs. Em 2016, a atenção decomponível aplicou um mecanismo de autoatenção às redes feedforward, que são fáceis de paralelizar, e alcançou um resultado no estado da arte em implicação textual com uma ordem de grandeza de parâmetros menor do que as LSTMs. Um de seus autores, Jakob Uszkoreit, suspeitava que a atenção sem recorrência seria suficiente para a tradução de idiomas, daí o título "a atenção é tudo o que você precisa". Essa hipótese ia contra o conhecimento convencional da época, e até o seu pai, Hans Uszkoreit, um linguista computacional conhecido, estava cético. No mesmo ano, propôs-se a autoatenção (chamada intra-atenção ou atenção intra-frase) para LSTMs.
Em 2017, o modelo original codificador-decodificador de transformer (de tamanho 100M) foi proposto no artigo "Attention Is All You Need". Na altura, o foco da pesquisa incidia sobre a melhoria da seq2seq para a tradução automática, removendo a sua recorrência para processar todos os tokens em paralelo, mas preservando o seu mecanismo de atenção de produto escalar (dot-product) para manter o seu desempenho no processamento de texto. Isso levou à introdução de um modelo de atenção multicabeça (multi-head) que era mais fácil de paralelizar devido ao uso de cabeças independentes e à ausência de recorrência. A sua capacidade de paralelização foi um fator importante para o seu uso generalizado em grandes redes neurais.
Era do boom da IA Já na primavera de 2017, mesmo antes de o pré-print "Attention is all you need" ser publicado, um dos coautores aplicou a variação "somente-decodificador" (decoder-only) da arquitetura para gerar artigos fictícios da Wikipédia. A arquitetura Transformer é agora usada juntamente com muitos modelos generativos que contribuem para o atual boom da IA.
Na modelagem de linguagem, o ELMo (2018) era uma LSTM bidirecional que produzia embeddings de palavras contextualizados, melhorando a linha de pesquisa a partir de saco de palavras e word2vec. Foi seguido pelo BERT (2018), um modelo transformer apenas de codificador. Em outubro de 2019, o Google começou a utilizar o BERT para processar consultas de pesquisa. Em 2020, o Google Tradutor substituiu o modelo anterior de codificador RNN-decodificador RNN por um modelo codificador transformer-decodificador RNN.
A partir de 2018, a série GPT da OpenAI, de transformers apenas decodificadores, tornou-se o estado da arte em geração de linguagem natural. No final de 2022, um chatbot baseado no GPT-3, o ChatGPT, tornou-se inesperadamente popular, desencadeando um boom em torno de grandes modelos de linguagem.
Desde 2020, os transformers têm sido aplicados em modalidades além do texto, incluindo o transformer de visão, reconhecimento de fala, robótica e de forma multimodal. O transformer de visão, por sua vez, estimulou novos desenvolvimentos nas redes neurais convolucionais. Geradores de imagem e vídeo como DALL-E (2021), Stable Diffusion 3 (2024) e Sora (2024), usam transformers para analisar dados de entrada (como prompts de texto) ao dividi-los em "tokens" e, em seguida, calculando a relevância entre cada token usando autoatenção, o que ajuda o modelo a compreender o contexto e os relacionamentos dentro dos dados.
Treinamento Métodos para estabilizar o treinamento A arquitetura transformer simples tinha dificuldade em convergir. No artigo original, os autores recomendaram o uso de aquecimento (warmup) da taxa de aprendizagem. Ou seja, a taxa de aprendizagem deve aumentar linearmente de 0 até ao valor máximo durante a primeira parte do treinamento (geralmente recomendado como sendo **2%** do número total de passos de treinamento), antes de decair novamente.
Um artigo de 2020 descobriu que o uso de normalização de camada antes (em vez de depois) da atenção multicabeça e das camadas feedforward estabiliza o treinamento, não exigindo o aquecimento da taxa de aprendizagem. Este é o "Transformer pre-LN" e é mais comumente usado, em comparação com o original "Transformer post-LN".
Pré-treinamento e ajuste fino Os transformers são normalmente pré-treinados primeiro por aprendizagem autosupervisionada num grande conjunto de dados genérico, seguido por um ajuste fino supervisionado num pequeno conjunto de dados específico da tarefa. O conjunto de dados de pré-treinamento é normalmente um grande corpus não rotulado, como The Pile. As tarefas para pré-treinamento e ajuste fino incluem frequentemente: Modelagem de linguagem Previsão da frase seguinte Resposta a perguntas Compreensão de leitura Análise de sentimento Parafraseamento
O relatório do transformer T5 documenta um grande número de tarefas de pré-treinamento em linguagem natural. Alguns exemplos são: