O Transformer é um modelo de deep learning proposto em 2017, que é essencialmente usado em tarefas de PNL. Se você estiver trabalhando em tarefas de Processamento de Linguagem Natural, como resumo de texto, tradução ou previsão de emoções, então encontrará esse termo com muita frequência.

RNN sofria do problema do gradiente de desaparecimento, que causa perda de memória de longo prazo. O RNN processa o texto sequencialmente, o que significa que se houver uma frase longa como - 'XYZ foi à França em 2019 quando não havia casos de cobiça e lá conheceu o presidente daquele país.' Agora, se perguntarmos que aqui 'aquele país' se refere a qual lugar? A RNN não será capaz de lembrar que o país era 'França' porque encontrou a palavra 'França' muito antes. A natureza sequencial do processamento significa que o modelo foi treinado no nível da palavra, não no nível da frase. Os gradientes carregam informações usadas na atualização do parâmetro RNN e quando o gradiente se torna menor, nenhum aprendizado real é feito.

Com a adição de mais algumas células de memória e a resolução do problema dos gradientes de desaparecimento, o problema com relação à perda de memória de longo prazo foi resolvido até certo ponto. Mas o problema com o processamento sequencial permaneceu porque RNN foi incapaz de processar a frase intacta de uma vez. Em vez de processar em paralelo, ele processou as palavras uma por uma. Este problema não pode ser resolvido em LSTMs devido ao seu design sequencial. Em LSTMs, usamos o método de incorporação estática, o que sugere que, sem saber o contexto de uma palavra, a incorporamos a algum vetor n-dimensional. Mas se o contexto muda, o significado também muda.

Ex: existe uma palavra - ' Ponto ', e nós a usamos em dois contextos diferentes fornecidos abaixo

  • A agulha tem um nítido ponto .
  • Não é educado apontar para as pessoas.

Aqui, a palavra 'Ponto' tem dois contextos diferentes em ambas as frases, mas quando a incorporação é feita, o contexto não é levado em consideração. Portanto, houve a necessidade de uma arquitetura diferente - Transformer. O Transformer foi proposto no artigo Attention is All You Need .

As redes neurais foram classificadas principalmente em dois grupos, que são - Feedforward e Feedback . Os transformadores são baseados em redes feedforward, o que significa que a informação se move da entrada para a saída e não contém um loop de feedback. Em contraste, os LSTMs utilizam redes de feedback, o que significa que a informação pode passar para ambas as direções e consiste em um caminho de feedback, ou seja, podemos usar novamente a memória para novas previsões.  

Agora, chegando à arquitetura do Transformer. Codificador e decodificador são blocos de construção de um transformador. O bloco codificador transforma a sequência de palavras de entrada em um vetor e um decodificador converte um vetor em uma sequência. Por exemplo: Um texto em francês processado em seu equivalente em inglês pode ser:

Je suis étudiant -> Eu sou um estudante.

Arquitetura do transformador

A arquitetura do codificador tem duas camadas: Autoatenção e Feed Forward . As entradas do codificador passam primeiro por uma camada de autoatenção e, em seguida, as saídas da camada de autoatenção são alimentadas para uma rede neural feed-forward. Os dados sequenciais possuem características temporais. Significa que cada palavra mantém alguma posição em relação à outra. Por exemplo, vamos pegar uma frase - 'O gato não perseguiu o rato, porque não estava com fome'. Aqui, podemos dizer facilmente que "isso" está se referindo ao gato, mas não é tão simples para um algoritmo. Quando o modelo está processando a palavra 'isso', a auto-atenção permite que ele associe 'isso' a 'gato'. Autoatenção é o método para reformular a representação com base em todas as outras palavras da frase.

Arquitetura da Camada do Codificador e do Decodificador do Transformer

A arquitetura do decodificador tem três camadas: Autoatenção, Atenção do codificador-decodificador e Feed Forward. O decodificador tem tanto a camada de autoatenção quanto a de feed-forward, que também estão presentes no codificador, mas entre elas está uma camada de atenção que ajuda o decodificador a se concentrar em partes relevantes da frase de entrada.

Existem seis camadas de codificadores e decodificadores na arquitetura do Transformer. No codificador inferior, são realizados embeddings de palavras e cada palavra é transformada em um vetor de tamanho 512. A entrada para os outros codificadores seria a saída do codificador que está diretamente abaixo. As várias camadas do codificador são para descobrir o pipeline de PNL. Como - a primeira camada é usada para tags de partes da fala, a segunda camada para constituintes, a terceira camada para dependências, a quarta camada para funções semânticas, a quinta para co-referência e a sexta para relações.

A última camada é a camada Softmax que atribui para cada palavra no vocabulário uma probabilidade e toda essa probabilidade soma 1.