le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
BERT, Bidirection Encoder Representations from Transformers, è un modello linguistico preaddestrato rilasciato da Google nel 2018. L’emergere di BERT segna un’importante pietra miliare nel campo dell’elaborazione del linguaggio naturale, poiché migliora significativamente le prestazioni di più compiti linguistici. Questo articolo introdurrà in dettaglio come utilizzare BERT per le attività downstream per aiutare tutti a comprendere e applicare meglio questo potente strumento.
BERT è un modello linguistico basato sull'architettura Transformer. A differenza dei modelli linguistici precedenti, BERT adotta un metodo di formazione bidirezionale e può considerare simultaneamente le informazioni contestuali, il che lo rende efficace in una varietà di compiti. L'idea centrale di BERT è quella di ottenere prestazioni eccellenti attraverso un'ampia formazione preliminare senza supervisione e quindi la messa a punto di compiti specifici.
Il processo di formazione di BERT è diviso in due fasi: pre-formazione e messa a punto.
pre-allenamento : in questa fase, BERT viene addestrato attraverso una grande quantità di dati di testo e le attività includono Masked Language Model (MLM) e Next Sentence Prediction (NSP). L'attività MLM richiede che il modello preveda le parole mascherate, mentre l'attività NSP richiede che il modello preveda se due frasi sono continue.
ritocchi : Una volta completata la formazione preliminare, è necessario mettere a punto il modello in base alle specifiche attività a valle. Le attività a valle possono essere la classificazione, la regressione, la risposta alle domande, il riconoscimento dell'entità denominata, ecc. Attraverso un'ulteriore formazione su set di dati specifici per attività, BERT può adattarsi meglio alle esigenze di compiti specifici.
Successivamente, introdurremo come utilizzare BERT per attività di classificazione del testo attraverso un esempio specifico.
Per prima cosa dobbiamo installare la libreria Transformers, una libreria molto popolare fornita da Hugging Face, che ci consente di utilizzare vari modelli linguistici pre-addestrati.
pip install transformers
pip install torch
Dobbiamo caricare il modello BERT pre-addestrato e il corrispondente Tokenizer dalla libreria di modelli di Hugging Face.
from transformers import BertTokenizer, BertForSequenceClassification
from transformers import Trainer, TrainingArguments
# 加载预训练的BERT模型和Tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
Per eseguire la classificazione del testo, dobbiamo convertire i dati di testo in un formato di input accettabile per il modello. Ciò in genere comporta la tokenizzazione e la conversione del testo in ID token e la creazione di maschere di attenzione.
# 示例数据
texts = ["I love programming.", "I hate bugs."]
labels = [1, 0]
# 数据预处理
inputs = tokenizer(texts, return_tensors='pt', padding=True, truncation=True)
inputs['labels'] = torch.tensor(labels)
Utilizzando l'API Trainer, possiamo facilmente mettere a punto il modello. Per prima cosa è necessario impostare i parametri di allenamento, quindi chiamare il Trainer per l'allenamento.
training_args = TrainingArguments(
output_dir='./results', # 输出目录
num_train_epochs=3, # 训练的epoch数
per_device_train_batch_size=4, # 训练时每个设备的batch size
per_device_eval_batch_size=8, # 评估时每个设备的batch size
warmup_steps=500, # 预热步数
weight_decay=0.01, # 权重衰减
logging_dir='./logs', # 日志目录
logging_steps=10,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=inputs,
eval_dataset=inputs
)
# 开始训练
trainer.train()
Una volta completato l'addestramento, è possibile utilizzare il modello addestrato per la valutazione e la previsione. Per la valutazione, possiamo utilizzare il set di convalida per calcolare indicatori come l'accuratezza per la previsione, possiamo inserire un nuovo testo e ottenere i risultati della classificazione;
# 评估
results = trainer.evaluate()
print(results)
# 预测
test_texts = ["I enjoy learning new things.", "I dislike errors."]
test_inputs = tokenizer(test_texts, return_tensors='pt', padding=True, truncation=True)
predictions = model(**test_inputs)
print(predictions)
Oltre alla classificazione del testo, BERT funziona bene anche in altre attività di elaborazione del linguaggio naturale. Per esempio:
Essendo un potente modello linguistico pre-addestrato, BERT ha ottenuto risultati notevoli in molteplici attività di elaborazione del linguaggio naturale. Attraverso due fasi di pre-formazione e messa a punto, BERT può adattarsi in modo efficiente a vari compiti a valle. Spero che attraverso l'introduzione di questo articolo tutti possano comprendere e applicare meglio BERT e risolvere problemi pratici.
Per contenuti più interessanti, prestare attenzione a: Sito cinese ChatGPT