Warum sollten die Daten für maschinelles Lernen gemischt werden?

30

Bei maschinellen Lernaufgaben ist es üblich, Daten zu mischen und zu normalisieren. Der Zweck der Normalisierung ist klar (für den gleichen Bereich von Merkmalswerten). Aber nachdem ich viel gekämpft hatte, fand ich keinen wertvollen Grund, Daten zu mischen.

Ich habe diesen Beitrag hier gelesen und erörtert, wann wir Daten mischen müssen, aber es ist nicht klar, warum wir die Daten mischen sollten. Darüber hinaus habe ich in Algorithmen wie Adam oder SGD häufig gesehen, dass wir eine Chargengradientenabnahme benötigen (Daten sollten in Mini-Chargen aufgeteilt werden und die Chargengröße muss angegeben werden). Gemäß diesem Beitrag ist es wichtig, Daten für jede Epoche zu mischen, um unterschiedliche Daten für jede Charge zu haben. Vielleicht werden die Daten also gemischt und, was noch wichtiger ist, geändert.

Warum machen wir das?

Medien
quelle
1
Es kann nützlich sein, genau anzugeben, warum die Antwort im ersten Link Ihnen nicht geholfen hat. Ansonsten gehen wir das Risiko ein, dort bereits erwähnte Inhalte mit geringen Verbesserungen zu wiederholen.
E_net4 sagt Reinstate
Wie ich bereits sagte, möchte ich wissen, warum nicht wann, weißt du warum? ist das dort wirklich erklärt? Ich habe dafür überhaupt keine Zeitung gesehen
Media
1
Weitere Informationen zu den Auswirkungen von Beispielbestellungen finden Sie unter Curriculum Learning [pdf].
Emre
1
Ich habe dies auf CrossValidated gepostet und finde es relevant. stats.stackexchange.com/a/311318/89653
Josh
@Emre eigentlich dieses Papier ist gegen das Mischen, danke, ich habe nicht über diese Art des Lernens gehört.
Medien

Antworten:

18

Basierend auf Was sollen wir tun, wenn eine auf DataScience gepostete Frage ein Duplikat einer auf CrossValidated geposteten Frage ist? Ich reposte meine Antwort auf dieselbe Frage, die bei CrossValidated gestellt wurde ( https://stats.stackexchange.com/a/311318/89653 ).

Hinweis: In dieser Antwort beziehe ich mich auf die Minimierung des Trainingsverlusts und gehe nicht auf das Beenden von Kriterien wie Validierungsverlust ein. Die Auswahl der Stoppkriterien hat keinen Einfluss auf die nachfolgend beschriebenen Prozesse / Konzepte.

Der Prozess des Trainings eines neuronalen Netzwerks besteht darin, den Minimalwert einer Verlustfunktion , wobei eine Matrix (oder mehrere Matrizen) von Gewichten zwischen Neuronen darstellt und den Trainingsdatensatz darstellt. Ich verwende einen Index für um anzuzeigen, dass unsere Minimierung von nur über den Gewichten auftritt (das heißt, wir suchen nach so dass minimiert ist), während festgelegt ist.X(W)WXXWWX

Wenn wir nun annehmen, dass wir Elemente in (das heißt, es gibt Gewichte im Netzwerk), ist eine Oberfläche in einem dimensionalen Raum. Um ein visuelles Analogon zu erhalten, stellen Sie sich vor, dass wir nur zwei Neuronengewichte haben ( ). Dann hat eine einfache geometrische Interpretation: Es ist eine Oberfläche in einem dreidimensionalen Raum. Dies ergibt sich aus der Tatsache, dass für jede gegebene Matrix von Gewichten die Verlustfunktion an ausgewertet werden kann und dieser Wert die Höhe der Oberfläche wird.PWPP+1P=2WX

Aber es gibt das Problem der Nichtkonvexität; Die Oberfläche, die ich beschrieben habe, wird zahlreiche lokale Minima haben, und daher können Algorithmen zur Gradientenabsenkung in diesen Minima "hängen bleiben", während eine tiefere / tiefere / bessere Lösung in der Nähe liegen kann. Dies ist wahrscheinlich der Fall, wenn während aller Trainingsiterationen unverändert bleibt, da die Oberfläche für ein bestimmtes . Alle Funktionen sind statisch, einschließlich der verschiedenen Minima.XX

Eine Lösung hierfür ist das Minibatch-Training in Kombination mit dem Mischen. Durch Mischen der Zeilen und Trainieren nur einer Teilmenge von ihnen während einer bestimmten Iteration ändert sich mit jeder Iteration, und es ist tatsächlich durchaus möglich, dass keine zwei Iterationen über die gesamte Sequenz von Trainingsiterationen und -epochen mit genau demselben . Der Effekt ist, dass der Löser leicht aus einem lokalen Minimum heraus "springen" kann. Stellen Sie sich vor, dass der Solver bei Iteration mit dem Training von Mini-Batch in einem lokalen Minimum stecken bleibt . Dieses örtliche Minimum entspricht das bei einem bestimmten bewertet wird; wir nennen esXXiXiXi(Wi). Bei der nächsten Iteration ändert sich die Form unserer Verlustfläche tatsächlich, weil wir , d. , kann einen ganz anderen Wert und es ist durchaus möglich, dass es nicht einem lokalen Minimum entspricht! Wir können jetzt ein Gradienten-Update berechnen und mit dem Training fortfahren. Um es klar : Die Form von sich im Allgemeinen von der von . Beachten Sie, dass ich mich hier auf die Verlustfunktion die an einem Trainingssatz ausgewertet wurde . es ist eine vollständige Oberfläche, die über alle möglichen Werte vonXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXW, Anstatt die Bewertung dieser Verlust für einen bestimmten Wert von (die nur ein Skalar) . Beachten Sie auch, dass bei der Verwendung von Mini-Batches ohne Mischen die Verlustoberflächen immer noch zu einem gewissen Grad "diversifiziert" werden, der Solver jedoch nur eine begrenzte (und relativ kleine) Anzahl eindeutiger Fehleroberflächen erkennt (insbesondere, dass dies der Fall ist) derselbe exakte Satz von Minibatches - und damit Verlustoberflächen - während jeder Epoche).W

Ich habe bewusst darauf verzichtet, Mini-Batch-Größen zu diskutieren, da es zu diesem Thema eine Million Meinungen gibt und es erhebliche praktische Auswirkungen hat (eine stärkere Parallelisierung kann mit größeren Batches erreicht werden). Ich halte jedoch Folgendes für erwähnenswert. Da durch Berechnen eines Wertes für jede Zeile von (und Summieren oder des Durchschnitts, dh eines kommutativen Operators) für einen gegebenen Satz von Gewichtsmatrizen ausgewertet wird , hat die Anordnung der Zeilen von keine Auswirkung, wenn Vollwert verwendet wird. Batch-Gradientenabstieg (dh, wenn jeder Batch das volle hat und Iterationen und Epochen dasselbe sind).XWX X

Josh
quelle
+1. Diese Antwort ist technisch besser zu erklären als die andere Antwort mit einer höheren Anzahl von Upvotes.
Gokul NC
29

Das Mischen von Daten dient dazu, die Varianz zu verringern und sicherzustellen, dass die Modelle allgemein bleiben und weniger überanpassungsfähig sind.

Der offensichtliche Fall, in dem Sie Ihre Daten mischen würden, ist, wenn Ihre Daten nach Klasse / Ziel sortiert sind. Hier möchten Sie mischen, um sicherzustellen, dass Ihre Trainings- / Test- / Validierungssätze für die Gesamtverteilung der Daten repräsentativ sind.

Für die Batch-Gradientenabsenkung gilt die gleiche Logik. Die Idee hinter der Batch-Gradientenabnahme ist, dass Sie durch Berechnung des Gradienten für einen einzelnen Batch in der Regel eine ziemlich gute Schätzung des "wahren" Gradienten erhalten. Auf diese Weise sparen Sie Rechenzeit, da Sie nicht jedes Mal den "wahren" Gradienten über den gesamten Datensatz berechnen müssen.

Sie möchten Ihre Daten nach jeder Epoche mischen, da Sie immer das Risiko haben, Stapel zu erstellen, die nicht für den Gesamtdatensatz repräsentativ sind. Daher ist Ihre Schätzung des Gradienten nicht korrekt. Durch das Mischen Ihrer Daten nach jeder Epoche wird sichergestellt, dass Sie nicht mit zu vielen fehlerhaften Stapeln "hängen bleiben".

Bei einem regulären stochastischen Gradientenabstieg möchten Sie, wenn jeder Stapel die Größe 1 hat, Ihre Daten nach jeder Epoche mischen, um Ihr Lernen allgemein zu halten. In der Tat wird, wenn der Datenpunkt 17 immer nach dem Datenpunkt 16 verwendet wird, sein eigener Gradient mit den Aktualisierungen des Datenpunkts 16 im Modell vorgespannt. Indem Sie Ihre Daten mischen, stellen Sie sicher, dass jeder Datenpunkt eine "unabhängige" Änderung im Modell hervorruft, ohne von denselben Punkten beeinflusst zu werden.

Valentin Calomme
quelle
1
Wie ich bereits erklärt habe, mischen Sie Ihre Daten, um sicherzustellen, dass Ihre Trainings- / Testsätze repräsentativ sind. Bei der Regression verwenden Sie das Mischen, um sicherzustellen, dass Sie nicht nur mit den kleinen Werten trainieren. Mischen ist meistens ein Schutz, schlimmster Fall, es ist nicht nützlich, aber Sie verlieren nichts, wenn Sie es tun. Beim stochastischen Gradientenabstieg möchten Sie erneut sicherstellen, dass das Modell aufgrund der Reihenfolge, in der Sie die Daten
eingegeben haben
2
Ich denke, dass Shuffling die Varianz verringert und die Tendenz zur Überanpassung der Daten verringert. Stellen Sie sich vor, wir würden einen vollständigen Gradientenabstieg durchführen, sodass Epochen und Iterationen dasselbe sind. Dann gibt es ein globales Minimum (nicht, dass wir es unbedingt finden können), das unser Löser zu lokalisieren versucht. Wenn wir MSE Loss verwenden, werden wir die Verzerrung minimieren, wenn wir diese Lösung jedes Mal erreichen könnten. Da sich dieses globale Minimum jedoch wahrscheinlich an einem anderen Ort für verschiedene Trainingssätze befindet, wird diese Lösung tendenziell eine hohe Varianz aufweisen.
Josh
2
Durch das Mischen konvergieren wir weniger wahrscheinlich zu einer Lösung, die im globalen Minimum für den gesamten Trainingssatz liegt (höhere Verzerrung), sondern finden eher eine Lösung, die sich besser verallgemeinert (geringere Varianz).
Josh
7

Angenommen, die Daten werden in einer bestimmten Reihenfolge sortiert. Zum Beispiel ein Datensatz, der anhand seiner Klasse sortiert ist. Wenn Sie also Daten für das Training, die Validierung und den Test auswählen, ohne dieses Thema zu berücksichtigen, wählen Sie jede Klasse für unterschiedliche Aufgaben aus, und der Vorgang schlägt fehl.

Um diese Art von Problemen zu verhindern, besteht eine einfache Lösung darin, die Daten zu mischen, um verschiedene Sätze von Trainings-, Validierungs- und Testdaten zu erhalten.

Antworten auf diesen Beitrag können eine Lösung für Ihre Frage sein.

Oh mein Gott
quelle
1
@Media Die am häufigsten verwendete Antwort unter dem angegebenen Link lautet: "Durch Mischen von Minibatches werden die Farbverläufe variabler.
Dies
Eigentlich habe ich das in der Zeitung von SGD gesehen, aber wie die Autoren der Zeitung behaupteten, ist es der Grund für die Konvergenz, nicht das Mischen. Ich habe den Link gesehen und bezweifle es ein bisschen. Für mehr Klarheit schauen Sie sich dieses erstaunliche Papier an. Die Autoren haben den Punkt dort erwähnt, aber wie Sie sehen werden, gibt es keinen genauen Grund zum Mischen
Medien
1

Wir müssen nur für Minibatch / SGD mischen, nicht für Batch-Gradientenabstieg.

Wenn keine Daten gemischt werden, können die Daten sortiert werden, oder ähnliche Datenpunkte werden nebeneinander liegen, was zu einer langsamen Konvergenz führt:

  • Ähnliche Samples erzeugen ähnliche Oberflächen (1 Oberfläche für die Verlustfunktion für 1 Sample) -> Gradient zeigt in ähnliche Richtungen, aber diese Richtung zeigt selten auf das Minimum -> es kann sein, dass der Gradient sehr weit vom Minimum entfernt ist
  • "Beste Richtung": der Durchschnitt aller Steigungen aller Oberflächen (Batch-Gefälle), der direkt auf die Mindesthöhe zeigt
  • "Minibatch-Richtung": Der Durchschnitt einer Vielzahl von Richtungen zeigt näher an das Minimum, obwohl keine von ihnen auf das Minimum zeigt
  • „1-Probe-Richtung“: Zeigen Sie im Vergleich zum Minibatch weiter auf das Minimum

Ich habe hier die Darstellung der L-2-Verlustfunktion für die lineare Regression y=2x gezeichnet

Herzog
quelle
1

Da durch Berechnen eines Wertes für jede Zeile von (und Summieren oder des Durchschnitts, dh eines kommutativen Operators) für einen gegebenen Satz von Gewichtsmatrizen ausgewertet wird , hat die Anordnung der Zeilen von keine Auswirkung, wenn Vollwert verwendet wird. Batch-GefälleXWX

Ergänzend zur Antwort von @ Josh möchte ich hinzufügen, dass aus dem gleichen Grund vor dem Stapeln gemischt werden muss. Ansonsten erhalten Sie die gleiche begrenzte Anzahl von Flächen.

Gerardo Consuelos
quelle
Vielen Dank und herzlich willkommen in unserer Community.
Medien
1

Um die bestmögliche Genauigkeit des Modells zu erzielen, wird immer empfohlen, dass die Trainingsdaten alle Arten von Daten enthalten.

Das Mischen von Trainingsdaten hilft uns, dieses Ziel zu erreichen.

Vipin Bansal
quelle
1

Durch Mischen der Zeilen und Trainieren nur einer Teilmenge von ihnen während einer gegebenen Iteration ändert sich 𝑋 mit jeder Iteration, und es ist tatsächlich durchaus möglich, dass keine zwei Iterationen über die gesamte Sequenz von Trainingsiterationen und -epochen mit genau derselben durchgeführt werden 𝑋

Ankit DEsai
quelle