Alternativen zur Generalisierung von L1, L2 und Dropout


8

Ich habe das folgende Setup für ein Forschungsprojekt im Bereich Finanzen / Maschinelles Lernen an meiner Universität: Ich wende ein (Deep) Neural Network (MLP) mit der folgenden Struktur in Keras / Theano an, um überdurchschnittliche Aktien (Label 1) von unterdurchschnittlichen Aktien zu unterscheiden (Label 1). Etikett 0). Erstens verwende ich nur tatsächliche und histrorische Bewertungsmultiplikatoren. Da es sich um Bestandsdaten handelt, kann man mit sehr verrauschten Daten rechnen. Darüber hinaus könnte in diesem Bereich bereits eine stabile Genauigkeit außerhalb der Stichprobe von über 52% als gut angesehen werden.

Die Struktur des Netzwerks:

  • Dichte Ebene mit 30 Funktionen als Eingabe
  • Relu-Aktivierung
  • Batch Normalization Layer (Ohne das konvergiert das Netzwerk teilweise überhaupt nicht)
  • Optionale Dropout-Ebene
  • Dicht
  • Relu
  • Stapel
  • Aussteigen
  • .... Weitere Schichten mit gleicher Struktur
  • Dichte Schicht mit Sigmoid-Aktivierung

Optimierer: RMSprop

Verlustfunktion: Binäre Kreuzentropie

Das einzige, was ich für die Vorverarbeitung mache, ist eine Neuskalierung der Features auf den Bereich [0,1].

Jetzt stoße ich auf ein typisches Über- / Unteranpassungsproblem, das ich normalerweise mit Dropout- oder / und L1- und L2-Kernel-Regularisierung angehen würde. In diesem Fall wirken sich jedoch sowohl die Dropout- als auch die L1- und L2-Regularisierung negativ auf die Leistung aus, wie Sie in den folgenden Diagrammen sehen können.

Meine Grundeinstellung ist: 5 Schicht NN (inkl. Eingabe- und Ausgabeschicht), 60 Neuronen pro Schicht, Lernrate von 0,02, kein L1 / L2 und kein Ausfall, 100 Epochen, Chargennormalisierung, Chargengröße 1000. Alles ist darauf trainiert 76000 Eingangsproben (nahezu ausgeglichene Klassen 45% / 55%) und auf ungefähr die gleiche Anzahl von Testproben angewendet. Für die Diagramme habe ich jeweils nur einen Parameter geändert. "Perf-Diff" bezeichnet die durchschnittliche Differenz der Aktienperformance von Aktien, die als 1 klassifiziert sind, und Aktien, die als 0 klassifiziert sind. Dies ist im Grunde die Kernmetrik am Ende. (Höher ist besser)

Regulierung Im Fall l1 klassifiziert das Netzwerk grundsätzlich jede Stichprobe einer Klasse. Die Spitze tritt auf, weil das Netzwerk dies erneut tut, aber 25 Stichproben zufällig korrekt klassifiziert. Diese Spitze sollte also nicht als gutes Ergebnis interpretiert werden, sondern als Ausreißer.

Die anderen Parameter haben folgende Auswirkungen: Geben Sie hier die Bildbeschreibung ein

Haben Sie Ideen, wie ich meine Ergebnisse verbessern kann? Gibt es einen offensichtlichen Fehler, den ich mache, oder gibt es eine einfache Antwort auf die Regularisierungsergebnisse? Würden Sie vorschlagen, vor dem Training eine Funktionsauswahl vorzunehmen (z. B. PCA)?

Edit : Weitere Parameter: Geben Sie hier die Bildbeschreibung ein


2
Nur ein paar unorganisierte Gedanken: Ihre Losgröße ist ziemlich groß. Eine andere Regularisierungsstrategie ist die maximale Norm: Begrenzen Sie die gesamte L2-Norm der Gewichte auf einer bestimmten Ebene auf einen bestimmten Wert. Bestandsdaten haben natürlich Zeitreihencharakter, daher könnte möglicherweise eine RNN-Schicht hilfreich sein. Die Konfiguration eines ANN ist jedoch mehr Kunst als Wissenschaft - selbst wenn ein Problem einfach ist, ist die richtige Kombination von Parametern erforderlich, damit das Netzwerk lernen kann.
Sycorax sagt Reinstate Monica

@Sycorax: Ich habe gerade meine Frage bearbeitet und Max-Norm und Chargengröße aufgenommen: Interessantes Verhalten, aber keine großen Auswirkungen auf die Testergebnisse, mehr auf die Zugergebnisse. Leider habe ich nicht wirklich Zeitreihendaten, sondern mehr Zeitpunkt-Snapshot-Daten, daher denke ich, dass eine RNN in meinem Fall nicht anwendbar ist.
SebastianB

Antworten:


2

Angesichts der Finanzdaten ist es wahrscheinlich, dass die Feature-Verteilungen in Ihren Zug- und Validierungssätzen unterschiedlich sind - ein Phänomen, das als Kovariatenverschiebung bezeichnet wird - und neuronale Netze damit nicht gut spielen. Unterschiedliche Funktionsverteilungen können zu Überanpassungen führen, selbst wenn das Netzwerk relativ klein ist.

Angesichts der Tatsache, dass l1 und l2 nichts helfen, vermute ich, dass andere Standard-Regularisierungsmaßnahmen wie das Hinzufügen von Rauschen zu Eingaben / Gewichten / Verläufen wahrscheinlich nicht helfen, aber es könnte einen Versuch wert sein.

Ich wäre versucht, einen Klassifizierungsalgorithmus auszuprobieren, der weniger von den absoluten Größen der Merkmale beeinflusst wird, wie z. B. Bäume mit Gradientenverstärkung.

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.