Einleitung
RoBERTa (kurz für „Robustly Optimized BERT Approach“) ist eine erweiterte Version des BERT-Modells (Bidirectional Encoder Representations from Transformers), die von Forschern bei Facebook AI entwickelt wurde. Ähnlich wie BERT ist RoBERTa ein transformerbasiertes Sprachmodell, das Self-Attention verwendet, um Eingabesequenzen zu analysieren und kontextualisierte Wortdarstellungen innerhalb eines Satzes zu erzeugen.
In diesem Artikel werden wir uns RoBERTa genauer ansehen.
RoBERTa vs. BERT
Ein wesentlicher Unterschied zwischen RoBERTa und BERT besteht darin, dass RoBERTa mit einem deutlich größeren Datensatz und einem effektiveren Trainingsverfahren trainiert wurde. Konkret wurde RoBERTa auf 160 GB Text trainiert, mehr als das Zehnfache des für BERT verwendeten Datensatzes. Darüber hinaus verwendet RoBERTa während des Trainings eine dynamische Maskierungstechnik, die die Fähigkeit des Modells verbessert, robustere und generalisierbare Wortdarstellungen zu lernen.
RoBERTa hat bei verschiedenen Aufgaben der natürlichen Sprachverarbeitung, wie Sprachübersetzung, Textklassifizierung und Fragebeantwortung, eine überlegene Leistung im Vergleich zu BERT und anderen führenden Modellen gezeigt. Es hat auch als Grundlage für zahlreiche erfolgreiche NLP-Modelle gedient und sowohl in der Forschung als auch in industriellen Anwendungen an Popularität gewonnen.
Zusammenfassend ist RoBERTa ein leistungsstarkes und effektives Sprachmodell, das bedeutende Beiträge zur NLP geleistet und Fortschritte in einer Vielzahl von Anwendungen vorangetrieben hat.
RoBERTa-Modellarchitektur
Das RoBERTa-Modell teilt dieselbe Architektur wie das BERT-Modell. Es handelt sich um eine Neuimplementierung von BERT mit Änderungen an wichtigen Hyperparametern und geringfügigen Anpassungen der Embeddings.
Die allgemeinen Pre-Training- und Fine-Tuning-Verfahren für BERT sind in Abbildung 1 unten dargestellt. Bei BERT wird dieselbe Architektur sowohl für das Pre-Training als auch für das Fine-Tuning verwendet, mit Ausnahme der Ausgabeschichten. Die Parameter des vortrainierten Modells werden verwendet, um Modelle für verschiedene nachgelagerte Aufgaben zu initialisieren. Während des Fine-Tunings werden alle Parameter angepasst.
Architektur des BERT-Modells
Im Gegensatz dazu verwendet RoBERTa nicht das Next-Sentence-Pretraining-Ziel. Stattdessen wird es mit viel größeren Mini-Batches und höheren Lernraten trainiert. RoBERTa verwendet ein anderes Pre-Training-Schema und ersetzt das zeichenbasierte BPE-Vokabular durch einen bytebasierten BPE-Tokenizer (ähnlich wie GPT-2). Darüber hinaus erfordert RoBERTa nicht die Definition, welches Token zu welchem Segment gehört, da ihm token_type_ids fehlen. Segmente können einfach mit dem Trennzeichen tokenizer.sep_token (oder \</s\>) geteilt werden.
Außerdem wird RoBERTa im Gegensatz zu dem ursprünglich für BERT verwendeten 16-GB-Datensatz auf einem massiven Datensatz von über 160 GB unkomprimiertem Text trainiert. Dieser Datensatz umfasst die 16 GB der englischen Wikipedia und des Books Corpus, die in BERT verwendet wurden, sowie zusätzliche Daten aus dem WebText-Korpus (38 GB), dem CommonCrawl News-Datensatz (63 Millionen Artikel, 76 GB) und Stories from Common Crawl (31 GB). RoBERTa wurde mit diesem umfangreichen Datensatz und 1024 V100 Tesla GPUs, die einen Tag lang liefen, vortrainiert.
Vorteile des RoBERTa-Modells
RoBERTa hat eine ähnliche Architektur wie BERT, aber um die Leistung zu verbessern, haben die Autoren mehrere einfache Designänderungen an der Architektur und am Trainingsverfahren vorgenommen. Diese Änderungen umfassen:
- Entfernung des Next Sentence Prediction (NSP)-Ziels: Bei BERT wird das Modell trainiert, um vorherzusagen, ob zwei Segmente eines Dokuments aus demselben oder aus verschiedenen Dokumenten stammen, indem ein zusätzlicher NSP-Verlust verwendet wird. Die Autoren experimentierten mit Versionen des Modells mit und ohne NSP-Verlust und stellten fest, dass das Entfernen des NSP-Verlusts die Leistung bei nachgelagerten Aufgaben entweder erreichte oder leicht verbesserte.
- Training mit größeren Batch-Größen und längeren Sequenzen: BERT wurde ursprünglich für 1 Million Schritte mit einer Batch-Größe von 256 Sequenzen trainiert. RoBERTa wurde mit 125 Schritten von 2.000 Sequenzen und 31.000 Schritten mit 8.000 Sequenzen pro Batch trainiert. Größere Batches verbessern die Perplexität des maskierten Sprachmodellierungsziels und die Genauigkeit der Endaufgabe. Sie sind auch einfacher mit verteiltem parallelem Training zu parallelisieren.
- Dynamische Änderung des Maskierungsmusters: Bei BERT erfolgt die Maskierung einmal während der Datenvorverarbeitung, was zu einer einzigen statischen Maske führt. Um dies zu vermeiden, werden Trainingsdaten dupliziert und über 40 Epochen 10 Mal mit verschiedenen Strategien maskiert, was zu 4 Epochen mit derselben Maske führt. Diese Strategie wurde mit dynamischer Maskierung verglichen, bei der jedes Mal, wenn Daten in das Modell eingegeben werden, eine andere Maske erzeugt wird.
Leistung von RoBERTa
Das RoBERTa-Modell erzielte damals Spitzenleistungen bei den Aufgaben MNLI, QNLI, RTE, STS-B und RACE und zeigte signifikante Leistungsverbesserungen beim GLUE-Benchmark. Mit einer Punktzahl von 88,5 belegte RoBERTa den ersten Platz auf der GLUE-Rangliste.
Vergleich von BERT und sukzessiven Verbesserungen darüber
Wie man RoBERTa verwendet
Die Transformers-Bibliothek von Hugging Face bietet eine Vielzahl von vortrainierten RoBERTa-Modellen in verschiedenen Größen und für verschiedene Aufgaben. In diesem Beitrag werden wir uns darauf konzentrieren, wie man ein RoBERTa-Modell lädt und eine Emotionsklassifizierung durchführt.
Wir werden ein RoBERTa-Modell verwenden, das für eine aufgabenspezifische Datenmenge feinabgestimmt wurde, insbesondere das vortrainierte Modell cardiffnlp/twitter-roberta-base-emotion vom Hugging Face Hub.
Zuerst müssen wir alle notwendigen Pakete installieren und importieren und das Modell mit RobertaForSequenceClassification (das einen Klassifikationskopf enthält) und den Tokenizer mit RobertaTokenizer laden.
!pip install -q transformers
# Importieren der notwendigen Pakete
import torch
from transformers import RobertaTokenizer, RobertaForSequenceClassification
# Laden des Modells und des Tokenizers
model_name = "cardiffnlp/twitter-roberta-base-emotion"
tokenizer = RobertaTokenizer.from_pretrained(model_name)
model = RobertaForSequenceClassification.from_pretrained(model_name)
# Tokenisieren der Eingabe
inputs = tokenizer("I love my cat", return_tensors="pt")
# Abrufen der Logits und Verwenden zur Vorhersage der zugrunde liegenden Emotion
with torch.no_grad():
logits = model(**inputs).logits
predicted_class_id = logits.argmax().item()
model.config.id2label[predicted_class_id]
>> Output: Optimism
Die Ausgabe ist „Optimism“, was basierend auf den vordefinierten Labels des verwendeten Klassifikationsmodells korrekt ist. Wir können ein anderes vortrainiertes Modell verwenden oder ein Modell feinabstimmen, um Ergebnisse mit passenderen Labels zu erhalten.
Evaluierungsergebnisse von RoBERTa
Training mit dynamischer Maskierung
In der ursprünglichen BERT-Implementierung erfolgt die Maskierung während der Datenvorverarbeitung, was zu einer einzigen statischen Maske führt. Diese Methode wurde mit dynamischer Maskierung verglichen, bei der jedes Mal ein neues Maskierungsmuster erzeugt wird, wenn eine Sequenz in das Modell eingegeben wird. Dynamische Maskierung zeigte eine vergleichbare oder leicht überlegene Leistung im Vergleich zur statischen Maskierung.
Vergleich zwischen statischer und dynamischer Maskierung für BERT
Basierend auf den oben genannten Erkenntnissen wird der dynamische Maskierungsansatz für das Pre-Training von RoBERTa verwendet.
VOLLSTÄNDIGE SÄTZE ohne NSP-Verlust
Der Vergleich zwischen Training ohne den NSP-Verlust und Training mit Textblöcken aus einem einzelnen Dokument (Doc-Sentences) ergab, dass diese Konfiguration die ursprünglich veröffentlichten BERTBASE-Ergebnisse übertrifft. Darüber hinaus gleicht das Entfernen des NSP-Verlusts die Leistung bei nachgelagerten Aufgaben aus oder verbessert sie leicht.
Tabelle, die die Leistung von RoBERTa mit und ohne NSP-Verlust zeigt
Während festgestellt wurde, dass die Beschränkung von Sequenzen auf ein einzelnes Dokument (DOC-SENTENCES) eine etwas bessere Leistung bietet als die Einbeziehung von Sequenzen aus mehreren Dokumenten (FULL-SENTENCES), entscheidet sich RoBERTa für die Verwendung von FULL-SENTENCES, um einen einfacheren Vergleich zu ermöglichen, da das DOC-SENTENCES-Format zu variablen Batch-Größen führt.
Training mit großen Batches
Training mit großen Batch-Größen beschleunigt die Optimierung und verbessert die Aufgabengenauigkeit. Darüber hinaus erleichtert verteiltes Datenparallel-Training die Parallelisierung großer Batches, was die Effizienz weiter verbessert. Bei entsprechender Abstimmung können große Batch-Größen die Leistung des Modells bei einer bestimmten Aufgabe verbessern.
Vergleich der Leistung von RoBERTa bei verschiedenen Aufgaben mit unterschiedlichen Batch-Größen
Ein größeres bytebasiertes BPE
Byte-Pair-Encoding (BPE) kombiniert Aspekte von zeichen- und wortebene Darstellungen und ermöglicht die effektive Handhabung der großen Vokabulare, die typisch für natürliche Sprachkorpora sind. RoBERTa weicht von BERT ab, indem es ein größeres bytebasiertes BPE-Vokabular mit 50K Subword-Einheiten verwendet, ohne dass eine zusätzliche Vorverarbeitung oder Eingabetokenisierung erforderlich ist.
Grenzen von RoBERTa
Obwohl RoBERTa ein leistungsstarkes Modell ist, hat es auch seine Grenzen. Hier sind einige:
- Ressourcenbedarf: Das Training und Fine-Tuning von RoBERTa erfordert erhebliche Rechenressourcen, einschließlich leistungsstarker GPUs und großer Speichermengen. Dies kann es für Einzelpersonen oder Organisationen mit begrenzten Ressourcen schwierig machen, RoBERTa effektiv zu nutzen.
- Domänenspezifität: Vortrainierte Sprachmodelle wie RoBERTa können bei domänenspezifischen Aufgaben oder Datensätzen ohne weiteres Fine-Tuning möglicherweise nicht optimal abschneiden. Sie erfordern möglicherweise zusätzliches Training mit domänenspezifischen Daten, um das gewünschte Leistungsniveau zu erreichen.
- Dateneffizienz: RoBERTa und ähnliche Modelle benötigen große Datenmengen für das Pre-Training, die möglicherweise nicht für alle Sprachen oder Domänen verfügbar sind. Diese Abhängigkeit von umfangreichen Daten kann ihre Anwendbarkeit in Umgebungen einschränken, in denen Daten knapp oder teuer zu beschaffen sind.
- Interpretierbarkeit: Die Black-Box-Natur von RoBERTa kann es schwierig machen zu interpretieren, wie das Modell zu seinen Vorhersagen gelangt. Das Verständnis der inneren Arbeitsweise des Modells und die Diagnose von Fehlern oder Verzerrungen können eine Herausforderung sein, insbesondere bei komplexen Anwendungen oder sensiblen Domänen.
- Fine-Tuning-Herausforderungen: Obwohl das Fine-Tuning von RoBERTa für spezifische Aufgaben die Leistung verbessern kann, erfordert es Fachwissen und Experimente, um die richtigen Hyperparameter, Datenaugmentierungstechniken und Trainingsstrategien auszuwählen. Dieser Prozess kann zeitaufwändig und ressourcenintensiv sein.
- Verzerrung und Fairness: Vortrainierte Sprachmodelle wie RoBERTa können Verzerrungen aus den Trainingsdaten übernehmen, was zu verzerrten oder unfairen Vorhersagen führt. Die Bekämpfung von Verzerrungen und die Sicherstellung von Fairness in KI-Modellen bleibt eine erhebliche Herausforderung, die eine sorgfältige Datenkuratierung und Modellgestaltung erfordert.
- Generalisation außerhalb der Verteilung: RoBERTa kann Schwierigkeiten haben, auf Daten außerhalb der Verteilung zu generalisieren oder Szenarien zu bewältigen, die sich erheblich von seinen Trainingsdaten unterscheiden. Diese Einschränkung kann die Robustheit und Zuverlässigkeit von RoBERTa in realen Anwendungen beeinträchtigen, in denen Datenverteilungsverschiebungen häufig sind.
Um diese Einschränkungen zu überwinden, können Sie fortschrittlichere Modelle wie das kürzlich veröffentlichte Llama 3 wählen. Oder Sie können den LLM API-Schlüssel von Novita.ai nahtlos und kostengünstig in Ihr bestehendes System integrieren:

Von der Novita.ai LLM API angebotene Modelle

Fazit
RoBERTa stellt einen bedeutenden Fortschritt in der natürlichen Sprachverarbeitung dar, indem es auf der Grundlage von BERT aufbaut und einen viel größeren Trainingsdatensatz sowie verbesserte Techniken wie dynamische Maskierung und die Entfernung des Next-Sentence-Prediction-Ziels nutzt. Diese Verbesserungen, zusammen mit der Verwendung eines bytebasierten BPE-Tokenizers und größerer Batch-Größen, ermöglichen es RoBERTa, eine überlegene Leistung bei verschiedenen NLP-Aufgaben zu erzielen. Obwohl es erhebliche Rechenressourcen und Fine-Tuning-Expertise erfordert, ist der Einfluss von RoBERTa auf das Feld tiefgreifend, setzt neue Maßstäbe und dient als vielseitiges Modell für Forschungs- und Industrieanwendungen.
Novita.ai, die All-in-One-Plattform für grenzenlose Kreativität, die Ihnen Zugang zu über 100 APIs bietet. Von Bildgenerierung und Sprachverarbeitung bis hin zur Audioverbesserung und Videobearbeitung – günstig nach Pay-as-you-go-Modell, befreit Sie von GPU-Wartungsproblemen beim Aufbau eigener Produkte. Probieren Sie es kostenlos aus.
Empfohlene Lektüre
Novita AI LLM Inference Engine: Der größte Durchsatz und günstigste Inferenz verfügbar
