高效双数反向自动微分通过众所周知的程序转换

摘要:使用双数/逆向模式/自动微分(AD),将每个标量值与其反向传播函数配对以实现逆向AD。Brunel、Mazza和Pagani分析了其在高阶输入语言上的正确性和效率,但是该分析使用了一个不清楚是否可以高效实现的自定义操作语义。我们受到他们使用线性分解方法优化双数逆向模式AD的启发,将其转化为一个具有正确复杂性并且在支持可变数组的标准函数语言(如Haskell)中具有高效实现的算法。除了线性分解因素外,我们的优化步骤包括来自函数式编程社区的众所周知的思想。 通过提供一个性能出色的实现来演示我们技术的实际应用,该实现可以对大多数Haskell98进行微分。

作者:Tom Smeding, Matthijs V''ak''ar

论文ID:2207.03418

分类:Programming Languages

分类简称:cs.PL

提交时间:2022-12-23

PDF 下载: 英文版 中文版pdf翻译中