Home / Programmazione / Cosa sono le reti neurali Transformer?

Cosa sono le reti neurali Transformer?

Reti neurali del trasformatore descritteModelli da sequenza a sequenzaTransformer Neural Network ArchitectureCodifiche posizionali e vettori di paroleIl meccanismo di attenzioneDifferenze tra trasformatori e RNN / LSTM
Reti neurali del trasformatore descritte
I trasformatori sono un tipo di modello di apprendimento automatico specializzato nell’elaborazione e nell’interpretazione di dati sequenziali, rendendoli ottimali per le attività di elaborazione del linguaggio naturale . Per capire meglio cos’è un trasformatore di apprendimento automatico e come funziona, diamo uno sguardo più da vicino ai modelli di trasformatore e ai meccanismi che li guidano.

Questo articolo coprirà:

Modelli da sequenza a sequenza
L’architettura della rete neurale Transformer
Il meccanismo di attenzione
Differenze tra trasformatori e RNN / LSTM
Modelli da sequenza a sequenza
I modelli da sequenza a sequenza sono un tipo di modello PNL utilizzato per convertire le sequenze di un tipo in una sequenza di un altro tipo. Esistono vari tipi di modelli da sequenza a sequenza, come modelli di rete neurale ricorrente e modelli LSTM (Long Short-Term Memory) .

I modelli tradizionali da sequenza a sequenza come RNN e LSTMS non sono al centro di questo articolo, ma è necessaria una loro comprensione per capire come funzionano i modelli di trasformatore e perché sono superiori ai tradizionali modelli da sequenza a sequenza.

In breve, i modelli RNN e LSTM sono costituiti da reti di codificatori e decodificatori che analizzano i dati di ingresso in varie fasi temporali. Il modello dell’encoder è responsabile della formazione di una rappresentazione codificata delle parole nei dati di ingresso. Ad ogni fase temporale la rete dell’encoder acquisisce una sequenza di input e uno stato nascosto dalla fase temporale precedente nella serie. I valori dello stato nascosto vengono aggiornati man mano che i dati procedono attraverso la rete, fino all’ultimo passaggio temporale, in cui viene generato un “vettore di contesto”. Il vettore di contesto viene quindi passato alla rete del decodificatore, che viene utilizzata per generare una sequenza di destinazione prevedendo la parola più probabile che si accoppia con la parola di ingresso per i rispettivi passi temporali.

Questi modelli possono essere aumentati attraverso l’uso di un ” meccanismo di attenzione “. Un meccanismo di attenzione definisce su quali parti del vettore di input la rete deve concentrarsi per generare l’output appropriato. In altre parole, un meccanismo di attenzione consente al modello del trasformatore di elaborare una parola in ingresso mentre si occupa anche delle informazioni rilevanti contenute nelle altre parole di ingresso. I meccanismi di attenzione mascherano anche le parole che non contengono informazioni rilevanti.

Transformer Neural Network Architecture
Entreremo nel meccanismo dell’attenzione più in dettaglio più avanti, ma per ora diamo un’occhiata all’architettura di una rete neurale del trasformatore a un livello superiore.

In generale, una rete neurale del trasformatore ha un aspetto simile al seguente:

Sebbene questa struttura generale possa cambiare tra le reti, i pezzi centrali rimarranno gli stessi: codifiche posizionali, vettori di parole, meccanismo di attenzione, rete neurale feed-forward.

Codifiche posizionali e vettori di parole
Un trasformatore di reti neurali opera prendendo una sequenza di input e convertendo questi input in altre due sequenze. Il trasformatore produce una sequenza di incorporamenti di vettori di parole e codifiche posizionali.

Gli incorporamenti di vettori di parole sono solo il testo rappresentato in un formato numerico che la rete neurale può elaborare. Nel frattempo, le codifiche posizionali sono rappresentazioni vettorializzate contenenti informazioni sulla posizione della parola corrente nella frase di input, in relazione ad altre parole.

Altri modelli di rete neurale basati su testo come RNN e LSTM utilizzano vettori per rappresentare le parole nei dati di input. Questi incorporamenti vettoriali associano le parole a valori costanti, ma ciò è limitante perché le parole possono essere utilizzate in contesti diversi. Una rete di trasformatori risolve questo problema rendendo i valori delle parole più flessibili, utilizzando funzioni sinusoidali per far assumere ai vettori delle parole valori diversi a seconda della posizione della parola nella frase.

Ciò consente al modello di rete neurale di preservare le informazioni relative alla posizione relativa delle parole di ingresso, anche dopo che i vettori si muovono attraverso gli strati della rete del trasformatore.

Le codifiche posizionali e le incorporazioni di vettori di parole vengono sommate insieme quindi passate sia nella rete del codificatore che in quella del decodificatore. Mentre le reti neurali del trasformatore utilizzano schemi di codificatore / decodificatore proprio come RNN e LSTM, una delle principali differenze tra loro è che tutti i dati di input vengono immessi nella rete contemporaneamente, mentre negli RNN / LSTM, i dati vengono passati in sequenza.

Le reti di codificatori sono responsabili della conversione degli input in rappresentazioni da cui la rete può apprendere, mentre le reti di decodificatori fanno il contrario e convertono le codifiche in una distribuzione di probabilità utilizzata per generare le parole più probabili nella frase di output. Fondamentalmente, sia il codificatore che la rete del decodificatore hanno un meccanismo di attenzione.

Poiché le GPU sono in grado di elaborare in parallelo, vengono utilizzati più meccanismi di attenzione in parallelo, calcolando le informazioni rilevanti per tutte le parole di input. Questa capacità di prestare attenzione a più parole, denominate attenzione “multi-head”, alla volta aiuta la rete neurale ad apprendere il contesto di una parola all’interno di una frase ed è uno dei principali vantaggi che le reti di trasformatori hanno su RNN e LSTM.

Il meccanismo di attenzione
Il meccanismo di attenzione è la parte più importante di una rete di trasformatori. Il meccanismo di attenzione è ciò che consente ai modelli di trasformatore di andare oltre il limite di attenzione di un tipico modello RNN o LSTM. I modelli tradizionali da sequenza a sequenza scartano tutti gli stati intermedi e utilizzano solo il vettore di stato / contesto finale quando si inizializza la rete del decodificatore per generare previsioni su una sequenza di input.

Scartare tutto tranne il vettore di contesto finale funziona bene quando le sequenze di input sono piuttosto piccole. Tuttavia, con l’aumentare della lunghezza di una sequenza di input, le prestazioni del modello diminuiranno durante l’utilizzo di questo metodo. Questo perché diventa piuttosto difficile riassumere una lunga sequenza di input come un singolo vettore. La soluzione è aumentare l ‘”attenzione” del modello e utilizzare gli stati intermedi del codificatore per costruire vettori di contesto per il decodificatore.

Il meccanismo di attenzione definisce l’importanza degli altri token di input per il modello quando vengono create codifiche per un dato token. Ad esempio, “it” è un pronome generale, spesso usato per riferirsi ad animali quando il loro sesso non è noto. Un meccanismo di attenzione consentirebbe a un modello di trasformatore di determinare che nel contesto attuale “esso” si riferisce a uno scoiattolo, perché può esaminare tutte le parole rilevanti nella frase di input.

Un meccanismo di attenzione può essere utilizzato in tre modi diversi: da encoder a decoder, solo encoder, solo decoder.

L’attenzione del codificatore-decodificatore consente al decodificatore di considerare le sequenze di input quando genera un’uscita, mentre i meccanismi di attenzione del solo codificatore e del solo decodificatore consentono alle reti di considerare rispettivamente tutte le parti della sequenza precedente e corrente.

La costruzione di un meccanismo di attenzione può essere suddivisa in cinque fasi:

Calcolo di un punteggio per tutti gli stati del codificatore.
Calcolo dei pesi dell’attenzione
Calcolo dei vettori di contesto
Aggiornamento del vettore di contesto con l’output del passo temporale precedente
Generazione di output con decoder
Il primo passo è fare in modo che il decodificatore calcoli un punteggio per tutti gli stati del codificatore. Questo viene fatto addestrando la rete del decodificatore, che è una rete neurale feed-forward di base. Quando il decodificatore viene addestrato sulla prima parola nella sequenza di input, non è stato ancora creato alcuno stato interno / nascosto, quindi l’ultimo stato del codificatore viene generalmente utilizzato come stato precedente del decodificatore.

Per calcolare i pesi dell’attenzione, viene utilizzata una funzione softmax per generare una distribuzione probabilistica per i pesi dell’attenzione.

Una volta calcolati i pesi dell’attenzione, è necessario calcolare il vettore di contesto. Questo viene fatto moltiplicando i pesi dell’attenzione e lo stato nascosto insieme per ogni passo temporale.

Dopo che il vettore di contesto è stato calcolato, viene utilizzato insieme alla parola generata nel passaggio temporale precedente per generare la parola successiva nella sequenza di output. Poiché il decoder non ha un’uscita precedente a cui fare riferimento nella prima fase temporale, viene spesso utilizzato uno speciale token di “avvio”.

Differenze tra trasformatori e RNN / LSTM
Copriamo rapidamente alcune delle differenze tra RNN e LSTM.

Gli RNN elaborano gli input in sequenza, mentre un vettore di stato nascosto viene mantenuto e alterato dalle parole di input mentre si muovono attraverso la rete. Gli stati nascosti di un RNN in genere contengono pochissime informazioni rilevanti sugli input precedenti. I nuovi input spesso sovrascrivono lo stato corrente, che causa la perdita di informazioni e riduce le prestazioni nel tempo.

Al contrario, i modelli di trasformatore elaborano l’intera sequenza di input contemporaneamente. Il meccanismo di attenzione consente a ogni parola in uscita di essere informata da ogni input e stato nascosto, rendendo la rete più affidabile per lunghi pezzi di testo.

Gli LSTM sono versioni modificate degli RNN, adattati per gestire sequenze di input più lunghe. L’architettura LSTM utilizza una struttura chiamata “gates”, con “porte di ingresso”, “porte di uscita” e “porte dimenticate”. Il design gated si occupa della perdita di informazioni comune ai modelli RNN. I dati vengono ancora elaborati in sequenza e il design ricorrente dell’architettura rende difficile l’addestramento dei modelli LSTM utilizzando il calcolo parallelo, rendendo complessivamente più lungo il tempo di formazione.

Gli ingegneri LSTM spesso aggiungevano meccanismi di attenzione alla rete, che era noto per migliorare le prestazioni del modello. Tuttavia, alla fine è stato scoperto che il meccanismo dell’attenzione da solo migliorava la precisione. Questa scoperta ha portato alla creazione di reti di trasformatori che utilizzavano meccanismi di attenzione e calcolo parallelo grazie alle GPU.

di Daniel Nelson da unite.ai

Top

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi