Decoder (Transformer) (IT)
Decodificatore (ingl. Decoder) — nel Machine Learning e nel deep learning è un componente della rete neurale il cui compito principale è trasformare una rappresentazione codificata (ad esempio, un vettore di contesto o una sequenza di stati nascosti ottenuti dall'encoder) in una sequenza di dati in uscita (ad esempio, testo o immagini). Il decodificatore genera i dati di output passo dopo passo, generalmente in modalità autoregressiva.
In senso più ampio, nella teoria dell'informazione, un decodificatore è qualsiasi dispositivo o algoritmo che converte dati codificati nel loro formato originale o comprensibile.
Concetto e scopo
Se l'encoder è responsabile della comprensione e della compressione dei dati in ingresso, il decodificatore è responsabile della generazione e dello sviluppo dei dati in uscita. Prende una rappresentazione compatta e ricca di informazioni e la trasforma sequenzialmente nel formato desiderato, che si tratti di una frase in un'altra lingua, di una descrizione testuale di un'immagine o di una sequenza di note musicali.
La caratteristica chiave della maggior parte dei decodificatori è la loro natura autoregressiva: per generare l'elemento successivo della sequenza (ad esempio, una parola o un pixel), utilizzano sia la rappresentazione codificata sia tutti gli elementi precedentemente generati.
Il decodificatore nelle diverse architetture
Il decodificatore nell'autoencoder
Nell'architettura dell'autoencoder, il decodificatore svolge il compito inverso rispetto all'encoder:
- L'encoder comprime i dati di ingresso in una rappresentazione latente.
- Il decodificatore prende questa rappresentazione latente e tenta di ricostruire (ripristinare) i dati originali a partire da essa.
Addestrare tale rete consente di utilizzare il decodificatore separatamente per generare nuovi dati, fornendo in ingresso vettori dallo spazio latente.
Il decodificatore nelle reti neurali ricorrenti (RNN/LSTM)
Nei classici modelli di trasformazione sequenza-in-sequenza (seq2seq), basati su RNN o LSTM, il decodificatore è una rete ricorrente che genera la sequenza di output token per token.
- Principio di funzionamento: Il decodificatore viene inizializzato con lo stato nascosto finale (vettore di contesto) dell'encoder. Ad ogni passo riceve in ingresso il token precedentemente generato e il proprio stato nascosto precedente, quindi genera il token successivo e aggiorna il proprio stato. Questo processo continua finché non viene generato lo speciale token di fine sequenza (`<EOS>`).
Il decodificatore nell'architettura Transformer
Il decodificatore basato sull'architettura Transformer funziona anch'esso in modo autoregressivo, ma la sua struttura interna è differente. È composto da uno stack () di strati identici, ciascuno dei quali presenta tre principali sottostrati:
- Masked Multi-Head Self-Attention - Autoattenzione multi-testa mascherata: Questo meccanismo funziona come nell'encoder, ma con un'importante differenza: il mascheramento. La maschera impedisce a ogni posizione di «prestare attenzione» alle posizioni successive nella sequenza. Ciò garantisce che la previsione per la posizione dipenda solo dagli output già noti nelle posizioni , preservando la proprietà autoregressiva.
- Multi-Head Cross-Attention - Attenzione incrociata multi-testa: È il meccanismo chiave che collega il decodificatore all'encoder. Qui le Query provengono dallo strato precedente del decodificatore, mentre le Key e i Value provengono dalle rappresentazioni di output dell'encoder. Ciò consente al decodificatore di concentrarsi, ad ogni passo della generazione, sulle parti più rilevanti della sequenza in ingresso.
- Feed-Forward Network - Rete neurale completamente connessa: Analoga a quella utilizzata nell'encoder.
Tipi di modelli basati sul decodificatore
Modelli encoder-decoder
Questa è l'architettura classica, in cui encoder e decodificatore lavorano in coppia.
- Principio di funzionamento: L'encoder crea una rappresentazione dei dati in ingresso e il decodificatore genera i dati in uscita utilizzando tale rappresentazione.
- Esempi: Il Transformer originale, T5, BART.
Modelli solo-decodificatore (Decoder-Only)
Questi modelli, diventati dominanti nell'IA generativa, utilizzano esclusivamente uno stack di decodificatori Transformer.
- Principio di funzionamento: In questi modelli non è presente l'attenzione incrociata verso l'encoder, poiché l'encoder non esiste. Il modello funziona in modalità puramente autoregressiva, prevedendo il token successivo sulla base di tutti i token precedenti nella stessa sequenza. Il prompt in ingresso e il testo già generato vengono elaborati insieme.
- Applicazione: Ideali per compiti in cui è richiesto di continuare un testo dato (generazione di testo, sistemi di dialogo, chatbot).
- Esempi: La serie GPT, LLaMA, Claude.
Relazione con l'encoder
L'interazione tra encoder e decodificatore è un principio fondamentale per i compiti di trasformazione.
- L'encoder comprime le informazioni sulla sequenza in ingresso in un insieme di vettori.
- Il decodificatore utilizza questo insieme di vettori per generare sequenzialmente una nuova sequenza.
L'attenzione incrociata consente al decodificatore di «consultare» l'encoder ad ogni passo, per capire su quale parte del testo originale concentrarsi in quel momento. Ad esempio, durante la traduzione di una frase, il decodificatore, generando una parola tedesca, può «guardare» la corrispondente parola inglese nell'input.
Vedi anche
- GPT
Bibliografia
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.