Der Hauptvorteil der Verwendung von Minibatch gegenüber dem vollständigen Datensatz beruht auf der Grundidee des stochastischen Gradientenabfalls 1 .
Beim Batch-Gefälle berechnen Sie das Gefälle über das gesamte Dataset und bilden einen Durchschnitt über möglicherweise eine große Menge an Informationen. Es braucht viel Gedächtnis, um das zu tun. Das eigentliche Handicap ist jedoch die Batch-Steigung, mit der Sie an einem schlechten Punkt (Sattelpunkt) landen.
In reinem SGD hingegen aktualisieren Sie Ihre Parameter, indem Sie den für eine einzelne Instanz des Datasets berechneten Gradienten (Minuszeichen) hinzufügen . Da es auf einem zufälligen Datenpunkt basiert, ist es sehr verrauscht und kann in eine Richtung weit vom Stapelgradienten abweichen. Das Rauschen ist jedoch genau das, was Sie bei der nicht-konvexen Optimierung wünschen, da es Ihnen hilft, Sattelpunkten oder lokalen Minima zu entkommen (Satz 6 in [2]). Der Nachteil ist, dass es schrecklich ineffizient ist und Sie den gesamten Datensatz viele Male durchlaufen müssen, um eine gute Lösung zu finden.
Die Minibatch-Methode ist ein Kompromiss, der bei jeder Gradientenaktualisierung genügend Rauschen erzeugt und gleichzeitig eine relativ schnelle Konvergenz erzielt.
1 Bottou, L. (2010). Maschinelles Lernen in großem Maßstab mit stochastischem Gefälle. In Proceedings of COMPSTAT'2010 (S. 177-186). Physica-Verlag HD.
[2] Ge, R., Huang, F., Jin, C. & Yuan, Y. (2015, Juni). Flucht aus dem Sattelpunkte-Online-Stochastikgradienten für die Tensor-Zersetzung. In COLT (S. 797-842).
EDIT:
Ich habe gerade diesen Kommentar auf Yann LeCuns Facebook gesehen, der eine neue Perspektive auf diese Frage bietet (ich weiß leider nicht, wie ich auf fb verlinken soll).
Training mit großen Minibatches ist gesundheitsschädlich. Noch wichtiger ist, es ist schlecht für Ihren Testfehler. Freunde lassen Freunde keine Minibatches größer als 32 verwenden. Seien wir ehrlich: Die einzigen , die seit 2012 auf Minibatch-Größen größer als 1 umgestellt haben, sind GPUs, die für Batch-Größen kleiner als 32 ineffizient sind. Das ist ein schrecklicher Grund. Es bedeutet nur, dass unsere Hardware zum Kotzen ist.
Er zitierte diesen Artikel, der vor einigen Tagen (April 2018) auf arXiv veröffentlicht wurde und der es wert ist, gelesen zu werden.
Dominic Masters, Carlo Luschi, Überarbeitung des Small Batch-Trainings für tiefe neuronale Netze , arXiv: 1804.07612v1
Aus dem Abstrakten,
Während die Verwendung großer Mini-Batches die verfügbare Rechenparallelität erhöht, wurde gezeigt, dass das Training in kleinen Batches eine verbesserte Generalisierungsleistung bietet ...
Die beste Leistung wurde durchweg für Kleinseriengrößen zwischen m = 2 und m = 32 erzielt, was im Gegensatz zu den jüngsten Arbeiten steht, die die Verwendung von Kleinseriengrößen in Tausenden befürworten.