论文标题
功能阵列处理语言中有效且声音可区分的编程
Efficient and Sound Differentiable Programming in a Functional Array-Processing Language
论文作者
论文摘要
自动分化(AD)是一种计算程序表示函数的导数的技术。该技术被认为是计算许多机器学习和优化软件工具中差异化的事实上标准。尽管这种技术具有实用性,但差异化程序的性能,尤其是对于功能性语言,在矢量存在的情况下是最佳选择。我们为高阶功能阵列处理语言提供了一个广告系统。该系统的核心功能语言同时支持源代源向前模式AD和全局优化,例如循环转换。结合使用前向模式AD的梯度计算可以像反向模式一样有效,并且可以有效地计算数值算法所需的Jacobian矩阵,例如Gauss-Newton和Levenberg-Marquardt。
Automatic differentiation (AD) is a technique for computing the derivative of a function represented by a program. This technique is considered as the de-facto standard for computing the differentiation in many machine learning and optimisation software tools. Despite the practicality of this technique, the performance of the differentiated programs, especially for functional languages and in the presence of vectors, is suboptimal. We present an AD system for 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 the Jacobian matrices required for numerical algorithms such as Gauss-Newton and Levenberg-Marquardt can be efficiently computed.