LAMBADA AI-Methode: Conversational Systems erschaffen

November 2020
Technology

Was ist die LAMBADA AI-Methode?

Die LAMBADA-KI von IBM ist eine neuartige Data-Augmentation-Methode für Textklassifizierungsaufgaben. Das Akronym LAMBADA steht für "language-model-based data augmentation". Die Idee der Methode ist die Feinabstimmung von vortrainierten Sprachmodellen, um synthetische Trainingsdaten für Textklassifizierungsaufgaben wie z. B. die Absichtsklassifizierung in Konversationssystemen zu generieren.

Automatisierte Generierung von Textdaten mit der LAMBADA AI-Methode

Chatbots müssen grundsätzlich die folgenden drei Hauptaufgaben erfüllen:

  1. verstehen, was ein Benutzer sagt und die zugrunde liegende Absicht erkennen,
  2. das Gespräch managen, den Überblick über frühere Interaktionen behalten und entscheiden, was als nächstes zu tun ist
  3. dem Benutzer antworten

Bei der ersten Aufgabe stehen wir vor der Herausforderung, alle möglichen Aussagen und Fragen zu identifizieren, die ein Benutzer im Gespräch mit unserem Chatbot äußern könnte. Dafür können wir Algorithmen des Natural Language Understanding (NLU) verwenden. Diese Machine Learning-Algorithmen werden mit Beispielaussagen für vordefinierte Benutzerintentionen versehen. Das Ziel ist es, aus diesen vordefinierten Beispielen zu extrapolieren und so alle möglichen Formulierungen für die Absicht eines Benutzers zu identifizieren.

Die Herausforderung bei diesem Ansatz besteht darin, einen ausreichend großen und vielfältigen Satz von Beispiel-Utterances für das Training zu sammeln. Diese *Utterances müssen in der Regel von realen Personen stammen und erfordern daher manuelle Arbeit, um Trainingsdaten zu generieren und zu labeln. Daher wäre eine automatisierte Generierung von zusätzlichen Trainingsdaten auf der Grundlage eines kleinen Mustersatzes von Vorteil, um Zeit und Kosten zu reduzieren. Die LAMBADA AI-Methode befasst sich mit diesem Problem.

Bei der zweiten Aufgabe handelt es sich um ein komplexes Problem, das wir in kommenden Artikeln noch ausführlicher diskutieren. Die dritte Aufgabe kann unter Anwendung von Natural Language Generation (NLG)-Techniken gelöst werden. Oft reicht es jedoch aus, eine begrenzte Anzahl von Antworten zu verwenden, aus denen der Chatbot wählen kann, um Aufgabe drei zu lösen.

Überblick über die LAMBADA AI-Methode

Ein interessanter Ansatz zur Erzeugung von Trainings-Utterances namens LAMBADA (language-model-based data augmentation) wurde von IBM Research AI veröffentlicht.

Die zugrundeliegende Idee besteht darin, ein Sprachmodell zu verwenden, das auf großen Korpora wie Wikipedia und Büchern vortrainiert wurde und in der Lage ist, Textausgaben von guter Qualität zu erzeugen. Dieses Sprachmodell wird dann anhand der verfügbaren domänenspezifischen Daten fine getunet. Nach dem Fine-Tuning kann das Modell dann verwendet werden, um zusätzliche Utterances zu generieren. Diese verbessern wiederum das Training von *Intent-Klassifikationsmodellen.

Language-Model-Based Data Augmentation (LAMBADA)

In den folgenden Abschnitten werden wir jeden Schritt ausführlicher besprechen.

1. Ein Intent-Klassifikationsmodell auf verfügbare Utterances trainieren.

Wir beginnen mit einem kleinen Satz von Trainingsäußerungen für jede unseres Chatbots definierte Absicht. Der Intent "greet" könnte zum Beispiel durch die Äußerungen "hello", "hi", "Good morning!" ausgedrückt werden, der Intent "inform_hungry" durch "I am starving", "My mummy is growling", "I want a snack" usw. Als nächstes trainieren wir ein Modell zur Klassifizierung von Absichten - zum Beispiel mit BERT. Dieses Modell dient als Basis, die wir verbessern wollen.

2. Ein NLG-Modell  finetunen, um Utterances für gegebene Intentionen zu erzeugen.

Als nächstes nehmen wir ein generatives Modell wie GPT-2 und stimmen es auf den kleinen Satz von Intent- und Utterance-Daten ab. Um Text mit GPT-2 zu erzeugen, müssen wir einen Input-Text als Keim zur Verfügung stellen. GPT-2 prognostiziert dann die nächsten Wörter und gibt diese Vorhersage aus. Um einen Eindruck von NLG zu erhalten, können Sie GPT-2 hier Text aus Ihren Eingaben generieren lassen.

Ein Beispiel:  Wir stellten GPT-2 den Satz "Ich möchte Kaffee bestellen" zur Verfügung und ließen es wiederholt weiteren Text hinzufügen.  Das Ergebnis war:

"Ich würde gerne einen Kaffee zum Mitnehmen bestellen und wir besprechen dann, wie es weitergeht. Es wird etwa 15 Minuten dauern, bis wir einen Tisch bekommen, es wird also kein großer Andrang sein, aber wenn Sie ein Bier probieren möchten, würde ich vorschlagen, mit der Bestellung zu warten, und dann können Sie es einfach abholen, wenn ich fertig bin. . .. Ich habe jetzt schon ein paar Mal bestellt und es war immer in Ordnung. ... Die Kellnerin ist immer nett."

Der vorgelegte Text ist nicht aus mehreren Versuchen herausgepickt, sondern das Ergebnis unseres ersten Versuchs. Wir können sehen, dass unsere generierte Geschichte zwar keine wirklich prägnante Botschaft enthält, aber die Sprache korrekt ist, den Kontext respektiert und dem nahe kommt, was ein Mensch schreiben könnte.

Wie können wir dieses Modell nutzen, um neue Utterances für unsere Intents zu generieren? Dazu verfeinern wir das Modell, indem wir ihm unsere Intent-/ Utterance-Paare als Trainingsdaten wie folgt zur Verfügung stellen:

     greet,hello
    greet,hi
    greet,Good morning!
    …
    inform_hungry,I am starving
    inform_hungry,My tummy is growling
    inform_hungry,I want a snack
    …            

Unser Ziel ist, dass das Modell den Input-String "greet," zu etwas wie "greet, good evening!" vervollständigt. Dabei soll es sein allgemeines Modell zur Sprachgenerierung verwenden und unsere Sprachschreibweise respektieren.

3. Eine große Anzahl von Utterances pro Intent erzeugen.

Wir füttern GPT-2 mehrfach mit unseren Intent-Namen. Da die Auswertung eines neuronalen Netzes deterministisch ist, würde es immer wieder die gleiche Ausgabe vorhersagen und damit erzeugen.

GPT-2 bietet jedoch die Möglichkeit, nach dem Zufallsprinzip eine der besten Vorhersagen für jedes Wort auszuwählen, wodurch die Variabilität der Ausgabe erhöht wird.

Wir erzeugen deutlich mehr Utterances, als wir am Ende behalten wollen, weil wir immer noch einige der weniger hochwertigen Ergebnisse auslassen müssen.

4. Die erzeugten Utterances unter Verwendung des alten Intent-Klassifikationsmodells filtern.

Da wir die generierten Utterances zum erneuten Training unseres Klassifikators verwenden werden, müssen wir sicherstellen, dass diese a) korrekt und b) von guter Qualität sind. Es ist nicht auszuschließen, dass unser GPT-2-Modell Intent/Utterance-Paare wie " inform_hungry, Good afternoon" oder etwas völlig außerhalb unserer Reichweite generierte, wie "inform_hungry, the most important thing for any food processor is the size and the speed of the machine". (wieder von hier).

Daher filtern wir die generierten Utterances, indem wir ihren Intent mit unserem alten Basismodell der Intent-Klassifikation vorhersagen und die folgenden Regeln anwenden:

a) Wenn der vorhergesagte Intent für die Utterance nicht mit dem Intent übereinstimmt, für den sie erzeugt wurde, filtern wir die Utterance aus.

b) Wenn die Vorhersage einen Konfidenzwert unter einer bestimmten Schwelle hat, filtern wir die Utterance ebenfalls aus.

Die Daten mit dem Modell zu filtern, das wir verbessern wollen, scheint als würden wir uns im Kreis bewegen. Jedoch ist der Ansatz von teilüberwachten Lernumgebungen übernommen, in denen bereits ein größerer Pool ungelabelter Daten existiert, die nur gelabelt werden müssen.

5. Das Intent-Klassifikationsmodell unter Verwendung des erweiterten Datensatzes mit den generierten Utterances neu trainieren.

Die gefilterten Utterances werden nun zu den anfänglichen Trainingsdaten hinzugefügt und das Intent-Klassifikationsmodell - in unserem Fall BERT - wird auf den neuen angereicherten Datensatz trainiert. Wir können dann die Leistung des Klassifikators auf einem Testsatz vergleichen, der weder im ersten oder zweiten Trainingsprozess noch beim Finetuning von GPT-2 verwendet wurde.

LAMBADA AI-Methode: Ergebnisse

In ihrer Veröffentlichung führt das IBM Research AI-Team den LAMBADA-Algorithmus auf drei Datensätzen (ATIS, TREC, WVA) aus, verwendet drei verschiedene Modelle für die Intent-Klassifikation (SVM, LSTM, BERT) und vergleicht schließlich die Leistung von LAMBADA mit anderen Datenaugmentierungstechniken (EDA, CVAE, CBERT). Wenn Sie an weiteren Details interessiert sind, sollten Sie den Artikel lesen, aber hier sind die wichtigsten Erkenntnisse: 

  1. BERT schlägt SVM- und LSTM-Klassifikatoren. Wenn Sie eine Intent-Klassifizierung planen und Ihre Hardware-Ressourcen ein Finetuning und Evaluierung von BERT- oder ähnlichen Transformermodellen erlauben, ist das der richtige Ansatz. BERT schlägt die beiden anderen Modelle in allen Experimenten mit großem Vorsprung.
  2. LAMBADA übertrifft alle anderen Datenaugmentierungsmethoden und das Basismodell. Durch die Verwendung von BERT als Klassifikator verbessert LAMBADA die Performance erheblich und übertrifft alle anderen Datenagmentierungstechniken bei allen Datensätzen.
  3. Datenaugmentierung macht nur dann Sinn, wenn eine geringe Anzahl von Utterances zur Verfügung steht. Große Leistungsverbesserungen werden für einen Ausgangssatz von bis zu zehn Utterances berichtet, wenn 100 zusätzliche Äußerungen erzeugt werden. Bei mehr als 50 verfügbaren Utterances pro Intent erhöht die Augmentierung die Performance nicht wesentlich.

LAMBADA Datenaugmentierung in der Praxis

Für unser eigenes Experiment verwendeten wir einen der Chitchat-Datensätze die für den Microsoft Azure QnA Maker bereitgestellt wurden. Wir benutzten zehn Intents mit einem Minimum von jeweils 65 Utterances und 1147 Utterances insgesamt. Pro Intent wählten wir nach dem Zufallsprinzip zehn Utterances aus, um BERT für die Intent-Klassifikation zu trainieren und GPT-2 fein zu tunen. Die verbleibenden 1047 Intent/Utterance-Paare behielten wir als Testsatz, um unsere Performance zu messen.

Die zehn Utterances pro Intent teilten wir erneut auf, sodass wir sechs Utterances pro Intent für das Training und vier als Validierungsset verwendeten. Insgesamt hatten wir also 60 Intent/Utterance-Paare für das Training und 40 für die Validierung. Anhand dieser Daten verfeinerten wir ein distilBERT und werteten es mit unserem Testset aus. Das Modell erreichte eine Genauigkeit von 86,3%.

Als nächstes verfeinerten wir das mittelgroße GPT-2 unter Verwendung derselben 10 Utterances pro Intent. Dieses Modell benutzten wir dann, um 100 neue Utterances pro Intent zu generieren.

Diese 1000 Utterances speisten wir in unser distilBERT-Modell ein, um deren Intent vorherzusagen. Wenn der prognostizierte Intent nicht mit dem tatsächlichen übereinstimmte, wurden die Utterances aus den Daten gestrichen. Danach nahmen wir die 30 Äußerungen mit der höchsten Vorhersagewahrscheinlichkeit pro Intent und fügten sie zu unseren Trainingsdaten hinzu, was zu einem neuen Datensatz mit 40 Utterances pro Intent führte. Dann teilten wir den Satz in einen Trainings- und einen Validierungssatz mit 32 und 8 Utterances pro Intent auf und trainierten distilBERT erneut.

Schließlich verwendeten wir den gleichen Testsatz wie zuvor, um die Genauigkeit unseres neuen Modells zu bestimmen. Das Modell sagte 90,3% der Utterances korrekt voraus, was eine Verbesserung von 4% gegenüber dem Basismodell ergab.

Fazit

Die LAMBADA-Methode ist vielversprechend, wenn Sie ein Intent-Klassifizierungsmodell mit nur einer kleinen Menge an verfügbaren Trainingsdaten trainieren müssen und zusätzliche Daten teuer zu beschaffen sind. Sie nutzt die Leistungsfähigkeit von vortrainierten generativen Modellen, um vielfältigere Äußerungen zu generieren und die Leistung Ihres Klassifikators zu verbessern.

Um die LAMBADA-Methode verwenden zu können, müssen Sie mit vortrainierten Modellen wie BERT und GPT-2 vertraut sein. Es ist zwar nett, die Theorie hinter einer Methode zu kennen, aber es erfordert etwas Mühe, diese in Code zu übersetzen. Um Ihnen den Einstieg in Ihre eigenen Anwendungsfälle zu erleichtern, lesen Sie unseren nächsten Artikel in unserer Serie über Conversational Systems, in dem wir ausführlich beschreiben, wie wir unser Experiment auf dem Microsoft Chitchat-Datensatz implementiert haben.

Mehr zu technologischen Themen

Ausgewählte Beiträge

Mehr anzeigen
Kein Spam, versprochen
Erhalten Sie wertvolle Insights von unserem Expertenteam.