google-bert-transformer

Im Oktober 2018 veröffentlichte Google das Paper „BERT – Bidirectional Encoder Representations from Transformers”. Dadurch wurde der Grundstein gelegt, um eine neue Art der Textverarbeitung zu etablieren: Während es bei der Bildverarbeitung mittlerweile zum Standard geworden ist, vortrainierte Neuronale Netze zu verwenden, anstatt diese von Grund auf neu zu trainieren, ist dies bisher in der Textverarbeitung nicht der Fall gewesen.

Dabei lassen sich mit vortrainierten Netzen in kürzerer Zeit bessere Ergebnisse erzielen, weil sie bereits ein allgemeines Verständnis davon haben, wie sie wichtige Informationen aus den jeweiligen Eingabedaten extrahieren können. Für neue Aufgaben müssen sie daher nur leicht abgeändert werden, was mit einem schnellen Fine-Tuning möglich ist. Durch die nur geringe Anpassung an spezifische Probleme, wird dem Problem des Overfitting entgegengewirkt und man kann bereits auf kleinen Datensätzen gute Ergebnisse erzielen.

Um dieses Vorgehen auch im Bereich der Textverarbeitung nutzen zu können, beschreibt Google in dem BERT-Paper nicht nur eine Netzarchitektur, sondern auch das nötige Werkzeug, um diese Netzarchitektur zu trainieren. Des Weiteren hat Google die Performance des vortrainierten Netzes in verschiedenen Benchmarks evaluiert und bietet Anleitungen für das Fine-Tuning des vortrainierten Netzes auf diese speziellen Aufgaben. Zu den getesteten Aufgaben zählen unter anderem Text-Klassifizierung, Frage-Antwort- und Entitäten-Erkennung.

In diesem Artikel befassen wir uns zunächst mit der Transformer-Architektur, welche die Grundlage für BERT bildet. Anschließend widmen wir uns den Besonderheiten, welche den BERT-Ansatz vom Standard-Transformer unterscheiden. Im letzten Schritt werden wir uns dann mit spezifischen Problemen der Textverarbeitung beschäftigen und jeweils analysieren, welche Lösungsansätze BERT mit Hilfe von Fine-Tuning für diese Probleme bietet.

bert-transformer-kuenstliche-intelligenz-abbildung-1

Was ist ein Transformer?

Um die Funktionsweise von BERT zu verstehen, ist es hilfreich, sich zunächst ein Verständnis davon zu verschaffen, was in einem Transformer geschieht, auf dem die Idee von BERT basiert. Von außen betrachtet ist der Transformer zunächst eine Blackbox, welche einen Text als Eingabe bekommt und einen verarbeiteten Text ausgibt. Die Eingabe des Textes erfolgt in Form von Token, welche jedes mögliche Eingabewort durch eine Zahl repräsentieren.

Um diese Token weiterverarbeiten zu können, lernt der Transformer ein Embedding, das die Zahlen auf hochdimensionale Vektoren abbildet, die sich gut für weitere Berechnungen eignen. Die Ausgabe eines Transformers geschieht ebenfalls in Form von Token, welche schlussendlich in Wörter zurückübersetzt werden müssen. Dadurch kann ein Transformer z.B. als Übersetzer zwischen zwei Sprachen fungieren. Im Folgenden wollen wir die große Blackbox Transformer schrittweise auflösen und mit Inhalt füllen.

Ein Transformer besteht aus einem Encoder und einem Decoder, welche jeweils aus mehreren identischen Encoder- bzw. Decoder-Schichten (Layern) bestehen. Allerdings ist BERT lediglich ein Encoder, wie man dem Namen bereits entnehmen kann, weshalb wir uns auch nur mit den Encoder-Layern beschäftigen. Diese bestehen aus drei unterschiedlichen Elementen:

  1. Self-Attention,
  2. Add & Normalize,
  3. Feed Forward.

Während „Add & Normalize“ und „Feed Forward“ Standard-Operationen sind, führt die „Self-Attention“ einen neuen Mechanismus ein.

bert-transformer-kuenstliche-intelligenz-abbildung-3

Der Self-Attention Mechanismus

Die Self-Attention berechnet zunächst für jedes Eingabewort Xn eine Query (Q), einen Key (K), und einen Value (V). Dies geschieht über simple Matrixmultiplikation des jeweiligen Eingabe-Embeddings mit der jeweiligen Matrix WQ, WK oder WV. Dabei wird jedes Wort mit denselben Matrizen WQ, WK und WV multipliziert.

Die Ergebnisse für Q, K und V können dabei wie folgt interpretiert werden:

  • Q stellt eine Frage an alle anderen Wörter im Text.
  • K gibt an, welche Fragen das jeweilige Wort beantworten kann.
  • V enthält die Antworten auf die Fragen, welche das jeweilige Wort beantworten kann.

Daraus ergibt sich der folgende Mechanismus:

bert-transformer-kuenstliche-intelligenz-abbildung-4

Für das erste Wort X1 berechnet man zunächst das Matrixprodukt von dem zum ersten Wort gehörigen Query Q1 und den Keys aller Wörter Kn (einschließlich K1). Das Ergebnis dieser Operation ist ein Score der angibt, wie gut ein Wort die Frage Q1 beantworten kann. Anschließend wird das Ergebnis noch etwas gedämpft, indem es durch einen festen Wert geteilt wird, da die Multiplikation mitunter sehr große Werte hervorrufen kann.

Durch die Anwendung der Softmax-Operation auf die gedämpften Scores erhält man schließlich einen normalisierten Attention-Score. Dieser wird nun verwendet, um eine gewichtete Summe über alle Values Vn zu berechnen, indem man für jedes Wort den Attention-Score mit dem Value multipliziert und die Ergebnisse für alle Wörter aufaddiert. Das Ergebnis ist eine neue Repräsentation für X1, welche wir als Z1 bezeichnen.

Diesen Vorgang wiederholt man anschließend für jedes weitere Wort der Eingabe, sodass man am Ende jedes Q einmal mit jedem K multipliziert hat und für jedes Eingabewort Xn neue Repräsentation Zn erhalten hat.

bert-transformer-kuenstliche-intelligenz-abbildung-5

Um mehr Flexibilität zu erlangen, wird der zuvor beschriebene Vorgang mehrmals parallel ausgeführt. Diese parallelen Vorgänge werden Heads genannt und ermöglichen es, dass sich einzelne Heads auf bestimmte Aspekte des Satzverständnisses konzentrieren und Fragen dazu stellen können. Dafür besitzt jeder Head individuelle Matrizen (WnQ, WnK und WnV), wodurch man ein Zn pro Head und pro Wort erhält. Diese werden aneinander gehängt und bilden dadurch wieder einen Vektor Z pro Wort dessen Länger der des Eingabe-Embeddings entspricht.

bert-transformer-kuenstliche-intelligenz-abbildung-6

Diese neuen Darstellungen Z der Wörter werden an einen “Add & Normalize”-Layerübergeben, welcher zunächst das Embedding des Eingabewortes mit Z addiert und das Ergebnis danach normalisiert. Dieses Verfahren ist sehr ähnlich zu Residual-Blöcken, die man aus der Bildverarbeitung kennt. Anschließend wird das Ergebnis durch einen Feed-Fordward-Layer verarbeitet, wobei wieder jedes Wort durch denselben Layer verarbeitet wird, allerdings dieses Mal ohne Zugriff auf die anderen Wörter.

Zum Schluss folgt wieder ein “Add & Normalize”-Layer. Die Umwandlungen innerhalb des Encoderlayers sorgen dafür, dass die Dimensionen der Ausgabe des Layers exakt den Dimensionen der Eingabe entsprechen. Dadurch kann man leicht mehrere Encoderlayer hintereinanderschalten.

Dies sorgt insbesondere dafür, dass die Ausgabe des gesamten Encoders wieder dieselbe Größe hat, wie die Eingabe. Jedoch hat sich der Inhalt der Darstellungen stark verändert, da nun in jedem Wort Informationen über den gesamten Text gespeichert sein können.

bert-transformer-kuenstliche-intelligenz-abbildung-7

An dieser Stelle gibt es allerdings noch ein Problem bei der Berechnung des Attention-Scores: Bis hierhin gibt es keine Informationen über die Positionen der Wörter, da jedes Wort auf jedes andere Wort zugreifen kann. Somit könnte man die Wörter auch in einer zufälligen Reihenfolge übergeben und würde dasselbe Ergebnis erhalten. Da die Reihenfolge der Wörter allerdings eine große Bedeutung hat, müssen wir diese Information ebenfalls übergeben.

Aus diesem Grund werden die Wort-Embeddings, mit einem Positions-Embeddings kombiniert, bevor sie an den Transformer übergeben werden. Dies geschieht über eine einfache Addition der beiden Embeddings. Das Positions-Embedding wird auf die gleiche Weise gelernt, wie das Wort-Embedding. Durch die Wahl der maximalen Entfernung, die durch das Positions-Embeddings (während des Trainings) dargestellt wird, beschränkt man die maximale Eingabelänge für den Transformer, da Positionen außerhalb dieses Bereiches nicht bekannt sind.

Dieses Wissen über andere Wörter kann man sich visualisieren lassen, indem man sich die Ergebnisse der Attention-Scores für jedes Layer und Head anschaut. Dadurch kann man sehen, dass sich hier im Beispiel Head 1 des dritten Encoderlayers auf den jeweils nächsten Token konzentriert, während Head 6 des elften Layers auf Punkte achtet.

Das BERT-System

Nachdem wir gelernt haben, wie Transformer funktionieren, können wir uns nun dem widmen, was BERT so besonders macht. Auf Grundlage der Transformer-Architektur verwendet BERT zwei unterschiedliche Trainingsaufgaben, um ein allgemeines Sprachverständnis zu erlangen:

  • „Masked Language Model“ (MLM) und
  • „Next Sentence Prediction“ (NSP).

Für beide Aufgaben wird eine extrem große Menge an Daten benötigt. Deshalb werden Datenquellen wie Wikipedia und BooksCorpus verwendet, welche insgesamt über 3 Milliarden Wörter umfassen. Da niemand eine solch große Menge an Daten labeln kann, wird Self-Supervised Learning verwendet. Das bedeutet, dass es zwar Label gibt, diese aber nicht explizit erzeugt werden, sondern aus den bestehenden Daten extrahiert werden.

Für die „Next Sentence Prediction“ (NSP) werden jeweils zwei Sätze an den Transformer übergeben.Die Aufgabe des Transformers ist es nun, vorherzusagen, ob der zweite Satz auf den ersten folgt, oder ob beide Sätze unabhängig voneinander sind. In 50% der Fälle werden zwei Sätze übergeben, welche auch in der Datenquelle aufeinander folgen. Diese Sätze bekommen das Label „1“ bzw. „Ja“.

Andernfalls werden zwei zufällig ausgewählte Sätze übergeben, welche das Label „0“ bzw. „Nein“ bekommen. Durch diese Aufgabe soll der Transformer lernen, den Inhalt der Sätze zu verstehen und in Relation zueinander zu stellen. Da bei dieser Aufgabe eine Aussage über die gesamte Eingabe getroffen werden soll, gibt es einen „Class Token“, welcher immer am Anfang der Eingabe steht. Das resultierende Ergebnis für diesen Token wird verwendet, um eine Aussage über die beiden Sätze zu treffen.

bert-transformer-kuenstliche-intelligenz-abbildung-8

Das „Masked Language Model“ (MLM) ist die wichtigere der beiden Aufgaben und wird teilweise auch ohne die NSP verwendet. Hierbei werden 15% der Eingabe-Token zufällig ausgewählt und durch einen besonderen „Masked Token“ ersetzt. Die Aufgabe des Transformers ist es nun, die Wörter wiederherzustellen, welche abgedeckt worden sind. Auch hier müssen keine Daten gelabelt werden, da bekannt ist, welches Wort sich hinter der Maskierung verbirgt.

Diese Aufgabe ist einem Autoencoder nachempfunden, welche vor allem aus der Bildverarbeitung bekannt sind. Würde man allerdings einfach versuchen, die Eingabe zu rekonstruieren, so könnte der Transformer betrügen, indem er die Wörter ganz einfach unverändert durch die Layer gibt. Aus diesem Grund ist es wichtig, dass die Masken verwendet werden. Man verspricht sich von dieser Aufgabe, dass ein Verständnis innerhalb des Satzes entsteht und Assoziationen bzw. Aufgaben von Wörtern gelernt werden.

bert-transformer-kuenstliche-intelligenz-abbildung-9

Während des Trainings werden beide Aufgaben gleichzeitig gelernt, indem der Fehler von MLM und NSP addiert wird. Am Ende des Trainings erhält man dadurch ein allgemeines Sprachverständnis, welches genutzt werden kann, um speziellere Aufgaben zu lösen.

bert-transformer-kuenstliche-intelligenz-abbildung-10

Fine-Tuning von BERT für verschiedene Anwendungsfälle

Um einen Eindruck davon zu bekommen, wie man BERT für verschiedene Fine-Tuning-Aufgaben anwenden kann, wollen wir uns drei Arten von Aufgaben anschauen. Diese Muster ermöglichen bereits, einen großen Teil der häufigsten NLP-Probleme abzudecken.

Text-Klassifizierung

Die Text-Klassifizierung mit BERT funktioniert vom Prinzip her, wie die NSP aus dem vorherigen Abschnitt. Die NSP ist ein Klassifizierungsproblem mit zwei Klassen. Allerdings ist es keinesfalls notwendig zwei Sätze zu übergeben. Vielmehr gibt man in der Praxis oft seinen gesamten Text ein, ohne dabei eine explizite Satztrennung vorzugeben.

bert-transformer-kuenstliche-intelligenz-abbildung-11

Wort-Klassifizierung

Im Gegensatz zur Text-Klassifizierung nutzt die Wort-Klassifizierung das Encoding der einzelnen Wörter, um eine Klasse für das jeweilige Wort vorherzusagen. Dies ist sehr ähnlich zu dem MLM aus dem vorherigen Abschnitt. Allerdings werdenbeim MLM lediglich die maskierten Wörter vorhergesagt, während die allgemeine Wort-Klassifizierung für alle Wörter eine Klasse vorhersagt. Ein weiteres Beispiel für diese Art von Aufgabe ist das „Part of Speech Tagging“, welches für jedes Wort bestimmt, zu welcher Wortart es im Kontext der Eingabe gehört.

bert-transformer-kuenstliche-intelligenz-abbildung-12

Frage-Antwort-Format

Eine spezielle Form der Wort-Klassifizierung ist das Frage-Antwort-Format. Hierbei werden eine Frage und ein Paragraph übergeben, welche durch einen „Separation Token“ getrennt werden. Die Aufgabe besteht dann darin, die Antwort im Paraphen zu markieren. Dazu bestimmt BERT im Paragraphen ein Wort, welches den Anfang der Antwort markiert und ein Wort, welches das Ende der Antwort markiert.

bert-transformer-kuenstliche-intelligenz-abbildung-13


Bildquellen: