In informatica e più precisamente nell'apprendimento automatico, un trasformatore () è un modello di apprendimento profondo che adotta il meccanismo della auto-attenzione, pesando differentemente la significatività di ogni parte dei dati in ingresso. Esso è usato primariamente negli ambiti dell'elaborazione del linguaggio naturale e della visione artificiale.
Come le reti neurali ricorrenti (RNN), i trasformatori sono progettati per processare dati sequenziali come, ad esempio, testi in linguaggio naturale, con applicazioni alla loro generazione e traduzione automatica. Tuttavia, a differenza delle RNN, i trasformatori elaborano l'intero insieme di dati d'ingresso simultaneamente. Il cosiddetto meccanismo di attenzione fornisce il contesto per ogni posizione nella sequenza di ingresso. Per esempio, se i dati rappresentano una frase, il trasformatore non deve elaborare una parola alla volta: questo permette una maggiore parallelizzazione rispetto alle RNN e perciò porta a ridurre i tempi di addestramento.
I trasformatori sono stati presentati in un articolo del 2017 da un gruppo di ricercatori di Google Brain. Essi costituiscono sempre più il modello preferenziale per affrontare problemi di elaborazione del linguaggio naturale, andando a sostituire i modelli RNN come la memoria a lungo breve termine (LSTM, da long short-term memory). La possibilità aggiuntiva di parallelizzare il processo di addestramento del modello permette di utilizzare insiemi di dati più grandi. Questo ha portato allo sviluppo di sistemi pre-addestrati come BERT (Bidirectional Encoder Representations from Transformers) e GPT (Generative Pre-trained Transformer), allenati con grandi insiemi di dati linguistici (testi), come il corpus letterario di Wikipedia e Common Crawl, che possono essere opportunamente ottimizzati per svolgere compiti specifici.
Storia
Predecessori Per molti anni, la modellazione e la generazione di sequenze sono state effettuate utilizzando semplici reti neurali ricorrenti (RNN). Un esempio precoce e ben citato è stata la rete di Elman (1990). In teoria, le informazioni contenute in un singolo token possono propagarsi arbitrariamente fino in fondo alla sequenza, ma in pratica il problema del gradiente nullo fa sì che lo stato del modello alla fine di una lunga frase, non mantenga informazioni precise ed estraibili sui token precedenti.
Una svolta fondamentale è stata LSTM (1995) Le Gated recurrent unit (2014) ne hanno ulteriormente ridotto la complessità, una RNN innovativa capace di superare il problema del gradiente, consentendo un apprendimento efficiente atto alla modellazione di sequenze lunghe. Una delle innovazioni chiave risiedeva nell'uso di un meccanismo di attenzione basato sulla capacità di alcuni neuroni di moltiplicare gli output di altri neuroni, (le cosiddette unità moltiplicative). Le reti neurali che utilizzano unità moltiplicative furono successivamente chiamate reti sigma-pi o reti di ordine superiore. I modelli LSTM sono stati l'architettura standard per la modellazione di sequenze lunghe fino alla pubblicazione dei transformer nel 2017.Tuttavia, l'architettura LSTM utilizzava ancora l'elaborazione sequenziale, come la maggior parte delle altre RNNArchitetture come la RWKV o i modelli di spazi di stati evitano tale problema. Nello specifico, le RNN operano su un token alla volta dall'inizio alla fine della sequenza. Non sono perciò in grado di operare su più token in parallelo.
I trasformatori moderni superano questo problema, ma a differenza delle RNN, essi richiedono tempi di calcolo superiori (di ordine quadratico rispetto alle dimensioni della finestra di contesto). Il controllore di peso veloce con scala lineare (1992) viene allenato per calcolare una matrice di peso utile per un'ulteriore elaborazione, a seconda dell'input. Una delle sue due reti ha "pesi veloci" o "collegamenti dinamici" (1981). Una rete neurale lenta impara tramite la discesa del gradiente a generare chiavi e valori utili per calcolare i cambiamenti di peso della rete neurale veloce (weights) che viene infine impiegata per generare le risposte alle query. Successivamente si è dimostrato che ciò è equivalente a un trasformatore lineare non normalizzato.
Attenzione con seq2seq L'idea dietro la trasduzione di sequenza operata tramite codificatore-decodificatore è stata sviluppata nei primi anni del 2010 (vedi articoli precedenti). Fra gli articoli più comunemente citati come ispiratori delle architetture seq2seq vi sono due lavori pubblicati contemporaneamente nel 2014.
Un modello da 380M parametri per la traduzione automatica utilizzava due memorie a lungo e breve termine (LSTM). La sua architettura è composta da due parti. Il codificatore è un LSTM che accetta una sequenza di token e la trasforma in un vettore. Il decodificatore è un altro LSTM che converte il vettore in una sequenza di token. Al contrario, un altro modello da 130M parametri impiegava le unità ricorrenti gated (GRU) invece degli LSTM. Ricerche successive hanno dimostrato che le GRU offrono le stesse prestazioni degli LSTM nel contesto dell'architettura seq2seq.
Questi primi modelli seq2seq non avevano alcun meccanismo di attenzione e il vettore di stato era accessibile solo dopo l'elaborazione dell'ultima parola del testo sorgente. Sebbene in teoria un tale vettore conservi le informazioni sull'intera frase originale, in pratica tali informazioni si conservavano soltanto in minima parte. Ciò accadeva perché l'input veniva elaborato in sequenza da una rete ricorrente sotto forma di vettore di output di dimensione fissa, che poi era rielaborato da un'altra rete ricorrente per restituire l'output. Se l'input è lungo, il vettore di output non sarà in grado di contenere tutte le informazioni rilevanti contenute nella sequenza. A dimostrazione di ciò, si è osservato che invertire la frase di input tendeva a migliorava le traduzioni da sequenza a sequenza.
Il modello RNNsearch ha introdotto un meccanismo di attenzione a seq2seq per la traduzione automatica finalizzato a risolvere il problema del collo di bottiglia (costituito dal vettore di output di dimensione fissa), consentendo al modello di elaborare più facilmente le dipendenze a lunga distanza. Il nome è dovuto al fatto che "emula la ricerca in una frase sorgente durante la decodifica di una traduzione".
In seguito, si è proceduto al confronto tra architetture con modello di attenzione globale (quello della RNNsearch) e locale (a finestra scorrevole) su problemi di traduzione automatica, rivelando che meccanismi di attenzione misti raggiungono prestazioni superiori rispetto a meccanismi globali, mentre meccanismi locali hanno un effetto positivo sui tempi di traduzione.
Nel 2016, Google Translate è stato rinnovato e ha preso il nome di Google Neural Machine Translation, sostituendo il precedente modello statistico di traduzione automatica. Il nuovo modello era un modello seq2seq in cui il codificatore e il decodificatore erano entrambi costituiti da 8 strati di LSTM bidirezionali. Ci sono voluti nove mesi per svilupparlo e ha superato le prestazioni del precedente approccio statistico, che aveva richiesto dieci anni per la sua realizzazione.
Parallelizzare l'attenzione I modelli Seq2seq con meccanismi di attenzione (compresa l'auto-attenzione) soffrivano ancora dello stesso problema delle reti ricorrenti, ovvero risultavano difficili da parallelizzare, il che impediva la loro accelerazione su GPU. Nel 2016, viene introdotta l'attenzione scomponibile che applica un meccanismo di auto-attenzione alle reti feedforward - facili da parallelizzare - ottenendo risultati SOTA nell'implicazione testuale e con un numero di parametri inferiori rispetto alle LSTM. Uno dei suoi ideatori, Jakob Uszkoreit, era convinto che l'attenzione senza ricorrenza fosse sufficiente per la traduzione linguistica, di qui il titolo "l'attenzione è tutto ciò di cui hai bisogno". Questa ipotesi andava in contrasto alle credenze convenzionali dell'epoca, e perfino suo padre, un noto linguista computazionale, si dichiarò scettico. Nello stesso anno, è stata proposta l'auto-attenzione per le LSTM (detta anche intra-attenzione o attenzione intra-frase).
Nel 2017, nel citato articolo intitolato "Attention is all you need" è stato proposto il modello originale di trasformer basato su codificatore-decodificatore (di dimensioni pari a 100 M). All'epoca, la ricerca era indirizzata principalmente al miglioramento di seq2seq per la traduzione automatica, al fine di poter elaborare tutti i token in parallelo, pur cercando di mantenere il meccanismo di attenzione del prodotto scalare per non limitarne le prestazioni nell'elaborazione di testo. Ciò ha portato all'introduzione di un modello di attenzione multi-head (in più punti della sequenza) più facile da parallelizzare grazie all'uso di teste indipendenti e alla mancanza di ricorrenza. La parallelizzabilità è stata un fattore importante per la diffusione di questa architettura nelle reti neurali di grandi dimensioni.
Il grande boom dell'intelligenza artificiale Già nella primavera del 2017, prima ancora che fosse pubblicato in pre-stampa "Attention is all you need", uno dei coautori aveva applicato la variante "decoder-only" dell'architettura per generare articoli fittizi di Wikipedia. L'architettura del transformer viene oggi utilizzata in molti modelli generativi che contribuiscono al boom dell'intelligenza artificiale cui si assiste attualmente.
In ambito di modellazione del linguaggio, ELMo (2018) è un LSTM bidirezionale che produce incorporamenti di parole contestualizzati, migliorando la linea di ricerca basata su bag of words e word2vec. A tale modello ha fatto seguito BERT (2018), un modello di trasformatore dotato unicamente di encoder. Nell'ottobre 2019, Google ha iniziato a utilizzare BERT per elaborare le query di ricerca. Nel 2020, Google Translate ha sostituito il precedente modello RNN-encoder–RNN-decoder con un modello Transformer-encoder–RNN-decoder.
A partire dal 2018, la serie OpenAI GPT di transformer basata esclusivamente su decodificatori è diventata lo stato dell'arte nella generazione del linguaggio naturale. Nel 2022, un chatbot basato su GPT-3, ChatGPT, è diventato inaspettatamente popolare, innescando l'esplosione del successo dei grandi modelli linguistici.
Dal 2020, i transformer sono stati applicati in modalità che vanno oltre il testo, tra le quali la visione, il riconoscimento vocale, la robotica, e anche miste, multimodali. Il trasformatore applicato alla visione, a sua volta, ha stimolato nuovi sviluppi nell'ambio delle reti neurali convoluzionali. Generatori di immagini e video come DALL-E (2021), Stable Diffusion 3 (2024), e Sora (2024), si basano sull'architettura del transformer.
Addestramento
Metodi per stabilizzare l'allenamento Nel documento originale gli autori raccomandavano di utilizzare il "riscaldamento del tasso di apprendimento" (o "learning rate warmup"). Ciò significa che il tasso di apprendimento dovrebbe aumentare linearmente da 0 al valore massimo per la prima parte dell'addestramento (di solito si consiglia che sia pari al 2% del numero totale di passaggi - step - impiegati per l'addestramento), prima di diminuire nuovamente.
Uno studio del 2020 ha scoperto che l'utilizzo della normalizzazione degli strati prima (invece che dopo) dell'attenzione multi-testa (multi-head) e degli strati di feedforward stabilizza l'addestramento, senza richiedere l'aumento lineare del tasso di apprendimento.
Pre-addestramento e finetuning In genere, i trasformatori vengono prima pre-addestrati tramite apprendimento auto-supervisionato su un ampio set di dati generico, seguito da una messa a punto supervisionata su un piccolo set di dati specifico per un'attività. Il set di dati pre-addestramento è in genere un corpus di grandi dimensioni non etichettato, come ad esempio The Pile. Le attività di pre-addestramento e messa a punto includono comunemente:
modellazione del linguaggio