[PYTHON] Denken Sie grob über die Gradientenabstiegsmethode nach

Vorheriger Artikel Ich habe die Verlustfunktion verstanden, aber das allein definiert die Funktion immer noch und konvergiert den Wert (Verlust) nicht richtig. Ich habe nicht nach der Antwort gefragt.

Dieses Mal werde ich darüber sprechen, wie man die Antwort findet.

So konvergieren Sie den Wert

Wir werden die Erklärung der Verlustfunktion weglassen, aber am Ende müssen wir die Werte konvergieren. 801933de-d8ba-729f-9b2c-6bbe3bd64212.jpeg Suchen Sie in diesem Diagramm das "m", das den Verlust minimiert.

Sie erhalten die Antwort nicht auf einmal, sondern passen sie nach und nach an, um den Verlust zu überprüfen, und nehmen Anpassungen vor, um sie zu verkleinern. 9170a054-e922-46c3-88bf-0365be4df036.png

Dieser Teil "Stück für Stück anpassen" ist das Unheil, aber ich werde die Weisheit, über die große Menschen nachgedacht haben, auf verschiedene Weise nutzen.

Eine typische Methode ist wie diese, es gibt jedoch verschiedene Algorithmen, je nachdem, wie dies implementiert wird. Ich werde nicht auf Details eingehen, aber die wichtigsten Punkte sind die Genauigkeit der Werte und die Geschwindigkeit der Konvergenz.

Implementierung von TensorFlow

TensorFlow bereitet auch so viele vor.

Es ist schwer, alles zu verstehen, daher frage ich mich, ob es in Ordnung ist, wenn ich nur den im Tutorial verwendeten "Adam Optimizer" und "Gradient Descent Optimizer" kenne. "Adam Optimizer" ist der Adam-Algorithmus und "Gradient Descent Optimizer" ist die schnelle Abstiegsmethode.

Die Verwendung ist für beide gleich, geben Sie die Lernrate als Anfangswert an und übergeben Sie die Verlustfunktion an die Funktion "minimieren ()", um den Wert zu minimieren. Jeder Code sieht folgendermaßen aus:

train_step = tensorflow.train.AdamOptimizer(1e-4).minimize(cross_entropy)
train_step = tensorflow.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

Es ist leicht, den zu verwendenden Algorithmus zu ersetzen, aber es ist ein Versuch und Irrtum, zu entscheiden, wie hoch die Lernrate sein soll. .. .. ^^;

Wenn Sie dies tun, werden die Gewichtungsparameter automatisch so angepasst, dass der Wert der Verlustfunktion kleiner ist. Dies ist "Fehlerrückübertragung".

Wenn Sie mehr wissen wollen

Eine schwierige Geschichte über den Algorithmus für den Gradientenabstieg finden Sie im Artikel Vorgehensweise.

Recommended Posts

Denken Sie grob über die Gradientenabstiegsmethode nach
Denken Sie grob über die Verlustfunktion nach
[Python] Denken Sie ernsthaft über die M-1-Gewinnmethode nach.
Geben Sie das Ergebnis der Gradientenabstiegsmethode als Matplotlib-Animation aus
Denken Sie an das Problem der minimalen Änderung
Algorithmus für maschinelles Lernen (Gradientenabstiegsmethode)
Sattelpunktsuche mit der Gradientenmethode
Informationen zur Genauigkeit der Berechnungsmethode für das Umfangsverhältnis von Archimedes
Über den Test
Implementierung der Gradientenmethode 1
Denken Sie an selektive Schnittstellen in der Befehlszeile
Über die Warteschlange
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
In Python sortieren. Lassen Sie uns als nächstes über den Algorithmus nachdenken.
Denken Sie an das Rack und WSGI der nächsten Generation
Informationen zur Entfaltungsfunktion
Über den Servicebefehl
Über die Verwirrungsmatrix
Über das Besuchermuster
Denken Sie an die Analyseumgebung (Teil 1: Übersicht) * Stand Januar 2017