Encoder (Transformador) (PT)

From Systems analysis Wiki
Jump to navigation Jump to search

Encoder (do inglês, Encoder, codificador) — em aprendizado de máquina e aprendizado profundo, é um componente de uma rede neural cuja principal tarefa é transformar uma sequência de dados de entrada (por exemplo, texto ou imagem) em uma representação numérica rica, geralmente chamada de estado oculto (hidden state), vetor de contexto (context vector) ou embedding. Essa representação captura as características-chave e a semântica dos dados de entrada em um formato conveniente para processamento posterior.

Em um sentido mais amplo, na teoria da informação, um encoder é qualquer dispositivo ou algoritmo que converte informações de um formato para outro, frequentemente com o objetivo de compressão ou transmissão.

Conceito e Finalidade

O principal objetivo de um encoder em redes neurais é extrair características úteis dos dados de entrada e "codificá-las" em um vetor denso de comprimento fixo. Este processo pode ser visto como uma forma de redução de dimensionalidade não linear, onde dados de entrada de alta dimensão e esparsos (por exemplo, texto representado por vetores one-hot) são transformados em um espaço vetorial de baixa dimensão, mas rico em informações (espaço latente).

Este vetor codificado pode então ser usado por:

  • Um Decoder para gerar uma nova sequência (por exemplo, em tradução automática).
  • Um Classificador para resolver tarefas de análise (por exemplo, análise de sentimento de texto).
  • Para tarefas que exigem a compreensão de todo o contexto de entrada.

O Encoder em Diferentes Arquiteturas

Encoder em Autoencoders

Um dos exemplos clássicos é a arquitetura de autoencoder. Ele consiste em duas partes:

  1. Encoder: Comprime os dados de entrada em uma representação oculta de menor dimensionalidade (código latente).
  2. Decoder: Tenta reconstruir os dados originais a partir dessa representação comprimida.

Ao treinar tal rede para minimizar o erro de reconstrução, o encoder aprende a extrair as características mais importantes dos dados.

Encoder em Redes Neurais Recorrentes (RNN/LSTM)

Antes do surgimento da arquitetura Transformer, os encoders em tarefas de processamento de sequências (seq2seq) eram construídos com base em redes neurais recorrentes (RNN) ou sua variante aprimorada, LSTM.

  • Princípio de funcionamento: Um encoder RNN processa a sequência de entrada token por token. A cada passo, ele atualiza seu estado oculto, incorporando informações sobre o token atual e o estado anterior. O estado oculto final, obtido após o processamento de toda a sequência, é considerado o vetor que codifica o significado de toda a sequência de entrada. Este vetor é frequentemente chamado de vetor de contexto ou "vetor de pensamento" (thought vector).

Encoder na Arquitetura Transformer

A revolução no processamento de linguagem natural está associada ao surgimento do encoder baseado na arquitetura Transformer. Diferente das RNNs, ele processa todos os tokens da sequência em paralelo.

O encoder do Transformer consiste em uma pilha (N) de camadas idênticas. Cada camada possui duas subcamadas principais:

  1. Autoatenção Multi-Cabeça (Multi-Head Self-Attention): Este mecanismo permite que cada token na sequência de entrada "preste atenção" a todos os outros tokens e pondere sua importância para formar sua própria representação contextual. Isso permite que o modelo capture dependências complexas entre palavras, independentemente de sua posição.
  2. Rede Neural Feed-Forward: É aplicada à representação de cada token individualmente para uma transformação não linear adicional.

A principal diferença do encoder do Transformer em relação a um encoder RNN é que sua saída não é um único vetor de contexto, mas sim uma sequência de vetores contextualizados — um para cada token de entrada. Cada um desses vetores contém informações sobre seu próprio token no contexto de toda a sequência.

Tipos de Modelos Baseados em Encoder

Modelos Encoder-Decoder

Esta é a arquitetura clássica para tarefas de sequência para sequência (seq2seq), como tradução automática ou sumarização.

  • Princípio de funcionamento: O encoder processa toda a sequência de entrada (por exemplo, uma frase no idioma de origem). Suas representações de saída são então passadas para o decoder, que as utiliza para gerar autorregressivamente a sequência de saída (uma frase no idioma de destino). O decoder "olha" para a saída do encoder usando um mecanismo especial de atenção cruzada (cross-attention).
  • Exemplos: O Transformer original, T5, BART.

Modelos Somente-Encoder (Encoder-Only)

Esses modelos utilizam exclusivamente a pilha de encoders do Transformer.

  • Princípio de funcionamento: Eles são projetados para tarefas que exigem uma compreensão profunda do contexto de todo o texto de entrada. Graças à natureza bidirecional do mecanismo de autoatenção, eles criam representações contextuais ricas para cada token.
  • Aplicação: Ideais para tarefas de análise e compreensão de linguagem (NLU), como:
    • Classificação de texto (por exemplo, análise de sentimento).
    • Reconhecimento de Entidade Nomeada (NER).
    • Resposta a Perguntas (Question Answering), onde a resposta é um trecho do texto.
  • Exemplo: BERT e seus derivados (RoBERTa, ALBERT).

Relação com o Decoder

Na arquitetura encoder-decoder, o encoder e o decoder desempenham papéis complementares:

  • O Encoder é responsável pela compreensão da sequência de entrada.
  • O Decoder é responsável pela geração da sequência de saída.

O elo de ligação fundamental entre eles é o mecanismo de atenção cruzada (cross-attention) dentro do decoder. A cada passo da geração, o decoder forma uma consulta (Query) com base na parte já gerada da sequência de saída e a utiliza para "prestar atenção" às representações de saída do encoder (que servem como chaves e valores — Key e Value). Isso permite que o decoder se concentre nas partes mais relevantes da sequência de entrada para gerar o próximo token.

Ver também

  • BERT

Literatura

  • Hinton, G. E.; Salakhutdinov, R. R. (2006). Reducing the Dimensionality of Data with Neural Networks. Science. DOI:10.1126/science.1127647.
  • Cho, K. et al. (2014). Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation. arXiv:1406.1078.
  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Bahdanau, D.; Cho, K.; Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
  • Kingma, D. P.; Welling, M. (2014). Auto-Encoding Variational Bayes. arXiv:1312.6114.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Dai, Z. et al. (2019). Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. arXiv:1901.02860.
  • Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Dosovitskiy, A. et al. (2020). An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929.