BERT: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 4: | Riga 4: | ||
L'obiettivo del pre-training è duplice basato su [[Masked-Language-Modeling (MLM)|Masked-Language-Modeling (MLM]] e [[Next Sentence Prediction (NSP)]]. La codifica dell'input [https://github.com/google-research/bert/blob/master/create_pretraining_data.py] è d'interesse. | L'obiettivo del pre-training è duplice basato su [[Masked-Language-Modeling (MLM)|Masked-Language-Modeling (MLM]] e [[Next Sentence Prediction (NSP)]]. La codifica dell'input [https://github.com/google-research/bert/blob/master/create_pretraining_data.py] è d'interesse. | ||
La costruzione dell'input avviene nel seguente modo: | |||
Per | * Nel ''Masked Language Model'', token casuali in una sequenza vengono sostituiti con un token '''[MASK]''', e il modello viene addestrato a prevedere il token originale basandosi sul suo contesto. La funzione ''create_masked_lm_predictions'' nello script gestisce ciò selezionando i token da mascherare e preparando i token mascherati (''masked_lm_ids'') e le loro posizioni (''masked_lm_positions''). Durante l'addestramento, il modello produce previsioni per le posizioni mascherate, e la perdita viene calcolata in base a quanto bene il modello prevede i token originali (''masked_lm_labels''). | ||
* Per l'obiettivo di ''Next Sentence Prediction'', al modello vengono date coppie di frasi ed esso deve prevedere se la seconda frase segue logicamente la prima. Nello script, coppie di frasi (segmenti A e B) sono preparate con una probabilità del 50% che il segmento B segua il segmento A (''is_random_next=False'') o sia una frase casuale dal corpus (''is_random_next=True''). Il flag ''is_random_next'' serve come etichetta per questo compito. Il modello produce una previsione per questo compito binario, e la perdita viene calcolata in base all'accuratezza di queste previsioni. | |||
Le etichette per il training sono: | |||
* Per '''MLM''', le etichette sono gli ID dei token originali dei token mascherati. La perdita viene calcolata come l'entropia incrociata tra le probabilità predette delle posizioni mascherate e gli ID dei token veri. | |||
* Per '''NSP''', l'etichetta è se la seconda frase segue veramente la prima ('''''is_random_next'''''). La perdita è l'entropia incrociata binaria tra la previsione del modello e la relazione reale. | |||
Entrambe le perdite possono essere combinate per addestrare BERT in modo auto-supervisionato, sfruttando dati di testo non etichettati per imparare delle rappresentazioni ricche del linguaggio. | |||
Versione delle 06:10, 24 mar 2024
Modello bidirezionale, Encoder-only, implementato da Google nel 2018, basato sull'architettura transformer originale proposta Attention Is All You Need (2017). E' un modello pensato, da design, per essere oggetto di fine-tuning successivo utilizzando per esempio una "testa" di classificazione o di named entity recognition,
Pre-training auto-supervisionato in BERT
L'obiettivo del pre-training è duplice basato su Masked-Language-Modeling (MLM e Next Sentence Prediction (NSP). La codifica dell'input [1] è d'interesse.
La costruzione dell'input avviene nel seguente modo:
- Nel Masked Language Model, token casuali in una sequenza vengono sostituiti con un token [MASK], e il modello viene addestrato a prevedere il token originale basandosi sul suo contesto. La funzione create_masked_lm_predictions nello script gestisce ciò selezionando i token da mascherare e preparando i token mascherati (masked_lm_ids) e le loro posizioni (masked_lm_positions). Durante l'addestramento, il modello produce previsioni per le posizioni mascherate, e la perdita viene calcolata in base a quanto bene il modello prevede i token originali (masked_lm_labels).
- Per l'obiettivo di Next Sentence Prediction, al modello vengono date coppie di frasi ed esso deve prevedere se la seconda frase segue logicamente la prima. Nello script, coppie di frasi (segmenti A e B) sono preparate con una probabilità del 50% che il segmento B segua il segmento A (is_random_next=False) o sia una frase casuale dal corpus (is_random_next=True). Il flag is_random_next serve come etichetta per questo compito. Il modello produce una previsione per questo compito binario, e la perdita viene calcolata in base all'accuratezza di queste previsioni.
Le etichette per il training sono:
- Per MLM, le etichette sono gli ID dei token originali dei token mascherati. La perdita viene calcolata come l'entropia incrociata tra le probabilità predette delle posizioni mascherate e gli ID dei token veri.
- Per NSP, l'etichetta è se la seconda frase segue veramente la prima (is_random_next). La perdita è l'entropia incrociata binaria tra la previsione del modello e la relazione reale.
Entrambe le perdite possono essere combinate per addestrare BERT in modo auto-supervisionato, sfruttando dati di testo non etichettati per imparare delle rappresentazioni ricche del linguaggio.
Links
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (24/05/2019)
https://github.com/google-research/bert
How to Fine Tune Bert for Sequence Classification?
https://www.kaggle.com/discussions/questions-and-answers/86510
Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks (SBERT): modello successivo a BERT con migliori risultati sui benchmark di Semantic Textual Similarity (STS)
https://discuss.huggingface.co/t/significance-of-the-cls-token/3180