paint-brush
Transformers: Era da Atençãopor@bhavdeepsethi
1,925 leituras
1,925 leituras

Transformers: Era da Atenção

por Bhavdeep Sethi7m2024/08/26
Read on Terminal Reader

Muito longo; Para ler

Explicação simples do modelo Transformer do artigo revolucionário "Attention is All You Need", que é a base de muitos modelos de última geração, como BERT e GPT.
featured image - Transformers: Era da Atenção
Bhavdeep Sethi HackerNoon profile picture
0-item



Em 2017, um grupo de pesquisadores (do Google e da Universidade de Toronto) introduziu uma nova maneira de lidar com tarefas de processamento de linguagem natural (NLP). Seu artigo revolucionário “ Attention is All You Need ” apresentou o modelo Transformer, uma arquitetura que desde então se tornou a base de muitos sistemas avançados de IA hoje. O desempenho, a escalabilidade e a versatilidade do modelo levaram à sua ampla adoção, formando a espinha dorsal de modelos de última geração como BERT (Bidirectional Encoder Representations) e GPT (Generative Pre-trained Transformers).


Antes do modelo Transformer, a maioria dos modelos de IA que processavam linguagem dependiam muito de um tipo de rede neural chamada Recurrent Neural Network (RNN) ou sua versão melhorada, a Long Short-Term Memory Network (LSTM). Em particular, problemas como modelagem de linguagem e tradução automática (também chamada de transdução de sequência). Esses modelos processavam palavras em uma sequência, uma por uma, da esquerda para a direita (ou vice-versa). Embora essa abordagem fizesse sentido porque as palavras em uma frase geralmente dependem das palavras anteriores, ela tinha algumas desvantagens significativas:


  • Treinamento lento: como RNNs e LSTMs processam uma palavra por vez, treinar esses modelos em grandes conjuntos de dados consumia muito tempo.
  • Dificuldade com frases longas: esses modelos muitas vezes tinham dificuldade para entender relações entre palavras que estavam muito distantes em uma frase.
  • Paralelização limitada: como as palavras eram processadas sequencialmente, era difícil aproveitar o hardware de computação moderno que prospera realizando muitas operações ao mesmo tempo (paralelização).


A Ideia-Chave: Atenção à Arquitetura

A ideia central por trás do modelo Transformer é algo chamado "atenção". Em termos simples, a atenção ajuda o modelo a focar em partes específicas de uma frase ao tentar entender o significado/contexto de uma palavra. Considere a frase, "O carro que estava estacionado na garagem é azul". Quando você pensa na palavra "azul", você naturalmente foca na palavra "carro" no início da frase porque ela diz o que é azul. Os modelos de tradução automática teriam dificuldade em identificar se o "azul" estava se referindo ao carro ou à garagem. É isso que a autoatenção faz - ajuda o modelo a focar nas palavras relevantes, não importa onde elas estejam na frase.


Note que atenção não era um conceito novo e já estava sendo usado em conjunto com RNNs. Transformer foi o primeiro modelo de transdução que dependia somente de atenção, eliminando assim a necessidade de redes neurais. Isso deu as seguintes vantagens:

  • Processamento Paralelo: Diferentemente das RNNs, que processam palavras uma após a outra, o Transformer pode processar todas as palavras em uma frase ao mesmo tempo. Isso torna o treinamento muito mais rápido.
  • Melhor compreensão do contexto: Por causa do mecanismo de autoatenção, o Transformer pode capturar relacionamentos entre palavras, não importa quão distantes elas estejam em uma frase. Isso é crucial para entender frases complexas.
  • Escalabilidade: O modelo pode ser facilmente ampliado adicionando mais camadas, permitindo que ele lide com conjuntos de dados muito grandes e tarefas complexas.


Como você pode ver, o novo modelo não apenas removeu todas as desvantagens das redes neurais, mas também melhorou o desempenho da tradução automática!


Como o artigo original pode ser um pouco difícil de entender, aqui está uma explicação mais simples da arquitetura do modelo descrita no artigo.

O Transformer - Arquitetura do Modelo


Pilhas de codificador e decodificador : O Transformer consiste em uma pilha de codificador (à esquerda) e uma pilha de decodificador (à direita). A pilha de codificador converte a sequência de entrada (como uma frase) em um conjunto de representações contínuas, enquanto a pilha de decodificador converte essas representações em uma sequência de saída (como uma tradução). Para cada pilha, indo de baixo para cima, aqui estão os principais componentes do modelo explicados com um exemplo.


  1. Processamento de sentenças de entrada no codificador

    • Entradas : O texto que você deseja traduzir. Por exemplo: "O carro que estava estacionado na garagem é azul."

    • Embedding de entrada : converte palavras em representações numéricas de comprimento fixo (vetores) chamadas embeddings. Esses embeddings capturam o significado semântico das palavras de uma forma que o modelo possa entender. Do nosso exemplo:

      • "O" -> [0,9, -0,4, 0,2, ...]

      • "carro" -> [0,5, 0,1, -0,7, ...]

      • "aquilo" -> [-0,8, 0,2, 0,8, ...]

      • e da mesma forma para cada palavra na frase acima.


    • Codificação Posicional : Como o modelo processa os embeddings de entrada, que não têm nenhuma ordenação, ele precisa de uma maneira de entender a ordem das palavras em uma frase. A codificação posicional adiciona essas informações sobre a posição de cada palavra na sequência ao seu embedding.

      • "O" na posição 1 pode ser ajustado para [0,9 + P1, -0,4 + P1, 0,2 + P1, ...], onde P1 representa a codificação posicional para a primeira posição, gerando assim uma nova incorporação exclusiva para a posição P1.


    • Mecanismo de Autoatenção : Conforme descrito anteriormente, isso permite que o modelo se concentre em palavras diferentes em uma frase, dependendo do contexto. Para cada palavra, o mecanismo de autoatenção calcula uma pontuação que representa quanto foco deve ser dado a outras palavras ao codificar a palavra atual.

      • Para a palavra “carro”, a autoatenção pode determinar que “estacionado”, “garagem” e “azul” são particularmente relevantes para entender seu contexto.


    • Atenção multi-cabeça : Nova parte do modelo do transformador. Atenção multi-cabeça é simplesmente múltiplas camadas/operações de autoatenção sendo executadas em paralelo e concatenadas linearmente.

      • Por exemplo, uma cabeça pode focar no sujeito principal (“carro”) e suas propriedades (“azul”), enquanto outra cabeça pode focar na oração relativa (“que estava estacionado na garagem”).

      • O módulo de atenção multicabeça dá ao modelo a capacidade de entender que “azul” é mais relevante para o carro em comparação à garagem.


    • Redes Neurais Feed-Forward : Após a camada de autoatenção, a saída é passada por uma rede neural feed-forward que é aplicada a cada posição separadamente e identicamente (mais uma vez, pode ser executada em paralelo!). Isso consiste em duas transformações lineares com uma ativação ReLU entre elas.


    • Add & Norm : Conexões residuais (add) são usadas para adicionar a entrada de uma camada à sua saída, que é então normalizada (norm). Isso ajuda no treinamento de redes profundas, evitando que gradientes desapareçam ou explodam.


  2. Gerando a tradução no decodificador

    Em NLP, é comum denotar o início do token de início de sequência com o caractere especial <SOS> e o fim da sequência com <EOS>. O decodificador pega a entrada processada do codificador e gera a tradução em francês "La voiture qui était garée dans le garage est bleue." Veja como essa parte funciona:


    • Entrada para o Decodificador : O decodificador começa com a representação codificada da frase em inglês do codificador. Se você notar, o decodificador também pega sua própria saída como entrada. Como ele não terá uma entrada para a palavra inicial, inserimos o token <SOS> no início (portanto deslocado para a direita) e removemos a última palavra. Essa sequência deslocada é o que é alimentado no decodificador.


    • Autoatenção mascarada : No decodificador, um mecanismo de autoatenção mascarada garante que cada palavra na sequência de saída possa atender somente às palavras anteriores a ela. Isso impede que o modelo olhe para frente e garante que ele gere a tradução uma palavra de cada vez, da esquerda para a direita.

      • Por exemplo, quando o decodificador está prestes a gerar a palavra “La” (a primeira palavra em francês), ele só conhece o contexto de <SOS> e não as palavras futuras como “Voiture”.


    • Redes neurais de feed-forward : o decodificador aplica outra rede neural de feed-forward para processar essas informações ainda mais, refinando a tradução passo a passo.


No decodificador, após processar a frase de entrada por meio de múltiplas camadas de autoatenção mascarada, atenção codificador-decodificador e redes feed-forward, obtemos uma sequência de representações contínuas (vetor de floats) para cada posição na frase alvo (francês no nosso caso). Essas representações precisam ser convertidas em palavras reais. É aqui que a camada linear e softmax final entra em jogo.


  • Camada Linear : Esta camada é uma camada de rede neural totalmente conectada que transforma a saída da última camada decodificadora (uma representação vetorial densa para cada posição) em um vetor do tamanho do vocabulário alvo (todas as palavras possíveis no idioma francês, por exemplo).
  • Camada Softmax : Após a transformação linear, uma função softmax é aplicada para converter esses logits (pontuações brutas) em probabilidades. Essas probabilidades indicam a probabilidade de cada palavra no vocabulário alvo ser a próxima palavra correta na tradução. Isso nos permite adivinhar qual palavra do vocabulário francês deve ser selecionada (a célula com a maior probabilidade).


O decodificador basicamente faz isso:

  • Primeiro passo: O decodificador começa com <SOS> e gera a primeira palavra “La”.
  • Segundo passo: Com a entrada <SOS> La, o modelo prevê a próxima palavra, “Voiture”.
  • Terceiro passo: O decodificador pega <SOS> La Voiture e gera a palavra “quit”.
  • Processo Contínuo: Este processo continua, gerando “était”, “garée”, “dans”, “le”, “garage”, “est” e finalmente “bleue”.
  • Token de fim de sequência: o decodificador eventualmente gera um token de fim de sequência <EOS> para indicar que a tradução foi concluída.


Ao combinar essas etapas, o Transformer pode entender a estrutura e o significado de toda a frase de forma mais eficaz do que os modelos anteriores. O mecanismo de autoatenção e o processamento paralelo permitem que o Transformer capture efetivamente as nuances e a estrutura dos idiomas de origem e de destino, tornando-o altamente proficiente em tarefas como tradução automática.