可微编程:控制流诱导的不连续性的高效平滑
摘要:在不连续的程序代码中获得导数,其中默认的算法微分可能表现不佳。具体来说,我们考虑由控制流语句引起的不连续性,理想情况下,有意义的导数应该能够表示轨迹中产生的角点。为了实现这一点,可以在取导数之前在控制流语句处对轨迹进行插值。我们提出了一种方法,可以高效地在程序代码中的所有由控制流引起的边界之间进行插值。从理论上讲,代码可以被视为一系列连续分段函数的组合。这些函数相互嵌套,形成一个具有多个情况的函数组合。我们将这个函数组合解释为一棵树,并设计了一种启发式算法来识别与插值相关的路径。这使我们能够构思一种可以自动且高效地对控制流语句进行平滑插值的语言,使其完全可微分。
作者:Sebastian Christodoulou and Uwe Naumann
论文ID:2305.06692
分类:Programming Languages
分类简称:cs.PL
提交时间:2023-05-12