Il Transformer, la rete neurale che presta attenzione

La facoltà dell’attenzione umana è un’abilità cruciale nella comprensione del linguaggio naturale. Ogni volta che leggiamo o ascoltiamo un testo, la nostra mente seleziona le parole chiave e le relazioni semantiche per ottenere una comprensione del significato complessivo.
Ma come può essere emulata questa capacità di selezione attenta del linguaggio naturale da parte dei computer? L’architettura del Transformer, una delle più recenti e avanzate tecniche di elaborazione del linguaggio naturale, offre una risposta convincente.
Il Transformer utilizza un meccanismo di attenzione sofisticato per selezionare attentamente i token in un testo. Il termine “token” indica un’unità minima di un testo che viene considerata come una singola entità per l’elaborazione del linguaggio naturale. Fondamentalmente, un token è un’istanza di una sequenza di caratteri che rappresenta un elemento semantico significativo all’interno del testo.
Il transformer pesa ogni token in base alla sua rilevanza rispetto al contesto. Fondamentalmente, il Transformer imita la capacità umana di concentrarsi sulle parole più importanti all’interno di una determinata frase o contesto.
Ma come funziona il meccanismo di attenzione del Transformer? Quali sono i suoi vantaggi rispetto ad altre tecniche di elaborazione del linguaggio naturale come i Convolutional Neural Networks (CNN) e i Recurrent Neural Networks (RNN)? E, soprattutto, come il Transformer viene utilizzato per migliorare la comprensione automatica del linguaggio naturale?
Questi sono solo alcuni degli interrogativi che affronteremo in questo articolo, esplorando il funzionamento del Transformer e il suo impatto nel campo dell’elaborazione del linguaggio naturale.
Che cos’é il Transformer?
Il Transformer è un modello di rete neurale che utilizza la meccanica dell’attenzione, in cui il modello assegna un peso alle diverse parti dell’input in base alla loro rilevanza per la comprensione del testo.
Il Transformer ha rivoluzionato gli algoritmi di elaborazione del linguaggio naturale, rendendoli più efficienti e precisi. Inoltre, ha superato i modelli precedenti, come le reti neurali ricorrenti e le reti neurali convoluzionali, in termini di prestazioni su una vasta gamma di compiti di NLP.
Uno degli aspetti fondamentali dei modelli di Transformer è l’uso della tecnica note come “self-attention“. Invece di utilizzare una rete neurale sequenziale per codificare le informazioni, il Transformer elabora tutte le parole dell’input in parallelo, attraverso una matrice di attenzione. Ciò consente al modello di acquisire una migliore comprensione del contesto del testo, rispetto ai modelli precedenti.
I Modelli di Transformer sono stati utilizzati per risolvere diversi compiti di NLP, tra cui la traduzione di testo, la generazione di testo, l’analisi del sentimento e il riconoscimento di entità.
Premessa: che cosa sono i vettori di embeddings
Un vettore di embedding rappresenta una parola in un modello di apprendimento automatico. Questo vettore ha una dimensione fissata e viene associato ad ogni parola del corpus, in modo che il modello possa lavorare con questo vettore invece della parola stessa.
I vettori di embedding vengono creati attraverso una fase di apprendimento. Il modello utilizza diversi metodi per apprendere questi vettori, come l’allocazione sequenziale e l’utilizzo di tecniche di autoencoder, così che le parole semanticamente simili vengano posizionate in punti vicini di un iperspazio.
La dimensione dei vettori di embedding può variare, ma in generale si preferisce utilizzare vettori relativamente piccoli, come ad esempio vettori da 50 a 300 dimensioni, al fine di migliorare le prestazioni computazionali del modello.

(vedi anche il paragrafo sulle tecniche di Word Embeddings)
Ci sono diverse tecniche di pre-training utilizzate per creare i vettori di embedding. Ad esempio, il pre-training basato sulla co-occorrenza utilizza tecniche di conteggio delle parole per calcolare la probabilità della co-occorrenza di due parole in un corpus di testo. In questo modo, vengono appresi i vettori di embedding per ogni parola del corpus in base alla loro prossimità semantica.
Un’altra tecnica di pre-training molto comune è il Word2Vec, che utilizza una rete neurale per apprendere i vettori di embedding di parole in base al loro contesto semantico. In particolare, gli algoritmi Word2Vec cercano di prevedere le parole vicine ad una data parola in un testo, utilizzando i contesti di ogni parola per costruire i vettori di embedding.
I vettori di embedding preaddestrati possono essere utilizzati anche in altri modelli di apprendimento automatico, non solo nei modelli di Transformer.
Come il Transformer usa i vettori di embedding
i vettori di embedding vengono utilizzati per calcolare i pesi di attenzione attraverso la cosiddetta “query-key-value attention mechanism” da assegnare ad ogni parola dell’input.
Questo peso o grado di attenzione che viene mostrata ad ogni parola dell’input è calcolato in riferimento ad un’altra parola (query) che il modello individua in base ai suoi obiettivi. Ad esempio, in una task di sentiment analysis, la query potrebbe essere costituita dalle parole chiave associate a un’emozione specifica (come “felicità”, “tristezza”, “rabbia”, ecc.).
I pesi di attenzione vengono calcolati utilizzando il prodotto scalare tra il vettore di query q e il vettore di Embedding di ogni parola. In altre parole, viene calcolato il grado di somiglianza tra la parola di query e le altre parole dell’input. Queste somiglianze vengono usate per calcolare i pesi di attenzione tramite una funzione softmax, e quindi si calcola una sorta di punteggio di attenzione da assegnare a ogni parola dell’input.
Infine, i pesi di attenzione vengono utilizzati per pesare il vettore di valori e creare quindi una nuova rappresentazione dell’input con pesi specifici, ove ogni peso indica il grado di rilevanza del token corrispondente per la query.
Questa tecnica di auto-attenzione è molto utile perché consente al modello di concentrarsi sui token più rilevanti dell’input, migliorando la precisione dei modelli di apprendimento automatico su una vasta gamma di compiti di NLP.
Un semplice esempio
Supponiamo di avere la seguente frase di input:
“La mela è un frutto molto sano”

I vettori di embedding per ogni token possono essere rappresentati come segue:
embedding(“La”) = [0.1, 0.2, 0.3]
embedding(“mela”) = [0.2, 0.3, 0.1]
embedding(“è”) = [0.3, 0.1, 0.2]
embedding(“un”) = [0.4, 0.2, 0.1]
embedding(“frutto”) = [0.2, 0.4, 0.3]
embedding(“molto”) = [0.1, 0.2, 0.4]
embedding(“sano”) = [0.3, 0.3, 0.2]
Per calcolare i pesi di attenzione, i vettori di embedding vengono utilizzati per creare i vettori di query, chiavi e valori ottenuti dalla trasformazione lineare.
Supponiamo che la query sia la parola “frutto”. In tal caso, i vettori di embedding per le altre parole dell’input verranno utilizzati come chiavi.
Il primo passo è quello di calcolare il prodotto scalare tra i vettori di query e chiavi, ottenendo così i punteggi di attenzione per ogni token dell’input rispetto alla query:
“`
attenzione(“La”) = embedding(“La”) x embedding(“frutto”)
attenzione(“mela”) = embedding(“mela”) x embedding(“frutto”)
attenzione(“è”) = embedding(“è”) x embedding(“frutto”)
attenzione(“un”) = embedding(“un”) x embedding(“frutto”)
attenzione(“frutto”) = embedding(“frutto”) x embedding(“frutto”)
attenzione(“molto”) = embedding(“molto”) x embedding(“frutto”)
attenzione(“sano”) = embedding(“sano”) x embedding(“frutto”)

Assumiamo, per esempio, che i risultati siano i seguenti:
attenzione(“La”) = 0.14
attenzione(“mela”) = 0.26
attenzione(“è”) = 0.1
attenzione(“un”) = 0.12
attenzione(“frutto”) = 0.3
attenzione(“molto”) = 0.06
attenzione(“sano”) = 0.12
I punteggi di attenzione sopra possono essere usati per calcolare i pesi di attenzione normalizzati rispetto a 1 per ogni token utilizzando la funzione softmax, come segue:
pesi_attenzione(“La”) = 0.113
pesi_attenzione(“mela”) = 0.147
pesi_attenzione(“è”) = 0.104
pesi_attenzione(“un”) = 0.116
pesi_attenzione(“frutto”) = 0.174
pesi_attenzione(“molto”) = 0.089
pesi_attenzione(“sano”) = 0.156

I pesi di attenzione sopra possono essere utilizzati, ad esempio, per calcolare una media pesata dei vettori di valore corrispondenti ad ogni token dell’input, creando quindi una nuova rappresentazione dell’input pesata in base alla query.
In questo modo, il modello è in grado di concentrarsi sui token più rilevanti e ottenere una rappresentazione semantica più accurata della frase.
I vantaggi del Transformer
Il Transformer è un modello di deep learning che si basa sulla funzione di attenzione per elaborare sequenze di testo. Rispetto a tecniche precedenti, come i Convolutional Neural Networks (CNN) e i Recurrent Neural Networks (RNN), il Transformer possiede alcuni vantaggi evidenti.
In primo luogo, a differenza delle tecniche precedenti, il Transformer non richiede l’elaborazione del testo in ordine sequenziale e questo lo rende più efficiente in termini di elaborazione di grandi quantità di dati. Inoltre, il meccanismo di attenzione del Transformer permette di concentrarsi sulle relazioni semantiche tra le parole, al contrario dei RNN che sono più attenti alla sequenza delle parole.
Il Transformer inoltre, è in grado di elaborare sequenze di testo più lunghe delle tecniche precedenti, grazie alla sua proprietà di self-attention che gli consente di scegliere accuratamente i token più importanti all’interno di un testo, ignorando la presenza di informazioni ridondanti o poco utili.
Per quanto riguarda l’utilizzo del Transformer nella comprensione automatica del linguaggio naturale, esso viene tipicamente addestrato su grandi quantità di dati di testo etichettati, per esempio set di dati come il corpus COCA (Corpus Of Contemporary American English) o la Wikipedia.
Durante il processo di addestramento, il Transformer apprende, per ogni singola frase o contesto, quali parole sono più relevanti e come sono intrecciate semanticamente. Successivamente, queste conoscenze vengono utilizzate per la generazione di una nuova rappresentazione dell’input che contiene tutte le informazioni importanti al fine di utilizzarle in varie applicazioni, come la generazione di risposte a domande, la traduzione automatica, la riassunzione testuale, l’analisi del sentimento, ecc.
In conclusione, l’uso del modello Transformer rappresenta un significativo passo in avanti nell’ambito dell’elaborazione del linguaggio naturale e ha superato numerose limitazioni delle tecniche precedenti. La sua capacità di selezionare attentamente i token rilevanti attraverso il meccanismo di attenzione lo rende estremamente potente nella generazione di testo naturale, traduzione automatica, analisi del sentimento e altre attività di elaborazione del linguaggio naturale.
Tuttavia, ci sono ancora molte questioni aperte nel campo dell’elaborazione del linguaggio naturale, come ad esempio l’interpretabilità dei modelli di deep learning e la manipolazione intenzionale del testo (ad esempio, l’uso di tecniche di generazione di testo per la di produzione di falsità).
Inoltre, la comprensione delle relazioni semantiche tra le parole e la capacità di rappresentarle in modo accurato attraverso i vettori di embedding sono ancora un’area di ricerca attiva.
Per creare modelli ancora più sofisticati ed efficaci, è necessario continuare ad approfondire la comprensione dei processi di elaborazione del linguaggio naturale e sfruttare appieno il potenziale delle tecniche di apprendimento automatico e di deep learning. Solo in questo modo, potremo raggiungere risultati sempre più avanzati nel campo dell’elaborazione del linguaggio naturale e migliorare la nostra comprensione del linguaggio naturale sia dal punto di vista teorico che pratico.