Decoder (Transformer)
Decoder (em inglês: Decoder, decodificador) — em aprendizado de máquina e aprendizado profundo, é um componente de uma rede neural cuja principal tarefa é transformar uma representação codificada (por exemplo, um vetor de contexto ou uma sequência de estados ocultos obtidos de um encoder) em uma sequência de dados de saída (como texto ou imagem). O decoder gera os dados de saída passo a passo, geralmente em modo autorregressivo.
Em um sentido mais amplo, na teoria da informação, um decoder é qualquer dispositivo ou algoritmo que converte dados codificados de volta para seu formato original ou compreensível.
Conceito e Finalidade
Se o encoder é responsável pela compreensão e compressão dos dados de entrada, o decoder é responsável pela geração e expansão dos dados de saída. Ele utiliza uma representação compacta e rica em informações e a transforma sequencialmente no formato desejado, seja uma frase em outro idioma, uma descrição textual de uma imagem ou uma sequência de notas musicais.
A característica fundamental da maioria dos decoders é sua natureza autorregressiva: para gerar o próximo elemento de uma sequência (por exemplo, uma palavra ou um pixel), eles utilizam tanto a representação codificada quanto todos os elementos gerados anteriormente.
O Decoder em Diferentes Arquiteturas
Decoder em Autoencoders
Na arquitetura de um autoencoder, o decoder realiza a tarefa oposta à do encoder:
- O Encoder comprime os dados de entrada em uma representação latente.
- O Decoder utiliza essa representação latente e tenta restaurar (reconstruir) os dados originais a partir dela.
O treinamento de tal rede permite que o decoder seja usado de forma independente para gerar novos dados, alimentando sua entrada com vetores do espaço latente.
Decoder em Redes Neurais Recorrentes (RNN/LSTM)
Nos modelos clássicos de sequência para sequência (seq2seq), baseados em RNN ou LSTM, o decoder é uma rede recorrente que gera a sequência de saída token por token.
- Princípio de funcionamento: O decoder é inicializado com o estado oculto final (vetor de contexto) do encoder. A cada passo, ele recebe como entrada o token gerado anteriormente e seu próprio estado oculto anterior, gerando em seguida o próximo token e atualizando seu estado. Esse processo continua até que um token especial de fim de sequência (`<EOS>`) seja gerado.
Decoder na Arquitetura Transformer
O decoder baseado na arquitetura Transformer também opera de forma autorregressiva, mas sua estrutura interna é diferente. Ele consiste em uma pilha de () camadas idênticas, cada uma com três subcamadas principais:
- Autoatenção Multi-cabeça Mascarada (Masked Multi-Head Self-Attention): Este mecanismo funciona de maneira semelhante ao do encoder, mas com uma diferença crucial: o mascaramento. A máscara impede que cada posição "preste atenção" às posições subsequentes na sequência. Isso garante que a previsão para a posição dependa apenas das saídas já conhecidas nas posições anteriores a , preservando a propriedade autorregressiva.
- Atenção Cruzada Multi-cabeça (Multi-Head Cross-Attention): Este é o mecanismo chave que conecta o decoder ao encoder. Aqui, as consultas (Query) vêm da camada anterior do decoder, enquanto as chaves (Key) e os valores (Value) vêm das representações de saída do encoder. Isso permite que o decoder, a cada passo da geração, foque nas partes mais relevantes da sequência de entrada.
- Rede Neural Feed-Forward (Feed-Forward Network): Análoga à utilizada no encoder.
Tipos de Modelos Baseados em Decoder
Modelos Encoder-Decoder
Esta é a arquitetura clássica onde o encoder e o decoder trabalham em conjunto.
- Princípio de funcionamento: O encoder cria uma representação dos dados de entrada, e o decoder gera os dados de saída utilizando essa representação.
- Exemplos: O Transformer original, T5, BART.
Modelos Somente-Decoder (Decoder-Only)
Esses modelos, que se tornaram dominantes na IA generativa, utilizam exclusivamente a pilha de decoders do Transformer.
- Princípio de funcionamento: Nesses modelos, não há atenção cruzada com o encoder, pois não há encoder. O modelo opera puramente em modo autorregressivo, prevendo o próximo token com base em todos os tokens anteriores na mesma sequência. O prompt de entrada e o texto já gerado são processados em conjunto.
- Aplicação: Ideais para tarefas que exigem a continuação de um texto fornecido (geração de texto, sistemas de diálogo, chatbots).
- Exemplos: A série GPT, LLaMA, Claude.
Relação com o Encoder
A interação entre o encoder e o decoder é um princípio fundamental para tarefas de transformação.
- O Encoder comprime a informação da sequência de entrada em um conjunto de vetores.
- O Decoder utiliza esse conjunto de vetores para gerar sequencialmente uma nova sequência.
A atenção cruzada permite que o decoder, a cada passo, "consulte" o encoder para entender em qual parte do texto original deve se concentrar naquele momento. Por exemplo, ao traduzir uma frase, o decoder, ao gerar uma palavra em alemão, pode "olhar" para a palavra correspondente em inglês na entrada.
Ver também
- GPT
Literatura
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.