Einstieg in das Machine Learning: Teil 1

Grundsätze moderner Textklassifizierung für Machine Learning: Word Embeddings
Keine Kommentare

Word Embeddings stellen eine Methode zur Analyse natürlicher Sprache dar, die neue Möglichkeiten für das maschinelle Textverständnis eröffnen. Wie das Verfahren funktioniert, erfahren Sie hier.

Schon in den Anfangsjahren der Informatik wurde die menschliche Sprache analysiert. International wird diese Analyse “Natural Language Processing”, kurz NLP, genannt. Bereits 1954 wurde ein großer Schritt in die Richtung vollautomatisierter Sprachübersetzungen im Georgetown IBM Experiment gemacht. In diesem wurden mit Hilfe von Ordnungs- und Ersetzungsregeln mehr als 60 russische Sätze ins Englische übersetzt.

Embedded Words1

Die statistische Revolution im Bereich NLP startete in den 80er Jahren, als immer häufiger flexiblere Ansätze gewählt wurden. Dabei wurden Regeln durch das Analysieren von umfangreichen Textkorpora definiert. Basierend darauf wurden Berechnungen auf Basis von Entscheidungsbäumen und linearen Funktionen durchgeführt, um komplexe Zusammenhänge und Eigenschaften für beispielsweise die Generierung, Klassifizierung und Übersetzung von Texten zu verstehen.

Bis heute wurden viele weitere Innovationen im Bereich NLP entdeckt, welche die Basis für die moderne Analyse von Texten sind. Eine dieser Innovationen sind sogenannte Word Embeddings. Dies ist Teil 1 der Serie zum Thema Grundsätze moderner Textklassifizierung.

Word Embeddings

Um Sprache zu analysieren, wurden anfangs Wörter durch eindeutige Zahlen ersetzt, um Berechnungen zu ermöglichen.

Embedded Words2

Basierend darauf können Statistiken erstellt werden, die zeigen, wie häufig ein Wort in einem Text vorkommt, beispielsweise um Aussagen über die Thematik eines Textes treffen zu können. Dieser Ansatz hat jedoch einige Nachteile. Einerseits muss eine sehr große Liste von Wörtern gepflegt werden. Andererseits besteht das Problem, dass dasselbe Wort je nach Kontext eine sehr unterschiedliche Bedeutung haben kann.

Anstatt Wörter durch eindeutige Zahlen zu ersetzen, ist es möglich, Wörter mit Hilfe von Vektoren darzustellen, sogenannten Word Embeddings.

Embedded Words3

Die Länge eines Vektors wird initial festgelegt und bestimmt, wie viele Kontextinformationen ein Vektor darstellen kann. Zusätzlich gilt, je größer der Vektor, desto rechenintensiver sind die darauf basierende Berechnungen.

Im vorherigen Beispiel wurden Vektoren der Länge 3 gewählt. Das Wort “example” wird dabei durch einen Vektor mit dem Wert 4 in Dimension 1 dargestellt, dem Wert 2 in Dimension 2 und den Wert 6 in Dimension 3.

In komplexeren Beispielen können Vektoren mehr als 100 Dimensionen haben, die verschiedene Informationen beinhalten, wie beispielsweise:

  • Geschlecht,
  • Nationalität,
  • Alter,
  • Wortart.

Ein Wort wie one stellt eine Anzahl dar, ebenso das Wort many. Aus diesem Grund befinden sich deren Vektoren auch näher beieinander, als Vektoren von Wörtern, die in ihrer Verwendung grundsätzlich verschieden sind.

Embedded Words4.jpg

Je ähnlicher sich Vektoren sind, desto ähnlicher ist ihre Bedeutung. Im Vergleich zur traditionellen Methode, welche auf einer einfachen Nummerierung basiert, entstehen bei den Verwendungen von Vektoren einige Vorteile. Bei Berechnungen kann man anstatt einer Vielzahl von eindeutigen Nummern auch mit Vektoren arbeiten. Dies funktioniert sogar sprachunabhängig. Desweiteren hat das den Vorteil, dass man einmal ein Algorithmus für einen bestimmten Einsatzzweck und Wortschatz definiert und optimiert, und dieser dann auch für andere Wörter funktioniert, da das Modell lediglich auf einfachen Werten von Vektoren basiert.

Man kann ebenso Grundsätze der linearen Algebra anwenden und damit kompliziertere Fragestellung beantworten, wie beispielsweise “Frau verhält sich zu Mann wie Mädchen zu _ “.

Diese Vorteile lassen Word Embeddings zu einem sehr nützlichen Werkzeug werden. Nun stellt sich die Frage, wie diese Vektoren berechnet werden können.

Die Erstellung von Word Embeddings

Gerne wird das Konzept von Word Embeddings auch auf andere Bereiche erweitert. Mit Hilfe von Vektoren lassen sich ebenso Filme, Webshop-Produkte oder Musiktitel passend darstellen.

Wie definiert der Mensch die Bedeutung eines Wortes? Wir lernen ein Wort zu verwenden und zu verstehen, indem wir lernen, in welchem Kontext dieses Wort eingesetzt wird. Genau darauf basieren viele Ansätze, unter anderem auch der in diesem Beispiel beschriebene word2vec-Algorithmus.

Das folgende Beispiel besteht aus mehreren Sätzen, welche wiederum aus 10 unterschiedlichen Wörtern bestehen. Das Ziel ist es, 10 Word Embeddings für diese Wörter zu finden.

text_for_training = [
'he is a king',
'she is a queen',
'he is a man',
'she is a woman',
'she is a daughter',
'he is a son'
]

Mit Hilfe eines sehr einfachen neuronalen Netzes ist das relativ leicht. In diesem Beispiel ist es nicht erforderlich vorab zu wissen, wie ein neuronales Netz funktioniert. Es wird detailliert beschrieben, welche Mechanismen verwendet werden, um Vektoren für Wörter zu finden. Die Erstellung von Word Embeddings ist zugleich ein gutes Beispiel für den Einsatz eines neuronalen Netzes.

Man kann mit einem Wort anfangen, beispielsweise dem Zielwort “king”. In Zusammenhang mit diesem Wort stehen alle anderen Wörter des Satzes, also: “he”, “is” und “a”. Man kann diesen Zusammenhang ebenso für weniger wichtige Wörter definieren. Beispielsweise das Zielwort she steht im Kontext mit “is”, “a”, “queen”, “woman” und “daughter”.

Embedded Words5.jpg

Führt man diese Analyse für jede mögliche Kombination durch, ergibt sich eine Vielzahl an Kombinationen. Genau diese Aufgabe kann man durch den Einsatz eines neuronalen Netzes definieren und mit dessen Hilfe Word Embeddings erstellen.

Für jede Kombination kann als Eingabe ein Kontextwort und ein Zielwort als Ausgabe verwendet werden. Neuronale Netze funktionieren besser mit Hilfe von Vektoren. Um ein Wort aus einer Wortmenge darzustellen, verwendet man sogenannten 1-Hot-Encoded-Vektoren. Das ist ein Vektor, der genau eine 1 hat, und ansonsten nur Nullen. Die 1 befindet sich an der Position, an der sich das Wort in unserer Wortmenge befindet.

Embedded Words6

Zwischen der Eingabe und der Ausgabe befindet sich ein Hidden Layer. Dieser Layer beinhaltet so viele Elemente wie unser gewünschter Wort-Vektor Elemente haben soll. Je mehr Elemente ein Word Embedding besitzt, desto mehr Informationen können zu seiner Bedeutung, also seinem Kontext, gespeichert werden. Eine sehr große Anzahl von Dimensionen erhöht jedoch auch den Rechenaufwand für darauf basierende Algorithmen.

Im folgenden Beispiel wird ein Word Embedding der Größe 5 angestrebt. Aus diesem Grund besitzt unser Hidden Layer 5 sogenannte Neuronen.

Embedded Words7

Die Magie zwischen Input, Output und Hidden Layer besteht aus den Gewichtungen der Verbindungen, auch Parameter genannt. Jedes Element ist mit jedem anderen Element des vorherigen und nachfolgenden Layers verbunden.

Embedded Words8

Diese Parameter speichern alle wichtigen Informationen. In diesem Beispiel existieren 50 Parameter zwischen Input und Hidden Layer, sowie nochmals 50 Parameter zwischen Hidden und Output Layer.

Embedded

Anfangs werden die Parameter normalerweise mit zufälligen Werten initialisiert. In diesem Beispiel initialisieren wir diese vereinfacht mit “0.1”.

Embedded Words10

Ziel dieses neuronalen Netzes ist es, die bestmöglichen Parameter zu finden, damit bei diversen Eingaben, also bestimmten Kontextwörtern, die erwartete Ausgabe als das gesuchte Zielwort ausgegeben wird.

In diesem Beispiel wurden noch keine guten Parameter gefunden. Mit Hilfe von verschiedenen Trainingsmethoden können jedoch noch bessere Werte als “0.1” aufgezeigt werden, damit wie erwartet ein One-Hot-Encoded-Vektor ausgeben wird, der in diesem Beispiel eine 1 an der Position für das Wort “king” beinhaltet.

Der Unterschied zwischen dem aktuellen Ergebnis und dem erwarteten Ergebnis wird Fehler eines neuronalen Netzes genannt, der minimiert werden soll. Für dieses Beispiel ist der Optimierungsprozess jedoch nicht wichtig. Man kann sich vorstellen, dass durch zufällige neue Werte bessere Parameter gefunden werden können. In der Praxis wird die sogenannte Backpropagation benutzt, welche auf Ableitungen und der Kettenregel basiert.

Embedded Words11.jpg

Nach einiger Zeit werden sich die Parameter so verändern, dass die Berechnung immer häufiger das korrekte Ergebnis ergibt, der Fehler wird also minimiert. Man kann nun die Parameter zwischen Input und Hidden Layer als Word Embeddings verwenden.

Das komplette Beispiel kann in einem sogenannten Colab praktisch nachvollzogen werden. Man muss sich lediglich bei Google einloggen und “Open in playground” drücken, um eine ausführbare Kopie in Google Drive zu erstellen. Colab basiert auf Jupyter Notebooks. Der Code ist von oben nach unten sequentiell zu lesen und besteht aus mehreren Codezellen. Mit Hilfe der Tastenkombination SHIFT+Enter wird eine Zelle ausgeführt. Man klickt also in die erste Zelle, drückt SHIFT+Enter und wartet. Danach wiederholt man die Tastenkombination SHIFT+Enter und so weiter. Die Ausgabe jeder Zelle befindet sich darunter. Auf diese Weise können alle Schritte nachvollzogen und es kann experimentiert werden. Im Beispiel wurden keine komplexen Frameworks oder ähnliches für die Berechnung selbst verwendet.

Zusammenfassend werden Word Embeddings durch das Trainieren von neuronalen Netzen erstellt. Dabei werden Ziel- und Kontextwörter entsprechend analysiert und als Ein- und Ausgabe für das neuronale Netz verwendet. Wird der Fehler minimiert, erhält man zwischen Eingabe und Hidden Layer die gewünschten Word Embeddings.

Ich hoffe das Beispiel veranschaulicht, was Word Embeddings sind und wie diese erstellt werden können. Falls ihr mehr über moderne Textklassifizierung hören wollt, Fragen oder Kritik habt, dann schreibt gern ein Kommentar und abonniert unseren Newsletter.
Viel Spaß beim Experimentieren mit künstlicher Intelligenz 🙂


Referenzen
Veröffentlichung über Textklassifizierung von Jeremy Howards, einem Co-Founder von Fast AI
https://arxiv.org/abs/1801.06146
Googles aktueller Ansatz für NLP Aufgaben
https://arxiv.org/abs/1810.04805

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -