Basierend auf Was sollen wir tun, wenn eine auf DataScience gepostete Frage ein Duplikat einer auf CrossValidated geposteten Frage ist? Ich reposte meine Antwort auf dieselbe Frage, die bei CrossValidated gestellt wurde ( https://stats.stackexchange.com/a/311318/89653 ).
Hinweis: In dieser Antwort beziehe ich mich auf die Minimierung des Trainingsverlusts und gehe nicht auf das Beenden von Kriterien wie Validierungsverlust ein. Die Auswahl der Stoppkriterien hat keinen Einfluss auf die nachfolgend beschriebenen Prozesse / Konzepte.
Der Prozess des Trainings eines neuronalen Netzwerks besteht darin, den Minimalwert einer Verlustfunktion , wobei eine Matrix (oder mehrere Matrizen) von Gewichten zwischen Neuronen darstellt und den Trainingsdatensatz darstellt. Ich verwende einen Index für um anzuzeigen, dass unsere Minimierung von nur über den Gewichten auftritt (das heißt, wir suchen nach so dass minimiert ist), während festgelegt ist.LLL
Wenn wir nun annehmen, dass wir Elemente in (das heißt, es gibt Gewichte im Netzwerk), ist eine Oberfläche in einem dimensionalen Raum. Um ein visuelles Analogon zu erhalten, stellen Sie sich vor, dass wir nur zwei Neuronengewichte haben ( ). Dann hat eine einfache geometrische Interpretation: Es ist eine Oberfläche in einem dreidimensionalen Raum. Dies ergibt sich aus der Tatsache, dass für jede gegebene Matrix von Gewichten die Verlustfunktion an ausgewertet werden kann und dieser Wert die Höhe der Oberfläche wird.LL
Aber es gibt das Problem der Nichtkonvexität; Die Oberfläche, die ich beschrieben habe, wird zahlreiche lokale Minima haben, und daher können Algorithmen zur Gradientenabsenkung in diesen Minima "hängen bleiben", während eine tiefere / tiefere / bessere Lösung in der Nähe liegen kann. Dies ist wahrscheinlich der Fall, wenn während aller Trainingsiterationen unverändert bleibt, da die Oberfläche für ein bestimmtes . Alle Funktionen sind statisch, einschließlich der verschiedenen Minima.
Eine Lösung hierfür ist das Minibatch-Training in Kombination mit dem Mischen. Durch Mischen der Zeilen und Trainieren nur einer Teilmenge von ihnen während einer bestimmten Iteration ändert sich mit jeder Iteration, und es ist tatsächlich durchaus möglich, dass keine zwei Iterationen über die gesamte Sequenz von Trainingsiterationen und -epochen mit genau demselben . Der Effekt ist, dass der Löser leicht aus einem lokalen Minimum heraus "springen" kann. Stellen Sie sich vor, dass der Solver bei Iteration mit dem Training von Mini-Batch in einem lokalen Minimum stecken bleibt . Dieses örtliche Minimum entspricht das bei einem bestimmten bewertet wird; wir nennen esLL. Bei der nächsten Iteration ändert sich die Form unserer Verlustfläche tatsächlich, weil wir , d. , kann einen ganz anderen Wert und es ist durchaus möglich, dass es nicht einem lokalen Minimum entspricht! Wir können jetzt ein Gradienten-Update berechnen und mit dem Training fortfahren. Um es klar : Die Form von sich im Allgemeinen von der von . Beachten Sie, dass ich mich hier auf die Verlustfunktion die an einem Trainingssatz ausgewertet wurde . es ist eine vollständige Oberfläche, die über alle möglichen Werte vonLLLLL, Anstatt die Bewertung dieser Verlust für einen bestimmten Wert von (die nur ein Skalar) . Beachten Sie auch, dass bei der Verwendung von Mini-Batches ohne Mischen die Verlustoberflächen immer noch zu einem gewissen Grad "diversifiziert" werden, der Solver jedoch nur eine begrenzte (und relativ kleine) Anzahl eindeutiger Fehleroberflächen erkennt (insbesondere, dass dies der Fall ist) derselbe exakte Satz von Minibatches - und damit Verlustoberflächen - während jeder Epoche).
Ich habe bewusst darauf verzichtet, Mini-Batch-Größen zu diskutieren, da es zu diesem Thema eine Million Meinungen gibt und es erhebliche praktische Auswirkungen hat (eine stärkere Parallelisierung kann mit größeren Batches erreicht werden). Ich halte jedoch Folgendes für erwähnenswert. Da durch Berechnen eines Wertes für jede Zeile von (und Summieren oder des Durchschnitts, dh eines kommutativen Operators) für einen gegebenen Satz von Gewichtsmatrizen ausgewertet wird , hat die Anordnung der Zeilen von keine Auswirkung, wenn Vollwert verwendet wird. Batch-Gradientenabstieg (dh, wenn jeder Batch das volle hat und Iterationen und Epochen dasselbe sind).L