Wir haben kürzlich einen Blogpost über den TabTransformer und seine grundlegenden Ideen geschrieben. Es ist ein vielversprechendes neues Deep-Learning-Modell für tabellarische Daten, aber wir wollten auch Ergebnisse zu Daten und Problemen, die uns in der Praxis begegnen.
Die Daten, mit denen wir unsere Tests durchgeführt haben, stammen von der belgischen Notarvereinigung (FedNot), die über einen großen Datensatz mit belgischen Hauspreisen verfügt. Es ist also ein bisschen wie bei den Hauspreisen von Boston, einem klassischen Datensatz für maschinelles Lernen, nur besser und belgisch.
Die Daten stammen aus verschiedenen Quellen. Wir haben öffentliche Datensätze wie OpenStreetMap mit internen pseudonymisierten FedNot-Datenbanken kombiniert.
Um den Wert eines bestimmten Hauses vorherzusagen, verwenden wir eine Teilmenge der verfügbaren Merkmale:
Für unsere weiteren Experimente nehmen wir eine Stichprobe der Daten und teilen sie in drei Abschnitte auf:
Nun wollen wir sehen, was es mit diesem T a b T r a n s f o r m e r auf sich hat.
Das Hauptmerkmal dieses Modells ist, dass es Transformationsblöcke enthält. Genau wie im NLP lernen die Transformatorblöcke kontextuelle Einbettungen. In diesem Fall sind die Eingaben jedoch keine Wörter, sondern kategoriale Merkmale.
Darüber hinaus können Sie den Transformator mit denselben unüberwachten Techniken trainieren wie im NLP! (Siehe GPT, BERT, ...) Wir werden die 300k unbeschrifteten Beispiele verwenden, um die Transformatorschichten vorzutrainieren (also ohne den Preis). Das sollte die Leistung verbessern, wenn wir nur wenige beschriftete Daten haben.
Mehr über dieses Modell erfahren Sie in unserem früheren Blogpost.
Dank Phil Wang gibt es eine Implementierung der TabTransformer-Modellarchitektur in PyTorch. Wir werden diese verwenden.
Alles, was bleibt, ist die Implementierung der unüberwachten Pre-Trainingsphase. In dem TabTransformer-Papier wird vorgeschlagen, dem Ansatz von ELECTRA zu folgen.
Das ist es, was wir tun müssen, um die Electra-Vortrainingstechnik anzuwenden:
Dieser Ansatz wird auch als "replaced token detection" bezeichnet.
Da Electra als Technik zum Vortraining von Sprachmodellen vorgeschlagen wird, wird im TabTransformer-Papier zu Recht darauf hingewiesen, dass wir zwei Änderungen an der ursprünglichen Technik vornehmen müssen.
In Schritt 2 von Electra wird ein benutzerdefiniertes Generatormodell trainiert, um plausible Ersetzungstoken zu generieren. Denn es ist zu einfach, ein Wort zu erkennen, das durch ein zufälliges Wort ersetzt wurde.
Bei tabellarischen Daten sind die Token jedoch kategorische Merkmale, so dass wir ein Merkmal einfach durch eine andere Klasse dieses kategorischen Merkmals ersetzen können. Beenden Sie das Generatormodell.
So sieht Schritt 2 des Electra-Frameworks in einer PyTorch-Dataset-Klasse aus:
In Schritt 3 des Electra-Papiers ist der Klassifikator auf dem Transformer-Modul für alle Token gleich. Das ist sinnvoll, weil alle Wörter aus der gleichen Verteilung stammen.
Im Falle von Tabellendaten können wir dies noch verbessern und für jede Spalte einen eigenen Klassifikator erstellen.
Ein effizienter Weg, dies zu tun, besteht darin, eine Faltungsschicht in der Tiefe zu definieren, die einen Filter pro Tiefengruppe definiert. Jede Gruppe stimmt dann mit einer Spalte in der Tabelle überein:
Das Vortraining bezieht sich nur auf den Transformer-Block im TabTransformer. Nach dem Vortraining müssen wir noch eine Feinabstimmung der endgültigen MLP vornehmen, bei der die Ausgabe des Transformators mit den kontinuierlichen Merkmalen kombiniert wird.
Diese Feinabstimmung erfolgt anhand der überwachten Daten, die auch die Hauspreise enthalten.
Entschuldigen Sie mein Französisch, aber hier kommt der Abschnitt, in dem wir testen, ob TabTransformer LightGBM den Rang abläuft.
Wir haben LightGBM aus zwei Gründen als Basis gewählt. Erstens, weil es im Allgemeinen ein hervorragendes Modell ist. Und zweitens ist es das beste Modell für den gesamten Datensatz, bei dem wir den größten Teil nicht für das unbeaufsichtigte Training reserviert haben.
Mit diesem Experiment wollen wir überprüfen, ob das unüberwachte Pretraining des TabTransformers ein Gewinn oder ein Fehlschlag ist.
Wir folgen dem Aufbau des TabTransformer-Beitrags und nehmen (obszön) kleine beschriftete Zugsätze mit 25 bis 2000 Datenpunkten. Da die Datensätze so klein sind, nehmen wir mehrere Versionen (z. B. verwenden wir 70 verschiedene Trainingssätze mit 25 Punkten).
Für jeden dieser Trainingssätze trainieren wir das LightGBM-Modell und nehmen eine Feinabstimmung des vortrainierten TabTransformers vor.
Danach verwenden wir den Testsatz, den wir zu Beginn auseinandergehalten haben, um die absoluten Fehler zu messen. Diese Fehler sind in dieser Abbildung dargestellt:
Bevor wir auf diese Ergebnisse eingehen, haben Sie vielleicht noch zwei Fragen:
Gibt es diese Art von Datensätzen überhaupt?
Stellen Sie sich einen Fall vor, in dem die Beschaffung der Kennzeichen sehr teuer ist, sehr lange dauert oder Menschen schaden kann. Wenn wir z. B. vorhersagen wollen, ob ein Flugzeug abstürzen wird, wollen wir so wenige Kennzeichnungen wie möglich haben.
Warum sollten Sie jemals ein Deep-Learning-Modell auf Datensätzen dieser Größe trainieren?
Der wichtigste Grund, warum wir in dieser Situation ein Deep-Learning-Modell in Betracht ziehen, ist, dass wir das Vortraining durchführen und die endgültige MLP-Schicht so klein wie möglich halten können. In der Arbeit über TabTransformer trainieren die Autoren ebenfalls mit denselben Datensätzen.
Also gut, schauen wir uns die Ergebnisse an. Eine erste Schlussfolgerung ist, dass LightGBM der klare Gewinner des gelben Trikots ist.
ABER, wenn wir uns die beiden kleinsten Datensätze ansehen, kommen wir zu dem Schluss, dass TabTransformer das grüne Sprintertrikot gewinnt. Bei 25 Datenpunkten ist der Fehler von TabTransformer kleiner und bei 50 Datenpunkten hat LGBM einige unangenehme Ausreißer, die TabTransformer nicht hat.
Dieses Ergebnis ist vielleicht nicht so großartig wie erhofft, aber es ist dennoch erstaunlich, denn es bedeutet, dass das unüberwachte Pretraining auf tabellarischen Daten funktioniert hat!
Wenn wir etwas weiter graben, können wir auch diese Ergebnisse erklären. Werfen Sie einen Blick auf die Bedeutung der Merkmale des LGBM-Modells:
Bei den fünf wichtigsten Merkmalen handelt es sich offensichtlich um numerische Merkmale und bei den sieben unwichtigsten um kategoriale Merkmale.
Erinnern wir uns daran, dass das Modell während der Pre-Trainingsphase des TabTransformers nur die Beziehungen zwischen den kategorialen Merkmalen lernen konnte. Es macht also Sinn, dass selbst das beste Transformatormodul niemals mit der Leistung einer optimalen Nutzung der kontinuierlichen Merkmale konkurrieren kann.