Regularisierung für Sparsität: L1-Regularisierung

Dünnbesetzte Vektoren enthalten oft viele Dimensionen. Das Erstellen einer Feature-Cross führt zu noch mehr Dimensionen. Angesichts dieser hochdimensionalen Featurevektoren kann die Modellgröße riesig werden und große Mengen an RAM erfordern.

In einem hochdimensionalen dünnbesetzten Vektor wäre es schön, die Gewichtungen nach Möglichkeit auf genau 0 zu senken. Eine Gewichtung von genau 0 entfernt im Wesentlichen das entsprechende Feature aus dem Modell. Durch das Ausgleichen von Funktionen wird RAM gespart und Bildrauschen im Modell reduziert.

Nehmen wir als Beispiel ein Dataset mit Immobilien, das nicht nur Kalifornien, sondern den gesamten Globus abdeckt. Das Bucketing des globalen Breitengrads auf Minutenebene (60 Minuten pro Grad) liefert etwa 10.000 Dimensionen in einer dünnbesetzten Codierung. Der globale Längengrad auf Minutenebene ergibt etwa 20.000 Dimensionen. Eine Funktionsverknüpfung dieser beiden Merkmale würde etwa 200.000.000 Dimensionen ergeben. Viele dieser 200.000.000 Dimensionen sind Bereiche mit einem derart begrenzten Aufenthaltsraum (z. B. mitten im Ozean), dass es schwierig wäre, diese Daten für eine effektive Verallgemeinerung zu verwenden. Es wäre unsinnig, die RAM-Kosten für die Speicherung dieser nicht benötigten Dimensionen zu bezahlen. Daher wäre es schön, die Gewichtungen für die sinnlosen Dimensionen auf genau 0 zu senken, damit wir die Speicherkosten für diese Modellkoeffizienten zum Zeitpunkt der Inferenz nicht bezahlen müssen.

Möglicherweise können wir diese Idee in das Optimierungsproblem einbinden, das während des Trainings durchgeführt wird, indem wir einen entsprechend ausgewählten Regularisierungsbegriff hinzufügen.

Funktioniert die L2-Regularisierung diese Aufgabe? Leider nicht. Die L2-Regularisierung empfiehlt, Gewichtungen klein zu halten, erzwingt sie aber nicht auf genau 0,0.

Eine alternative Idee wäre, einen Regularisierungsbegriff zu erstellen, der die Anzahl der Koeffizientenwerte, die nicht null sind, in einem Modell bestraft. Eine Erhöhung dieser Anzahl wäre nur dann gerechtfertigt, wenn die Fähigkeit des Modells, die Daten anzupassen, ausreichend verbessert würde. Dieser zählbasierte Ansatz ist zwar intuitiv attraktiv, aber unser konvexes Optimierungsproblem würde sich dadurch in ein nicht konvexes Optimierungsproblem verwandeln. Daher können wir diese Idee, die als L0-Regularisierung bezeichnet wird, in der Praxis nicht effektiv anwenden.

Es gibt jedoch einen Regularisierungsbegriff namens L1-Regularisierung, der als Annäherung an L0 dient, den Vorteil hat, konvex und daher effizient zu berechnen. Wir können also die L1-Regularisierung verwenden, um viele der nicht informativen Koeffizienten in unserem Modell dazu zu bringen, genau 0 zu sein, und somit RAM-Einsparungen zum Zeitpunkt der Inferenzzeit erzielen.

L1- im Vergleich zur L2-Regularisierung.

L2 und L1 bestrafen Gewichtungen unterschiedlich:

  • L2 bestraft Gewicht2.
  • L1 bestraft |weight|.

Folglich haben L2 und L1 unterschiedliche Ableitungen:

  • Die Ableitung von L2 ist 2 * Gewicht.
  • Die Ableitung von L1 ist k (eine Konstante, deren Wert unabhängig vom Gewicht ist).

Sie können sich die Ableitung von L2 als eine Kraft vorstellen, die jedes Mal x% des Gewichts entfernt. Wie Zeno weiß, wird die verminderte Zahl niemals ganz bei Null liegen, auch wenn Sie x % einer Zahl Milliarden Male entfernen. (Zeno war weniger vertraut mit Einschränkungen bei der Gleitkommazahl, die möglicherweise genau Null ergeben könnten.) In jedem Fall lenkt L2 die Gewichtung normalerweise nicht auf null.

Sie können sich die Ableitung von L1 als eine Kraft vorstellen, die jedes Mal eine Konstante vom Gewicht subtrahiert. Dank absoluter Werte hat L1 jedoch eine Diskontinuität bei 0, was dazu führt, dass Subtraktionsergebnisse, die 0 kreuzen, zu Nullen werden. Wenn beispielsweise durch die Subtraktion eine Gewichtung von +0,1 bis -0,2 erzwungen worden wäre, setzt L1 die Gewichtung auf genau 0. Eureka, L1 hat das Gewicht korrigiert.

Die L1-Regularisierung, bei der der Absolutwert aller Gewichtungen bestraft wird, erweist sich für breite Modelle als sehr effizient.

Beachten Sie, dass diese Beschreibung auf ein eindimensionales Modell zutrifft.

Klicken Sie unten auf die Wiedergabeschaltfläche (), um den Effekt der L1- und der L2-Regularisierung auf ein Netzwerk aus Gewichtungen zu vergleichen.