English

Confusion of Tagged Perturbations in Forward Automatic Differentiation of Higher-Order Functions

Symbolic Computation 2019-09-23 v4 Mathematical Software Differential Geometry

Abstract

Forward Automatic Differentiation (AD) is a technique for augmenting programs to compute derivatives. The essence of Forward AD is to attach perturbations to each number, and propagate these through the computation. When derivatives are nested, the distinct derivative calculations, and their associated perturbations, must be distinguished. This is typically accomplished by creating a unique tag for each derivative calculation, tagging the perturbations, and overloading the arithmetic operators. We exhibit a subtle bug, present in fielded implementations, in which perturbations are confused despite the tagging machinery. The essence of the bug is this: each invocation of a derivative creates a unique tag but a unique tag is needed for each derivative calculation. When taking derivatives of higher-order functions, these need not correspond! The derivative of a higher-order function ff that returns a function gg will be a function ff' that returns a function gˉ\bar{g} that performs a derivative calculation. A single invocation of ff' will create a single fresh tag but that same tag will be used for each derivative calculation resulting from an invocation of gˉ\bar{g}. This situation arises when taking derivatives of curried functions. Two potential solutions are presented, and their serious deficiencies discussed. One requires eta expansion to delay the creation of fresh tags from the invocation of ff' to the invocation of gˉ\bar{g}, which can be difficult or even impossible in some circumstances. The other requires ff' to wrap gˉ\bar{g} with tag renaming, which is difficult to implement without violating the desirable complexity properties of forward AD.

Keywords

Cite

@article{arxiv.1211.4892,
  title  = {Confusion of Tagged Perturbations in Forward Automatic Differentiation of Higher-Order Functions},
  author = {Oleksandr Manzyuk and Barak A. Pearlmutter and Alexey Andreyevich Radul and David R. Rush and Jeffrey Mark Siskind},
  journal= {arXiv preprint arXiv:1211.4892},
  year   = {2019}
}