2017-04-17 4 views
5

Ich kann einfach nicht den Unterschied verstehen. Für mich sieht es so aus, als ob beide einen Ausdruck durchgehen und die Kettenregel anwenden. Was fehlt mir?Unterschied zwischen symbolischer Differenzierung und automatischer Differenzierung?

+0

Suchen Sie nach Grundgleichungen mit einer Variablen oder mehreren Variablen? Auch ich würde eine Antwort geben, aber meine Kenntnisse der automatischen Unterscheidung sind nicht so gut wie symbolische Mathematik. Wenn ich Zeit habe, schaue ich mir das genauer an und schreibe eine Antwort. –

Antwort

4

Es gibt 3 beliebte Verfahren die Ableitung zu berechnen:

  1. numerische Differentiation
  2. Symbolic Differenzierung
  3. automatische Unterscheidung

Numerical differentiation auf der Definition der Ableitung beruht: enter image description here, wobei Sie legen eine sehr kleine h und evaluieren Funktion an zwei Stellen. Dies ist die grundlegendste Formel und in der Praxis verwenden Menschen andere Formeln, die kleinere Schätzfehler geben. Diese Art der Ableitung ist vor allem dann sinnvoll, wenn Sie Ihre Funktion nicht kennen und nur abtasten können. Außerdem erfordert es viel Rechenaufwand für eine High-Dim-Funktion.

Symbolic differentiation manipuliert mathematische Ausdrücke. Wenn Sie jemals Matlab oder Mathematica verwendet, dann saw something like this Sie enter image description here

hier für jeden mathematischen Ausdruck wissen, dass sie die Ableitung und verwenden verschiedene Regeln (Produktregel, Kettenregel) die resultierende Ableitung zu berechnen. Dann vereinfachen sie den Endausdruck, um den resultierenden Ausdruck zu erhalten.

Automatic differentiation manipuliert Blöcke von Computerprogrammen. Ein Differentiator hat die Regeln, um die Ableitung jedes Elements eines Programms zu übernehmen (wenn Sie irgendeinen Op in Core TF definieren, müssen Sie register a gradient für diesen Op verwenden). Es verwendet auch eine Kettenregel, um komplexe Ausdrücke in einfachere zu zerlegen. Hier ist ein good example how it works in real TF programs with some explanation.


Man könnte denken, dass automatische Differenzierung der gleiche wie symbolische Differenzierung ist (an einem Ort arbeiten sie auf mathematischen Ausdruck, in einem anderen auf Computerprogramme). Und ja, sie sind manchmal sehr ähnlich. Aber für Steuerflussrechnungen (`wenn, während, Schleifen) können die Ergebnisse sehr different:

symbolische Differenzierung führt zu ineffizienten Code (es sei denn, sorgfältig done) und steht vor der Schwierigkeit, ein Computerprogramm in eine der Umwandlung einzelner Ausdruck

Verwandte Themen