Ich habe ein gutes Verständnis für neuronale Netze, Rückausbreitung und Kettenregeln, aber ich habe Schwierigkeiten, die automatische Differenzierung zu verstehen.
Das Folgende bezieht sich auf die automatische Differenzierung außerhalb des Kontextes der Rückausbreitung:
- Wie berechnet die automatische Differenzierung den Gradienten aus einer Matrix?
- Was sind die Voraussetzungen, um einen Gradienten zu berechnen? Muss eine Funktion angegeben werden?
- Was sind einige Anwendungsfälle dafür (andere als Back Propagation)?
- Warum ist es wichtig und welche Alternativen gibt es?
Vermisse ich etwas
tf.gradient
Methode, die ich betrachten sollte?Antworten:
In automatischen Differenzierungssystemen wird meistens ein Operator (z. B. Addition, Subtraktion) zusammen mit seiner Differenzierung definiert.
Nachdem Sie eine Funktion durch Stapeln einer Reihe von Operatoren geschrieben haben, kann das System selbst herausfinden, wie die entsprechenden Ableitungen berechnet werden sollen, normalerweise mithilfe von Berechnungsgraphen und der Kettenregel.
Die automatische Differenzierung ist für die gradientenbasierte Optimierung von Vorteil (z. B. das Trainieren eines neuronalen Netzwerks mithilfe des Gradientenabstiegs), da wir nicht die Mathematik erarbeiten, den Code implementieren und die Ableitungen von Fall zu Fall numerisch überprüfen müssen.
So definieren Sie einen Operator (op) in Theano und Tensorflow .
quelle