Adattare BERT attraverso il fine-tuning per i compiti successivi

Adattare BERT con fine-tuning per compiti successivi

Introduzione

L’adattamento di BERT per compiti successivi comporta l’utilizzo del modello BERT pre-addestrato e la personalizzazione dello stesso per un compito specifico aggiungendo uno strato superiore e addestrandolo sul compito target. Questa tecnica consente al modello di imparare in base ai dettagli del compito dai dati utilizzati per l’addestramento, sfruttando la conoscenza dell’ampia espressione linguistica del modello BERT pre-addestrato. Utilizza il pacchetto transformers di hugging face in Python per ottimizzare BERT. Descrivi i tuoi dati di addestramento, includendo il testo di input e le etichette. Ottimizza il modello BERT pre-addestrato per compiti successivi in base ai tuoi dati utilizzando la funzione fit() della classe BertForSequenceClassification.

Obiettivi di Apprendimento

  1. L’obiettivo di questo articolo è approfondire l’ottimizzazione di BERT.
  2. Un’analisi approfondita metterà in evidenza i vantaggi dell’ottimizzazione per compiti successivi.
  3. Il meccanismo operativo dei compiti successivi verrà ampiamente chiarito.
  4. Sarà fornita una panoramica sequenziale completa per l’ottimizzazione di BERT per le attività successive.

Come BERT viene Ottimizzato?

L’ottimizzazione di BERT adatta un modello pre-addestrato con dati di addestramento per il lavoro desiderato a un compito specifico addestrando uno nuovo strato. Questo processo consente al modello di acquisire conoscenze specifiche del compito e migliorare le sue prestazioni sul compito target.

Passaggi principali nel processo di ottimizzazione di BERT

1: Utilizza la libreria transformers di hugging face per caricare il modello BERT pre-addestrato e il tokenizzatore.

import torch

# Scegli il dispositivo appropriato in base alla disponibilità (CUDA o CPU)
gpu_disponibile = torch.cuda.is_available()
device = torch.device("cuda" if gpu_disponibile else "cpu")

# Utilizza un tokenizzatore diverso
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')

# Carica il modello utilizzando una funzione personalizzata
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained('bert-base-uncased')

model.to(device)

2: Specifica i dati di addestramento per il compito target specifico, inclusi il testo di input e le relative etichette

# Specifica il testo di input e le relative etichette
input_text = "Questo è un esempio di testo di input"
etichette = [1]

3: Utilizza il tokenizzatore BERT per suddividere in token il testo di input.

# Suddividi in token il testo di input
input_ids = torch.tensor(tokenizer.encode(input_text)).unsqueeze(0)

4: Imposta il modello in modalità di addestramento.

# Imposta il modello in modalità di addestramento
model.train()

Passo 5: Per ottenere l’ottimizzazione del modello BERT pre-addestrato, utilizziamo il metodo della classe BertForSequenceClassification. Questo include l’addestramento di uno strato nuovo del modello BERT pre-addestrato con i dati di addestramento del compito target.

# Configura il tuo dataset, dimensione del batch e altri iperparametri di addestramento
dataset_addestramento = ...
dimensione_batch = 32
num_epoche = 3
learning_rate = 2e-5

# Crea il caricatore di dati per il set di addestramento
train_dataloader = torch.
utils.data.
DataLoader(dataset_addestramento,
batch_size=dimensione_batch)
model.fit(train_dataloader, num_epochs=num_epoche, learning_rate=learning_rate)

Passo 6: Esamina l’illustrazione del modello BERT ottimizzato per il compito target specifico.

# Passa il modello in modalità di valutazione
model.eval()

# Calcola i logit (probabilità non normalizzate) per il testo di input
with torch.no_grad():
    logit = model(input_ids)

# Usa i logit per generare previsioni per il testo di input
previsioni = logit.argmax(dim=-1)

accuratezza = ...

Questi rappresentano i passaggi principali coinvolti nell’ottimizzazione di BERT per un compito successivo. Puoi utilizzarli come base e personalizzarli in base al tuo caso d’uso specifico.

L’ottimizzazione di BERT consente al modello di acquisire informazioni specifiche del compito, migliorando le sue prestazioni sul compito target. Risulta particolarmente preziosa quando il compito target coinvolge un dataset relativamente piccolo, poiché l’ottimizzazione con il piccolo dataset consente al modello di apprendere informazioni specifiche del compito che potrebbero non essere ottenibili solo dal modello BERT pre-addestrato.

Quali Layer Subiscono Modifiche Durante il Fine-tuning?

Durante il fine-tuning, solo i pesi del layer supplementare aggiunto al modello BERT pre-addestrato vengono aggiornati. I pesi del modello BERT pre-addestrato rimangono fissi. Pertanto, solo il layer aggiunto subisce modifiche durante il processo di fine-tuning.

Di solito, il layer aggiunto funge da layer di classificazione che segue i risultati del modello BERT pre-addestrato e genera logits per ogni classe nell’attività finale. I dati di addestramento dell’attività target addestrano il layer aggiunto, consentendogli di acquisire informazioni specifiche dell’attività e migliorare le prestazioni del modello nell’attività target.

In sintesi, durante il fine-tuning, il layer aggiunto sopra il modello BERT pre-addestrato subisce modifiche. Il modello BERT pre-addestrato mantiene pesi fissi. Pertanto, solo il layer aggiunto viene aggiornato durante il processo di addestramento.

Attività Derivate

Le attività derivate includono una varietà di operazioni di elaborazione del linguaggio naturale (NLP) che utilizzano modelli di ricostruzione del linguaggio pre-addestrati come BERT. Di seguito sono riportati alcuni esempi di queste attività.

Classificazione del Testo

La classificazione del testo prevede l’assegnazione di un testo a categorie o etichette predefinite. Ad esempio, è possibile addestrare un modello di classificazione del testo per categorizzare le recensioni dei film come positive o negative.

Utilizzare la libreria BertForSequenceClassification per modificare BERT per la classificazione del testo. Questa classe utilizza dati di input, come parole o paragrafi, per generare logits per ogni classe.

Inferenza del Linguaggio Naturale

L’inferenza del linguaggio naturale, anche chiamata riconoscimento dell’affermazione testuale (RTE), determina la relazione tra un testo di premessa dato e un testo di ipotesi. Per adattare BERT all’inferenza del linguaggio naturale, è possibile utilizzare la classe BertForSequenceClassification fornita dalla libreria hugging face transformers. Questa classe accetta una coppia di testi di premessa e ipotesi come input e produce logits (probabilità non normalizzate) per ciascuna delle tre classi (affermazione, contraddizione e neutro) come output.

Riconoscimento delle Entità Nominative

Il processo di riconoscimento delle entità nominative include la ricerca e la suddivisione degli elementi definiti nel testo, come persone e luoghi. La libreria hugging face transformers fornisce la classe BertForTokenClassification per adattare BERT al riconoscimento delle entità nominative. La classe fornita prende il testo di input e genera logits per ogni token nel testo di input, indicando la classe del token.

Risposta alle Domande

Rispondere alle domande comporta generare una risposta in linguaggio umano sulla base del contesto fornito. Per adattare BERT alla risposta alle domande, è possibile utilizzare la classe BertForQuestionAnswering offerta dalla libreria hugging face transformers. Questa classe prende sia un contesto che una domanda come input e fornisce gli indici di inizio e fine della risposta all’interno del contesto come output.

I ricercatori esplorano continuamente nuovi modi per utilizzare BERT e altri modelli di rappresentazione del linguaggio in varie attività di NLP. I modelli di rappresentazione del linguaggio pre-addestrati come BERT consentono di svolgere varie attività derivate, come gli esempi sopra riportati. Applicare modelli BERT addestrati per il fine-tuning a numerose altre attività di NLP.

Conclusioni

Quando BERT viene sottoposto a un fine-tuning, un modello BERT pre-addestrato viene adattato a un compito o dominio specifico aggiornando i suoi confini utilizzando una quantità limitata di dati etichettati. Ad esempio, il fine-tuning richiede un dataset contenente testi e le rispettive etichette di sentiment quando si utilizza BERT per l’analisi del sentiment. Questo comporta tipicamente l’incorporazione di un layer specifico del compito sopra l’encoder BERT e l’addestramento dell’intero modello end-to-end, utilizzando una funzione di perdita e un ottimizzatore appropriati.

Punti Chiave

  • L’utilizzo di tecniche di fine-tuning per adattare BERT alle attività derivate generalmente porta a migliorare la produttività dei modelli di elaborazione del linguaggio naturale in specifiche attività.
  • Il processo prevede l’adattamento del modello BERT pre-addestrato a un compito specifico addestrando un nuovo layer sopra il modello pre-addestrato utilizzando i dati di addestramento dell’attività target. Ciò consente al modello di acquisire conoscenze specifiche del compito e migliorare le sue prestazioni nell’attività target.
  • In generale, il fine-tuning di BERT può essere un metodo efficace per aumentare l’efficienza del modello NLP su determinate attività.
  • Consente al modello di utilizzare la comprensione del modello BERT pre-addestrato della rappresentazione del linguaggio generale acquisendo informazioni specifiche dell’attività dai dati di addestramento dell’attività target.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.