Demystifying Differentiable Programming: Shift/Reset the Penultimate Backpropagator
Not on the map. Why?
Abstract (arXiv)
Deep learning has seen tremendous success over the past decade in computer vision, machine translation, and gameplay. This success rests in crucial ways on gradient-descent optimization and the ability to learn parameters of a neural network by backpropagating observed errors. However, neural network architectures are growing increasingly sophisticated and diverse, which motivates an emerging quest for even more general forms of differentiable programming, where arbitrary parameterized computations can be trained by gradient descent. In this paper, we take a fresh look at automatic differentiation (AD) techniques, and especially aim to demystify the reverse-mode form of AD that generalizes backpropagation in neural networks. We uncover a tight connection between reverse-mode AD and delimited continuations, which permits implementing reverse-mode AD purely via operator overloading and without any auxiliary data structures. We further show how this formulation of AD can be fruitfully combined with multi-stage programming (staging), leading to a highly efficient implementation that combines the performance benefits of deep learning frameworks based on explicit reified computation graphs (e.g., TensorFlow) with the expressiveness of pure library approaches (e.g., PyTorch).
Key facts. Cited by 14 papers in the map (data through 14 Oct 2026). First posted on arXiv 27 Mar 2018.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 4; 2022: 5; 2023: 3; 2024: 0; 2025: 0; 2026: 2.
14 papers.
Sort:
- 2021Swift for TensorFlow: A portable, flexible platform for deep learningcited by 6
- 2021Functorial String Diagrams for Reverse-Mode Automatic Differentiationcited by 2
- 2022Nesting Forward Automatic Differentiation for Memory-Efficient Deep Neural Network Trainingcited by 2
- 2023Automatic Functional Differentiation in JAXcited by 2
- 2023Understanding Automatic Differentiation Pitfallscited by 1
- 2026Learning to Optimize by Differentiable Programmingcited by 1
- 2021Automatic Differentiation via Effects and Handlers: An Implementation in Frankcited by 0
- 2021Coarsening Optimization for Differentiable Programmingcited by 0
- 2022Differentiable programming: Generalization, characterization and limitations of deep learningcited by 0
- 2022Combinatory Adjoints and Differentiationcited by 0
- 2022Differentiable Quantum Programming with Unbounded Loopscited by 0
- 2022Efficient and Sound Differentiable Programming in a Functional Array-Processing Languagecited by 0
- 2026Differentiate the Evaluator, Not the Program: An Efficient Runtime Representation for Neuro-Symbolic Learning3 Jul 2026
- 2026Learning to Optimize by Differentiable Programming23 Jan 2026
- 2023Automatic Functional Differentiation in JAX30 Nov 2023
- 2023Understanding Automatic Differentiation Pitfalls12 May 2023
- 2023nablaSD: Differentiable Programming for Sparse Tensors13 Mar 2023
- 2022Efficient and Sound Differentiable Programming in a Functional Array-Processing Language20 Dec 2022
- 2022Differentiable Quantum Programming with Unbounded Loops8 Nov 2022
- 2022Nesting Forward Automatic Differentiation for Memory-Efficient Deep Neural Network Training22 Sep 2022
- 2022Combinatory Adjoints and Differentiation2 Jul 2022
- 2022Differentiable programming: Generalization, characterization and limitations of deep learning13 May 2022
- 2021Coarsening Optimization for Differentiable Programming5 Oct 2021
- 2021Functorial String Diagrams for Reverse-Mode Automatic Differentiation28 Jul 2021
- 2021Swift for TensorFlow: A portable, flexible platform for deep learningcited by 6
- 2021Functorial String Diagrams for Reverse-Mode Automatic Differentiationcited by 2
- 2022Nesting Forward Automatic Differentiation for Memory-Efficient Deep Neural Network Trainingcited by 2
- 2023Automatic Functional Differentiation in JAXcited by 2
- 2023Understanding Automatic Differentiation Pitfallscited by 1
- 2026Learning to Optimize by Differentiable Programmingcited by 1
- 2021Automatic Differentiation via Effects and Handlers: An Implementation in Frankcited by 0
- 2021Coarsening Optimization for Differentiable Programmingcited by 0
- 2022Differentiable programming: Generalization, characterization and limitations of deep learningcited by 0
- 2022Combinatory Adjoints and Differentiationcited by 0
- 2022Differentiable Quantum Programming with Unbounded Loopscited by 0
- 2022Efficient and Sound Differentiable Programming in a Functional Array-Processing Languagecited by 0
12 most cited of 14 All 14 (JSON)
- 2026Differentiate the Evaluator, Not the Program: An Efficient Runtime Representation for Neuro-Symbolic Learning3 Jul 2026
- 2026Learning to Optimize by Differentiable Programming23 Jan 2026
- 2023Automatic Functional Differentiation in JAX30 Nov 2023
- 2023Understanding Automatic Differentiation Pitfalls12 May 2023
- 2023nablaSD: Differentiable Programming for Sparse Tensors13 Mar 2023
- 2022Efficient and Sound Differentiable Programming in a Functional Array-Processing Language20 Dec 2022
- 2022Differentiable Quantum Programming with Unbounded Loops8 Nov 2022
- 2022Nesting Forward Automatic Differentiation for Memory-Efficient Deep Neural Network Training22 Sep 2022
- 2022Combinatory Adjoints and Differentiation2 Jul 2022
- 2022Differentiable programming: Generalization, characterization and limitations of deep learning13 May 2022
- 2021Coarsening Optimization for Differentiable Programming5 Oct 2021
- 2021Functorial String Diagrams for Reverse-Mode Automatic Differentiation28 Jul 2021
12 newest of 14 All 14 (JSON)