BERT e GPT 2018-2019: pre-training a due facce
Stesso paper di base — il transformer di Vaswani e colleghi del 2017. Due strade opposte, sviluppate in dodici mesi: GPT vede solo il passato e genera, BERT vede tutto e classifica. Una nasce a OpenAI in giugno 2018 come tech report informale di quattro pagine; l’altra esce a Google AI Language in ottobre dello stesso anno, formale, con undici record consecutivi su benchmark di NLP. Per cinque anni le due comunità lavorano in parallelo, come se non si parlassero, e finiscono per dare il nome a due paradigmi che convivono ancora oggi: encoder-only per capire, decoder-only per generare. Il bivio architetturale del 2018-2019 e la decisione di OpenAI nel febbraio 2019 di non rilasciare GPT-2 completo “per ragioni di safety” sono i due fatti che cambiano il NLP applicato.
Perché questo capitolo
Sezione intitolata “Perché questo capitolo”Il transformer-2017 era uscito come paper di traduzione automatica. Diciotto mesi dopo, due gruppi di ricerca prendono la stessa architettura, la modificano in due direzioni diverse, e dimostrano che cambia l’intero modo di fare NLP applicato. Non si addestra più un modello per task: si addestra un modello generale su corpus enorme, e poi lo si specializza con poco lavoro per il task che serve. La ricetta si chiama pre-training + fine-tuning, non era nuovissima come idea (Howard e Ruder l’avevano formulata su LSTM con ULMFiT a inizio 2018), ma il transformer la rende efficace al punto che diventa standard in pochi mesi.
Il biennio 2018-2019 è quando il transformer cessa di essere “una buona alternativa per la traduzione” e diventa la piattaforma generale del NLP. La storia tecnica è abbastanza ordinata da raccontare in un capitolo solo: il giugno 2018 GPT-1 dimostra il valore del pre-training generativo; in ottobre BERT lo dimostra in modo bidirezionale e spazza via record consolidati su undici benchmark; in febbraio 2019 GPT-2 mostra zero-shot capabilities e apre la prima discussione pubblica sulla responsabilità di rilascio dei modelli generativi; nel corso del 2019 RoBERTa, ALBERT, T5, XLNet, DistilBERT raffinano la ricetta. A fine 2019 il NLP feature-engineered di prima del transformer è di fatto morto.
Il terzo motivo per cui il capitolo conta è di disciplina storica. La distinzione operativa encoder-only vs decoder-only, oggi familiare, nasce qui. BERT per classificazione, NER, retrieval, ranking; GPT per generazione e per i sistemi conversazionali che esploderanno con ChatGPT nel 2022. La narrativa retrospettiva tende a presentare BERT come una tappa minore lungo la strada verso GPT-4. È falso: nel 2026 BERT-family è ancora dominante per ranking di search, content moderation, semantic search, retrieval-augmented generation. Le due strade convivono. Capire l’origine architetturale del bivio aiuta a leggere correttamente il presente.
Contesto
Sezione intitolata “Contesto”Per capire BERT e GPT bisogna ricordare lo stato del NLP nel 2017-inizio 2018. Il paradigma dominante era una pipeline di componenti specializzati: tokenizer, POS-tagger, parser sintattico, named entity recognizer, eventualmente coreference resolver, infine il modello specifico per il task (sentiment, classification, QA). Ogni componente era un modello a sé, addestrato su un dataset annotato dedicato, spesso con feature engineering manuale. Le rappresentazioni di parola erano embedding statici alla word2vec-2013 o alla GloVe (Pennington-Socher-Manning 2014, Stanford), tipicamente “congelati” e usati come input. Una parola aveva un solo vettore, indipendentemente dal contesto in cui appariva: “banca” come istituto finanziario e “banca” come riva del fiume condividevano lo stesso embedding.
Il primo segnale di rottura è ELMo (Embeddings from Language Models), pubblicato da Matthew Peters e collaboratori dell’Allen Institute for AI a NAACL 2018 (marzo): “Deep Contextualized Word Representations” (arXiv:1802.05365). ELMo addestra un LSTM bidirezionale su un grande corpus di testo come language model (predire la parola successiva da sinistra, e in parallelo da destra), poi usa gli stati nascosti del LSTM come embedding contestuali da iniettare in modelli downstream. La differenza con word2vec è netta: ogni parola riceve un vettore diverso a seconda del contesto. ELMo migliora dello stato dell’arte su sei benchmark NLP, fra cui SQuAD (question answering), SNLI (entailment), SRL (semantic role labeling). È il primo segnale forte che il pre-training su grande corpus + transfer learning funziona anche in NLP, non solo in vision (dove era già consolidato dai tempi di imagenet-alexnet-2012).
In parallelo, in gennaio 2018, Jeremy Howard (informatico australiano, fondatore di fast.ai) e Sebastian Ruder (researcher in NLP transfer learning, allora all’Aylien e all’University of Limerick) pubblicano ULMFiT (Universal Language Model Fine-tuning for Text Classification), accettato a ACL 2018 (arXiv:1801.06146). ULMFiT propone esplicitamente la ricetta a tre stadi: (1) pre-training di un language model AWD-LSTM su Wikipedia inglese, (2) fine-tuning del language model sul corpus del task, (3) fine-tuning come classificatore. Howard e Ruder dimostrano che la ricetta riduce l’errore di classificazione del 18-24% su sei dataset di sentiment e classificazione testuale rispetto allo stato dell’arte precedente. Il paper articola con chiarezza l’argomento metodologico: in NLP, come già in vision, il transfer learning da un language model pre-trained può rimpiazzare l’approccio task-specific from scratch.
ULMFiT ed ELMo sono due segnali convergenti, indipendenti, di una stessa direzione: pre-training generativo + fine-tuning specifico. Entrambi però usano LSTM come architettura. Manca il salto: applicare la stessa ricetta al transformer del 2017, che è più scalabile.
Il 2018-2019 è anche l’anno in cui due culture di laboratorio si separano nella pratica. OpenAI, fondata nel dicembre 2015 da Sam Altman, Elon Musk, Greg Brockman, Ilya Sutskever, Wojciech Zaremba e altri, è una nonprofit (lo diventerà a fini misti nel 2019 con OpenAI LP) con focus dichiarato su safety, AGI di lungo periodo, e sviluppo di sistemi generativi. Pubblica GPT-1 come tech report informale di quattro pagine sul proprio sito, senza venue accademica. Google AI Language (parte di Google Research, distinta da Google Brain e DeepMind) ha invece la cultura del paper accademico solido, con benchmark, ablation, accettazione a NAACL/ACL/EMNLP. Pubblica BERT come paper formale, tre mesi dopo lo carica su arXiv, lo presenta a NAACL 2019 dove vince il best paper award. Le due posture editoriali — informale e generativa per OpenAI, formale e ingegneristica per Google — restano riconoscibili negli anni successivi.
Vale la pena un ritratto rapido degli autori principali. Alec Radford (informatico americano, nato 1989 ca.) lavora a OpenAI dal 2016. Prima di GPT è coautore con Luke Metz e Soumith Chintala di “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks” del 2015 (DCGAN), uno dei lavori chiave nella storia delle GAN. Allievo informale di Geoffrey Hinton (vedi reti-neurali-80-90 per la figura di Hinton), Radford ha una formazione ingegneristica più che accademica: non ha un PhD, e lavora per anni come researcher autonomo prima di OpenAI. Sarà primo autore di GPT-1, GPT-2, GPT-3 (insieme a Tom Brown), e Whisper. La sua presenza come primo autore della linea GPT documenta una continuità di responsabilità tecnica che attraversa cinque anni di OpenAI.
I co-autori di GPT-1 sono Karthik Narasimhan (allora a OpenAI, oggi professore a Princeton), Tim Salimans (researcher noto per Adam-W, Inception Score per le GAN, e altri lavori di ottimizzazione), e Ilya Sutskever (informatico russo-canadese, allievo di Geoffrey Hinton, co-autore di AlexNet nel 2012, di seq2seq-2014, e cofondatore di OpenAI dove è chief scientist fino al maggio 2024). Sutskever è una figura ricorrente: il suo nome compare in tre dei paper più citati del decennio.
Per GPT-2, oltre a Radford e Sutskever, compaiono Jeffrey Wu, Rewon Child, David Luan, e Dario Amodei (informatico italiano-americano, allora VP of Research a OpenAI, già coautore di “Concrete Problems in AI Safety” del 2016). Amodei lascerà OpenAI nel 2021 con la sorella Daniela e diversi colleghi per fondare Anthropic, la cui linea di lavoro su safety scaling è continuazione esplicita del lavoro iniziato in OpenAI sui modelli GPT. L’aneddoto è denso: Amodei è tra i firmatari di GPT-2 e di GPT-3, e la sua decisione di fondare Anthropic discende in larga parte dalla disputa interna a OpenAI su come bilanciare scaling capability e safety.
Sull’altro lato del bivio, Jacob Devlin (informatico americano, ex Microsoft Research), allora a Google AI Language, è primo autore di BERT. Co-autori sono Ming-Wei Chang, Kenton Lee, Kristina Toutanova, tutti researcher senior di Google AI Language. Toutanova in particolare è figura riconosciuta nella comunità NLP, autrice di lavori sui parser dipendenza e sul SRL già negli anni 2000. Devlin si trasferira poi a Google DeepMind nel 2020-2021 e contribuirà alla linea di modelli Gemini.
Nel quadro più largo, Jeremy Howard (ULMFiT) e Sebastian Ruder portano la tradizione del transfer learning in NLP applicato; Matthew Peters (ELMo) la tradizione dell’Allen Institute. Ognuno di questi gruppi spinge in una direzione coerente; il transformer è il substrato comune che permette ai diversi spunti di convergere.
L’intuizione
Sezione intitolata “L’intuizione”Angolo architetturale: stessa base, due usi opposti
Sezione intitolata “Angolo architetturale: stessa base, due usi opposti”Il primo angolo è di simmetria. Il transformer originale del 2017 è encoder-decoder: l’encoder elabora la sequenza sorgente con self-attention bidirezionale (ogni token vede tutti gli altri), il decoder genera la sequenza target con self-attention causale (ogni token vede solo i precedenti) più cross-attention sull’output dell’encoder. Per la traduzione servono entrambi: l’encoder rappresenta la frase da tradurre, il decoder produce la traduzione passo passo.
Per il pre-training su language modeling generico l’encoder-decoder non è obbligatorio. Si può usare solo la metà:
-
Solo decoder: è quello che fa GPT. La self-attention causale è naturalmente un language model autoregressivo: a ogni posizione il modello predice il token successivo dato il prefisso. Si addestra massimizzando la verosimiglianza del prossimo token su un grande corpus di testo. Il modello impara a generare testo coerente.
-
Solo encoder: è quello che fa BERT. La self-attention bidirezionale permette ad ogni token di vedere tutta la frase, sia a sinistra che a destra. Non è un language model autoregressivo nel senso classico (non predice il prossimo token, vede già tutti). Per addestrarlo serve un task diverso: BERT propone il Masked Language Modeling, che maschera il 15% dei token e chiede al modello di predirli usando il contesto bidirezionale.
La stessa scatola architetturale, il transformer block (multi-head self-attention + feed-forward, residual + norm), è usata in due modi opposti. La differenza è solo nel pattern di mascheramento dell’attention:
- GPT: attention mascherata in modo causale (matrice triangolare inferiore: ogni posizione vede solo posizioni se stessa).
- BERT: attention non mascherata (matrice piena: ogni posizione vede tutte le altre).
Da questa semplice differenza discendono due famiglie di modelli con caratteristiche e usi profondamente diversi. La generazione richiede causalità: se il modello vede già il futuro, generare diventa banale (basta copiare). La comprensione beneficia della bidirezionalità: per disambiguare “banca” come istituto vs riva, vedere la parola “fiume” tre token più avanti aiuta. GPT e BERT hanno scelto lati opposti del trade-off, e ognuno è ottimale per un insieme di task.
Angolo strategico: pre-training come investimento ammortizzato
Sezione intitolata “Angolo strategico: pre-training come investimento ammortizzato”Il secondo angolo è economico. Prima del 2018 ogni progetto NLP partiva da zero: prendi un dataset annotato (di solito piccolo: migliaia o decine di migliaia di esempi), addestri un modello specifico (CNN o LSTM), ottieni performance proporzionali alla qualità del dataset e all’ingegnosità delle feature. Per ogni nuovo task si rifaceva il lavoro. Il transfer learning, quando funzionava, riusciva al massimo a riutilizzare gli embedding di parola; tutto il resto andava riaddestrato.
La ricetta pre-training + fine-tuning ribalta lo schema. Il pre-training è un investimento grande (milioni di dollari di compute, miliardi di token, settimane di addestramento), ma fatto una volta sola produce un modello generale che cattura statistiche profonde del linguaggio. Il fine-tuning è economico (ore di compute, migliaia di esempi annotati, una GPU) e adatta il modello generale al task specifico. L’investimento del pre-training si ammortizza su decine, centinaia, migliaia di task downstream.
Marcatura di classe: questa è una filiazione esplicita dichiarata da Howard-Ruder in ULMFiT e ripresa da Devlin et al. in BERT. Devlin et al. citano esplicitamente ULMFiT e ELMo come predecessori metodologici, e dichiarano che BERT estende la stessa idea al transformer e a un pre-training bidirezionale. Non è un’analogia inferita a posteriori: è un lineage documentato.
L’angolo economico spiega perché la ricetta ha consumato il NLP applicato in dodici-diciotto mesi. Una volta che HuggingFace (vedi sezione “La meccanica”) rende facile prendere un BERT pre-trained e fine-tunarlo in poche righe di codice, qualsiasi laboratorio o azienda di medie dimensioni può ottenere risultati state of the art su task NLP senza addestrare un modello da zero. L’asimmetria di costi pre-training/fine-tuning crea un’economia naturale: pochi laboratori grandi pre-trainano, tutti gli altri fine-tunano. Questo schema è il prototipo del modo in cui oggi si lavora con i foundation model.
Angolo cognitivo: bidirezionale vs autoregressive come usi diversi del linguaggio
Sezione intitolata “Angolo cognitivo: bidirezionale vs autoregressive come usi diversi del linguaggio”Il terzo angolo, più speculativo, è di tipo cognitivo. Si può notare che il modo in cui usiamo il linguaggio cambia a seconda del compito. Quando leggiamo un testo per capirlo, vediamo l’intera frase prima di interpretare le parole: i lettori esperti spesso ritornano indietro quando un termine ambiguo viene chiarito da un termine successivo. La comprensione è bidirezionale per natura. Quando invece scriviamo o parliamo, produciamo il testo da sinistra a destra, scegliendo ogni parola condizionata su quelle già emesse: la generazione è autoregressive.
Marcatura di classe: questa è un’analogia operativa utile per insegnare il bivio architetturale, non una teoria di come BERT e GPT corrispondano a meccanismi cognitivi umani. Il modello bidirezionale di BERT e quello autoregressivo di GPT non sono modelli di lettura e produzione umana. Sono scelte ingegneristiche che riflettono il tipo di task per cui ognuno è ottimizzato. L’analogia cognitiva è suggestiva ma non va estesa a affermazioni di equivalenza fra come BERT processa il testo e come un cervello legge.
Tuttavia, l’analogia aiuta a memorizzare il bivio. Capire = encoder-only, BERT. Generare = decoder-only, GPT. Tradurre = encoder-decoder, T5 e BART, che mantengono entrambi i lati come il transformer originale.
La meccanica
Sezione intitolata “La meccanica”I dettagli profondi delle componenti (multi-head attention, position encoding, layer norm, residual stream) sono trattati in Parte IX della wiki: attention-intuizione, qkv-da-zero, multi-head, transformer-block, decoder-only-vs-enc-dec, tutti in preparazione. Qui restiamo in registro storico: spieghiamo la meccanica di GPT-1, BERT, GPT-2 quel tanto che basta a vedere come funzionano e in che cosa differiscono, senza costruire un tutorial completo.
Il problema del transfer learning in NLP, prima del transformer
Sezione intitolata “Il problema del transfer learning in NLP, prima del transformer”Prima del 2018 il transfer learning in NLP era limitato. Word2vec del 2013 e GloVe del 2014 fornivano embedding statici di parola, addestrati su corpus grandi (Wikipedia, Common Crawl), che si potevano usare come strato di input “congelato” in modelli downstream. Il vantaggio rispetto a embedding random era misurabile ma modesto: pochi punti di accuracy su task di classificazione, niente di trasformativo.
Il limite intrinseco era che gli embedding statici hanno un solo vettore per parola, indipendentemente dal contesto. ELMo nel marzo 2018 supera questo limite con embedding contestuali calcolati da un LSTM bidirezionale pre-trained come language model: ogni parola ha un vettore diverso a seconda della frase in cui appare. ULMFiT in gennaio 2018 va oltre, proponendo di fine-tunare l’intero language model sul task, non solo di usarlo come feature extractor. Entrambi però usano LSTM, che ha due limiti rispetto al transformer: difficile da parallelizzare in addestramento (vedi transformer-2017, sezione “Contesto”), e meno efficace nel catturare dipendenze a lungo raggio (in pratica, oltre poche decine di token).
Il transformer offre due vantaggi diretti per il pre-training: (1) si addestra in parallelo su tutta la sequenza, dunque scala su corpus grandi con compute disponibile; (2) cattura dipendenze a lungo raggio in un singolo layer, dunque le rappresentazioni profonde sono ricche di contesto. Applicare la ricetta ULMFiT al transformer è un passo concettualmente piccolo ma operativamente decisivo. È quello che fanno GPT-1 e BERT in pochi mesi di distanza.
GPT-1 — giugno 2018
Sezione intitolata “GPT-1 — giugno 2018”“Improving Language Understanding by Generative Pre-Training” è un tech report di OpenAI di Alec Radford, Karthik Narasimhan, Tim Salimans e Ilya Sutskever. Non è pubblicato in venue accademica, esce sul sito di OpenAI in giugno 2018. Un dettaglio rivelatore: il paper non ha un nome ufficiale “GPT”, l’acronimo viene attribuito retrospettivamente dalla comunità a partire dal titolo “Generative Pre-Training”. Il modello viene chiamato semplicemente “il modello” nel paper.
L’architettura è un transformer decoder-only con dodici layer, , dodici attention head, . Totale parametri: 117 milioni. È circa il doppio del transformer-base di Vaswani et al. (65 milioni), e circa la metà del transformer-big (213 milioni). La self-attention è causalmente mascherata: ogni posizione vede solo le posizioni precedenti. Position encoding learned (non sinusoidal come nel transformer originale). Il task di pre-training è il language modeling autoregressive standard: massimizzare su un corpus di testo.
In parole povere, questo dice che il modello impara a predire il token successivo dato il prefisso, e si addestra minimizzando l’errore su questa predizione su miliardi di esempi.
Il corpus di pre-training è BookCorpus, un dataset di circa 7000 libri non pubblicati raccolti dal sito Smashwords (libri auto-pubblicati distribuiti gratuitamente), per un totale di circa 800 milioni di parole. La scelta di BookCorpus, contro Wikipedia, è motivata nel paper dal fatto che i libri contengono testo a lungo raggio coerente (paragrafi, capitoli, narrazione continua), che insegna al modello dipendenze semantiche e narrative, mentre Wikipedia è composta da articoli relativamente corti e disconnessi.
Il fine-tuning, per ogni task downstream, segue uno schema fisso: si aggiunge un piccolo classifier head sopra l’output del modello, si addestra end-to-end con un mix di language modeling loss (per non perdere le rappresentazioni pre-trained) e task-specific loss. Il paper dimostra fine-tuning su dodici benchmark di natural language understanding: classification (sentiment, dataset Stanford Sentiment Treebank), entailment (SNLI, MultiNLI), similarity (STS-B, MRPC), question answering (RACE, Story Cloze). Il modello supera lo stato dell’arte su nove dei dodici benchmark.
Il punto chiave del paper non è il record assoluto, è la dimostrazione metodologica: pre-training generativo su BookCorpus + fine-tuning leggero supera modelli task-specific addestrati from scratch. Il messaggio è esplicito nelle conclusioni: l’approccio è “task-agnostic” nella fase di pre-training, e questo è il valore principale.
BERT — ottobre 2018
Sezione intitolata “BERT — ottobre 2018”“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding” (Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, Google AI Language; arXiv:1810.04805 in ottobre 2018, accettato a NAACL 2019 dove vince il best paper award). L’acronimo sta per “Bidirectional Encoder Representations from Transformers” e, come dichiarato in una nota a piè di pagina nel paper, gli autori si sono divertiti a sceglierlo perché Sesame Street ha personaggi chiamati Bert, ed Ernie. Il riferimento culturale diventerà ricorrente nella comunità: ELMo, BERT, ERNIE (modello cinese di Baidu del 2019), Big Bird (sparse transformer del 2020), tutti nominati a partire dai personaggi di Sesame Street.
L’architettura è un transformer encoder-only. Due dimensioni:
- BERT-Base: dodici layer, , dodici attention head, . Totale parametri: 110 milioni. Le dimensioni sono scelte per essere comparabili a GPT-1, in modo da dare un confronto diretto.
- BERT-Large: ventiquattro layer, , sedici attention head, . Totale parametri: 340 milioni. Circa tre volte più grande di GPT-1.
La self-attention è bidirezionale: nessun mascheramento causale, ogni token vede tutti gli altri. Position encoding learned. Layer normalization in stile post-norm (come transformer originale). L’input è una sequenza di token preceduti da uno speciale token [CLS] (classification) e separati da [SEP] (separator). Il [CLS] produce un embedding che riassume l’intera sequenza ed è usato come input al classifier head per task di classificazione.
Il pre-training di BERT usa due task simultanei.
Masked Language Modeling (MLM). Il 15% dei token in input viene mascherato: di questi, l’80% viene sostituito da uno speciale token [MASK], il 10% da un token random del vocabolario, il 10% lasciato invariato. Il modello deve predire i token originali nelle posizioni mascherate. La motivazione del trick 80/10/10 è che il fine-tuning non vedrà mai [MASK], dunque il modello non deve diventare dipendente da esso; vedendo una distribuzione mista impara rappresentazioni più robuste. L’effetto è che ogni token in input contribuisce alle rappresentazioni interne come funzione di tutti gli altri (bidirezionale), e il modello impara a usare il contesto sia di sinistra che di destra per riempire i buchi. La loss è una cross-entropy standard sui token mascherati.
Next Sentence Prediction (NSP). Date due frasi A e B, il modello deve predire se B è la frase che segue A nel corpus originale (label IsNext) o se è una frase random pescata altrove (label NotNext). Il task viene gestito dall’embedding del [CLS] token, su cui si applica un classificatore binario. La motivazione dichiarata nel paper è di insegnare al modello relazioni inter-frase, utili per task come NLI (natural language inference) e QA (question answering) dove la comprensione di coppie di frasi è centrale.
In parole povere, BERT impara due cose contemporaneamente: a riempire buchi nelle frasi (MLM), e a riconoscere quando due frasi sono in continuità testuale (NSP). Entrambe sono auto-supervisionate (non richiedono annotazione umana, basta testo) e producono rappresentazioni profondamente contestuali.
Il corpus di pre-training è BookCorpus (gli stessi 800 milioni di parole di GPT-1) più Wikipedia inglese (circa 2.5 miliardi di parole), per un totale di circa 3.3 miliardi di parole. Quattro volte il corpus di GPT-1.
Il fine-tuning, per ogni task downstream, è lo schema più semplice possibile: si aggiunge un classifier head sopra l’output del [CLS] (per task di classificazione di frase) o sopra ogni token (per task di tagging come NER, o per QA dove serve predire span di risposta). Si fine-tuna end-to-end per pochi epoch sul dataset task-specific. Niente perdite ausiliarie, niente loss di language modeling continuata. Il fine-tuning di BERT su un task tipico richiede ore o giorni su una GPU.
I risultati riportati nel paper coprono undici task NLP, su tre benchmark principali:
- GLUE (General Language Understanding Evaluation, Wang et al. 2018), una collezione di nove task di NLU che include MNLI, QQP, QNLI, SST-2, CoLA, STS-B, MRPC, RTE, WNLI. BERT-Large ottiene un GLUE score di 80.5, contro lo stato dell’arte precedente (un modello multi-task di Microsoft) che era a 72.8. Sette punti di gap, in un benchmark dove un punto è significativo.
- SQuAD 1.1 (Stanford Question Answering Dataset, Rajpurkar et al. 2016): F1 di 93.2 su test set, primo modello a superare la performance umana (91.2).
- SQuAD 2.0 (Rajpurkar-Jia-Liang 2018, versione con domande senza risposta): F1 di 83.1, sostanziale miglioramento.
- SWAG (Situations With Adversarial Generations, Zellers et al. 2018): accuracy 86.3 vs 59.2 dello stato dell’arte precedente. Quasi trenta punti di gap.
L’effetto sulla comunità NLP è immediato e drammatico. In pochi mesi tutti i task di NLU rilevanti hanno una baseline BERT, e i lavori successivi sono in grande maggioranza estensioni o varianti di BERT. Il paradigma feature-engineered con pipeline di componenti separati cessa di essere competitivo nel giro di un anno.
Le due architetture in breve
Sezione intitolata “Le due architetture in breve”Per fissare il bivio, una tabella di confronto.
| Aspetto | GPT-1 (Jun 2018) | BERT-Base (Oct 2018) |
|---|---|---|
| Architettura | Decoder-only transformer | Encoder-only transformer |
| Attention | Causale (triangolare inferiore) | Bidirezionale (matrice piena) |
| Layer | 12 | 12 |
| 768 | 768 | |
| Heads | 12 | 12 |
| Parametri | 117M | 110M |
| Corpus pre-training | BookCorpus (800M parole) | BookCorpus + Wikipedia (3.3B parole) |
| Task pre-training | Language modeling autoregressive | MLM + NSP |
| Output naturale | Generazione token successivo | Embedding contestuali |
| Fine-tuning per | Classification, QA, NLI con classifier head | Classification, QA, NER, NLI con classifier head |
| Naturalmente buono per | Generazione di testo | Comprensione di testo |
Le due colonne mostrano che le scelte non sono casuali: GPT è ottimizzato per produrre testo, BERT per estrarre rappresentazioni utili per task discriminativi. La scelta di una vs l’altra discende dal task di pre-training, che a sua volta discende dal pattern di attention, che è la differenza architetturale fondamentale.
GPT-2 — febbraio 2019
Sezione intitolata “GPT-2 — febbraio 2019”“Language Models are Unsupervised Multitask Learners” (Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever; OpenAI tech report). Pubblicato il 14 febbraio 2019 sul blog di OpenAI, accompagnato da un breve paper non sottoposto a peer review. La scelta di OpenAI di non pubblicare in venue accademica è coerente con la cultura informale del laboratorio.
L’architettura è la stessa di GPT-1, scalata: decoder-only transformer, position encoding learned, causale. Le dimensioni sono quattro:
- GPT-2 Small: 124M parametri, 12 layer, .
- GPT-2 Medium: 355M parametri, 24 layer, .
- GPT-2 Large: 774M parametri, 36 layer, .
- GPT-2 XL: 1.5B parametri, 48 layer, .
Il modello full (1.5B) è circa tredici volte più grande di GPT-1 e quattro volte più grande di BERT-Large. È, al momento del rilascio, fra i più grandi language model addestrati pubblicamente.
Il corpus di pre-training è WebText, un dataset di circa 8 milioni di documenti scrapati da link condivisi su Reddit con karma maggiore o uguale a 3 (filtro che funge da proxy di qualità: i link che gli utenti votano positivamente hanno qualità mediana superiore a un crawl random del web). Totale: circa 40 GB di testo, circa 9 miliardi di parole. Tre ordini di grandezza più grande di BookCorpus. La scelta di WebText, contro Common Crawl filtrato, è motivata dalla qualità: la curation implicita di Reddit produce un corpus più pulito.
Il task di pre-training è invariato: language modeling autoregressive standard, massimizzare su WebText.
I risultati riportati nel paper sono in due categorie. Primo: language modeling pure, su benchmark come WikiText-103, LAMBADA, Penn Treebank: GPT-2 1.5B raggiunge state of the art zero-shot su sette degli otto benchmark, in molti casi battendo modelli specializzati addestrati su quei dataset. Secondo, e più sorprendente: zero-shot performance su task di NLU (reading comprehension, traduzione, summarization, question answering) senza fine-tuning. Il modello, a cui si fornisce solo una breve istruzione testuale o un pattern di prompt, produce risposte che, pur non eguagliando lo state of the art di modelli fine-tuned, sono competitive su molti benchmark.
Il paper conia (o consolida, perché il termine era già in giro) la frase “language models as unsupervised multitask learners”: l’idea che un modello generativo sufficientemente grande, addestrato su un corpus sufficientemente vario, impari implicitamente a svolgere molti task senza supervisione esplicita. L’osservazione anticipa il paradigma del few-shot learning e dell’in-context learning che diventerà centrale con GPT-3 nel 2020.
Un altro effetto sorprendente: generazione di testo coerente e lungo. GPT-2 produce paragrafi grammaticalmente impeccabili, tematicamente coerenti per centinaia di token. Il blog post di OpenAI del 14 febbraio 2019 mostra esempi notori: una continuazione di prompt su “unicorni nelle Ande” che produce un articolo di stile giornalistico, un saggio sulla guerra civile americana scritto come se fosse il New York Times, codice Python sintatticamente corretto. La qualità della generazione è sufficiente, in molti esempi, da risultare difficile da distinguere da testo umano per lettori non esperti.
La controversia del rilascio di GPT-2
Sezione intitolata “La controversia del rilascio di GPT-2”Il 14 febbraio 2019 OpenAI annuncia GPT-2 con un blog post intitolato “Better Language Models and Their Implications”. L’annuncio dichiara che, a causa di “concerns about malicious applications of the technology” (timori per applicazioni malevole), OpenAI non rilascera il modello completo da 1.5 miliardi di parametri, ma solo una versione piccola da 124M, insieme al codice di training e a una “dataset paper card”. Le applicazioni malevole citate includono generazione di disinformazione su scala, fake news automatizzate, impersonificazione, spam.
La decisione genera una controversia immediata e prolungata nella comunità AI. Le posizioni si polarizzano in due campi.
A favore della cautela: la generazione di testo di alta qualità su scala potrebbe abilitare campagne di disinformazione, automated propaganda, phishing personalizzato. Mancano contromisure mature (detector di testo generato, watermarking). Rilasciare prematuramente un sistema con potenziale di abuso è irresponsabile. La posizione è sostenuta da diversi ricercatori senior, fra cui Stuart Russell e Jack Clark (allora policy director di OpenAI).
Contro la cautela: il modello sarà replicato in pochi mesi da altri laboratori, dato che le tecniche sono pubbliche; ritardare il rilascio non riduce il rischio reale, lo sposta solo nel tempo. Inoltre, non rilasciare il modello rende impossibile alla comunità di ricerca studiare i rischi, sviluppare mitigazioni, comprendere i pattern di abuso. La decisione è interpretata da alcuni come “safety theatre”, una mossa di marketing o di posizionamento di OpenAI come “responsabile”. La posizione è sostenuta da researcher come Yann LeCun (Facebook AI), Anima Anandkumar (NVIDIA), e da molte voci della comunità open source.
OpenAI procede con un rilascio incrementale: 124M in febbraio, 355M in maggio, 774M in agosto, 1.5B in novembre 2019. Ad ogni step, OpenAI pubblica un blog post che riassume cosa hanno osservato sui rischi e perché ritengono il rilascio del prossimo step sicuro. Nessun caso documentato di abuso sostanziale di GPT-2 viene riportato in quei mesi. Ad anno scaduto, la maggioranza della comunità AI considera l’intera vicenda con sguardo misto: la cautela era giustificata in linea di principio, l’esecuzione è stata percepita come eccessivamente cauta data l’effettiva pericolosità del modello (limitata, in retrospettiva, dalla qualità ancora imperfetta della generazione).
L’episodio ha tre conseguenze durevoli. Primo, stabilisce un precedente politico: le aziende AI possono trattenere modelli citando rischi di safety, e questo diventerà pratica standard (Google con LaMDA in 2021, Anthropic con Claude, e successivi modelli di frontiera). Secondo, apre il dibattito open-source vs closed AI, che in 2023-2024 si polarizza con Meta che rilascia Llama come open weights mentre OpenAI/Anthropic mantengono closed. Terzo, il caso GPT-2 anticipa di tre anni la discussione molto più ampia che nascerà con ChatGPT nel 2022: cosa significa rilasciare modelli generativi di linguaggio in modo responsabile, e chi decide.
Pre-training + fine-tuning come ricetta standard
Sezione intitolata “Pre-training + fine-tuning come ricetta standard”Per riassumere lo schema operativo che emerge fra giugno 2018 e fine 2019:
-
Pre-training: un grande language model (decoder-only come GPT, encoder-only come BERT, encoder-decoder come T5) viene addestrato su un grande corpus di testo non etichettato (BookCorpus, Wikipedia, WebText, Common Crawl filtrato). Il task è auto-supervisionato (LM autoregressive, MLM, span corruption). Il pre-training richiede settimane su decine o centinaia di GPU, costo dell’ordine di centinaia di migliaia di dollari per modelli di scala BERT-Large o GPT-2.
-
Fine-tuning: il modello pre-trained viene adattato a un task specifico tramite (a) aggiunta di un piccolo classifier head, (b) addestramento end-to-end per pochi epoch sul dataset annotato del task. Il fine-tuning richiede ore o giorni su una singola GPU, costo dell’ordine di decine o centinaia di dollari.
-
Inference: il modello fine-tuned viene deployato per il task. L’inference è anch’essa relativamente economica per modelli di scala BERT (centinaia di millisecondi su una GPU per una singola predizione).
Lo schema diventa il default per qualsiasi task NLP non triviale. La frase “abbiamo provato BERT, ha battuto la nostra baseline custom di tre punti” è una conversazione standard nelle aziende fra il 2019 e il 2022. Lo schema dura fino al 2020-2022, quando per task generativi viene parzialmente sostituito dal prompting dei modelli GPT-3 e successori (vedi gpt3-2020 in preparazione): per molti task non serve più nemmeno fine-tunare, basta dare istruzioni o esempi in input. Per task discriminativi specifici (search ranking, content moderation, embedding per retrieval), il pre-training + fine-tuning di modelli encoder rimane invece dominante anche nel 2026.
HuggingFace Transformers e l’ecosistema
Sezione intitolata “HuggingFace Transformers e l’ecosistema”Un fattore di accelerazione spesso sottovalutato è la libreria Transformers di HuggingFace. HuggingFace è una startup francese fondata nel 2016 da Clément Delangue, Julien Chaumond e Thomas Wolf, originariamente focalizzata su chatbot per adolescenti. In ottobre 2018, in concomitanza con il rilascio di BERT, Wolf inizia a sviluppare una libreria Python chiamata pytorch-pretrained-bert che porta BERT in PyTorch (Devlin et al. avevano rilasciato il codice originale in TensorFlow). La libreria diventa rapidamente popolare per la sua semplicità d’uso: caricare un BERT pre-trained richiede tre righe di Python.
Nel 2019 la libreria viene generalizzata e rinominata pytorch-transformers, poi semplicemente transformers, e supporta modelli BERT, GPT, GPT-2, XLNet, RoBERTa, DistilBERT, T5 e successivi. HuggingFace pubblica anche un Model Hub, un repository pubblico dove ricercatori e aziende caricano i loro modelli pre-trained (e in molti casi fine-tuned su task specifici), accessibili via API uniforme. Nel 2020 la libreria transformers ha 30000 stars su GitHub, nel 2022 supera 60000, nel 2024 oltre 130000. È diventata l’infrastruttura di fatto per il NLP applicato.
L’effetto di HuggingFace sull’adozione di BERT e GPT è difficile da sovrastimare. Senza Transformers, fine-tunare un BERT richiedeva di leggere il codice originale Google (TensorFlow 1.x), capire i dettagli dell’input pipeline, gestire checkpoint e tokenization manualmente. Con Transformers, lo stesso fine-tuning si scrive in 30 righe di Python comprensibili a uno sviluppatore intermedio. La barriera d’ingresso scende drasticamente, e l’ecosistema esplode di varianti: BERT fine-tuned su domini specifici (BioBERT per biomedicina, FinBERT per finanza, LegalBERT per legale, SciBERT per scientific text), versioni multilingual (mBERT, XLM-R), versioni distillate (DistilBERT). Decine di migliaia di varianti sul Model Hub entro fine 2020.
Marcatura di classe: il successo di BERT come paradigma è una filiazione documentata non solo del paper di Devlin et al., ma anche dell’ecosistema HuggingFace che lo rende accessibile. Il binomio modello + libreria è ciò che produce l’effetto di mercato; nessuno dei due da solo basta.
Esempio 1: Masked Language Modeling in pratica
Sezione intitolata “Esempio 1: Masked Language Modeling in pratica”Vediamo come BERT processa un esempio di MLM. Input dopo tokenization: [CLS] the cat sat on the [MASK] . [SEP]. La sequenza viene convertita in token ID, embeddata, e passa attraverso i 12 layer del BERT-Base. Ad ogni layer ogni posizione fa attention bidirezionale su tutte le altre posizioni: il token the (prima occorrenza) può guardare cat, sat, [MASK], ., [SEP]; il token [MASK] guarda tutti gli altri token, inclusi quelli a destra. Dopo i 12 layer, il modello produce per ogni posizione un embedding contestuale di dimensione 768.
All’output, per la posizione del [MASK], BERT applica un classifier head (proiezione lineare a dimensione del vocabolario, circa 30000 token, seguita da softmax) e produce una distribuzione di probabilità sui token possibili. In un modello pre-trained su BookCorpus + Wikipedia, le top predizioni per [MASK] in questo contesto saranno pesate verso parole semanticamente plausibili: mat (probabilità tipica circa 0.45), floor (0.18), ground (0.09), carpet (0.05), bed (0.03), e così via decrescendo. Il modello ha imparato dal pre-training che “the cat sat on the X” è un pattern frequente con X spesso uguale a mat (cliché linguistico inglese).
Durante il pre-training, la loss è la cross-entropy fra la distribuzione predetta dal modello e l’etichetta one-hot del token vero (in questo caso mat). Il gradiente di questa loss si propaga indietro attraverso tutti i 12 layer, aggiornando i parametri. Su miliardi di token mascherati durante il pre-training, BERT impara una mappa profonda di quale parola probabilmente segue quale contesto bidirezionale.
L’effetto operativo: dopo il pre-training, gli embedding interni di BERT codificano implicitamente conoscenza linguistica, sintattica, semantica, e in misura limitata anche fattuale (il BERT pre-trained sa che “Paris” è più simile a “France” che a “table”). Questa conoscenza è ciò che rende il fine-tuning successivo così efficace.
Esempio 2: Generazione autoregressive con GPT
Sezione intitolata “Esempio 2: Generazione autoregressive con GPT”GPT-2 funziona in modo opposto. Input: Once upon a time, dopo tokenization: una sequenza di 4 token. Il modello processa la sequenza con self-attention causale (ogni token vede solo i precedenti) e produce per ogni posizione un embedding di dimensione 1600 (GPT-2 XL). Per generare il token successivo, prendiamo l’embedding dell’ultima posizione, applichiamo un classifier head (proiezione lineare a dimensione del vocabolario circa 50000 token in GPT-2, seguita da softmax) e otteniamo una distribuzione di probabilità sul prossimo token.
Da questa distribuzione si campiona un token (con greedy, beam search, sampling stocastico, top-k, top-p, vedi output-logits in preparazione, Parte IX). Supponiamo si campioni ,. La sequenza diventa Once upon a time ,. Si re-processa la sequenza estesa, si predice il prossimo token, si campiona, si appende. Il loop continua fino a un numero di token desiderato o a un token di stop.
Output tipico di GPT-2 1.5B con questo prompt: Once upon a time, there was a young boy who lived in a small village at the edge of a vast forest. He spent his days exploring the woods, climbing trees, and chasing rabbits. One morning, he stumbled upon a strange clearing he had never seen before.... Il testo è grammaticalmente corretto, tematicamente coerente con il prompt fairy-tale, mantiene la coerenza per centinaia di token. Non è scrittura creativa originale di alta qualità, ma è sufficientemente buono da risultare difficilmente distinguibile da testo umano per chi non legge attentamente.
L’aspetto cruciale è che GPT-2 non ha un modulo separato per “narrativa fairy-tale”. Ha solo imparato dalla statistica di WebText che i prompt che iniziano con Once upon a time sono tipicamente seguiti da continuazioni in stile narrativo. La capacità di adattarsi al tono del prompt, senza istruzioni esplicite, è il seme di ciò che diventerà few-shot learning con GPT-3.
Esempio 3: pseudocodice di fine-tuning BERT su sentiment classification
Sezione intitolata “Esempio 3: pseudocodice di fine-tuning BERT su sentiment classification”Supponiamo di voler addestrare un classificatore binario di sentiment (positivo/negativo) su un dataset di recensioni di film, usando BERT come backbone. Pseudocodice in stile PyTorch + HuggingFace:
from transformers import BertTokenizer, BertForSequenceClassificationfrom torch.optim import AdamWfrom torch.utils.data import DataLoader
# 1. Carica tokenizer e modello pre-trainedtokenizer = BertTokenizer.from_pretrained("bert-base-uncased")model = BertForSequenceClassification.from_pretrained( "bert-base-uncased", num_labels=2 # positivo vs negativo)
# 2. Prepara il dataset (esempio semplificato)def encode(text, label): encoded = tokenizer( text, padding="max_length", truncation=True, max_length=128, return_tensors="pt" ) return encoded, label
train_loader = DataLoader(train_dataset, batch_size=16, shuffle=True)
# 3. Setup ottimizzatoreoptimizer = AdamW(model.parameters(), lr=2e-5)
# 4. Training loop, 3 epochfor epoch in range(3): for batch in train_loader: inputs, labels = batch optimizer.zero_grad() outputs = model(**inputs, labels=labels) loss = outputs.loss # cross-entropy gestita internamente loss.backward() optimizer.step()
# 5. Inference su un nuovo esempiomodel.eval()test_input = tokenizer( "This movie was absolutely wonderful, loved every minute.", return_tensors="pt")with torch.no_grad(): pred = model(**test_input).logits.argmax(dim=-1)print(pred) # tensor([1]) -> positivoIl punto da notare è la quantità di codice: meno di trenta righe per ottenere un classificatore di sentiment con accuracy tipicamente 92-94% su benchmark come SST-2, contro 80-85% di un classificatore custom (LSTM o CNN) addestrato from scratch sullo stesso dataset. Il salto di qualità deriva interamente dal pre-training di BERT: il classifier head finale è un singolo layer lineare, tutto il lavoro di rappresentazione è fatto dal modello pre-trained.
Il learning rate 2e-5 è un valore tipico per fine-tuning di BERT, molto più basso del learning rate usato in pre-training (1e-4 circa). Il motivo è che vogliamo perturbare poco i pesi pre-trained: stiamo specializzando, non re-imparando. Tre epoch è anch’esso tipico per dataset di taglia tipica (10k-100k esempi); con dataset più piccoli si rischia overfitting, con dataset più grandi può convenire fine-tunare di più.
Eredità oggi
Sezione intitolata “Eredità oggi”Questa sezione raccoglie il presentismo che il corpo storico evita.
Filiazione documentata: la linea GPT
Sezione intitolata “Filiazione documentata: la linea GPT”GPT-1 (2018) → GPT-2 (2019) → GPT-3 (2020, Brown et al., 175B parametri, dimostra few-shot learning via in-context learning) → InstructGPT (2022, fine-tuned con RLHF) → ChatGPT (novembre 2022) → GPT-4 (marzo 2023, multimodale) → GPT-4o (2024) → GPT-5 (2025). Una linea ininterrotta di sette anni, con Alec Radford come primo autore o coautore principale di gran parte dei paper. La continuità di responsabilità tecnica è inusuale nella ricerca AI di alto livello.
L’idea architetturale fondamentale (decoder-only autoregressive language model con scaling massiccio) è invariata da GPT-1. Ciò che cambia: dimensioni (117M → 175B → modelli di frontiera al 2026 con trilioni di parametri sparse), dati (BookCorpus → WebText → trilioni di token di Common Crawl filtrato), training paradigm (pre-training → pre-training + SFT + RLHF/DPO), capabilities (text generation → conversation → tool use → reasoning). Ma la spina dorsale architetturale rimane il decoder-only transformer di GPT-1.
Vedi gpt3-2020, chatgpt-2022, instruction-rlhf-era, scaling-era-2023 (tutti in preparazione, Parte I) per il dettaglio dell’evoluzione.
Filiazione documentata: la linea BERT
Sezione intitolata “Filiazione documentata: la linea BERT”BERT (2018) → RoBERTa (Liu et al. luglio 2019, Facebook AI Research, “A Robustly Optimized BERT Pretraining Approach”, arXiv:1907.11692): rimuove NSP, training più lungo, batch più grandi (8000 vs 256), corpus più grande (160 GB vs 16 GB), dynamic masking. Risultato: 88+ su GLUE, sostanziale miglioramento. Dimostra che la ricetta di Devlin et al. era subottimamente ottimizzata; la performance di BERT cresceva con più compute.
→ DistilBERT (Sanh et al. ottobre 2019, HuggingFace): distillazione di BERT con teacher-student, 60% più piccolo (66M parametri), 60% più veloce all’inference, mantiene 97% delle capacità di BERT-Base. Diventa standard per deployment in production dove la latenza è critica.
→ ALBERT (Lan et al. settembre 2019, Google, “A Lite BERT for Self-supervised Learning of Language Representations”, arXiv:1909.11942): parameter sharing fra layer (gli stessi pesi di attention e FFN sono usati in tutti i layer), riduce i parametri di 18x mantenendo simile performance. Sostituisce NSP con SOP (Sentence Order Prediction), task più difficile.
→ DeBERTa (He et al. 2020-2021, Microsoft): disentangled attention (separa content e position embeddings), enhanced mask decoder. Supera BERT e RoBERTa su GLUE e SuperGLUE.
→ ModernBERT (2024, AnswerDotAI + LightOn): aggiornamento di BERT per il 2024 con FlashAttention, RoPE, longer context (8192 token), training su trilioni di token. Dimostra che la famiglia encoder-only è ancora soggetta a miglioramenti.
In parallelo: BGE e E5 (2022-2024, Beijing Academy of AI e Microsoft): encoder-only transformer fine-tuned con contrastive learning per produrre embedding di qualità per retrieval. Sono lo stato dell’arte per dense retrieval (vedi embeddings-retrieval in preparazione, Parte XIV) e la base di gran parte dei sistemi di RAG (Retrieval Augmented Generation).
La linea BERT non è morta: è specializzata. I modelli encoder-only sono dominanti nel 2026 per tutti i task in cui serve un’embedding di un documento o di una query (search ranking, content moderation, semantic search, retrieval, classification), perché sono molto più piccoli ed efficienti dei modelli decoder-only di pari capacità rappresentazionale. Un modello generativo da 70B parametri non è competitivo con un encoder da 300M per produrre embedding di una query a bassa latenza.
La terza strada: encoder-decoder
Sezione intitolata “La terza strada: encoder-decoder”Una terza strada del transformer mantiene entrambi gli stack come l’originale del 2017:
-
T5 (Raffel et al. ottobre 2019, Google, “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer”, arXiv:1910.10683): encoder-decoder, formula tutti i task NLP come problemi text-to-text (anche la classificazione: “input: … \n output: ‘positive’ o ‘negative’”). Pre-trained con span corruption (variante di MLM dove si mascherano span contigui invece di token singoli). Disponibile in scale da Small (60M) a XXL (11B). Diventa standard per task seq2seq e summarization.
-
BART (Lewis et al. ottobre 2019, Facebook AI, “BART: Denoising Sequence-to-Sequence Pre-training”, arXiv:1910.13461): encoder-decoder, pre-trained con denoising autoencoding (corrompi il testo input, ricostruisci output). Forte su summarization e generation guidata.
-
Whisper (Radford et al. 2022, OpenAI): encoder-decoder per ASR (Automatic Speech Recognition), encoder processa audio, decoder genera testo trascritto. Esempio di transformer encoder-decoder in dominio multimodale.
L’encoder-decoder non ha mai dominato come paradigma generale come hanno fatto decoder-only e encoder-only, ma è sopravvissuto in nicchie dove il task ha naturalmente una struttura input-distinct-from-output (traduzione, summarization, ASR, image captioning).
Decoder-only ha vinto per LLM generativi
Sezione intitolata “Decoder-only ha vinto per LLM generativi”Verso il 2022-2023 si stabilizza una convergenza: tutti i modelli di frontiera per generative AI sono decoder-only (GPT-3, GPT-4, Claude, Gemini, Llama, Mistral, DeepSeek, Qwen, Grok). Le ragioni della vittoria del decoder-only sono diverse:
- Semplicità di training: un solo stack, una sola loss (next token prediction). Più facile da scalare.
- Generalità del paradigma: qualsiasi task può essere formulato come continuazione di un prompt. Question answering, summarization, traduzione, code generation, dialogue: tutto è “data una sequenza, predici la continuazione”.
- In-context learning: come dimostrato da GPT-3 nel 2020, i decoder-only di scala sufficiente svolgono task nuovi vedendo solo pochi esempi nel prompt, senza fine-tuning. Encoder-only non hanno questa capacità (non sono generativi).
- Scaling laws: i decoder-only seguono leggi di scaling più chiare e prevedibili. Vedi
scaling-laws(in preparazione, Parte XI).
Ma la convergenza riguarda la frontiera generativa. Per i task discriminativi specializzati di production (dove non serve generare testo, serve solo classificare o produrre un embedding), la famiglia BERT è viva e vegeta.
L’ecosistema HuggingFace come default
Sezione intitolata “L’ecosistema HuggingFace come default”HuggingFace è oggi (2026) l’infrastruttura standard del ML applicato. La libreria transformers è installata in milioni di progetti. Il Model Hub ospita oltre un milione di modelli. La pratica di “scaricare un modello pre-trained e fine-tunare” è il workflow standard per il 90% dei team ML che lavorano su task NLP non generativi. La pratica deriva direttamente dal momento BERT del 2018-2019 e dall’effetto di rete che HuggingFace ha catalizzato.
”Stochastic parrots” e la critica ricorrente
Sezione intitolata “”Stochastic parrots” e la critica ricorrente”Una nota di disciplina critica: la frase stochastic parrots (“pappagalli stocastici”) è introdotta in Bender, Gebru, McMillan-Major, Shmitchell “On the Dangers of Stochastic Parrots: Can Language Models Be Too Big?” (FAccT 2021). Le autrici argomentano che i grandi language model, nonostante la fluenza generativa, non comprendono il significato del testo che producono: ricombinano statistiche del corpus di training senza referente semantico. La pubblicazione del paper è preceduta da disputa interna a Google: Timnit Gebru viene licenziata in dicembre 2020 in circostanze controverse, evento che innesca dibattito su libertà accademica nelle Big Tech.
La critica “stochastic parrots” è ricorrente nei dibattiti su LLM dal 2021 ad oggi. Si applica a BERT come a GPT, ma è particolarmente pertinente per i modelli generativi che producono testo apparentemente comprensivo. La risposta della comunità è divisa: alcuni accettano la critica come limite intrinseco, altri sostengono che modelli sufficientemente grandi sviluppano forme di rappresentazione semantica (la letteratura di mechanistic interpretability documenta circuiti specifici per fact storage, induction heads, ecc.). Vedi mech-interp-intro (in preparazione, Parte IX) per la discussione.
[DATATO 2026-04] Lo stato attuale della famiglia BERT. ModernBERT del 2024 e successivi encoder-only specialized models (per multilingual, per code, per scientific text) restano standard per task discriminativi in production. Il numero di modelli encoder-only fine-tuned per task verticali sul Model Hub di HuggingFace cresce ancora nel 2026, anche se la copertura mediatica è quasi tutta sui generative LLMs. Per chi costruisce sistemi production-grade di search, ranking, content moderation, RAG, la conoscenza di BERT-family è ancora rilevante.
Dove si rompe
Sezione intitolata “Dove si rompe”Anche letti storicamente, i paper di GPT e BERT del 2018-2019 hanno limiti che la ricerca successiva ha dovuto affrontare. Elencarli serve a evitare due errori opposti: sottovalutare la portata dei lavori, e mitizzarli come perfetti.
NSP era subottimale, dimostrato da RoBERTa. Devlin et al. introducono Next Sentence Prediction come secondo task di pre-training di BERT, motivandolo con l’intuizione che task come NLI e QA richiedono comprensione di relazioni inter-frase. Liu et al. nel paper di RoBERTa (luglio 2019) eseguono ablation rigorose e dimostrano che rimuovere NSP dal pre-training migliora la performance downstream, non la peggiora. La motivazione plausibile, articolata in lavori successivi, è che NSP è troppo facile (la maggioranza degli esempi negativi sono distinguibili a livello di topic, dunque il modello impara a fare topic detection invece di entailment fine). Devlin in interviste successive ha riconosciuto che NSP era una scelta di design “che sembrava ragionevole ma si è rivelata non ottimale”. È un esempio di come idee plausibili a priori vengano falsificate dall’esperimento; un buon promemoria contro l’overfitting di intuizioni architetturali.
GPT-2 generation è spesso ripetitiva senza tecniche di sampling avanzato. La generazione greedy (prendi sempre il token più probabile) o beam search da GPT-2 produce spesso ripetizioni di frasi o cicli (“the the the…”). Il problema è documentato in Holtzman et al. 2019 (“The Curious Case of Neural Text Degeneration”, arXiv:1904.09751) che propone nucleus sampling (top-p sampling) come soluzione: invece di campionare dalla distribuzione completa o dai top-k, si campiona dal più piccolo insieme di token la cui probabilità cumulativa supera una soglia (tipicamente 0.9). Top-p produce generazione più diversificata e meno ripetitiva. Diventa standard per generazione con LLM. Vedi output-logits (in preparazione, Parte IX).
BERT non è generativo. È un limite intrinseco dell’architettura encoder-only. BERT produce embedding contestuali, non testo. Qualsiasi tentativo di “generare” con BERT richiede hack non eleganti (mascherare token successivamente, o usarlo come encoder dentro un decoder esterno). Per task di generazione, BERT non è la scelta giusta. Questa limitazione è ovvia in retrospettiva ma non era universalmente compresa nel 2019: alcuni paper provavano a usare BERT per task generativi con risultati modesti.
Bias inheritati dal corpus. Sia GPT che BERT sono pre-trained su corpus che riflettono pregiudizi statistici della società che ha prodotto quei testi: stereotipi di genere, bias razziali, nazionali, religiosi, ideologici. Numerosi studi documentano che i modelli ereditano e talvolta amplificano questi bias (Bolukbasi et al. 2016 sul gender bias in word embeddings, Sheng et al. 2019 su GPT-2 bias, Nangia et al. 2020 su BERT). Il problema non è risolto nel 2026 nonostante anni di lavoro su debiasing. È inerente al paradigma “train on web text”, e rimedi parziali (filtrare il corpus, fine-tunare con preferenze umane via RLHF) attenuano ma non eliminano.
Mito 1: “BERT capisce il linguaggio”. Falso. BERT capisce statistiche distribuzionali del linguaggio: quali token co-occorrono con quali altri, in quali contesti. Questa è una forma di rappresentazione utile, sufficiente per molti task discriminativi, ma non è “comprensione semantica” nel senso umano. BERT non ha modello del mondo, non ha intenzionalità, non ha ground truth referenziale. La frase “BERT capisce” è un’antropomorfizzazione che il rigore impone di evitare. Vedi symbol-grounding (in preparazione, Parte II) per la discussione filosofica.
Mito 2: “GPT-2 era pericoloso da rilasciare”. Discusso. La decisione di OpenAI di rilascio incrementale fu basata su ragioni dichiarate di safety. In retrospettiva, il modello GPT-2 1.5B non è risultato pericoloso in modi sostanzialmente nuovi rispetto a strumenti già disponibili: la generazione di disinformazione era già possibile (con esseri umani), GPT-2 la rendeva più scalabile ma non qualitativamente diversa. Alcuni critici sostengono che la decisione fu in parte motivata da posizionamento di marketing di OpenAI come “responsabile”. Altri sostengono che fu cautela genuina con costi accettabili. In ogni caso, la storia ha mostrato che GPT-3 (rilasciato via API in 2020) e ChatGPT (rilasciato pubblicamente in novembre 2022) hanno avuto impatto incomparabilmente maggiore di GPT-2, e su quei rilasci la cautela è stata molto minore. Il caso GPT-2 va letto come prima istanza di un dibattito che si è poi normalizzato e in alcuni sensi disimpegnato.
Mito 3: “decoder-only è sempre meglio di encoder-only”. Falso. Per generazione di testo libero, decoder-only è dominante. Per task discriminativi (classificazione, NER, retrieval, ranking), encoder-only è competitivo o superiore a parità di parametri, e drasticamente superiore a parità di latenza di inference. Un encoder da 300M con 256 token di context produce un’embedding in 5-10ms su una GPU; un decoder da 70B richiede secondi per produrre output equivalente. Per task di production dove la latenza è critica (search, recommendation, content moderation), encoder-only è e resta lo standard. La narrativa “decoder-only ha vinto” è vera nella nicchia LLM generativi ma falsa come affermazione generale.
Mito 4: “BERT è morto, oggi si usano LLM per tutto”. Falso. Per RAG (Retrieval Augmented Generation, vedi rag-base in preparazione, Parte XIV), il pattern dominante nel 2026 è: encoder per produrre embedding di documenti e query (BERT-family), retrieval con ANN, decoder generativo (GPT/Claude/Llama) per produrre la risposta finale dato i documenti recuperati. I due tipi di modelli convivono e sono complementari. Sostenere che “tutto è LLM ora” è confondere la copertura mediatica con l’architettura sistemistica.
Limite di interpretabilità. Sia BERT che GPT-2 sono modelli opachi. Le matrici di attention sono visualizzabili e in alcuni casi interpretabili, ma il calcolo che il modello svolge è distribuito su decine di layer e milioni di parametri. La mechanistic interpretability ha fatto progressi (induction heads in GPT-2, fact storage in BERT), ma non abbiamo una teoria completa di cosa fa un transformer addestrato. Per applicazioni high-stakes (medicina, legale, finanza), questo limita l’adozione.
Limite di context length. BERT ha context window di 512 token, GPT-2 di 1024. Per documenti lunghi, libri, conversazioni estese, il context window è limitante. Modelli successivi estendono significativamente (GPT-3 a 2048, GPT-4 a 8K-128K, Claude a 200K, Gemini a 1M), ma il limite era stretto nel 2018-2019 e ha richiesto anni di ricerca per essere superato significativamente. Vedi long-context-tecniche (in preparazione, Parte X).
Limite di costo computazionale per inference. BERT-Large (340M) e GPT-2 XL (1.5B) richiedono GPU per inference a latenza accettabile. Per il deployment edge o per applicazioni low-cost ad alto volume, sono troppo grandi. DistilBERT, TinyBERT e altre versioni ridotte affrontano il problema, ma con perdita di performance. Il trade-off costo/qualità rimane presente nel 2026, accentuato dai modelli di frontiera che richiedono cluster di GPU.
Lezione storiografica generale. GPT-1, BERT, GPT-2 sono lavori eccellenti nel loro contesto del 2018-2019, e fondamenti nel loro contesto del 2026. Le due valutazioni non vanno confuse. Devlin et al. non hanno previsto che la loro architettura sarebbe stata centrale per il 2026. Radford et al. non hanno previsto ChatGPT. Hanno costruito strumenti la cui scalabilità ha permesso alla comunità di esplorare territorio prima inaccessibile. Il merito si misura sull’apertura di possibilità, non sulla profezia.
Collegamenti
Sezione intitolata “Collegamenti”- transformer-2017 — l’architettura su cui sia GPT che BERT sono costruiti. Il paper di Vaswani et al. è il prerequisito immediato. Senza il transformer, il pre-training su scala non sarebbe stato fattibile.
- word2vec-2013 — gli embedding statici di parola, predecessori concettuali degli embedding contestuali di ELMo, BERT, GPT. Il salto dal vettore-per-parola al vettore-per-token-in-contesto attraversa cinque anni e tre generazioni di modelli.
- seq2seq-2014 — l’architettura encoder-decoder per traduzione, di cui BERT eredita l’encoder e GPT eredita il decoder. Il vocabolario terminologico (encoder, decoder) viene da qui.
- attention-bahdanau-2014 — il meccanismo di attention soft, ingrediente comune. Senza Bahdanau il transformer non sarebbe pensabile, e senza il transformer BERT/GPT non sarebbero possibili.
- imagenet-alexnet-2012 — il paradigma deep learning + GPU + dataset grande di cui BERT e GPT sono continuazione metodologica nel dominio NLP. La ricetta pre-training + fine-tuning era già consolidata in vision (ImageNet pre-training + fine-tuning per task downstream) prima di arrivare a NLP.
gpt3-2020(in preparazione) — la dimostrazione che il decoder-only scala in modo prevedibile su tre ordini di grandezza, dando origine al paradigma few-shot in-context learning. Continuazione diretta di GPT-2.chatgpt-2022(in preparazione) — il momento pubblico in cui la linea GPT diventa visibile fuori dalla comunità tecnica. Il successo culturale di ChatGPT è inseparabile dal lavoro tecnico di GPT-1, GPT-2, GPT-3.instruction-rlhf-era(in preparazione) — instruction tuning e RLHF come complemento al pre-training. Ricetta completa = pre-training (questo capitolo) + post-training (capitolo successivo).embedding-input-output(in preparazione, Parte IX) — embedding matrix, unembedding, weight tying. Componenti tecniche comuni a BERT e GPT.decoder-only-vs-enc-dec(in preparazione, Parte IX) — il bivio architetturale di questo capitolo, trattato dal punto di vista tecnico-architetturale invece che storico.multi-head(in preparazione, Parte IX) — multi-head attention come componente comune. Sia BERT che GPT usano multi-head; cosa fa ogni head è argomento di mechanistic interpretability.prompt-anatomia(in preparazione, Parte XV) — il prompting come modo di interagire con i decoder-only LLM. La pratica nasce con GPT-2 e GPT-3.in-context-learning(in preparazione, Parte XV) — capacità dei decoder-only di apprendere task da esempi nel prompt. Anticipata da GPT-2, formalizzata con GPT-3.self-supervised(in preparazione, Parte VIII) — il paradigma di apprendimento auto-supervisionato di cui MLM e LM autoregressive sono istanze. Fondamento del pre-training.representation-learning(in preparazione, Parte VIII) — apprendere rappresentazioni utili come obiettivo del pre-training.embeddings-retrieval(in preparazione, Parte XIV) — uso di encoder-only per produrre embedding di retrieval, applicazione viva di BERT-family nel 2026.
Per andare oltre
Sezione intitolata “Per andare oltre”- Devlin J., Chang M.-W., Lee K., Toutanova K., “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”, NAACL 2019 (arXiv:1810.04805). Il paper originale di BERT. Diciotto pagine. Lettura obbligata. La sezione di ablation studies (4.5) e quella sui task downstream (4) sono particolarmente dense.
- Radford A., Narasimhan K., Salimans T., Sutskever I., “Improving Language Understanding by Generative Pre-Training”, OpenAI tech report 2018. Il paper di GPT-1, dodici pagine. Disponibile sul sito di OpenAI. Confrontare con il paper di BERT è istruttivo: stesso problema (transfer learning con transformer), soluzioni opposte (autoregressive vs bidirectional).
- Radford A., Wu J., Child R., Luan D., Amodei D., Sutskever I., “Language Models are Unsupervised Multitask Learners”, OpenAI tech report 2019. Il paper di GPT-2. Da leggere insieme al blog post di OpenAI del 14 febbraio 2019 (“Better Language Models and Their Implications”) per capire la decisione di rilascio incrementale.
- Peters M.E., Neumann M., Iyyer M., Gardner M., Clark C., Lee K., Zettlemoyer L., “Deep Contextualized Word Representations” (ELMo), NAACL 2018 (arXiv:1802.05365). Il predecessore immediato basato su LSTM. Confrontare ELMo con BERT chiarisce cosa il transformer aggiunge al pre-training contestuale.
- Howard J., Ruder S., “Universal Language Model Fine-tuning for Text Classification” (ULMFiT), ACL 2018 (arXiv:1801.06146). La formulazione metodologica esplicita di pre-training + fine-tuning in NLP. Howard e Ruder hanno il merito di articolare la ricetta che BERT e GPT realizzano poi sul transformer.
- Liu Y., Ott M., Goyal N., Du J., Joshi M., Chen D., Levy O., Lewis M., Zettlemoyer L., Stoyanov V., “RoBERTa: A Robustly Optimized BERT Pretraining Approach”, arXiv:1907.11692 (luglio 2019). Lo studio di ablation che dimostra che NSP era subottimale e che BERT era undertrained. Lettura essenziale per capire la storia della linea BERT.
- Raffel C., Shazeer N., Roberts A., Lee K., Narang S., Matena M., Zhou Y., Li W., Liu P.J., “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer” (T5), JMLR 2020 (arXiv:1910.10683). Il paper di T5, esempio della terza strada (encoder-decoder) e di un’analisi sistematica delle scelte di design del pre-training. Sessanta pagine, ricco di esperimenti.
- Brown T. et al., “Language Models are Few-Shot Learners” (GPT-3), NeurIPS 2020 (arXiv:2005.14165). Il paper successivo della linea GPT, dove la scala (175B parametri) abilita few-shot learning via in-context learning. Da leggere come continuazione naturale di GPT-2.
- Holtzman A., Buys J., Du L., Forbes M., Choi Y., “The Curious Case of Neural Text Degeneration”, ICLR 2020 (arXiv:1904.09751). Documenta il problema della generazione ripetitiva con GPT-2 e introduce nucleus sampling come soluzione. Importante per capire come si gestisce in pratica la generazione con LLM.
- Bender E.M., Gebru T., McMillan-Major A., Shmitchell S., “On the Dangers of Stochastic Parrots: Can Language Models Be Too Big?”, FAccT 2021. La critica più nota ai grandi language model. Da leggere indipendentemente dalla posizione che si assume sull’argomento.
- Wolf T. et al., “Transformers: State-of-the-Art Natural Language Processing”, EMNLP 2020 (arXiv:1910.03771). Il paper della libreria HuggingFace Transformers. Documenta l’infrastruttura che ha catalizzato l’adozione di BERT, GPT e successori nella comunità applicata.
- Jay Alammar, “The Illustrated BERT, ELMo, and co.” e “The Illustrated GPT-2” (jalammar.github.io, 2018-2019). Risorse didattiche eccellenti, con visualizzazioni passo passo dell’architettura. Per chi impara meglio guardando diagrammi.
- Rogers A., Kovaleva O., Rumshisky A., “A Primer in BERTology: What We Know About How BERT Works”, TACL 2020 (arXiv:2002.12327). Survey sistematico di cosa la ricerca ha scoperto sui meccanismi interni di BERT (cosa fanno le attention heads, quali rappresentazioni si formano nei layer, ecc.). Utile per chi vuole andare oltre il livello di “BERT funziona”.
- Devlin J., interviste e talk vari su YouTube (NAACL 2019, Stanford CS25 lecture). Racconto in prima persona della genesi di BERT, di come fu deciso NSP, e di cosa Devlin oggi cambierebbe. Utile per la sezione “Mito 1 / NSP” del capitolo.
- Sutskever I. e Radford A., interviste varie (Lex Fridman Podcast, Dwarkesh Patel Podcast, vari talk OpenAI). Per la storia interna della linea GPT e per la cultura OpenAI vs Google AI Language nel 2018-2019.