Compartilhamento de tecnologia

Como usar o BERT para tarefas downstream - Tutorial do Transformer

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

BERT, Bidirecional Encoder Representations from Transformers, é um modelo de linguagem pré-treinado lançado pelo Google em 2018. O surgimento do BERT marca um marco importante no campo do processamento de linguagem natural, pois melhora significativamente o desempenho de múltiplas tarefas linguísticas. Este artigo apresentará em detalhes como usar o BERT para tarefas posteriores para ajudar todos a compreender e aplicar melhor esta ferramenta poderosa.

O que é o BERT?

BERT é um modelo de linguagem baseado na arquitetura Transformer. Ao contrário dos modelos de linguagem anteriores, o BERT adota um método de treinamento bidirecional e pode considerar informações contextuais simultaneamente, o que o faz ter um bom desempenho em diversas tarefas. A ideia central do BERT é alcançar um desempenho excelente por meio de um extenso pré-treinamento não supervisionado e, em seguida, do ajuste fino em tarefas específicas.

Pré-treinamento e ajuste fino do BERT

O processo de formação do BERT divide-se em duas fases: pré-formação e aperfeiçoamento.

  1. Pré treino : Nesta fase, o BERT é treinado por meio de uma grande quantidade de dados de texto, e as tarefas incluem Masked Language Model (MLM) e Next Sentence Prediction (NSP). A tarefa MLM exige que o modelo preveja palavras mascaradas, enquanto a tarefa NSP exige que o modelo preveja se duas sentenças são contínuas.

  2. afinação : Após a conclusão do pré-treinamento, precisamos ajustar o modelo de acordo com tarefas posteriores específicas. As tarefas posteriores podem ser classificação, regressão, resposta a perguntas, reconhecimento de entidade nomeada, etc. Através de formação adicional em conjuntos de dados específicos de tarefas, o BERT pode adaptar-se melhor às necessidades de tarefas específicas.

Como usar o BERT para tarefas downstream

A seguir, apresentaremos como usar o BERT para tarefas de classificação de texto por meio de um exemplo específico.

Etapa 1: instale as bibliotecas necessárias

Primeiro, precisamos instalar a biblioteca Transformers, que é uma biblioteca muito popular fornecida pela Hugging Face, que nos permite usar vários modelos de linguagem pré-treinados.

pip install transformers
pip install torch
  • 1
  • 2
Etapa 2: carregar o modelo e os dados pré-treinados

Precisamos carregar o modelo BERT pré-treinado e o Tokenizer correspondente da biblioteca de modelos do 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Etapa 3: preparar os dados

Para realizar a classificação do texto, precisamos converter os dados do texto em um formato de entrada aceitável para o modelo. Isso normalmente envolve tokenizar e converter texto em IDs de token e criar máscaras de atenção.

# 示例数据
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
Etapa 4: ajuste o modelo

Usando a API Trainer, podemos ajustar facilmente o modelo. Primeiro você precisa definir os parâmetros de treinamento e depois chamar o Treinador para treinar.

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
Etapa 5: avaliar e prever

Após a conclusão do treinamento, podemos usar o modelo treinado para avaliação e previsão. Para avaliação, podemos usar o conjunto de validação para calcular indicadores como precisão para previsão, podemos inserir um novo texto e obter os resultados da classificação;

# 评估
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Cenários de aplicação BERT

Além da classificação de texto, o BERT também funciona bem em outras tarefas de processamento de linguagem natural. Por exemplo:

  • sistema de perguntas e respostas: O BERT pode ser usado para construir um sistema poderoso de perguntas e respostas que pode responder com precisão às perguntas dos usuários por meio da compreensão do contexto.
  • Reconhecimento de entidade nomeada: O BERT pode identificar entidades no texto, como nomes de pessoas, nomes de lugares, nomes de organizações, etc.
  • geração de texto: Embora o BERT seja usado principalmente para tarefas de compreensão, ele também pode ajudar em algumas tarefas de geração, como preencher espaços em branco, reescrever, etc.

Resumir

Como um poderoso modelo de linguagem pré-treinado, o BERT alcançou resultados notáveis ​​em múltiplas tarefas de processamento de linguagem natural. Através de dois estágios de pré-treinamento e ajuste fino, o BERT pode se adaptar com eficiência a várias tarefas posteriores. Espero que com a introdução deste artigo todos possam compreender e aplicar melhor o BERT e resolver problemas práticos.

Para conteúdo mais interessante, preste atenção em: Site chinês ChatGPT