Regularisierung und Feature-Skalierung beim Online-Lernen?


15

Nehmen wir an, ich habe einen logistischen Regressionsklassifikator. Beim normalen Batch-Lernen hätte ich einen Regularizer-Term, um eine Überanpassung zu verhindern und meine Gewichte klein zu halten. Ich würde auch meine Funktionen normalisieren und skalieren.

In einer Online-Lernumgebung erhalte ich einen kontinuierlichen Datenstrom. Ich führe mit jedem Beispiel ein Gefälle-Update durch und verwerfe es dann. Soll ich beim Online-Lernen den Begriff "Feature-Skalierung und Regularisierung" verwenden? Wenn ja, wie kann ich das machen? Zum Beispiel habe ich keine Trainingsdaten zum Skalieren. Ich habe auch keine Validierung festgelegt, um meinen Regularisierungsparameter zu optimieren. Wenn nein, warum nicht?

In meinem Online-Lernen erhalte ich kontinuierlich einen Strom von Beispielen. Für jedes neue Beispiel mache ich eine Vorhersage. Im nächsten Zeitschritt erhalte ich dann das eigentliche Ziel und aktualisiere den Gefälleverlauf.

Antworten:


9

Das Open-Source-Projekt vowpal wabbit enthält eine Implementierung von Online-SGD, die durch die sofortige (Online-) Berechnung von drei zusätzlichen Faktoren, die sich auf die Gewichtsaktualisierungen auswirken, erweitert wird. Diese Faktoren können durch ihre jeweiligen Befehlszeilenoptionen aktiviert / deaktiviert werden (standardmäßig sind alle drei aktiviert, die --sgdOption deaktiviert sie alle, dh: greift auf "klassische" SGD zurück).

Die 3 SGD-Verbesserungsoptionen sind:

  • --normalized Aktualisierungen wurden an die Skalierung der einzelnen Funktionen angepasst
  • --adaptive verwendet adaptiven Farbverlauf (AdaGrad) (Duchi, Hazan, Singer)
  • --invariant Wichtigkeitsbewusste Updates (Karampatziakis, Langford)

Gemeinsam sorgen sie dafür, dass der Online-Lernprozess eine automatische 3-Wege-Kompensation / -Anpassung für Folgendes vornimmt:

  • Skalierung pro Feature (große vs. kleine Werte)
  • Abnahme der Lernrate pro Merkmal basierend auf der Merkmalsbedeutung
  • Anpassung der adaptiven Lernrate pro Merkmal für die Prävalenz / Seltenheit von Merkmalen in Beispielen

Das Ergebnis ist, dass es nicht erforderlich ist, verschiedene Funktionen vorab zu normalisieren oder zu skalieren, um den Lernenden weniger voreingenommen und effektiver zu machen.

Darüber hinaus implementiert Vowpal Wabbit auch die Online-Regularisierung über eine abgestumpfte Gradientenabnahme mit den Regularisierungsoptionen:

  • --l1 (L1-Norm)
  • --l2 (L2-Norm)

Meine Erfahrung mit diesen Verbesserungen bei mehreren Datensätzen bestand darin, dass sie die Modellgenauigkeit und die Konvergenz bei jeder Einführung in den Code erheblich verbesserten.

Im Folgenden finden Sie einige wissenschaftliche Artikel zu diesen Verbesserungen:


Arielf - Wenn Sie die drei Erweiterungen ausschalten (über --sgd), wird die auf Folie 11 von github.com/JohnLangford/vowpal_wabbit/wiki/v6.1_tutorial.pdf angezeigte sgd angezeigt, sodass power_t und initial_t relevant werden ?
B_Miner

1
B_miner: soweit ich das verstehe --power_tund --initial_tglobale (nicht per feature) unabhängige optionen sind. --sgdkehrt nur zum "klassischen" SGD zurück. IOW: --sgdnur annulliert --invariant, --normalizedund --adaptive(die separate Lernraten pro Feature implizieren)
Arielf

Wissen Sie, ob es eine Möglichkeit gibt, diese Aktualisierungen asynchron parallel durchzuführen (wie dies bei asynchronem SGD der Fall ist)? Es scheint, dass VW mit mehreren Arbeitern das Modell jedes Arbeiters am Ende jedes Durchgangs mittelt. Irgendwelche Papiere / Software-Hinweise, wie das geht?
JC1


1

ja, du brauchst auf jeden Fall Regularisierung ... es hilft auch beim Gefälle (und beim Initialisieren der Lernrate auf 1 / C)

siehe zB SGD-QN-Artikel http://leon.bottou.org/papers bottou's Artikel

du hast nicht wirklich erklärt, was du mit online lernen meinst: zb bekommst du für jeden punkt einen zielwert? Ich weiß nicht, wie Sie ... nach C suchen würden ... Ich schätze, Sie hätten mehrere Klassifikatoren mit unterschiedlichen Regularisierungsbegriffen und würden den Vorhersagefehler verfolgen (bevor Sie die Gewichte aktualisieren).


Beim Online-Lernen erhalte ich ein Beispiel und mache eine Vorhersage. Im nächsten Schritt erhalte ich das eigentliche Ziel für mein Beispiel und führe eine Aktualisierung des Gefälleverlaufs durch.
Siamii

Nun, dann sollte es so sein, wie ich es vorgeschlagen habe. Sie führen eine Reihe von Klassifikatoren mit unterschiedlichen Regularisierungsparametern aus und verfolgen die Vorhersagefehler der einzelnen Klassifikatoren.
Seanv507

Ich bin mir nicht sicher, was Sie unter Lernrate auf 1 / C verstehen. Was ist C? Sprechen Sie über Support-Vektor-Maschinen? Ich spreche von einer logistischen Regression, bei der der Regularisierer einen Lambda-Koeffizienten hat. Ich weiß nicht, was das mit der Lernrate zu tun hat.
Siamii

Ja, der l2-Regularisierungsparameter, C, Lambda oder was auch immer. Es ist etwas, das in einer Seite in Bottous sgdqn-Zeitung erwähnt wird, und ich nehme an, dass es woanders besser erklärt wird. grundsätzlich sollte Ihre Lernrate die 1 / Krümmung (inverse hessischen) Ihre Fehleroberfläche sein .. jetzt , wenn Ihre Fehleroberfläche ist
seanv507

1
Muss ich auch eine Feature-Skalierung durchführen? Wie geht das in einer Online-Umgebung?
Siamii
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.