Adding AD to Scheme by Differentiating the Interpreter
We add generic automatic differentiation (AD) to a pure eager Scheme by manually performing AD on a simple metacircular interpreter. We then make AD first-class by “tying the knot”: allowing the interpreter to call its AD-transformed version, and unifying the transformed and un-transformed interpreters into a single generic interpreter, thus allowing nested AD. This requires the addition of data structures corresponding to lifted domains, along with associated machinery. For instance, lifting to a single level of forward AD changes numbers into dual numbers, with constructors (bundle) and accessors (primal and tangent). This machinery needs to be generalized to all objects, including closures; and maintaining the computational guarantees of AD requires careful attention to detail, such as making certain operations lazy. This process is guided by a variety of algebraic identities which should be maintained.
Fri 27 AugDisplayed time zone: Seoul change
23:30 - 01:00
|Adding AD to Scheme by Differentiating the Interpreter|
|A lightweight approach for accessing Python modules from Gambit Scheme (Lightning Talk)|
|Graphite: A Library for Data Visualization (Lightning Talk)|