Die Anwendbarkeit des Batch- oder des stochastischen Gradientenabfalls hängt wirklich von der erwarteten Fehlervielfalt ab.
Bei Batch-Gefälle wird das Gefälle anhand des gesamten Datensatzes berechnet. Dies ist ideal für konvexe oder relativ glatte Fehlerverteiler. In diesem Fall bewegen wir uns etwas direkt in Richtung einer optimalen Lösung, entweder lokal oder global. Darüber hinaus wird der Batch-Gradientenabstieg bei einer annealten Lernrate schließlich das Minimum finden, das sich in seinem Anziehungsbecken befindet.
Der stochastische Gradientenabstieg (SGD) berechnet den Gradienten anhand einer einzelnen Stichprobe. Die meisten Anwendungen von SGD verwenden aus Gründen, die später noch erläutert werden, ein Minibatch aus mehreren Proben. SGD funktioniert für Fehlerverteiler mit vielen lokalen Maxima / Minima gut (vermutlich nicht gut, aber besser als Batch-Gradientenabnahme). In diesem Fall tendiert der etwas verrauschtere Gradient, der unter Verwendung der reduzierten Anzahl von Abtastwerten berechnet wird, dazu, das Modell aus den lokalen Minima in einen Bereich zu bewegen, der hoffentlich optimaler ist. Einzelne Samples sind sehr laut, während Minibatches dazu neigen, das Rauschen etwas zu reduzieren. Dadurch wird der Ruck bei Verwendung von Minibatches reduziert. Ein gutes Gleichgewicht ist erreicht, wenn die Minibatch-Größe klein genug ist, um einige der schlechten lokalen Minima zu vermeiden, aber groß genug, dass dies nicht der Fall ist. ' t Vermeiden Sie die globalen oder leistungsstärkeren lokalen Minima. (Dies setzt übrigens voraus, dass die besten Minima ein größeres und tieferes Anziehungsbecken haben und daher leichter zu fassen sind.)
Ein Vorteil von SGD ist, dass es viel schneller rechnet. Große Datenmengen können häufig nicht im RAM gespeichert werden, was die Vektorisierung erheblich beeinträchtigt. Vielmehr muss jede Probe oder Charge von Proben geladen, bearbeitet, die Ergebnisse gespeichert usw. werden. Minibatch-SGD wird andererseits normalerweise absichtlich klein genug gemacht, um rechnerisch nachvollziehbar zu sein.
In der Regel wird dieser Rechenvorteil genutzt, indem viel mehr SGD-Iterationen durchgeführt werden, was viel mehr Schritte als bei der herkömmlichen Batch-Gradientenabsenkung bedeutet. Dies führt in der Regel zu einem Modell, das dem sehr nahe kommt, das über den Batch-Gradientenabstieg oder besser gefunden werden würde.
Die Art und Weise, wie ich über SGD nachdenke, besteht darin, mir vorzustellen, dass ich einen Punkt habe, der meine Eingabeverteilung darstellt. Mein Modell versucht, diese Eingabeverteilung zu lernen. Um die Eingabeverteilung herum befindet sich ein schattierter Bereich, der die Eingabeverteilungen aller möglichen Minibatches darstellt, die ich abtasten könnte. Es ist normalerweise eine faire Annahme, dass die Minibatch-Eingabeverteilungen in der Nähe der tatsächlichen Eingabeverteilung liegen. Bei allen Schritten nimmt der Batch-Gradientenabstieg den steilsten Weg, um die tatsächliche Eingangsverteilung zu erreichen. SGD wählt dagegen einen zufälligen Punkt innerhalb des schattierten Bereichs und nimmt die steilste Route in Richtung dieses Punkts. Bei jeder Iteration wird jedoch ein neuer Punkt ausgewählt. Der Durchschnitt aller dieser Schritte entspricht in der Regel der tatsächlichen Eingabeverteilung.