Multi2ConvAI
Blog

"Hey Neo, kannst du ein französisches Restaurant in der Nähe für mich finden?"
Wie trainiert man ein Modell zur Absichtsklassifizierung?

10.02.2022

Natürliches Sprachverständnis (Natural Language Understanding, kurz NLU) ist der Schlüssel für Chatbots, um Anfragen von Nutzern zu verstehen. Um bspw. die Frage "Wo ist das Restaurant?" mit "Navigation" als korrekte Absicht (Intent) zu klassifizieren, besteht ein intuitiver Ansatz darin, das Modell anhand einer bestimmten Menge von gepaarten Daten aus Frage und Absicht zu trainieren. Anhand dieser gepaarten Daten kann das Modell lernen, die bestmögliche Absicht einer Anfrage auf der Grundlage früherer Erfahrungen zu ermitteln. In diesem Beitrag möchten wir den Trainingsprozess für eine Absichtsklassifizierung (Intent Classification) vorstellen.

Wie lernt das Modell?

Beim Training eines Modells für maschinelles Lernen versucht das Modell, Informationen aus den historischen Daten zu lernen und diese Informationen in den Modellgewichten (d. h. Parametern) zu speichern. Wenn wir ein Modell trainieren, versucht das Modell, den besten Satz von Gewichten zu finden, indem es den durchschnittlichen Loss über die Trainingsdaten unter Verwendung der definierten Loss-Funktion minimiert. Folglich kann der Lernprozess eines Modells auch als "Optimierungsproblem" betrachtet und es werden Algorithmen verwenden um Gewichte zu finden, die das Modell gute Vorhersagen treffen lassen.

Es ist wichtig zu betonen, dass ein gutes Modell verallgemeinern sollte. Das Ziel des Modell Trainings ist es, es zur Klassifizierung neuer Anfragen von Nutzern einzusetzen, die in den historischen Daten möglicherweise nicht vorkommen. Wir wollen also nicht nur, dass das Modell bei den Trainingsdaten gut abschneidet, sondern auch, dass es gute Vorhersagen auf neuen, unbekannten Eingaben macht. Daher muss die Leistung des Modells an einem weiteren Datensatz getestet werden, der während des Trainings nicht gesehen wurde.

Der erste Schritt beim Training eines Modells besteht darin, den Datensatz in Trainings- und Testdatensätze aufzuteilen. Wir trainieren die Modellkandidaten (Lernen von Gewichten und Auswahl von Hyperparametern) immer auf dem Trainingsset und testen die Modellleistung auf dem Testset. Beachten Sie, dass die Testdaten nicht in den Trainingsprozess einbezogen werden sollten. Um die Hyperparameter der Modellkandidaten zu optimieren, werden Trainingsdaten in Daten für das Training und die Validierung unterteilt, so dass die Hyperparameter auf der Grundlage des Losses auf den Validierungsdaten richtig ausgewählt werden können. Als Nächstes geben wir eine kurze Einführung in die Schlüsselkomponenten des Modelltrainings: Hyperparameter, Lossfunktionen und Optimierungsalgorithmen.

Hyperparameter für die Absichtsklassifizierung

Die Aufgabe der Absichtsklassifizierung beinhaltet die Extraktion von Merkmalen aus Text durch einen Encoder und die Klassifizierung in eine bestimmte Klasse auf Grundlage dieser Merkmale durch einen Klassifikator (z. B. logistische Regression). Es gibt zwei wesentliche Methoden zur Erstellung solcher Modelle: merkmalsbasierte (feature-based) und Transformer-basiertes Finetuning. Bei beiden Ansätzen ist eine Optimierung der Hyperparameter erforderlich, damit das Modell seine Parameter angemessen erlernen kann.

Wie man Merkmale extrahiert - Encoder

Da der Encoder am Trainingsprozess beteiligt ist, müssen wir entscheiden, welcher Encoder in welcher Sprache verwendet werden soll (d. h. Sprachmodell). Bei einem merkmalsbasierten Ansatz können wir zum Beispiel das fastText-Sprachmodell zur Kodierung unserer Textdaten verwenden. Vorgefertigte fastText-Word-Embeddings sind in 294 Sprachen verfügbar und können direkt von der fastText-Website heruntergeladen werden [1]. Für das Finetuning stehen auf HuggingFace [2] mehrere Transformer-basierte vortrainierte Modelle zur Verfügung. Nachdem wir uns für ein Sprachmodell entschieden haben, können wir mit dem Finetuning des Modells für die Absichtsklassifizierung beginnen. Beachten Sie, dass die Modellgewichte in den Schichten dieser vortrainierten (pre-trained) Transformer-basierten Modelle auch als Input-Word-Embeddings verwendet werden können, um Klassifikatoren mit merkmalsbasierten Methoden zu trainieren.

Was zu minimieren ist - Lossfunktion

Um den Loss zu minimieren, müssen wir zunächst eine Lossfunktion definieren, damit das Modell weiß, was zu minimieren ist. Die Lossfunktion misst, wie weit die Vorhersage von der wahren Klassenbezeichnung entfernt ist. Die Standard-Lossfunktion für beabsichtigte Klassifizierungsaufgaben ist die Cross-Entropy-Loss-Function. Man kann sich die Modellausgabe als eine Wahrscheinlichkeitsverteilung vorstellen - die Wahrscheinlichkeit, dass ein Beispiel verschiedenen Absichten entspricht. Je höher die vorhergesagte Wahrscheinlichkeit ist, dass es sich bei dem Beispiel um das wahre Label handelt, desto geringer ist der Cross-Entropy-Loss.

Wie man sich dem lokalen Minimum nähert - Optimierungsfunktion und Lernrate

Stellen Sie sich vor, Sie stehen auf einem Hügel und wollen nach unten gehen. Sie beobachten zunächst, in welche Richtung es bergab zu gehen scheint. Dann gehen Sie ein paar Schritte in diese Richtung, beobachten erneut, gehen ein paar Schritte in die (neue) Richtung und wiederholen diesen Vorgang, bis Sie unten angekommen sind. Dies ist im Wesentlichen der weit verbreitete Optimierungsalgorithmus - der Gradientenabstieg-Algorithmus (gradient descent algorithm), der versucht, die Richtung des Abstiegs zu finden und dem Modell sagt, dass es sich mit einer bestimmten Geschwindigkeit (d. h. der Lernrate) in diese Richtung bewegen soll. Ist die Lernrate zu klein, bewegt sich das Modell relativ langsam auf das lokale Minimum zu; ist sie zu groß, könnte das Modell "überschießen" und das lokale Minimum verfehlen. Beim Gradientenabstieg-Algorithmus ist die Lernrate für alle Parameter festgelegt. Adaptive Lernratenoptimierer hingegen passen die Lernrate an die Parameter an. Adam [3] ist zum Beispiel eine beliebte Optimierungsfunktion (optimzer) in dieser Kategorie.

Wann soll der Trainingsprozess gestoppt werden - Batchsize, Epoche und Early Stopping

Das Modell nähert sich dem lokalen Minimum durch iterative Aktualisierung der Parameter. Bei jeder Iteration nimmt das Modell eine Teilmenge der Trainingsbeispiele und aktualisiert die Gewichte. Die Größe der Teilmenge wird durch die Batchsize bestimmt. Der gesamte Datensatz wird dann auf der Grundlage der Batchsize in Batches aufgeteilt, und eine Epoche ist abgeschlossen, wenn das Modell alle Batches einmal gesehen hat. Die Anzahl der Epochen wird also festgelegt, um dem Modell mitzuteilen, wie oft es den gesamten Datensatz durchlaufen soll. Dieser Hyperparameter steuert auch die Trainingszeit des Modells.

Die festgelegte Trainingszeit (d. h. der Anzahl der Epochen bzw. epochs) hat einen starken Einfluss auf die Modellperformance. Wie bereits erwähnt, muss das Modell auf ungesehenen Daten gut verallgemeinern. Wenn die Anzahl der Epochen zu groß ist, ist es wahrscheinlich, dass das Modell bereits das lokale Minimum erreicht, bevor die Anzahl der Epochen erreicht ist, was zu einem “Auswendiglernen” (overfitting) der Trainingsdaten führt. Daher wird häufig ein frühes Abbruchkriterium festgelegt, um ein Overfitting des Modells zu verhindern. Ein gängiges Abbruchkriterium ist der Vergleich zwischen dem Trainingsloss und dem Validierungsloss. Wenn der Validierungsloss ansteigt, bedeutet dies, dass die aktuellen Modellgewichte nicht mehr für die ungesehenen Daten geeignet sind, und dies ist ein Zeichen für Overfitting. Das kann bedeuten, dass der Trainingsprozess abgebrochen wird, wenn der Validierungsloss über zwei aufeinanderfolgende Epochen ansteigt.

Zusammenfassend lässt sich sagen, dass der Trainingsprozess des Modells für die Absichtsklassifizierung das Lernen der Modellparameter und die Abstimmung der Hyperparameter umfasst, die den Lernprozess beeinflussen. Die Abstimmung der Hyperparameter erfolgt durch das Durchsuchen von Gruppen möglicher Werte und die Auswahl der besten Gruppe auf der Grundlage des Validierungslosses. Wenn sie nicht richtig eingestellt sind, könnte das Modell ungeeignete Ergebnisse liefern. Nach Abschluss des Trainingsprozesses ist das Modell bereit, die Absichten neuer Anfragen vorherzusagen.


[1] Vortrainierte fastText-Embeddings sind in mehreren Sprachen verfügbar: https://fasttext.cc/docs/en/pretrained-vectors.html

[2] Vortrainierte Transformer-basierte Sprachmodelle sind auf HuggingFace verfügbar: https://huggingface.co/models

[3] Diederik Kingma und Jimmy Ba. (2015). Adam: A method for stochastic optimization. In International Conference on Learning Representations (ICLR).


Über die Partner des Forschungsprojekts

Das Konsortium des Multi2ConvAI Forschungsprojekts besteht aus der Universität Mannheim und zwei KMUs mit Sitz in Karlsruhe, inovex GmbH und Neohelden GmbH. Die drei Partner teilen ihre Expertise im Rahmen des Projektes in der Hoffnung aus den entstehenden Synergien zu lernen und zu wachsen.


Kontakt

Bei Fragen und Anregungen stehen wir jederzeit unter info@multi2conv.ai zur Verfügung.


Förderung

Das Projekt „Mehrsprachige und domänenübergreifende Conversational AI” wird durch das Land Baden-Württemberg als Teilnehmer des „KI-Innovationswettbewerbs” unterstützt. Die Förderung zielt darauf ab, die KI-Wertschöpfung und KI-Anwendung im Mittelstand branchenübergreifend zu unterstützen. Mit gemeinsamen Forschungs- und Entwicklungsvorhaben zwischen Forschungseinrichtungen und mittelständischen Unternehmen soll die Basis für neue und verbesserte KI-basierte Produkte und Dienstleistungen gelegt werden.