Bidirectional encoder representations from transformers (kurz BERT) ist ein Sprachmodell, das im Oktober 2018 von Forschenden bei Google vorgestellt wurde. Es lernt, Text als Sequenz von Vektoren darzustellen, und nutzt dafür selbstüberwachtes Lernen. Die Architektur basiert auf einem reinen Encoder-Transformer. BERT verbesserte den Stand der Technik bei großen Sprachmodellen deutlich. Seit 2020 dient BERT in Experimenten zur Verarbeitung natürlicher Sprache (natural language processing, NLP) weitverbreitet als Basismodell.

Trainiert wird BERT über Masken-Vorhersage einzelner Token sowie die Vorhersage der nächsten Satzfolge. Auf diese Weise lernt BERT kontextabhängige, latente Repräsentationen von Token in ihrem Kontext, ähnlich wie ELMo und GPT-2. Das Modell findet Anwendung in vielen Aufgaben der Sprachverarbeitung, etwa bei der Koreferenzauflösung oder bei der Auflösung von Polysemie. BERT verbesserte gegenüber ELMo die Ergebnisse und führte zu einem eigenen Forschungsgebiet, der sogenannten „BERTology“, das untersucht, was das Modell intern lernt.

Ursprünglich wurde BERT für die englische Sprache in zwei Modellgrößen eingeführt: BERTBASE (110 Millionen Parameter) und BERTLARGE (340 Millionen Parameter). Beide Modelle wurden auf dem Toronto-BookCorpus (800 Mio. Wörter) und der englischsprachigen Wikipedia (2 500 Mio. Wörter) vortrainiert. Die Gewichte wurden auf GitHub veröffentlicht. Am 11. März 2020 wurden zusätzlich 24 kleinere Modelle veröffentlicht, das kleinste davon BERTTINY mit lediglich 4 Millionen Parametern.

Architektur mini|330x330px|Schematische Darstellung von BERT: Text wird tokenisiert, eingebettet und durch einen Transformer-Encoder verarbeitet. Die letzten Schichten dienen als kontextabhängige Wortvektoren. BERT verwendet eine reine Encoder-Transformer-Architektur („encoder-only“). Auf hoher Ebene besteht BERT aus vier Modulen: Tokenizer: Dieses Modul wandelt englischen Text in eine Sequenz ganzer Zahlen („Token“) um.

Embedding: Dieses Modul wandelt die Token-Sequenz in ein Array reellwertiger Vektoren um, die die Token repräsentieren. Dabei werden diskrete Token-Typen in einen niedrigdimensionalen euklidischen Raum abgebildet.

Encoder: Ein Stapel von Transformer-Blöcken mit Self-Attention, jedoch ohne kausale Maskierung.

Task-Head: Dieses Modul bildet die endgültigen Repräsentationsvektoren wieder auf one-hot-kodierte Token ab, indem es eine Wahrscheinlichkeitsverteilung über alle Token-Typen berechnet. Es kann als einfacher Decoder interpretiert werden, der die latente Repräsentation in Token-Typen zurückübersetzt, oder als „Un-Embedding-Schicht“.

Der Task-Head ist für das Vortraining erforderlich, wird aber bei sogenannten „Downstream-Aufgaben“ wie Fragebeantwortung oder Sentimentklassifikation häufig durch ein neues, auf die Zielaufgabe zugeschnittenes Modul ersetzt. Dazu wird der ursprüngliche Head entfernt, ein neuer Kopf für die jeweilige Aufgabe hinzugefügt und gemeinsam mit dem restlichen Modell feinabgestimmt (Fine-Tuning). Die latente Vektorrepräsentation dient dabei als Eingabe für das neue Modul und ermöglicht eine datenökonomische Transferlern-Strategie.

mini|Bei Encoder-only-Modellen ist die Aufmerksamkeit all-zu-all gerichtet.

Embedding Dieser Abschnitt beschreibt das Embedding von BERTBASE. BERTLARGE ist ähnlich aufgebaut, aber größer. Der Tokenizer von BERT ist WordPiece, eine Subwort-Strategie ähnlich der Byte-Pair-Codierung. Der Wortschatz (Vocabulary) umfasst 30 000 Einträge; Token, die nicht im Wortschatz auftreten, werden durch [UNK] („unknown“) ersetzt. mini|284x284px|Die drei Embedding-Arten in BERT: Token-, Positions- und Segment-Typ. Die erste Schicht ist die Embedding-Schicht mit drei Komponenten: Token-Embeddings, Positions-Embeddings und Segment-Typ-Embeddings. Token-Typ: Das Token-Embedding ist eine Standard-Einbettungsschicht, die eine one-hot-kodierte Repräsentation eines Tokens in einen dichten Vektor übersetzt.

Position: Positions-Embeddings hängen von der Position eines Tokens in der Sequenz ab. BERT verwendet absolute Positions-Embeddings, bei denen jede Position einer Sequenz einem reellwertigen Vektor zugeordnet wird. Jede Dimension dieses Vektors ist eine sinusförmige Funktion der Positionsnummer.

Segment-Typ: Mit einem Vokabular aus nur 0 und 1 kodiert diese Schicht, ob ein Token zum ersten oder zweiten Textsegment im Eingabepaar gehört. Typ-1-Token sind alle Token, die nach dem speziellen Token [SEP] auftreten; alle vorhergehenden Token sind Typ-0.

Die drei Embedding-Vektoren werden komponentenweise addiert und bilden so die initiale Token-Repräsentation als Funktion dieser drei Informationsquellen. Anschließend wird der Vektor mit LayerNorm normalisiert, sodass für jedes Eingabetoken ein 768-dimensionaler Vektor entsteht. Diese Repräsentationen werden durch 12 Transformer-Encoder-Blöcke weiterverarbeitet und abschließend mittels einer affinen Transformation zurück in den 30 000-dimensionalen Wortschatzraum projiziert.

Architekturfamilie Der Encoder-Stack von BERT hat zwei freie Hyperparameter: L, die Anzahl der Schichten (Layer), und H, die Hidden Size. Die Anzahl der Self-Attention-Köpfe ist stets H/64, und die Dimension der Feed-Forward-Schicht (Filter Size) beträgt immer 4H. Durch Variation dieser beiden Größen entsteht eine ganze Familie von BERT-Modellen.

Für BERT gilt:

Feed-Forward-Size und Filter-Size sind synonym und bezeichnen die Anzahl der Dimensionen in der mittleren Schicht des Feed-Forward-Netzes.

Hidden Size und Embedding Size sind synonym und bezeichnen die Anzahl der reellen Zahlen, mit denen ein Token repräsentiert wird.

Die Architektur wird als L/H notiert. BERTBASE hat beispielsweise 12L/768H, BERTLARGE 24L/1024H und BERTTINY 2L/128H.

Training Vortraining

BERT wurde gleichzeitig auf zwei Aufgaben vortrainiert:

Masked Language Modeling (MLM): Hier erhält BERT eine Wortsequenz, in der ein Teil der Wörter zufällig verändert („maskiert“) wurde, und soll die ursprünglichen Wörter rekonstruieren. In dem Satz „The cat sat on the [MASK]“ soll das Modell beispielsweise „mat“ vorhersagen. Dies ermöglicht es BERT, bidirektionalen Kontext zu nutzen, also Beziehungen zwischen Wörtern gleichzeitig von links nach rechts und von rechts nach links zu modellieren.

Next Sentence Prediction (NSP): In dieser Aufgabe lernt BERT zu entscheiden, ob ein Satz tatsächlich auf einen anderen Satz folgt. Bei den Sätzen „The cat sat on the mat“ und „It was a sunny day“ soll das Modell bestimmen, ob der zweite Satz eine plausible Fortsetzung des ersten ist. Dadurch lernt BERT Relationen zwischen Sätzen, was für Aufgaben wie Fragebeantwortung oder Dokumentklassifikation wichtig ist.

Masked Language Modeling mini|Aufgabe des Masked Language Modeling Beim Masked Language Modeling werden zufällig 15 % der Token einer Eingabesequenz ausgewählt. Das Trainingsziel besteht darin, diese ausgewählten Token anhand ihres Kontexts korrekt vorherzusagen. Das ausgewählte Token wird dabei wie folgt behandelt: mit Wahrscheinlichkeit 80 % durch das spezielle Token [MASK] ersetzt,

mit Wahrscheinlichkeit 10 % durch ein zufälliges Token aus dem Vokabular ersetzt,

mit Wahrscheinlichkeit 10 % unverändert gelassen.

Nicht alle ausgewählten Token werden also maskiert. Dies soll einen Dataset Drift vermeiden: Die Verteilung der Eingaben während des Trainings würde sonst stark von der Verteilung der Eingaben beim Einsatz abweichen, wo typischerweise keine [MASK]-Token vorkommen (z. B. beim Einsatz als Wortrepräsentation ähnlich Word2Vec). Spätere Arbeiten zeigen, dass vielfältigere Trainingsziele generell vorteilhaft sind.

Als Beispiel sei der Satz „my dog is cute“ betrachtet. Zunächst wird er in Token zerlegt: „my1 dog2 is3 cute4“. Angenommen, das vierte Token „cute4“ wird ausgewählt. Dann ergeben sich drei Möglichkeiten:

mit 80 % Wahrscheinlichkeit wird es maskiert: „my1 dog2 is3 [MASK]4“;

mit 10 % Wahrscheinlichkeit wird es durch ein zufälliges Token wie „happy“ ersetzt: „my1 dog2 is3 happy4“;

mit 10 % Wahrscheinlichkeit bleibt es unverändert: „my1 dog2 is3 cute4“.

Nach der Verarbeitung durch das Modell wird der vierte Ausgabeverktor an den Decoder weitergegeben, der eine Wahrscheinlichkeitsverteilung über den 30 000-dimensionalen Wortschatz berechnet.

Next Sentence Prediction mini|Aufgabe der Next Sentence Prediction Beim NSP erhält das Modell zwei Sätze und soll entscheiden, ob sie im Trainingskorpus direkt aufeinander folgen ([IsNext]) oder nicht ([NotNext]). Für das Training werden zu einem Teil der Beispiele zwei Sätze aus einem zusammenhängenden Abschnitt des Korpus gewählt, für andere Beispiele stammen sie aus zwei nicht zusammenhängenden Abschnitten. Der erste Satz beginnt mit dem speziellen Token [CLS] („classify“). Die beiden Sätze werden durch [SEP] („separate“) getrennt. Nach der Verarbeitung dient der endgültige Vektor des [CLS]-Tokens als Eingabe für eine lineare Schicht, die die binäre Klassifikation in [IsNext] oder [NotNext] durchführt.

Beispiele:

Für „[CLS] my dog is cute [SEP] he likes playing [SEP]“ soll das Modell [IsNext] ausgeben.

Für „[CLS] my dog is cute [SEP] how do magnets work [SEP]“ soll es [NotNext] ausgeben.

Fine-Tuning

BERT ist als allgemein vortrainiertes Modell für verschiedene Anwendungen in der Verarbeitung natürlicher Sprache konzipiert. Nach dem Vortraining kann BERT mit relativ geringem Aufwand auf kleineren Datensätzen für spezifische Aufgaben feinabgestimmt werden, etwa für natürliche Sprachinferenz, Textklassifikation oder sequenzbasierte Generierungsaufgaben wie Fragebeantwortung und dialogorientierte Antwortgenerierung.

Im ursprünglichen BERT-Artikel wurde gezeigt, dass bereits eine kurze Feinabstimmung (für BERTLARGE etwa eine Stunde auf einem Cloud-TPU) ausreicht, um auf einer Reihe von Aufgaben der sprachlichen Bedeutungserschließung den damaligen Stand der Technik zu erreichen:

GLUE-Datensatz (General Language Understanding Evaluation) mit neun Teilaufgaben;

SQuAD (Stanford Question Answering Dataset) v1.1 und v2.0;

SWAG (Situations With Adversarial Generations).

Im Originalvorschlag werden alle Parameter von BERT beim Fine-Tuning angepasst. Für textklassifizierende Anwendungen wird empfohlen, den Ausgabeverktor des [CLS]-Tokens an eine lineare Schicht mit Softmax-Aktivierung anzuschließen, um die Klassenzugehörigkeit vorherzusagen.

Im ursprünglichen Quellcode wird diese letzte lineare Schicht analog zu Global Pooling in der Bildverarbeitung als „Pooler Layer“ bezeichnet, auch wenn sie lediglich alle Token-Ausgaben bis auf die des [CLS]-Tokens verwirft.

Kosten BERT wurde auf dem BookCorpus (800 Mio. Wörter) und einer gefilterten Version der englischen Wikipedia (2 500 Mio. Wörter, ohne Listen, Tabellen und Überschriften) trainiert. Das Training von BERTBASE auf 4 Cloud-TPUs (16 TPU-Chips) dauerte vier Tage und kostete Schätzungen zufolge etwa 500 US-Dollar. Das Training von BERTLARGE auf 16 Cloud-TPUs (64 TPU-Chips) dauerte ebenfalls vier Tage.

Interpretation Sprachmodelle wie ELMo, GPT-2 und BERT haben das Forschungsfeld der „BERTology“ angestoßen, das versucht zu verstehen, was diese Modelle intern repräsentieren. Ihr Abschneiden auf Aufgaben der sprachlichen Bedeutungserschließung ist trotz der hohen Leistungswerte nicht vollständig erklärt.

Zahlreiche Arbeiten aus den Jahren 2018 und 2019 analysieren den Zusammenhang zwischen speziellen Eingabesequenzen und den vom Modell erzeugten Ausgaben,

untersuchen interne Vektorraumrepräsentationen durch sogenannte Probing-Klassifikatoren,

und analysieren die durch die Attention-Gewichte dargestellten Beziehungen. Die hohe Leistungsfähigkeit von BERT wird unter anderem darauf zurückgeführt, dass das Modell bidirektional trainiert wird.