Warum interessieren sich Forscher für neuronale Netze für Epochen?

69

Eine Epoche in stochastischer Gradientenabnahme ist definiert als ein einzelner Durchgang durch die Daten. Für jedes SGD-Minibatch werden k Proben gezogen, der Gradient berechnet und die Parameter aktualisiert. In der Epocheneinstellung werden die Muster ersatzlos gezogen.

Dies erscheint jedoch unnötig. Warum nicht jedes SGD-Minibatch so zeichnen, wie k zufällig aus dem gesamten Datensatz bei jeder Iteration zieht? Über eine große Anzahl von Epochen hinweg scheinen die kleinen Abweichungen, von denen Proben mehr oder weniger häufig gesehen werden, unwichtig zu sein.

Setzen Sie Monica wieder ein
quelle
1
+1 für die Frage, interessanterweise hatte ich fast genau die gleiche Frage, die ich stellen wollte!
Haitao Du
Anekdotische Beweise, aber ich habe kürzlich ein neuronales Ein-Schicht-Netzwerk unter Verwendung von SGD auf die MNIST-Daten angepasst, die eine Trainingsgröße von 50000 haben. Nach einem zufälligen Durchlauf war die Klassifizierungsgenauigkeit nicht viel höher als 30-40% und die log-Wahrscheinlichkeit war eindeutig nicht konvergiert. Also wiederholte ich den Vorgang für weitere 30 Epochen, was zu einer Genauigkeit von über 90% führte. Zumindest am Gegenbeispiel hat mir das gezeigt, dass sie notwendig sein können.
Tomka
6
@tomka Dies scheint den Nachweis zu erbringen, dass mehrere Durchläufe über die Daten erforderlich sind, was mit der hier vorgeschlagenen Methode vereinbar ist: Zeichnen Sie weiterhin Stichproben pro Trainingsiteration und Übelkeit. k
Setzen Sie Monica
1
Eine weitere interessante Frage wäre: Wird sich die Bestellung von Kleinserien auch auf die Überanpassung auswirken?
Kh40tiK
3
@Pinocchio Die SGD-Standardpraxis ist die ersatzlose Probenahme (bis der Probenpool erschöpft ist und an diesem Punkt eine neue Epoche mit allen Daten beginnt). Meine Frage ist, warum es keine Probenahme mit Ersatz verwendet. Es stellt sich heraus, dass eine Antwort darin besteht, dass durch ersatzloses Abtasten die Konvergenzrate für das Modell verbessert wird.
Setzen Sie Monica am

Antworten:

60

Neben Francks Antwort zu praktischen Aspekten und Davids Antwort zur Betrachtung kleiner Untergruppen - beides wichtige Punkte - gibt es in der Tat einige theoretische Gründe, die Stichprobe ersatzlos zu bevorzugen. Der Grund hängt vielleicht mit Davids Punkt zusammen (der im Wesentlichen das Problem des Kuponsammlers ist ).

2009 verglich Léon Bottou die Konvergenzleistung mit einem bestimmten Textklassifizierungsproblem ( ).n=781,265

Bottou (2009). Seltsamerweise schnelle Konvergenz einiger Algorithmen für den stochastischen Gradientenabstieg . Ablauf des Symposiums für Lern- und Datenwissenschaften. ( pdf des Autors )

Er trainierte eine Support-Vektor-Maschine über SGD mit drei Ansätzen:

  • Zufällig : Bei jeder Iteration werden Zufallsstichproben aus dem gesamten Datensatz gezogen.
  • Zyklus : Mischen Sie den Datensatz, bevor Sie mit dem Lernprozess beginnen, und durchlaufen Sie ihn dann nacheinander, sodass Sie die Beispiele in jeder Epoche in derselben Reihenfolge sehen.
  • Mischen : Mischen Sie den Datensatz vor jeder Epoche neu, sodass jede Epoche in einer anderen Reihenfolge abläuft.

Er empirisch die Konvergenz untersucht , wobei die Kostenfunktion ist, die Parameter in Schritt der Optimierung und die Erwartung ist , über die zugewiesenen Shuffling Chargen.E[C(θt)minθC(θ)]θ t tCθtt

  • Für Random lag die Konvergenz ungefähr in der Größenordnung von (wie zu diesem Zeitpunkt von der bestehenden Theorie erwartet).t1
  • Zyklus erhaltene Konvergenz in der Größenordnung von (wobei aber abhängig von der Permutation variiert, zum Beispiel für seine Abbildung 1). & agr; > 1 & agr; & ap ; 1,8tαα>1α1.8
  • Shuffle war chaotischer, aber die bestangepasste Linie ergab , viel schneller als Random.t2

Dies ist seine Abbildung 1, die Folgendes veranschaulicht: Darstellung der Konvergenz bei gegebenen Raten

Dies wurde später theoretisch durch das Papier bestätigt:

Gürbüzbalaban, Ozdaglar und Parrilo (2015). Warum zufälliges Ummischen den stochastischen Gradientenabstieg schlägt . arXiv: 1510.08560 . ( Video des geladenen Vortrags auf der NIPS 2015 )

Ihr Beweis gilt nur für den Fall, dass die Verlustfunktion stark konvex ist, dh nicht für neuronale Netze. Es ist jedoch zu erwarten, dass ähnliche Überlegungen auf den Fall des neuronalen Netzwerks zutreffen (der viel schwieriger zu analysieren ist).

Dougal
quelle
3
Dies ist eine sehr aufschlussreiche Antwort. Vielen Dank für Ihren Beitrag.
Setzen Sie Monica
1
Entschuldigung für die Unwissenheit, aber macht es Ihnen etwas mehr aus, den Unterschied zwischen den drei zu erklären? Insbesondere bin ich verwirrt über Random, wenn Sie "sample" sagen, was meinen Sie damit? Ich weiß, dass dies nicht das ist, worauf Sie sich beziehen, aber der Standard-Neural Net-Mini-Batch-SGD tastet normalerweise Batches ab, ohne sie bei jeder Iteration zu ersetzen. Ist es das, was Random macht? Wenn ja, wie unterscheidet sich das von Shuffle?
Pinocchio
1
Nachdem ich nun alle drei nachgelesen habe, scheint der gleiche Algorithmus zu sein. Was ist der Unterschied, ob der Datensatz gemischt wird oder nicht und wie oft, wenn die Stapel für SGD ohnehin immer zufällig sind?
Pinocchio
3
@Pinocchio Stellen Sie sich einen Datensatz mit vier Klageliedern vor. Zufällig könnte ACADBBCA gehen; Jeder Eintrag ist völlig zufällig. Zyklus könnte BDAC gehen BDAC BDAC; Es wählt eine Reihenfolge für jede Epoche und wiederholt diese dann. Shuffle könnte BDAC ADCB CBAD sein; es geht in Epochen, aber jede ist zufällig. Bei dieser Analyse werden keine Minibatches verwendet, sondern nur SGD-Werte für jeweils ein Element.
Dougal
Das ist eine großartige Antwort. Danke dir!
DankMasterDan
24

Unter Performance-Gesichtspunkten mit einem großen Trainingssatz ist dies in der Tat ziemlich unnötig, aber die Verwendung von Epochen kann praktisch sein, z. B .:

  • es gibt eine ziemlich gute Metrik: "Das neuronale Netzwerk wurde für 10 Epochen trainiert" ist eine klarere Aussage als "Das neuronale Netzwerk wurde für 18942 Iterationen trainiert" oder "Das neuronale Netzwerk wurde für 303072 Samples trainiert".
  • Während der Trainingsphase sind genügend zufällige Dinge im Gange: zufällige Gewichtsinitialisierung, Mischen im Minibatch, Abbruch usw.
  • es ist einfach zu implementieren
  • Es wird vermieden, sich zu fragen, ob das Trainingsset groß genug ist, um keine Epochen zu haben

[1] gibt einen weiteren Grund an, der angesichts der heutigen Computerkonfiguration nicht so relevant ist:

Wie bei jedem stochastischen Gradientenabstiegsverfahren (einschließlich des Minibatch-Falls) ist es für die Effizienz des Schätzers wichtig, dass jedes Beispiel oder Minibatch ungefähr unabhängig abgetastet wird. Da der wahlfreie Zugriff auf Speicher (oder, noch schlimmer, auf die Festplatte) teuer ist, besteht eine gute Annäherung, die als inkrementeller Gradient bezeichnet wird (Bertsekas, 2010) darin, die Beispiele (oder Minibatches) in einer festen Reihenfolge zu besuchen, die ihrer Reihenfolge im Speicher entspricht oder disk (Wiederholung der Beispiele in derselben Reihenfolge in einer zweiten Epoche, wenn wir uns nicht im reinen Online-Fall befinden, in dem jedes Beispiel nur einmal besucht wird).In diesem Zusammenhang ist es sicherer, wenn die Beispiele oder Mini-Chargen zuerst in zufälliger Reihenfolge aufgeführt werden (um dies sicherzustellen, kann es hilfreich sein, die Beispiele zuerst zu mischen). Eine schnellere Konvergenz wurde beobachtet, wenn die Reihenfolge, in der die Minibatches besucht werden, für jede Epoche geändert wurde. Dies kann einigermaßen effizient sein, wenn der Trainingssatz im Computerspeicher gespeichert ist.


[1] Bengio, Yoshua. " Praktische Empfehlungen für das gradientenbasierte Training tiefer Architekturen. " Neuronale Netze: Tricks of the Trade. Springer Berlin Heidelberg, 2012. 437-478.

Franck Dernoncourt
quelle
1
k
1
@Sycorax Sampling ohne Ersatz, obwohl es natürlich nicht unabhängig ist, ist "ungefähr unabhängig" in dem Sinne, dass es austauschbar ist . Unter dem Gesichtspunkt der Ausbildung eines Klassifikators, der sich nicht allzu sehr für einen Datenpunkt interessiert, ist diese Austauschbarkeit definitiv ziemlich nahe an "ungefähr unabhängig".
Dougal
18

Ich bin etwas anderer Meinung, dass es offensichtlich keine Rolle spielt. Nehmen wir an, es gibt eine Million Trainingsbeispiele und wir nehmen zehn Millionen Proben.

In R können wir schnell sehen, wie die Verteilung aussieht

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

binomisches PMF

Einige Beispiele werden mehr als 20 Mal besucht, während 1% von ihnen höchstens 3 Mal besucht werden. Wenn der Trainingssatz sorgfältig ausgewählt wurde, um die erwartete Verteilung der Beispiele in realen Daten darzustellen, kann dies in einigen Bereichen des Datensatzes eine echte Auswirkung haben - insbesondere, wenn Sie damit beginnen, die Daten in kleinere Gruppen aufzuteilen.

Betrachten Sie den jüngsten Fall, in dem ein Wähler aus Illinois 30-fach übererprobt wurde und die Schätzungen des Modells für seine demografische Gruppe (und in geringerem Maße für die gesamte US-Bevölkerung) dramatisch verschoben hat. Wenn wir versehentlich "Ruffed Grouse" -Bilder, die an bewölkten Tagen mit geringer Schärfentiefe vor grünem Hintergrund aufgenommen wurden, überabtasten und die anderen Arten von Grouse-Bildern unterabtasten, ordnet das Modell diese irrelevanten Merkmale möglicherweise der Kategoriebeschriftung zu. Je mehr Möglichkeiten es gibt, die Daten aufzuteilen, desto mehr dieser Untergruppen gibt es und desto mehr Möglichkeiten für diese Art von Fehler gibt es.

David J. Harris
quelle
1
Ich denke nicht, dass es einen großen Unterschied in der Praxis für einen großen Trainingssatz machen würde, aber ich erwarte es definitiv mit einem kleineren Trainingssatz.
Franck Dernoncourt
5
@FranckDernoncourt Nun, der springende Punkt war, dass es für große Datensätze wichtig sein kann, wenn Sie kleine Untergruppen betrachten. Was bei großen
Datenmengen
Ich
2
107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)
2
Aha! Ich habe mich also geirrt.
Lahwran