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 | |||
23:30 30mTalk | Adding AD to Scheme by Differentiating the Interpreter Scheme Mehrdad Maleki Mastercard Labs, Barak A. Pearlmutter Maynooth University, Jeffrey Mark Siskind Elmore Family School of Electrical and Computer Engineering, Purdue University | ||
00:00 30mTalk | A lightweight approach for accessing Python modules from Gambit Scheme (Lightning Talk) Scheme | ||
00:30 30mTalk | Graphite: A Library for Data Visualization (Lightning Talk) Scheme |