Encoder (Transformer) (IT)

From Systems analysis Wiki
Jump to navigation Jump to search

Encoder (in italiano: codificatore) — nel Machine Learning e nel deep learning è un componente della Neural Network il cui compito principale è trasformare una sequenza di dati in ingresso (ad esempio, testo o immagine) in una ricca rappresentazione numerica, comunemente denominata stato nascosto, vettore di contesto o embedding. Questa rappresentazione cattura le caratteristiche chiave e la semantica dei dati in ingresso in una forma adatta all'elaborazione successiva.

In senso più ampio, nella teoria dell'informazione, un encoder è qualsiasi dispositivo o algoritmo che converte informazioni da un formato a un altro, spesso allo scopo di comprimerle o trasmetterle.

Concetto e scopo

L'obiettivo principale dell'encoder nelle Neural Network è estrarre dai dati in ingresso le caratteristiche utili e "codificarle" in un vettore denso di lunghezza fissa. Questo processo può essere visto come una forma di riduzione non lineare della dimensionalità, in cui i dati in ingresso ad alta dimensione e sparsi (ad esempio, testo rappresentato da vettori one-hot) vengono trasformati in uno spazio vettoriale a bassa dimensione ma informativamente denso (spazio latente).

Questo vettore codificato può poi essere utilizzato:

  • Da un Decoder per generare una nuova sequenza (ad esempio, nella traduzione automatica).
  • Da un classificatore per risolvere compiti di analisi (ad esempio, l'analisi del sentiment del testo).
  • Per compiti che richiedono la comprensione dell'intero contesto in ingresso.

Encoder nelle diverse architetture

Encoder nell'autoencoder

Uno degli esempi classici è l'architettura dell'autoencoder. È composto da due parti:

  1. Encoder: Comprime i dati in ingresso in una rappresentazione nascosta di dimensione ridotta (codice latente).
  2. Decoder: Tenta di ricostruire i dati originali a partire da questa rappresentazione compressa.

Addestrando tale rete a minimizzare l'errore di ricostruzione, l'encoder impara a estrarre le caratteristiche più importanti dai dati.

Encoder nelle reti neurali ricorrenti (RNN/LSTM)

Prima dell'avvento dell'architettura Transformer, gli encoder nei compiti di elaborazione di sequenze (seq2seq) erano costruiti sulla base delle reti neurali ricorrenti (RNN) o della loro variante migliorata LSTM.

  • Principio di funzionamento: L'encoder RNN elabora la sequenza in ingresso token per token. A ogni passo aggiorna il proprio stato nascosto, incorporando le informazioni sul token corrente e sullo stato precedente. Lo stato nascosto finale, ottenuto dopo l'elaborazione dell'intera sequenza, è considerato come il vettore che codifica il significato dell'intera sequenza in ingresso. Questo vettore è spesso chiamato vettore di contesto o «vettore del pensiero» (thought vector).

Encoder nell'architettura Transformer

La rivoluzione nell'elaborazione del linguaggio naturale è legata alla comparsa dell'encoder basato sull'architettura Transformer. A differenza delle RNN, elabora tutti i token della sequenza in parallelo.

L'encoder del Transformer è composto da uno stack (N) di strati identici. Ogni strato ha due principali sottostrati:

  1. Multi-Head Self-Attention: Questo meccanismo consente a ogni token nella sequenza in ingresso di «prestare attenzione» a tutti gli altri token e di ponderarne l'importanza per formare la propria rappresentazione contestuale. Ciò permette al modello di cogliere dipendenze complesse tra le parole, indipendentemente dalla loro posizione.
  2. Feed-Forward Network: Viene applicata alla rappresentazione di ogni token singolarmente per un'ulteriore trasformazione non lineare.

La differenza fondamentale tra l'encoder del Transformer e l'encoder RNN è che il primo non produce un unico vettore di contesto in uscita, bensì una sequenza di vettori contestualizzati — uno per ogni token in ingresso. Ognuno di questi vettori contiene informazioni sul proprio token nel contesto dell'intera sequenza.

Tipologie di modelli basati sull'encoder

Modelli encoder-decoder

Questa è l'architettura classica per i compiti di trasformazione da sequenza a sequenza (seq2seq), come la traduzione automatica o la sintesi.

  • Principio di funzionamento: L'encoder elabora l'intera sequenza in ingresso (ad esempio, una frase nella lingua sorgente). Le sue rappresentazioni in uscita vengono quindi trasmesse al decoder, il quale, utilizzandole, genera in modo autoregressivo la sequenza in uscita (la frase nella lingua di destinazione). Il decoder «osserva» l'uscita dell'encoder tramite un apposito meccanismo di cross-attention.
  • Esempi: il Transformer originale, T5, BART.

Modelli solo-encoder (Encoder-Only)

Questi modelli utilizzano esclusivamente lo stack di encoder del Transformer.

  • Principio di funzionamento: Sono progettati per compiti che richiedono una comprensione approfondita del contesto dell'intero testo in ingresso. Grazie alla natura bidirezionale del meccanismo di self-attention, creano ricche rappresentazioni contestuali per ogni token.
  • Applicazioni: Ideali per compiti di analisi e comprensione del linguaggio (NLU), come:
    • Classificazione del testo (ad esempio, analisi del sentiment).
    • Riconoscimento di entità nominate (NER).
    • Risposta alle domande (Question Answering), in cui la risposta è un frammento del testo.
  • Esempio: BERT e i suoi derivati (RoBERTa, ALBERT).

Relazione con il decoder

Nell'architettura encoder-decoder, encoder e decoder svolgono ruoli complementari:

  • L'encoder è responsabile della comprensione della sequenza in ingresso.
  • Il decoder è responsabile della generazione della sequenza in uscita.

Il collegamento chiave tra di essi è il meccanismo di cross-attention all'interno del decoder. A ogni passo della generazione, il decoder formula una query (Query) sulla base della parte già generata della sequenza in uscita e la utilizza per «prestare attenzione» alle rappresentazioni in uscita dell'encoder (che fungono da chiavi e valori — Key e Value). Ciò consente al decoder di concentrarsi sulle parti più rilevanti della sequenza in ingresso per generare il token successivo.

Vedi anche

  • BERT

Bibliografia

  • 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.