mozzicone Cosa sono le reti neurali del trasformatore? - Unite.AI
Seguici sui social
Corso di perfezionamento sull'intelligenza artificiale:

AI 101

Cosa sono le reti neurali del trasformatore?

mm
aggiornato on

Descrizione delle reti neurali del trasformatore

Trasformatori sono un tipo di modello di apprendimento automatico specializzato nell'elaborazione e interpretazione di dati sequenziali, rendendoli ottimali per le attività di elaborazione del linguaggio naturale. Per comprendere meglio cos'è un trasformatore di machine learning e come funziona, diamo uno sguardo più da vicino ai modelli di trasformatore e ai meccanismi che li guidano.

Questo articolo riguarderà:

  • Modelli da sequenza a sequenza
  • L'architettura della rete neurale del trasformatore
  • Il meccanismo dell'attenzione
  • Differenze tra trasformatori e RNN/LSTM

Modelli da sequenza a sequenza

I modelli da sequenza a sequenza sono un tipo di modello di PNL utilizzato per convertire sequenze di un tipo in sequenze di un altro tipo. Esistono vari tipi di modelli sequenza-sequenza, ad esempio Rete neurale ricorrente modelli e Memoria a lungo termine (LSTM) modelli.

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

In breve, i modelli RNN e i modelli LSTM sono costituiti da reti di codificatori e decodificatori che analizzano i dati di input in vari passaggi temporali. Il modello del codificatore è responsabile della formazione di una rappresentazione codificata delle parole nei dati di input. Ad ogni passo temporale la rete dell'encoder prende una sequenza di input e uno stato nascosto dal passo 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, dove viene generato un “vettore di contesto”. Il vettore di contesto viene quindi passato alla rete del decodificatore, che viene utilizzata per generare una sequenza target prevedendo la parola più probabile che si accoppia con la parola di input per i rispettivi passaggi 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 dovrebbe concentrarsi per generare l'output corretto. Per dirla in un altro modo, un meccanismo di attenzione consente al modello del trasformatore di elaborare una parola di input mentre si occupa anche delle informazioni rilevanti contenute dalle altre parole di input. I meccanismi di attenzione mascherano anche le parole che non contengono informazioni rilevanti.

Architettura della rete neurale del trasformatore

Più avanti approfondiremo il meccanismo dell'attenzione, ma per ora diamo un'occhiata l'architettura di una rete neurale a trasformatore ad un livello superiore.

In generale, una rete neurale trasformatore è simile alla seguente:

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

Codifiche posizionali e vettori di parole

Funziona un trasformatore di reti neurali prendendo una sequenza di input e convertendo questi input in altre due sequenze. Il trasformatore produce una sequenza di incorporamenti vettoriali di parole e codifiche posizionali.

Incorporamento 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 vettorizzate contenenti informazioni sulla posizione della parola corrente era 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 questo è limitante perché le parole possono essere utilizzate in contesti diversi. Una rete di trasformatori risolve questo problema rendendo più flessibili i valori delle parole, 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 input, anche dopo che i vettori si sono spostati attraverso gli strati della rete del trasformatore.

Le codifiche posizionali e gli incorporamenti dei vettori di parole vengono sommati insieme e quindi trasmessi alle reti del codificatore e del decodificatore. Sebbene le reti neurali del trasformatore utilizzino schemi 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 la rete del codificatore che quella del decodificatore hanno un meccanismo di attenzione.

Poiché le GPU sono in grado di eseguire l'elaborazione parallela, 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, soprannominata attenzione "multi-testa", 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 rispetto a RNN e LSTM.

Il meccanismo dell'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 Sequence-to-Sequence tradizionali scartano tutti gli stati intermedi e utilizzano solo il vettore stato/contesto finale durante l'inizializzazione della rete di decodifica per generare previsioni su una sequenza di input.

Scartare tutto tranne il vettore del contesto finale funziona bene quando le sequenze di input sono abbastanza 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 abbastanza 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 le codifiche per un dato token. Ad esempio, “it” è un pronome generale, spesso usato per riferirsi ad animali quando non se ne conosce il sesso. Un meccanismo di attenzione consentirebbe a un modello 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: codificatore-decodificatore, solo codificatore, solo decodificatore.

L'attenzione del codificatore-decodificatore consente al decodificatore di considerare le sequenze di input durante la generazione di un output, mentre i meccanismi di attenzione del solo codificatore e del solo decodificatore consentono alle reti di considerare rispettivamente tutte le parti delle sequenze precedenti e correnti.

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

  1. Calcolo di un punteggio per tutti gli stati del codificatore.
  2. Calcolo dei pesi dell'attenzione
  3. Calcolo dei vettori di contesto
  4. Aggiornamento del vettore di contesto con l'output del passo temporale precedente
  5. Generazione di output con decodificatore

Il primo passo è fare in modo che il decodificatore calcoli un punteggio per tutti gli stati del codificatore. Questo viene fatto addestrando la rete di decodifica, 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 tipicamente 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 del 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 nella fase temporale precedente per generare la parola successiva nella sequenza di output. Poiché il decodificatore non ha un output 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 riguardo agli input precedenti. I nuovi input spesso sovrascrivono lo stato corrente, causando la perdita di informazioni e il degrado delle prestazioni nel tempo.

Al contrario, i modelli con trasformatore elaborano l'intera sequenza di input in una sola volta. 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 lunghe porzioni di testo.

Gli LSTM sono una versione modificata degli RNN, adattati per gestire sequenze di input più lunghe. L'architettura LSTM utilizza una struttura chiamata "gate", 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, allungando complessivamente il tempo di addestramento.

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