Was ist ein Beispiel für die Verwendung der automatischen Differenzierung, wie sie in Tensorflow implementiert ist, und warum ist sie wichtig?

7

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

Greg
quelle
3
Die automatische Differenzierung, auch als algorithmische Differenzierung bezeichnet, ist eine automatisierte Methode zur numerischen Berechnung von Ableitungen einer von einem Computerprogramm angegebenen Funktion (en). Die Funktionen können jedoch indirekt vom Computerprogramm definiert werden. Es ist nützlich, um Gradienten, Jacobianer und Hessische zu berechnen, unter anderem zur numerischen Optimierung. Backpropagation ist eine Implementierung des umgekehrten Modus der automatischen Differenzierung zur Berechnung des Gradienten eines Optimierungsproblems für neuronale Netze. Siehe en.wikipedia.org/wiki/Automatic_differentiation .
Mark L. Stone
3
Alternativen sind symbolische Differenzierung und endliche Unterschiede, die normalerweise langsamer sind, und endliche Unterschiede sind möglicherweise weniger genau. Handcodierte Derivate können verwendet werden, wenn der Mensch das Derivat herausfinden kann, aber in vielen Fällen anfällig für menschliche Fehler ist.
Mark L. Stone
Wo finde ich einfache Beispiele, um zu sehen, wie es implementiert wird? Ist es die tf.gradientMethode, die ich betrachten sollte?
Greg
3
Siehe Liste der Software und Tools für die automatische Differenzierung unter Wikipedia-Link sowie Links, die eine Beispielverwendung enthalten. Eine weitere Alternative zur automatischen Differenzierung ist die komplexe Stufendifferenzierung (Derivat) aero-comlab.stanford.edu/Papers/martins.aiaa.01-0921.pdf , die fast das Gleiche ist wie der Vorwärtsmodus der automatischen Differenzierung.
Mark L. Stone

Antworten:

12

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 .

dontloo
quelle