BERT (Bidirectional Encoder Representations from Transformers)
BERT è l'encoder Transformer bidirezionale di Google, preaddestrato a prevedere le parole mascherate da entrambi i lati. Tratta il funzionamento, il fine-tuning e le varianti.
BERT (Rappresentazioni bidirezionali dei codificatori dai Transformer) è un codificatore Transformer che legge un'intera frase in una sola volta e costruisce la rappresentazione di ogni parola a partire dalle parole che la precedono e la seguono. Jacob Devlin, Ming-Wei Chang, Kenton Lee e Kristina Toutanova di Google AI Language lo hanno presentato nell'ottobre 2018 in BERT: preaddestramento di Transformer profondi bidirezionali per la comprensione del linguaggio, che ha vinto il premio per il miglior articolo lungo a NAACL 2019. Un singolo BERT preaddestrato, perfezionato con un ulteriore livello di output, ha stabilito nuovi risultati all'avanguardia su undici attività di elaborazione del linguaggio naturale (NLP), portando il punteggio del benchmark GLUE a 80,5%, con un miglioramento assoluto di 7,7 punti, e il punteggio di risposta a domande sul test SQuAD v1.1 a 93,2 F1.
Come viene preaddestrato BERT#
BERT-Base è composto da 12 livelli di codificatore con stati nascosti a 768 dimensioni e 12 teste di attenzione, per circa 110 milioni di parametri; BERT-Large ha 24 livelli, 1.024 dimensioni, 16 teste e 340 milioni di parametri. Il testo di input viene suddiviso tramite tokenizzazione WordPiece in un vocabolario di 30.000 token; il token speciale [CLS] apre ogni sequenza e [SEP] separa i due segmenti di una coppia di frasi. Google ha preaddestrato entrambe le dimensioni su BooksCorpus (800 milioni di parole) e Wikipedia in inglese (2.500 milioni di parole) con due obiettivi di auto-supervisione.
La modellazione linguistica mascherata (MLM) seleziona il 15% delle posizioni dei token, sostituisce l'80% di queste con [MASK], il 10% con un token casuale e lascia invariato il restante 10%; il modello predice quindi i token originali. La self-attention di BERT non ha una maschera causale, quindi ogni predizione sfrutta il contesto da entrambi i lati, cosa impossibile per un modello linguistico da sinistra a destra. La predizione della frase successiva (NSP) abbina ogni segmento alla frase che lo segue effettivamente nella metà dei casi e a una frase casuale negli altri; un classificatore sull'output [CLS] impara a distinguere le due situazioni.
Un checkpoint preaddestrato mantiene la propria testa per le parole mascherate, così il modello originale può completare direttamente uno spazio vuoto:
from transformers import pipeline
# BERT predice una parola mascherata a partire dalle parole che la precedono e la seguono
fill = pipeline("fill-mask", model="bert-base-uncased")
for text in ["She went to the [MASK] to buy bread.", "She went to the [MASK] to see a doctor."]:
predictions = fill(text, top_k=3)
print(text, [(p["token_str"], round(p["score"], 2)) for p in predictions])Le due frasi differiscono solo dopo lo spazio vuoto e la predizione più probabile di BERT cambia da "market" (0.82) a "hospital" (0.78). Un modello che legge da sinistra a destra vede "She went to the" in entrambe le frasi e non ha elementi per distinguerle.
Perfezionamento e applicazioni#
Il fine-tuning aggiunge un piccolo livello specifico per l'attività e addestra tutti i pesi su esempi etichettati; questo approccio ha reso l'apprendimento per trasferimento la norma nell'NLP. Il vettore [CLS] alimenta classificatori a livello di frase, come l'analisi del sentiment; ogni vettore di token alimenta attività di etichettatura, come il riconoscimento di entità nominate (NER); i punteggi di inizio e fine calcolati sui token estraggono gli intervalli contenenti le risposte.
Google ha iniziato a usare BERT per una ricerca su dieci in lingua inglese negli Stati Uniti nell'ottobre 2019, citando la query "2019 brazil traveler to usa need a visa," in cui BERT ha riconosciuto che "to" indica che una persona brasiliana è diretta negli Stati Uniti. Nell'ottobre 2020 era già in uso per quasi tutte le query in inglese. Gli encoder della famiglia BERT producono anche gli embedding alla base della ricerca semantica: Sentence-BERT affina BERT per mappare ogni frase in un singolo vettore per la ricerca vettoriale, ColBERT mantiene un vettore per token e i modelli di riordinamento basati su cross-encoder assegnano un punteggio alle coppie query-passaggio nelle pipeline di generazione aumentata dal recupero (RAG).
Nel rilevamento visione-linguaggio, Grounding DINO codifica i prompt testuali con un encoder BERT-base prima di abbinarli alle regioni dell'immagine. Ultralytics Platform ospita Grounding DINO per l'annotazione intelligente guidata dalle classi, che trasforma i nomi delle classi di un dataset in riquadri modificabili per addestrare un rilevatore YOLO26. La predizione mascherata è stata applicata anche alle immagini: il vision transformer (ViT) ha ripreso il token [CLS] di BERT per la classificazione, e i codificatori automatici mascherati (MAE) preaddestrano gli encoder di immagini nascondendo il 75% delle porzioni dell'immagine e ricostruendole.
BERT, GPT e i codificatori successivi#
I modelli GPT sono costruiti con il decodificatore Transformer e una maschera causale, perciò predicono ogni token successivo a partire dai token precedenti e sono adatti alla generazione di testo. BERT produce un vettore per ogni token di input, il che lo rende adatto alla classificazione, all'estrazione e al recupero, ma non ha un modo integrato per generare testo da sinistra a destra. Un modello linguistico di grandi dimensioni (LLM) con miliardi di parametri svolge molte delle stesse attività di comprensione tramite prompt, ma il costo per query è molte volte superiore a quello di un codificatore da 110 milioni di parametri.
I codificatori successivi hanno perfezionato l'approccio. RoBERTa di Meta ha eliminato NSP e si è addestrato più a lungo, con batch più grandi e su circa 160 GB di testo, dimostrando che BERT era stato notevolmente sottoaddestrato; DistilBERT di Hugging Face ha usato la distillazione della conoscenza per ridurre del 40% il numero di parametri e funzionare il 60% più velocemente, mantenendo il 97% delle prestazioni di comprensione linguistica di BERT. ModernBERT, pubblicato nel dicembre 2024 da Answer.AI e LightOn, è stato addestrato su 2.000 miliardi di token con una lunghezza del contesto nativa di 8.192 token, 16 volte il limite di 512 token di BERT.










