Werden beim Deep Learning Zeilensuchmethoden eingesetzt? Warum nicht?

18

Viele Online-Tutorials befassen sich mit dem Gradientenabstieg und fast alle verwenden eine feste Schrittgröße (Lernrate ). Warum wird die Zeilensuche nicht verwendet (z. B. Backtracking-Zeilensuche oder exakte Zeilensuche)?α

Haitao Du
quelle
5
"Und fast alle verwenden eine feste Schrittgröße" - sind Sie sicher? Hyperparameter "Lernrate" sollen die Schrittweite den Gegebenheiten anpassen. Ein sehr beliebter Adam-Algorithmus passt die Schrittgröße an
Aksakal
1
hmm, tatsächlich adaptive Stufengrößen-Gradientenmethoden gibt es schon seit mindestens 2011, und sie werden sogar auf der Wikipedia-Seite für stochastische Gradientenabnahmen zitiert . Es sind nicht gerade heiße Neuigkeiten. Sogar Vanille-SGD wird fast immer mit einer Lernrate verwendet, die sich mit der Anzahl der Iterationen ( Zeitplan ) ändert . Nun wäre eine sehr gute Frage: Warum dominiert SGD die Deep Learning-Welt, auch wenn es so viele adaptive Gradientenabstiegsmethoden gibt? Die Frage ist viel weniger trivial, als es scheinen mag.
DeltaIV
1
Backtracking-Zeilensuche legt eine Richtung fest und sucht dann nach einer Möglichkeit, die Funktion zu reduzieren. Wenn Sie also nicht über eine intelligente Methode zur Auswahl der Suchrichtung verfügen, müssen Sie eine mühsame Optimierung vornehmen.
Alex R.
1
Ich sehe nicht, dass die Liniensuche für SGD Sinn macht (im Gegensatz zum [Batch] Gradientenabstieg) - daher würde ich sagen, dass dies der Grund ist.
Seanv507
3
Ich vermute, der Grund, warum die Liniensuche nicht sehr populär ist, ist die Stapelverarbeitung in Gradientenabstieg. Sie erhalten einen Stapel und berechnen dann den Gradienten. Es ist nicht sehr sinnvoll, die Linie hin und her zu bewegen, da das Rauschen im Farbverlauf zu hoch ist. Es ist besser, mit der nächsten Charge fortzufahren, während die Schrittgröße geglüht wird.
Aksakal

Antworten:

14

Der Vanille-Gefälle-Abstieg kann mithilfe von Liniensuchen zuverlässiger gemacht werden. Ich habe Algorithmen geschrieben, die dies tun, und es ergibt einen sehr stabilen Algorithmus (obwohl nicht unbedingt schnell).

Es macht jedoch fast keinen Sinn, nach stochastischen Gradientenmethoden zu suchen . Der Grund, warum ich das sage, ist, dass wir, wenn wir eine Zeilensuche durchführen, die auf der Minimierung der vollen Verlustfunktion basiert, sofort eine der Hauptmotivationen für stochastische Methoden verloren haben. Wir müssen nun für jedes Update die Full Loss-Funktion berechnen, deren Rechenaufwand in der Regel mit der Berechnung der vollständigen ersten Ableitung vergleichbar ist. Angesichts der Tatsache, dass wir die Berechnung des vollständigen Gefälles aufgrund von Rechenaufwand vermeiden wollten, ist es sehr unwahrscheinlich, dass wir die Berechnung der vollständigen Verlustfunktion in Ordnung bringen möchten.

Alternativ können Sie auch eine Zeilensuche basierend auf Ihrem zufällig ausgewählten Datenpunkt durchführen. Dies ist jedoch auch keine gute Idee. Dies sagt nichts darüber aus, ob Sie zu weit gegangen sind (was der Hauptvorteil der Liniensuche ist). Angenommen, Sie führen eine logistische Regression durch. Dann ist jedes Ergebnis einfach eine 0 oder 1, und für jede einzelne Probe erhalten wir trivial eine perfekte Trennung, sodass die optimale Lösung für unsere Regressionsparameter basierend auf der Probe von 1 trivial oder durch den Hauck-Donner-Effekt ist. Das ist nicht gut.-

BEARBEITEN

@DeltaIV weist darauf hin, dass dies auch für Mini-Chargen gilt, nicht nur für Einzelproben.

Cliff AB
quelle
4
sehr schön (+1), aber ich bin mir nicht sicher, warum Sie im letzten Beispiel über eine einzelne Probe sprechen. Ich bin damit einverstanden, dass die Berechnung der Zeilensuche auf der Basis eines Mini-Batches keinen Sinn macht, aber ein Mini-Batch enthält immer noch 512 Samples (normalerweise und wenn es um ImageNet geht): Natürlich gibt es keinen festen Wert für die Anzahl der Samples in einem Mini -Batch, aber 1 Probe Mini-Batches fühlen sich ein bisschen extrem. Haben Sie sie benutzt, um Ihre Meinung klarer zu machen, oder habe ich etwas verpasst?
DeltaIV
2
@ DeltaIV: Eine einzelne Stichprobe soll vor allem darüber Aufschluss geben, wie schlimm ein sehr einfaches Problem sein könnte. Wenn wir eine Minibatch-Analyse mit 512 Stichproben zur logistischen Regression mit mehr als 512 Kovariaten durchführen würden, stünden wir vor demselben Problem.
Cliff AB
10

In den Tutorials wird vermutlich von Gradientenabstieg gesprochen, da es sich um einen der einfachsten Algorithmen handelt, die zur Optimierung verwendet werden. Daher ist es leicht zu erklären. Da die meisten dieser Tutorials eher kurz sind, konzentrieren sie sich auf einfache Dinge. Es gibt mindestens mehrere gängige Optimierungsalgorithmen, die über die einfache Gradientenabnahme hinausgehen und für das Tiefenlernen verwendet werden. Tatsächlich verwenden die Menschen oft andere Algorithmen als den Gradientenabstieg, da sie normalerweise schneller konvergieren. Einige von ihnen weisen eine nicht konstante Lernrate auf (z. B. mit der Zeit abnehmend). Eine Übersicht über solche Algorithmen finden Sie im Artikel Eine Übersicht über Algorithmen zur Optimierung des Gradientenabstiegs von Sebastian Ruder (oder im Artikel von arXived ).

Tim
quelle
2
@ DeltaIV: Alle "anderen" ausgefallenen Methoden basieren auf SGD. Das Hauptproblem besteht darin, dass die anderen Methoden das lokale Wissen nutzen, um effizientere Sprünge zu erzielen, anstatt nur zufällige Stichprobenpunkte für die Berechnung des Gradienten zu verwenden. Aber SGD ist so einfach und schnell, und es ist für sich genommen nicht ganz schrecklich.
Alex R.
2
@AlexR. der Punkt ist weder, dass SGD einfach und / oder schnell ist. Einfachheit spielt keine Rolle, da alle anständigen Bibliotheken SGD, Adam, AdaGrad und RMSProp (und manchmal mehr) implementieren. Geschwindigkeit ist noch weniger wichtig, da die Zeit, die beispielsweise Adam für die Berechnung der Aktualisierungen auf Parameterebene benötigt, im Vergleich zur gesamten Trainingszeit eines Modells wie ResNet unendlich lang ist. Der einzige Punkt ist, dass SGD aus irgendeinem Grund, den wir heute nicht vollständig verstehen, besser verallgemeinert als sie. Also im Grunde , wenn Sie SOTA schlagen wollen, sind Sie oft gezwungen , es zu benutzen, oder zumindest , um es zu wechseln später während des Trainings.
DeltaIV
3
@ DeltaIV Sehr interessant. Ich habe das von Ihnen verlinkte Papier geöffnet und es verweist auf den Preprint von Wilson et al. 2017 für die Behauptung, dass SGD besser verallgemeinert als Adam usw .; Wenn Sie also sagen, dass es "bekannt" ist, meinen Sie, dass es seit ungefähr einem halben Jahr bekannt ist, oder?
Amöbe sagt Reinstate Monica
2
@ DeltaIV Danke. Ich lerne nicht viel selbst und war mir dessen überhaupt nicht bewusst. Etwa 2012, als ich Hintons Coursera-Vorlesungen sah, befürwortete er hauptsächlich RMSprop. In den letzten ein bis zwei Jahren hatte ich den Eindruck, dass jeder Adam verwendet (der laut Adam-Artikel RMSprop ersetzt). Als ich letztes Jahr mit Autoencodern spielte , stellte ich fest, dass Adam viel schneller arbeitet als SGD und seitdem nur davon ausgegangen, dass Adam heutzutage eine Standardoption ist.
Amöbe sagt Reinstate Monica
3
@CliffAB Ja, die Beziehung zwischen frühem Anhalten und Regularisierung ist für die kleinsten Quadrate klar erkennbar, bei denen die Gradientenabnahme auf der Basis von Eigenwerten erfolgt und kleine Eigenwerte die letzten sind, die konvergieren. Während die Kammstrafe auch kleine Eigenwerte benachteiligt. Ich hatte jetzt nur einen kurzen Blick auf Wilson et al. oben verlinkt, aber zumindest in ihrem kleinsten Quadrat Beispiel wird SGD gegen Adam nicht durch frühes gegen spätes Anhalten erklärt. Sie behaupten, dass sie zu unterschiedlichen Lösungen konvergieren.
Amöbe sagt Reinstate Monica