
AbstractAutomatic differentiation (AD) is a range of algorithms to compute the numeric value of a function’s (partial) derivative, where the function is typically given as a computer program or abstract syntax tree. AD has become immensely popular as part of many learning algorithms, notably for neural networks. This paper uses Prolog to systematically derive gradient-based forward- and reverse-mode AD variants from a simple executable specification: evaluation of the symbolic derivative. Along the way we demonstrate that several Prolog features (DCGs, co-routines) contribute to the succinct formulation of the algorithm. We also discuss two applications in probabilistic programming that are enabled by our Prolog algorithms. The first is parameter learning for the Sum-Product Loop Language and the second consists of both parameter learning and variational inference for probabilistic logic programming.
FOS: Computer and information sciences, Technology, Logic, PEARL, automatic differentiation; probabilistic programming; Prolog, Symbolic computation and algebraic computation, Logic programming, automatic differentiation, Computation Theory & Mathematics, Computer Science, Theory & Methods, 0801 Artificial Intelligence and Image Processing, ALGORITHM, 0802 Computation Theory and Mathematics, 4613 Theory of computation, Other programming paradigms (object-oriented, sequential, concurrent, automatic, etc.), Science & Technology, Computer Science - Programming Languages, 4602 Artificial intelligence, probabilistic programming, 0803 Computer Software, Computer Science, Software Engineering, Prolog, Computer Science, Science & Technology - Other Topics, Programming Languages (cs.PL)
FOS: Computer and information sciences, Technology, Logic, PEARL, automatic differentiation; probabilistic programming; Prolog, Symbolic computation and algebraic computation, Logic programming, automatic differentiation, Computation Theory & Mathematics, Computer Science, Theory & Methods, 0801 Artificial Intelligence and Image Processing, ALGORITHM, 0802 Computation Theory and Mathematics, 4613 Theory of computation, Other programming paradigms (object-oriented, sequential, concurrent, automatic, etc.), Science & Technology, Computer Science - Programming Languages, 4602 Artificial intelligence, probabilistic programming, 0803 Computer Software, Computer Science, Software Engineering, Prolog, Computer Science, Science & Technology - Other Topics, Programming Languages (cs.PL)
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 2 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
