Capítulo 85 – Transformadores – O Estado da Arte em Processamento de Linguagem Natural
Transformadores (Transformers) representam uma arquitetura de Deep Learning que visa resolver tarefas sequence-to-sequence enquanto lida com dependências de longo alcance com facilidade. Esse não é um conceito fácil de compreender, mas ajudaremos você!
Vamos iniciar agora uma sequência de capítulos baseados no artigo: Attention is All You Need (Atenção é tudo que você precisa). E os autores não estavam brincando quando escolheram esse título porque você vai precisar de toda a atenção à sua disposição para isso. Mas não deixe isso te assustar, pois vai valer a pena!
O famoso paper “Atenção é tudo que você precisa” de 2017 mudou a forma como pensávamos sobre a atenção. Com dados suficientes, multiplicações de matrizes, camadas lineares e normalização de camadas, podemos realizar a tradução automática de texto de última geração, desejo antigo de quem trabalha com Inteligência Artificial.
No entanto, 2020 foi definitivamente o ano dos transformadores! Da linguagem natural agora eles estão em tarefas de visão computacional. Como passamos da atenção para a auto-atenção? Por que o transformador funciona tão bem? Quais são os componentes críticos para seu sucesso?
Acompanhe essa sequência de capítulos e descubra! Vamos começar com algumas definições.
O Que é um Transformador?
O Transformer em Processamento de Linguagem Natural é uma arquitetura que visa resolver tarefas sequence-to-sequence enquanto lida com dependências de longo alcance com facilidade. Ele se baseia inteiramente na autoatenção (Self-Attention) para computar as representações de sua entrada e saída SEM usar RNNs (Redes Neurais Recorrentes) alinhadas em sequência ou convolução. ?
O Transformer é um modelo de aprendizado profundo introduzido em 2017 que utiliza o mecanismo de atenção, pesando a influência de diferentes partes dos dados de entrada. É usado principalmente no campo do Processamento de Linguagem Natural (PLN), mas pesquisas recentes também desenvolveram sua aplicação em outras tarefas, como compreensão de vídeo.
Assim como as Redes Neurais Recorrentes (RNNs), os transformadores são projetados para lidar com dados de entrada sequenciais, como linguagem natural, para tarefas como tradução e resumo de texto. No entanto, ao contrário das RNNs, os Transformers não exigem que os dados sequenciais sejam processados em ordem. Em vez disso, a operação de atenção identifica o contexto para qualquer posição na sequência de entrada. Por exemplo, se os dados de entrada forem uma frase em linguagem natural, o Transformer não precisará processar o início antes do final. Em vez disso, identifica o contexto que confere significado a uma palavra na frase. Devido a esse recurso, o Transformer permite muito mais paralelização do que RNNs e, portanto, reduz os tempos de treinamento.
Os transformadores rapidamente se tornaram o modelo de escolha para problemas de PLN, substituindo modelos de rede neural recorrente, como a LSTM (Long-Short Term Memory). Como o modelo Transformer facilita a paralelização durante o treinamento, ele permite o treinamento em conjuntos de dados maiores do que era possível antes de ser introduzido. Isso levou ao desenvolvimento de sistemas pré-treinados, como BERT (Bidirectional Encoder Representations from Transformers) e GPT (Generative Pre-Training Transformer), que foram treinados com enormes conjuntos de dados de linguagem geral, como Wikipedia Corpus e Common Crawl, e podem ser ajustado para tarefas específicas de linguagem.
Um Pouco de História
Antes da introdução dos Transformers, a maioria dos sistemas de PLN de última geração contava com redes neurais recorrentes (RNNs), como LSTMs e unidades recorrentes com portas (GRUs), com mecanismos de atenção adicionais. O Transformer foi construído sobre essas tecnologias de atenção sem usar uma estrutura RNN, destacando o fato de que os mecanismos de atenção por si só, sem processamento sequencial recorrente, são poderosos o suficiente para atingir o desempenho das RNNs com atenção.
Conforme vimos em capítulos anteriores deste livro, as RNNs processam tokens sequencialmente, mantendo um vetor de estado que contém uma representação dos dados vistos após cada token. Para processar o token, o modelo combina o estado que representa a frase até o token com a informação do novo token para criar um novo estado, representando a frase até o token. Teoricamente, as informações de um token podem se propagar arbitrariamente ao longo da sequência, se em todos os pontos o estado continuar a codificar informações contextuais sobre o token. Mas, na prática, esse mecanismo é imperfeito: devido em parte ao problema do desaparecimento do gradiente, o estado do modelo no final de uma frase longa geralmente não contém informações precisas e extraíveis sobre os tokens anteriores.
Este problema foi resolvido com a introdução de mecanismos de atenção. Os mecanismos de atenção permitem que um modelo olhe diretamente e se baseie no estado em qualquer ponto anterior ao longo da frase. A camada de atenção pode acessar todos os estados anteriores e pesá-los de acordo com alguma medida de relevância aprendida para o token atual, fornecendo informações mais nítidas sobre tokens relevantes distantes. Um exemplo claro da utilidade da atenção está na tradução, onde o contexto é fundamental para determinar o significado de uma palavra em uma frase. Em um sistema de tradução de inglês para francês, a primeira palavra da saída em francês provavelmente depende muito do início da entrada em inglês.
No entanto, em um modelo LSTM de codificador-decodificador clássico, para produzir a primeira palavra da saída em francês, o modelo recebe apenas o vetor de estado da última palavra em inglês. Teoricamente, esse vetor pode codificar informações sobre toda a frase em inglês, fornecendo ao modelo todo o conhecimento necessário, mas na prática essas informações muitas vezes não são bem preservadas. Se um mecanismo de atenção for introduzido, o modelo pode, em vez disso, aprender os estados dos primeiros tokens em inglês ao produzir o início da saída em francês, dando a ele um conceito muito melhor do que está traduzindo.
Quando adicionados às RNNs, os mecanismos de atenção levaram a grandes ganhos no desempenho. A introdução do Transformer trouxe à luz o fato de que os mecanismos de atenção eram poderosos em si mesmos, e que o processamento sequencial recorrente dos dados não era necessário para alcançar os ganhos de desempenho das RNNs com atenção. O Transformer usa um mecanismo de atenção sem ser uma RNN, processando todos os tokens ao mesmo tempo e calculando pesos de atenção entre eles. O fato de que os Transformers não dependem do processamento sequencial e se prestam muito facilmente à paralelização permite que os Transformers sejam treinados com mais eficiência em conjuntos de dados maiores.
Arquitetura
Como os modelos inventados antes dele, o Transformer é uma arquitetura codificador-decodificador. O codificador consiste em um conjunto de camadas de codificação que processa a entrada iterativamente uma camada após a outra e o decodificador consiste em um conjunto de camadas de decodificação que fazem a mesma coisa com a saída do codificador.
A função de cada camada do codificador é processar sua entrada para gerar codificações, contendo informações sobre quais partes das entradas são relevantes entre si. Ele passa seu conjunto de codificações para a próxima camada do codificador como entradas. Cada camada decodificadora faz o oposto, pegando todas as codificações e as processando, usando suas informações contextuais incorporadas para gerar uma sequência de saída.
Para conseguir isso, cada codificador e camada de decodificador faz uso de um mecanismo de atenção, que para cada entrada, pesa a relevância de todas as outras entradas e extrai informações delas de acordo para produzir a saída. Cada camada do decodificador também tem um mecanismo de atenção adicional que extrai informações das saídas dos decodificadores anteriores, antes que a camada do decodificador extraia informações das codificações. Ambas as camadas do codificador e do decodificador têm uma rede neural feed-forward para processamento adicional das saídas e contêm conexões residuais e etapas de normalização de camada.
Como dito no início, não é um conceito trivial e recomendamos a leitura dos capítulos anteriores deste livro se quiser realmente compreender como chegamos aos Transformadores.
Nos próximos capítulos vamos estudar os Transformadores em mais detalhes e se quiser aplicar os Transformadores na prática, eles são abordados em quase todos os cursos da Formação Engenheiro de IA.
Até o próximo capítulo.
Referências:
Processamento de Linguagem Natural com Transformers
Understanding Attention In Deep Learning
How Transformers work in deep learning and NLP: an intuitive introduction