Künstliche Intelligenz

IBMs LAMBADA:
Conversational Systems meistern
mit Datenaugmentierung  

 

Was ist LAMBADA-Datenaugmentierung?

LAMBADA AI ist eine neuartige Datenaugmentierungsmethode von IBM für Textklassifikationsaufgaben. Das Akronym LAMBADA steht für "language-model-based data augmentation". Die Idee der Methode ist es, vortrainierte Sprachmodelle zu  finetunen, um synthetische Trainingsdaten für Textklassifikationsaufgaben wie die Intent-Klassifikation in Conversational Systems zu erzeugen. 

 

Wozu ist LAMBADA Datenaugmentierung gut?

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

Aufgabe 2. ist ein komplexes Problem, das wir in kommenden Artikeln noch ausführlicher diskutieren. Aufgabe 3. 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 3. zu lösen. 

Für Aufgabe 1. 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 BeispielUtterances 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-Methode von IBM befasst sich mit diesem Problem.

Überblick über die LAMBADA-Methode

Ein interessanter Ansatz zur Erzeugung von TrainingsUtterances 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)

Um neue Utterances zu generieren und diese zur Verbesserung der Intent-Klassifikation zu nutzen, führen wir die folgenden Schritte aus: 

  1. Ein Intent-Klassifikationsmodell auf verfügbaren Utterances trainieren. 
  2. Ein NLG-Modell finetunen, um Utterances für gegebene Intentionen zu erzeugen. 
  3. Eine große Anzahl von Utterances pro Intent erzeugen. 
  4. Die erzeugten Utterances unter Verwendung des alten Intent-Klassifikationsmodells filtern. 
  5. Das Intent-Klassifikationsmodell unter Verwendung des erweiterten Datensatzes mit den generierten Utterances neu trainieren.

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 TrainingsUtterances für jeden für unseren Chatbot definierten Intent. Der Intent "greet" könnte z.B. durch die Utterances "hallo", "hi", "Guten Morgen!" ausgedrückt werden, der Intent "inform_hungy" durch "Ich bin am Verhungern", "Mein Bauch knurrt", "Ich möchte einen Snack" usw. Als nächstes trainieren wir ein Intent-Klassifikationsmodell – zum Beispiel mit BERT. Dieses Modell dient uns als Basislinie, die wir verbessern wollen.

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

Next, we take a generative model such as GPT-2 and fine-tune it on the small set of intent and utterance data. To generate text with GPT-2 must provide some input text as seed. GPT-2 will then predict the next words to follow and output its prediction. To get an impression of NLG, you can let GPT-2 generate text from your input at here. Here is an example: We provided GPT-2 with the phrase „I would like to order some coffee“ and repeatedly let it add more text. The result was

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 

„I would like to order some coffee to go and we will discuss how to proceed from there. It will take around 15 minutes to get a table, so it’s not going to be a huge rush but if you want to try a beer I 'd suggest waiting to place the order and then you can just pick it up when I’m ready to go. . .. I 've ordered a few times now and it’s always been okay. … The waitress is always nice."

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 ,Notation 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 k 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 auszuschliessen, dass unser GPT-2-Modell Inten/Utterance-Paare wie " inform_hungry, Good afternoon" oder etwas völlig ausserhalb 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 semi-supervised Learning Settings ü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: 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: 

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. 

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. 

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 Data Augmentation 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, so dass 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-Modell 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.

ai-for-human-language-fazit

Fazit

Die LAMBADA-Methode ist vielversprechend, wenn Sie ein Intent-Klassifikationsmodell mit nur wenigen verfügbaren Trainingsdaten trainieren wollen und die Beschaffung zusätzlicher Daten teuer ist. Sie nutzt die Stärke von vortrainierten generativen Modellen, um vielfältigere Utterances zu erzeugen, und verbessert die Performance Ihres Klassifikators. 

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.