La Struttura Base del Transformer#
Encoder e Decoder#
Il Transformer è composto da due componenti principali: encoder e decoder, ciascuno organizzato in una serie di strati. L’encoder è responsabile della trasformazione dell’input in una rappresentazione interna, mentre il decoder utilizza questa rappresentazione per generare l’output, come una traduzione in un’altra lingua o una sequenza di testo prevista.
Encoder#
L’encoder è costituito da \(N\) strati identici, ognuno dei quali contiene due sub-strati principali:
Multi-Head Self-Attention: Permette all’encoder di focalizzarsi su diverse posizioni della sequenza di input simultaneamente. Ad esempio, in una frase come “Il gatto nero salta sul muro”, l’encoder può concentrarsi sia su “gatto” che su “salta” per comprendere meglio il contesto. Questo meccanismo consente di catturare le relazioni a lungo termine tra le parole, migliorando la comprensione globale della frase.
Feed-Forward Neural Network (FFN): Una rete neurale completamente connessa che processa ogni posizione in maniera indipendente. Questo strato è responsabile della trasformazione non lineare delle informazioni, migliorando la capacità del modello di catturare relazioni complesse. Ogni FFN è costituito da due strati lineari con una funzione di attivazione ReLU in mezzo, che permette di introdurre non linearità essenziali per rappresentazioni complesse.
Decoder#
Il decoder, anch’esso costituito da \(N\) strati identici, contiene tre sub-strati principali:
Masked Multi-Head Self-Attention: Simile al Multi-Head Self-Attention dell’encoder, ma mascherato per evitare che i predittori futuri influenzino quelli attuali. Ad esempio, durante la generazione di una frase, il modello non dovrebbe considerare parole future. Questo è cruciale per mantenere la coerenza temporale nella generazione di sequenze.
Multi-Head Attention: Questo strato concentra l’attenzione sui valori provenienti dall’output dell’encoder. Per esempio, se l’encoder ha elaborato la frase “Il gatto nero”, il decoder può utilizzare queste informazioni per generare la traduzione corretta. Questo meccanismo permette al decoder di integrare informazioni contestuali provenienti dall’input originale.
Feed-Forward Neural Network (FFN): Come nell’encoder, processa ogni posizione indipendentemente, aggiungendo non linearità e trasformazioni complesse. Questo strato è cruciale per la trasformazione delle rappresentazioni intermedie in output finali.
Multi-Head Attention e Positional Encoding#
Multi-Head Attention#
Il Multi-Head Attention permette al modello di focalizzarsi su diverse parti della sequenza di input simultaneamente, migliorando così la capacità di rappresentazione del modello. Ogni “testa” di attenzione lavora in parallelo, eseguendo il meccanismo di attention e producendo uscite parziali. Queste uscite vengono concatenate e proiettate linearmente.
La formula per il Multi-Head Attention è:
Ad esempio, se il modello sta elaborando la frase “Il gatto nero salta”, una testa di attenzione potrebbe concentrarsi su “gatto” mentre un’altra su “salta”. Questo permette al modello di catturare diverse sfumature del contesto.
Positional Encoding#
Dato che il Transformer non utilizza strutture ricorrenti o convolutive, ha bisogno di un modo per incorporare informazioni sulla posizione degli elementi nella sequenza. Questo è ottenuto tramite il Positional Encoding, che aggiunge informazioni di posizione agli input.
La formula per il positional encoding è:
dove \(pos\) è la posizione e \(i\) è la dimensione. Questi valori vengono sommati agli embedding degli input per fornire informazioni sulle posizioni relative degli elementi all’interno delle sequenze. Ad esempio, in una frase come “Il gatto nero”, il positional encoding aiuta il modello a capire che “gatto” viene prima di “nero”.
Feed-Forward Neural Network nelle unità Transformer#
Ogni sub-strato di attenzione nel Transformer è seguito da una semplice rete neurale feed-forward completamente connessa che viene applicata separatamente e identicamente a ciascuna posizione. Ogni FFN è costituito da due strati lineari con una funzione di attivazione ReLU in mezzo:
Questi strati trasformano l’input e introducono non linearità, che sono essenziali per captare le rappresentazioni complesse dai dati. Ad esempio, se l’input è una rappresentazione vettoriale di “gatto”, l’FFN può trasformare questo vettore in una rappresentazione più astratta che cattura le caratteristiche semantiche del termine “gatto”.
Esempi di Applicazione della FFN#
Consideriamo una frase come “Il gatto nero salta sul muro”. Ogni parola viene trasformata in un vettore tramite embedding. L’FFN applicata a ciascun vettore può migliorare la rappresentazione di ogni parola, permettendo al modello di comprendere meglio il contesto. Ad esempio, la parola “salta” può essere trasformata in un vettore che cattura non solo il significato di “saltare” ma anche la relazione con “gatto” e “muro”.
Un altro esempio potrebbe essere una sequenza di comandi per un robot. Se il comando è “muovi avanti di 10 passi”, l’FFN può aiutare a trasformare la rappresentazione di “muovi” e “passi” in un formato che il robot può interpretare meglio per eseguire l’azione correttamente.
Self-Attention e il suo ruolo nei Transformer#
Il Self-Attention, o attenzione intrasequenziale, è la chiave di volta dell’architettura Transformer. Permette a ogni elemento della sequenza di focalizzarsi su ogni altro elemento della sequenza. In altre parole, per ogni parola in una frase, il modello può guardare a tutte le altre parole per generare una rappresentazione ponderata del contesto.
Calcolo del Self-Attention#
Il calcolo del self-attention avviene come segue:
Calcolo delle Matrici Query, Key e Value: Queste matrici vengono derivate dagli embedding degli input tramite proiezioni lineari. Ad esempio, se abbiamo una frase come “Il gatto nero salta”, ogni parola viene trasformata in tre vettori: query, key e value.
Calcolo dei Pesi di Attenzione: Utilizzare il prodotto scalare tra query e key, seguito dalla funzione softmax per ottenere i pesi di attenzione. Questo passaggio permette al modello di determinare l’importanza relativa di ogni parola rispetto alle altre. Ad esempio, “gatto” potrebbe avere un peso maggiore rispetto a “nero” quando si considera la parola “salta”.
Aggregazione dei Valori: Utilizzare i pesi di attenzione per una combinazione ponderata dei valori. Questo produce una nuova rappresentazione per ogni parola che tiene conto del contesto fornito dalle altre parole nella frase.
Vantaggi del Self-Attention#
Il meccanismo di self-attention riesce a catturare le dipendenze a lungo termine e le relazioni tra gli elementi della sequenza in modo molto più efficace rispetto alle architetture ricorrenti. Ad esempio, in un paragrafo lungo, il modello può facilmente correlare informazioni dall’inizio alla fine del testo, migliorando la coerenza e la comprensione globale.
Un altro vantaggio è la capacità di parallelizzazione. A differenza delle reti neurali ricorrenti, che devono elaborare gli input sequenzialmente, il self-attention permette di processare tutte le posizioni simultaneamente, aumentando significativamente la velocità di addestramento e inferenza.
Conclusione#
Il Transformer, con la sua architettura basata su encoder e decoder, il meccanismo di multi-head attention e le reti neurali feed-forward, rappresenta un avanzamento significativo nel campo del machine learning. La capacità di catturare relazioni complesse e dipendenze a lungo termine rende il Transformer uno strumento potente per una vasta gamma di applicazioni, dalla traduzione automatica alla generazione di testo. Con ulteriori ricerche e sviluppi, il potenziale dei Transformer continuerà a crescere, aprendo nuove frontiere nell’intelligenza artificiale.