IA 101

O que são Redes Neurais Transformer?

mm

Redes Neurais Transformer Descritas

Transformers são um tipo de modelo de aprendizado de máquina que se especializa em processar e interpretar dados sequenciais, tornando-os ideais para tarefas de processamento de linguagem natural. Para entender melhor o que é um modelo de aprendizado de máquina transformer e como ele opera, vamos dar uma olhada mais detalhada nos modelos de transformer e nos mecanismos que os impulsionam.

Este artigo cobrirá:

  • Modelos de Sequência para Sequência
  • A Arquitetura da Rede Neural Transformer
  • O Mecanismo de Atenção
  • Diferenças entre Transformers e RNNs/LSTMs

Modelos de Sequência para Sequência

Modelos de sequência para sequência são um tipo de modelo de NLP que são usados para converter sequências de um tipo em uma sequência de outro tipo. Existem vários tipos de modelos de sequência para sequência, como Redes Neurais Recorrentes e Memória de Curto Prazo Longo (LSTM).

Modelos de sequência para sequência tradicionais, como RNNs e LSTMs, não são o foco deste artigo, mas uma compreensão deles é necessária para apreciar como os modelos de transformer operam e por que eles são superiores aos modelos de sequência para sequência tradicionais.

Em resumo, os modelos RNN e LSTM consistem em redes de codificador e decodificador que analisam os dados de entrada em várias etapas de tempo. A rede de codificador é responsável por formar uma representação codificada das palavras nos dados de entrada. Em cada etapa de tempo, a rede de codificador recebe uma sequência de entrada e um estado oculto da etapa de tempo anterior na sequência. Os valores do estado oculto são atualizados à medida que os dados prosseguem pela rede, até a última etapa de tempo, onde um “vetor de contexto” é gerado. O vetor de contexto é então passado para a rede de decodificador, que é usada para gerar uma sequência de destino, prevendo a palavra mais provável que se combine com a palavra de entrada para as respectivas etapas de tempo.

Esses modelos podem ser aumentados por meio do uso de um “mecanismo de atenção”. Um mecanismo de atenção define quais partes do vetor de entrada a rede deve se concentrar para gerar a saída apropriada. Em outras palavras, um mecanismo de atenção permite que o modelo de transformer processe uma palavra de entrada enquanto também presta atenção às informações relevantes contidas pelas outras palavras de entrada. Os mecanismos de atenção também mascaram palavras que não contêm informações relevantes.

A Arquitetura da Rede Neural Transformer

Vamos mergulhar mais profundamente no mecanismo de atenção mais tarde, mas por agora, vamos dar uma olhada na arquitetura de uma rede neural transformer em um nível mais alto.

Em geral, uma rede neural transformer parece algo assim:

Embora essa estrutura geral possa mudar entre redes, as peças principais permanecerão as mesmas: codificações posicionais, vetores de palavra, mecanismo de atenção, rede neural de alimentação direta.

Codificações Posicionais e Vetores de Palavra

Uma rede neural transformer opera pegando uma sequência de entradas e convertendo-as em duas outras sequências. A rede transformer produz uma sequência de embeddings de vetores de palavra e codificações posicionais.

Embeddings de vetores de palavra são apenas o texto representado em um formato numérico que a rede neural pode processar. Enquanto isso, as codificações posicionais são representações vetoriais que contêm informações sobre a posição da palavra atual na sentença de entrada, em relação a outras palavras.

Outros modelos de rede neural baseados em texto, como RNNs e LSTMs, usam vetores para representar as palavras nos dados de entrada. Esses embeddings de vetores mapeiam palavras para valores constantes, mas isso é limitante porque as palavras podem ser usadas em diferentes contextos. Uma rede transformer resolve esse problema tornando os valores das palavras mais flexíveis, usando funções sinusoidais para permitir que os vetores de palavra assumam diferentes valores dependendo da posição da palavra na sentença.

Isso permite que o modelo de rede neural preserve informações sobre a posição relativa das palavras de entrada, mesmo após os vetores passarem pelas camadas da rede transformer.

As codificações posicionais e os embeddings de vetores de palavra são somados e então passados para as redes de codificador e decodificador. Embora as redes transformer usem esquemas de codificador/decodificador, assim como RNNs e LSTMs, uma grande diferença entre elas é que todos os dados de entrada são alimentados na rede ao mesmo tempo, enquanto em RNNs/LSTMs, os dados são passados sequencialmente.

As redes de codificador são responsáveis por converter as entradas em representações que a rede pode aprender. As redes de decodificador fazem o oposto e convertem as codificações em uma distribuição de probabilidade usada para gerar as palavras mais prováveis na sentença de saída. É crucial que tanto as redes de codificador quanto as de decodificador tenham um mecanismo de atenção.

Como os GPUs são capazes de processamento paralelo, vários mecanismos de atenção são usados em paralelo, calculando as informações relevantes para todas as palavras de entrada. Essa capacidade de prestar atenção a várias palavras ao mesmo tempo, chamada de “atenção multi-cabeça”, ajuda a rede neural a aprender o contexto de uma palavra dentro de uma sentença, e é uma das principais vantagens que as redes transformer têm sobre RNNs e LSTMs.

O Mecanismo de Atenção

O mecanismo de atenção é a parte mais importante de uma rede transformer. O mecanismo de atenção é o que permite que os modelos de transformer ultrapassam o limite de atenção de um modelo RNN ou LSTM típico. Modelos de sequência para sequência tradicionais descartam todos os estados intermediários e usam apenas o estado final/vetor de contexto quando inicializam a rede de decodificador para gerar previsões sobre uma sequência de entrada.

Descartar tudo, exceto o vetor de contexto final, funciona bem quando as sequências de entrada são relativamente pequenas. No entanto, à medida que o comprimento da sequência de entrada aumenta, o desempenho do modelo degrada-se usando esse método. Isso ocorre porque se torna difícil resumir uma sequência de entrada longa como um único vetor. A solução é aumentar a “atenção” do modelo e utilizar os estados intermediários do codificador para construir vetores de contexto para o decodificador.

O mecanismo de atenção define quão importante são os outros tokens de entrada para o modelo quando as codificações são criadas para qualquer token dado. Por exemplo, “it” é um pronome geral, frequentemente usado para se referir a animais quando o sexo não é conhecido. Um mecanismo de atenção permitiria que um modelo de transformer determinasse que, no contexto atual, “it” se refere a um esquilo, porque ele pode examinar todas as palavras relevantes na sentença de entrada.

Um mecanismo de atenção pode ser usado de três maneiras diferentes: codificador-decodificador, apenas codificador, apenas decodificador.

A atenção codificador-decodificador permite que o decodificador considere sequências de entrada ao gerar uma saída, enquanto os mecanismos de atenção apenas codificador e apenas decodificador permitem que as redes considerem todas as partes das sequências anteriores e atuais, respectivamente.

A construção de um mecanismo de atenção pode ser dividida em cinco etapas:

  1. Computar uma pontuação para todos os estados do codificador.
  2. Calcular os pesos de atenção
  3. Computar vetores de contexto
  4. Atualizar o vetor de contexto com a saída da etapa de tempo anterior
  5. Gerar saída com o decodificador

A primeira etapa é ter o decodificador computar uma pontuação para todos os estados do codificador. Isso é feito treinando a rede de decodificador, que é uma rede neural de alimentação direta básica. Quando o decodificador é treinado na primeira palavra da sequência de entrada, nenhum estado interno/oculto foi criado ainda, então o último estado do codificador é tipicamente usado como o estado anterior do decodificador.

Para calcular os pesos de atenção, uma função softmax é usada para gerar uma distribuição de probabilidade para os pesos de atenção.

Uma vez que os pesos de atenção são calculados, o vetor de contexto precisa ser computado. Isso é feito multiplicando os pesos de atenção e o estado oculto juntos para cada etapa de tempo.

Após o vetor de contexto ser computado, ele é usado ao lado da palavra gerada na etapa de tempo anterior para gerar a próxima palavra na sequência de saída. Como o decodificador não tem saída anterior para se referir na primeira etapa de tempo, um token “início” especial é frequentemente usado em seu lugar.

Diferenças entre Transformers e RNNs/LSTMs

Vamos cobrir rapidamente algumas das diferenças entre RNNs e LSTMs.

RNNs processam entradas sequencialmente, enquanto um vetor de estado oculto é mantido e alterado pelas palavras de entrada à medida que elas passam pela rede. Os estados ocultos de um RNN geralmente contêm muito pouca informação relevante sobre as entradas anteriores. Novas entradas frequentemente sobrescrevem o estado atual, o que causa perda de informação e degradação do desempenho ao longo do tempo.

Em contraste, os modelos de transformer processam a sequência de entrada inteira de uma vez. O mecanismo de atenção permite que cada palavra de saída seja informada por cada palavra de entrada e estado oculto, tornando a rede mais confiável para textos longos.

LSTMs são versões modificadas de RNNs, ajustadas para lidar com sequências de entrada mais longas. A arquitetura LSTM usa uma estrutura chamada “portas”, com “portas de entrada”, “portas de saída” e “portas de esquecimento”. O design com portas lida com a perda de informação comum aos modelos RNN. Os dados ainda são processados sequencialmente, e o design recorrente torna os modelos LSTM difíceis de treinar usando computação paralela, o que torna o tempo de treinamento mais longo no geral.

Os engenheiros de LSTM frequentemente adicionavam mecanismos de atenção à rede, o que era conhecido por melhorar o desempenho do modelo. No entanto, eventualmente foi descoberto que o mecanismo de atenção sozinho melhorava a precisão. Essa descoberta levou à criação de redes transformer que usavam mecanismos de atenção e computação paralela, graças aos GPUs.

Blogueiro e programador com especialidades em Machine Learning e Deep Learning tópicos. Daniel espera ajudar os outros a usar o poder da IA para o bem social.