about
A Simple Differentiable Programming Language (arxiv.org)
2 points by bmc7505 on Nov 15, 2019 | hide | past | pdf | discuss on HN

In plain words: A tiny programming language gets a built-in command for computing derivatives backwards, the trick behind neural network training. Describing both how a computer runs it and what it means in calculus, they prove the two agree exactly.

Abstract

Automatic differentiation plays a prominent role in scientific computing and in modern machine learning, often in the context of powerful programming systems. The relation of the various embodiments of automatic differentiation to the mathematical notion of derivative is not always entirely clear---discrepancies can arise, sometimes inadvertently. In order to study automatic differentiation in such programming contexts, we define a small but expressive programming language that includes a construct for reverse-mode differentiation. We give operational and denotational semantics for this language. The operational semantics employs popular implementation techniques, while the denotational semantics employs notions of differentiation familiar from real analysis. We establish that these semantics coincide.

Martin Abadi, Gordon D. Plotkin
arXiv:1911.04523 · cs.PL, cs.LG · submitted Nov 11, 2019 · updated Feb 1, 2020
abstract · pdf · html · In POPL2020

add comment on HN