――Ich möchte die vier Optimierungsmethoden für neuronale Netze zusammenfassen, die ich kürzlich durch das Lesen des Buches "Neuronale Netze von Grund auf neu" gelernt habe. ――Basisch basiert es auf einem Buch, aber ** Wie können Sie es sich vorstellen? Dies ist ein Artikel, der meine persönliche Interpretation mit Schwerpunkt auf ** zusammenfasst. Daher enthält es keine genauen Formeln oder Anwendungen. ――Wenn Sie im Internet suchen, finden Sie detailliertere Erklärungen als in diesem Artikel. Andererseits gibt es einige Artikel, die fast dieselben Erklärungen wie Bücher in Qiita zusammenfassen. Daher ist es sinnvoll, Ihre eigene Interpretation zusammenzufassen. Ich dachte, es gäbe ein wenig, also kam ich, um einen Artikel zu schreiben ――Ich bin ziemlich voreingenommen gegenüber der Erklärung der Methode namens Momentum, aber bitte vergib mir. .. ――Ich bin ein Anfänger und Anfänger in Bezug auf neuronale Netze, daher würde ich mich freuen, wenn Sie Fehler oder Ratschläge kommentieren könnten.
"Neuronales Netz" und "tiefes Lernen", dass selbst normale Menschen, die nicht auf maschinelles Lernen spezialisiert sind, nur noch ihre Namen kennen. Es gehört zum maschinellen Lernen und wird häufig zur Bilderkennung usw. verwendet (wie bei der Google-Bildsuche). Das wahrscheinlich meistgelesene Buch in Japan beim Studium dieses neuronalen Netzwerks ist "** Deep Learning from Grund **". Da es gut gelesen wird, denke ich, dass es ein sehr gutes Einführungsbuch ist. (Was ist es?)
Der Zweck des maschinellen Lernens besteht nicht nur in neuronalen Netzen, sondern darin, auf der Grundlage von Trainingsdaten (Lehrerdaten) zu lernen und unbekannte Daten vorherzusagen. In Bezug auf die Bilderkennung wird beispielsweise eine große Anzahl von Katzenbildern gelernt, und wenn ein neues Bild angezeigt wird, lautet die Antwort "ob dieses Bild oder eine Katze?". Beim normalen maschinellen Lernen gibt es eine Einschränkung, dass "Merkmale zum Lernen angegeben werden müssen", aber beim tiefen Lernen besteht der Vorteil, dass Merkmale aus Bildern ohne Erlaubnis während des Lernens gefunden werden können.
Was genau ist Lernen? Mit anderen Worten ist es die Aufgabe, den optimalen Gewichtsparameter zu finden. Sobald die optimalen Parameter gefunden sind, kann die richtige Antwort aus unbekannten Daten vorhergesagt werden. Dies nennt man ** optimieren **. Definieren Sie zur Optimierung eine Funktion, die als Verlustfunktion (Kostenfunktion) bezeichnet wird, und suchen Sie nach dem Parameter, der sie minimiert. Der minimale quadratische Fehler und LogLoss (Schnittpunktentropiefehler) werden als Verlustfunktion verwendet. Je kleiner der Wert, desto besser die Klassifizierung (oder Regression). Wie finden Sie den kleinsten Ort für die Verlustfunktion? Nachdenken über. In diesem Buch werden die folgenden vier Optimierungsmethoden vorgestellt.
SGD Abkürzung für Gradient Stochastic Descent. Dies ist die Standardoptimierungsmethode und aktualisiert das Gewicht mit der folgenden Formel.
\boldsymbol{W} \leftarrow \boldsymbol{W} - \eta\frac{\partial{L}}{\partial{\boldsymbol{W}}}
Berechnen Sie die Steigung der Verlustfunktion und aktualisieren Sie sie so, dass die Verlustfunktion kleiner wird. Die Idee ist, dass Sie, wenn Sie den Hang hinuntergehen, schließlich den tiefsten Punkt erreichen. $ \ Eta $ heißt Lernrate, und wenn es zu klein ist, ist es schwer zu erreichen, und wenn es zu groß ist, bewegt es sich zu viel auf einmal und fliegt in eine lächerliche Richtung. Sie müssen also zuerst den entsprechenden Wert festlegen. Persönlich denke ich, dass es wie Golf ist, und wenn Sie es mit nur wenig Kraft schlagen, werden Sie das Loch nie erreichen, aber wenn Sie es zu hart schlagen, werden Sie durch das Loch gehen und in eine lächerliche Richtung gehen. Ich werde am Ende. Das ist SGD, aber es funktioniert nicht immer. Betrachten Sie beispielsweise eine Funktion wie $ f (x, y) = \ frac {1} {20} x ^ {2} + y ^ {2} $. Es sieht aus wie eine Schale, die in Richtung der x-Achse ausgestreckt ist. Das Ergebnis des Versuchs von SGD mit dieser Funktion ist wie folgt.
Da die Neigung in vertikaler Richtung steil ist, können Sie sehen, dass sie in Richtung des Ursprungs (dem Punkt, an dem die Verlustfunktion am kleinsten ist) geht, während sie vertikal gezackt ist. Es ist ein ziemlich ineffizienter Schritt. Es gibt drei Möglichkeiten, dies zu verbessern.
Momentum Momentum ist die Menge an Bewegung, die in der Physik auftritt. Schauen wir uns zunächst die Gewichtsaktualisierungsformel an.
\boldsymbol{v} \leftarrow \alpha\boldsymbol{v} - \eta\frac{\partial{L}}{\partial{\boldsymbol{W}}}\\
\boldsymbol{W} \leftarrow \boldsymbol{W} +\boldsymbol{v}
Wenn Sie sich nur die Formel ansehen, kommt sie möglicherweise nicht zu Ihnen. Schauen wir uns also zunächst das Ergebnis an, das auf die vorherige Funktion angewendet wurde.
Es ist eine sanfte Bewegung. Irgendwie zeichnet es eine Flugbahn wie ein Ball, der in einer Schüssel rollt, was natürlich ist. Warum läuft es reibungslos? Ich habe unten ein einfaches konzeptionelles Diagramm geschrieben.
Betrachten Sie ein Beispiel. Angenommen, ① repräsentiert das erste Lernen und ② repräsentiert das zweite Lernen. Angenommen, das Ergebnis der ersten Berechnung von $ \ frac {\ Partial {L}} {\ Partial {\ Boldsymbol {W}}} $ ist ein Aufwärtsvektor, wie in ① gezeigt. Angenommen, Sie bewegen sich in diese Richtung, indem Sie die Größe von $ \ eta $ multiplizieren. Erwägen Sie nun, das Gewicht von ② zu aktualisieren. Als Ergebnis der erneuten Berechnung der Differenzierung von L nehmen wir an, dass sich die Richtung der Abfahrt nach rechts anstatt nach oben geändert hat. Im Fall von SGD gehen Sie diesmal mit ② auf die gleiche Weise wie mit ① nach rechts. Infolgedessen bewegt es sich im rechten Winkel nach rechts. Dies ist die Ursache für das Rasseln von SGD, und die Unnatürlichkeit befindet sich im Orbit. Lassen Sie uns hier die Momentum-Formel überprüfen. Die Aktualisierungsformel enthält einen Abschnitt $ \ alpha \ {v} $. Dies entspricht $ \ frac {\ partiell {L}} {\ partiell {\ boldsymbol {W}}} $ zum Zeitpunkt von ①. Nehmen wir zur Vereinfachung $ \ alpha = 1 $ an. Dann können Sie sehen, dass der Teil $ \ alpha \ boldsymbol {v} - \ eta \ frac {\ Partial {L}} {\ Partial {\ Boldsymbol {W}}} $ die Summe der Vektoren ① und ② ist. Ich werde. Dann geht die Richtung von ② in einem Winkel von 45 Grad nach rechts statt nach rechts. Auf diese Weise ** wird die Bewegung glatt, indem die Neigung der vorherigen Gewichtsaktualisierung in der nächsten Gewichtsaktualisierung berücksichtigt wird. ** **. α ist ein Parameter dafür, wie stark die Neigung zum Zeitpunkt der letzten Aktualisierung beeinflusst wird. Wenn α 0 ist, wird die Neigung zum Zeitpunkt der vorherigen Gewichtsaktualisierung überhaupt nicht wiedergegeben, sodass sie der SGD in die richtige Richtung entspricht.Als nächstes überlegen Sie, warum diese Technik als Momentum bezeichnet wird. In der Physik (Newtonsche Mechanik) ist der Impuls das Produkt aus Masse (m) und Geschwindigkeitsvektor ($ \ boldsymbol {v}
m\boldsymbol{v_{before}}+F\Delta{t} = m\boldsymbol{v_{after}}
Lassen Sie uns auch darüber nachdenken
Es zeigt, wie sich die Bewegung eines Objekts, das sich mit einem Impuls von $ m \ boldsymbol {v_ {before}} $ nach oben bewegt, ändert, wenn rechts ein Kraftprodukt angewendet wird. Wenn die Größe des Kraftprodukts mit dem anfänglichen Impuls übereinstimmt, wird das Objekt in einem Winkel von 45 Grad nach rechts oben gedreht, und wenn die Größe des Kraftprodukts größer ist, wird das Objekt nach rechts gedreht. Sie können sehen, dass dies dem obigen konzeptionellen Diagramm sehr ähnlich ist. Die von Momentum gezeichnete Flugbahn wurde früher als ** wie ein in einer Schüssel rollender Ball ** beschrieben, aber da sie eine Formel hat, die dem physikalischen Gesetz der tatsächlichen Dynamik ähnlich ist, ist eine solche Flugbahn Sie können sehen, dass Das Bild ist ** Selbst wenn plötzlich eine Kraft auf die rechte Seite ausgeübt wird, wo Sie sich nach oben bewegen, können Sie sich nicht plötzlich im rechten Winkel drehen! Fühlt es sich so an, als hätten Sie ** auf das Gewichtsupdate angewendet?
AdaGrad Die Erklärung von Momentum ist sehr lang geworden, aber ich möchte die verbleibenden Methoden kurz erläutern. Als ich SGD erklärte, verglich ich das Gewichtsupdate mit Golf. SGD-Updates mit der gleichen Lernrate für jedes Lernen. Mit anderen Worten, beim Golf schlagen Sie den Ball jedes Mal mit der gleichen Stärke. Beim Golf haben Sie jedoch den ersten Schlag hart getroffen, um die Flugstrecke zu verlängern, und wenn sich das Loch nähert, haben Sie ihn schwächer getroffen und fein abgestimmt, oder? Gleiches kann auf neuronale Netze angewendet werden. Mit anderen Worten, das Gewicht wird zum Zeitpunkt des ersten Lernens stark aktualisiert, und die zu aktualisierende Größe wird allmählich verringert. Diese Technik heißt AdaGrad. Schauen wir uns die folgende Formel an.
\boldsymbol{h} \leftarrow \boldsymbol{h} + \left(\frac{\partial{L}}{\partial{\boldsymbol{W}}}\right)^{2}\\
\boldsymbol{W} \leftarrow \boldsymbol{W} -\frac{1}{\sqrt{\boldsymbol{h}}}\eta\frac{\partial{L}}{\partial{\boldsymbol{W}}}
Sie teilen es durch $ \ sqrt {\ boldsymbol {h}} $ in der folgenden Formel. Dies bedeutet, dass jedes Mal, wenn Sie das Gewicht aktualisieren, die Größe des Updates abnimmt. In der obigen Formel bedeutet $ \ left (\ frac {\ partielle {L}} {\ partielle {\ boldsymbol {W}}} \ right) ^ {2} $ das Quadrat aller Elemente der Matrix. .. (Da es kein inneres Produkt ist, wird es kein Skalar) Mit anderen Worten, je steiler die Steigung ist, desto größer ist das aktualisierte Gewicht und desto kleiner ist es. Das macht sehr viel Sinn. Das Folgende ist die tatsächliche Anwendung auf die vorherige Funktion.
Dieses Beispiel scheint sehr gut zu funktionieren.
Adam Abschließend möchte ich Adam vorstellen. Adam ist einfach eine Menge Momentum und Ada Grad. Ich werde hier nicht ins Detail gehen, einschließlich der Formeln. Wie üblich wird bei Anwendung auf eine Funktion die folgende Abbildung erhalten.
Dies ist auch ein gutes Gefühl im Vergleich zu SGD, und Sie können den Mindestwert erreichen.Recommended Posts