2017-07-20 3 views
1

Ich habe einige Reichweite und Berechnung und wenn ich richtig verstehe, Stochastic Gradientenabstieg - "Adam Optimiser" ist im Grunde gewöhnliche Gradientenabstieg, mit einem bestimmten, dass es zufällige Daten in kleineren Anteil mit Trainingsdatensatz auswählt, um NN gefangen zu vermeiden in der Lücke, die nicht unbedingt Mindestwert in Abstiegsfunktion widerspiegeln muss? DankeStochastische Gradientenabsenkung ist im Grunde gewöhnliche Gradientenabsenkung?

+0

Wird Ihre Frage in Wikipedia nicht behandelt? '' 'zu vermeiden, dass NN in der Lücke gefangen ist''' ist der geringste aller Gründe für diese Nutzung. Unterschiedliche Konvergenzeigenschaften und Speichernutzung sind viel wichtiger (und Ihr * in der Lücke gefangenes * ist noch nicht gut verstanden, obwohl dies auch für Konvergenz allgemein mit nicht-konvexen Verlusten gilt). Adam ist auch nicht Vanilla-SGD. Es ist eine Variante, die versucht, die Konvergenz (wie klassisches Momentum und Co) unter einigen Annahmen zu verbessern (es ist mehr oder weniger eine Art Filter). – sascha

+0

Danke Sascha. Ich habe nicht über den Speicherverbrauch nachgedacht. Richtig. – Makaroniiii

Antwort

0

Stochastic Gradient Descent wird im Allgemeinen mit Batch Gradient Descent nebeneinander gestellt. In Batch Modus, jede Funktion co zu aktualisieren - effizient des Eingangsmerkmalsvektor X, benötigen Sie eine Summierung über ALL die Aufzeichnungen Ihres Trainingsdatensatzes, Quelle: http://cs229.stanford.edu/notes/cs229-notes1.pdf

Repeat until convergence 
{ 
    θj := θj + α * summation(i=1 to m) (y - h(x)) x_j --> for every j 
} 

Die wichtige Sache hier ist, dass die Summierung über alle Datensätze für jedes Feature durchgeführt wird. Wenn Sie also 5000 Features/Attribute/Spalten Ihrer Daten haben, führen Sie die Summe 5000 mal für jeden Lauf aus.

Im Gegensatz dazu, wenn man sich stochastischen aussehen,

Loop 
{ 
    for i=1 to m, { 
     θj := θj + α( y(i) − h(x(i)) x(i) j (for every j). 
    } 
} 

Wesentlichen für jedes j, nur diese bestimmte Funktion oder einen Wert von X betrachtet. Das macht es schnell. Der Nachteil ist, dass es möglicherweise nicht die gleichen Minima wie Batch hat, oder globale Minima nicht erreicht werden, aber in der Praxis funktioniert es tendenziell besser.

Verwandte Themen