在自动微分中从输入变量开始,依次计算各个中间变量对输入变量的导数,从而逐渐推出输出对输入变量的导数。
实现(基于运算符重载)
给定函数 f:Rn→Rm,定义多个基元 t=(t1,⋯,tn)T 是具有性质 ti2=titj=0 的代数系统,则该系统的原语为
α(x+aiti)=α(x)+α′(x)aiti
β(x+aiti,y+biti)=β(x,y)+βxaiti+βybiti
等等。在给定点 x0, 计算 f(x0+t) 得到 y0+citi,则 ci 就是对应于 xi 的偏导数。
特别地,对于方向导数来说,在方向 v 上的导数可以直接用 f(x+vt1) 计算出来。
前向自动微分的高阶推广称为 高阶前向自动微分。
前向自动微分和 jvp
若函数 f(x) 的输入为 v,输出为 w,则
wi=j∑∂xj∂fivj
这等价于用处于该点的 Jacobian 矩阵来乘向量 v,即 w=Jv。
相关内容
参考文献