Technologieaustausch

So verwenden Sie BERT für nachgelagerte Aufgaben – Transformer-Tutorial

2024-07-12

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

BERT (Bidirektionale Encoder-Repräsentationen von Transformers) ist ein vorab trainiertes Sprachmodell, das 2018 von Google veröffentlicht wurde. Das Aufkommen von BERT stellt einen wichtigen Meilenstein auf dem Gebiet der Verarbeitung natürlicher Sprache dar, da es die Leistung mehrerer Sprachaufgaben erheblich verbessert. In diesem Artikel wird detailliert beschrieben, wie BERT für nachgelagerte Aufgaben verwendet wird, damit jeder dieses leistungsstarke Tool besser verstehen und anwenden kann.

Was ist BERT?

BERT ist ein Sprachmodell, das auf der Transformer-Architektur basiert. Im Gegensatz zu früheren Sprachmodellen verwendet BERT eine bidirektionale Trainingsmethode und kann Kontextinformationen gleichzeitig berücksichtigen, wodurch es bei einer Vielzahl von Aufgaben gut funktioniert. Die Kernidee von BERT besteht darin, durch umfangreiches, unbeaufsichtigtes Vortraining und anschließende Feinabstimmung auf bestimmte Aufgaben hervorragende Leistungen zu erzielen.

Vorschulung und Feinabstimmung von BERT

Der Trainingsprozess von BERT ist in zwei Phasen unterteilt: Vortraining und Feinabstimmung.

  1. Vortraining : In dieser Phase wird BERT anhand einer großen Menge an Textdaten trainiert. Zu den Aufgaben gehören das Masked Language Model (MLM) und die Next Sentence Prediction (NSP). Bei der MLM-Aufgabe muss das Modell maskierte Wörter vorhersagen, während bei der NSP-Aufgabe das Modell vorhersagen muss, ob zwei Sätze zusammenhängend sind.

  2. Feinabstimmung : Nach Abschluss des Vortrainings müssen wir das Modell entsprechend spezifischer nachgelagerter Aufgaben verfeinern. Nachgelagerte Aufgaben können Klassifizierung, Regression, Beantwortung von Fragen, Erkennung benannter Entitäten usw. sein. Durch weitere Schulungen zu aufgabenspezifischen Datensätzen kann sich BERT besser an die Anforderungen spezifischer Aufgaben anpassen.

So verwenden Sie BERT für nachgelagerte Aufgaben

Als Nächstes stellen wir anhand eines konkreten Beispiels vor, wie BERT für Textklassifizierungsaufgaben verwendet wird.

Schritt 1: Installieren Sie die erforderlichen Bibliotheken

Zuerst müssen wir die Transformers-Bibliothek installieren, eine sehr beliebte Bibliothek von Hugging Face, die es uns ermöglicht, verschiedene vorab trainierte Sprachmodelle zu verwenden.

pip install transformers
pip install torch
  • 1
  • 2
Schritt 2: Laden Sie das vorab trainierte Modell und die Daten

Wir müssen das vorab trainierte BERT-Modell und den entsprechenden Tokenizer aus der Modellbibliothek von Hugging Face laden.

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
Schritt 3: Daten vorbereiten

Um eine Textklassifizierung durchzuführen, müssen wir die Textdaten in ein für das Modell akzeptables Eingabeformat konvertieren. Dies umfasst typischerweise die Tokenisierung und Konvertierung von Text in Token-IDs sowie die Erstellung von Aufmerksamkeitsmasken.

# 示例数据
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
Schritt 4: Feinabstimmung des Modells

Mithilfe der Trainer-API können wir das Modell problemlos verfeinern. Zuerst müssen Sie die Trainingsparameter einstellen und dann den Trainer zum Training anrufen.

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
Schritt 5: Bewerten und prognostizieren

Nach Abschluss des Trainings können wir das trainierte Modell zur Bewertung und Vorhersage verwenden. Zur Auswertung können wir den Validierungssatz verwenden, um Indikatoren wie die Genauigkeit für die Vorhersage zu berechnen, wir können neuen Text eingeben und die Klassifizierungsergebnisse erhalten.

# 评估
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

BERT-Anwendungsszenarien

Neben der Textklassifizierung schneidet BERT auch bei anderen Aufgaben der Verarbeitung natürlicher Sprache gut ab. Zum Beispiel:

  • Frage- und Antwortsystem: Mit BERT kann ein leistungsstarkes Frage- und Antwortsystem aufgebaut werden, das Benutzerfragen durch Kontextverständnis genau beantworten kann.
  • Erkennung benannter Entitäten: BERT kann Entitäten im Text identifizieren, wie z. B. Personennamen, Ortsnamen, Organisationsnamen usw.
  • Textgenerierung: Obwohl BERT hauptsächlich zum Verstehen von Aufgaben verwendet wird, kann es auch bei einigen Generierungsaufgaben hilfreich sein, z. B. beim Ausfüllen von Lücken, beim Umschreiben usw.

Zusammenfassen

Als leistungsstarkes vorab trainiertes Sprachmodell hat BERT bei mehreren Aufgaben der Verarbeitung natürlicher Sprache bemerkenswerte Ergebnisse erzielt. Durch zwei Phasen der Vorschulung und Feinabstimmung kann sich BERT effizient an verschiedene nachgelagerte Aufgaben anpassen. Ich hoffe, dass durch die Einführung dieses Artikels jeder BERT besser verstehen und anwenden und praktische Probleme lösen kann.

Für weitere spannende Inhalte achten Sie bitte auf: Chinesische ChatGPT-Website