一句话:在函数式数组处理语言中集成源到源前向自动微分与循环变换等全局优化,使梯度计算效率可与反向模式媲美。
本文面向高阶函数式数组处理语言,提出一个自动微分(AD)系统。其核心函数式语言同时支持源到源的前向模式 AD,以及循环变换等全局优化,从而把微分变换与程序优化结合在同一框架内。作者指出,这种组合可使前向模式 AD 的梯度计算效率与反向模式相当,并能高效计算 Gauss-Newton、Levenberg-Marquardt 等数值算法所需的 Jacobian 矩阵。该工作展示了在函数式数组语言中实现高效可微编程的可行路径,并支持将循环变换等优化与梯度计算相结合。
We present a system for the automatic differentiation (AD) of a higher-order functional array-processing language. The core functional language underlying this system simultaneously supports both source-to-source forward-mode AD and global optimisations such as loop transformations. In combination, gradient computation with forward-mode AD can be as efficient as reverse mode, and that the Jacobian matrices required for numerical algorithms such as Gauss-Newton and Levenberg-Marquardt can be efficiently computed.
@article{paperbot583,
title = {Efficient differentiable programming in a functional array-processing language},
author = {Amir Shaikhha and Andrew Fitzgibbon and Dimitrios Vytiniotis and Simon Peyton Jones},
journal = {Proceedings of the ACM on Programming Languages},
volume = {3},
number = {ICFP},
year = {2019},
doi = {10.1145/3341701}
}