线性时间中的自动微分向量雅可比积



我对自动微分的内部工作很陌生,我看到了一些论文和幻灯片,这些论文和幻灯片指出,可以使用自动微分在线性时间内计算向量雅可比积。具体书写:

$e^top ( frac{partial f}{partial x} )$ 

可以针对CCD_ 1中的任何e来计算。Jacobian是N-by-N。我认为它是N^2,但我不完全理解自动微分如何降低时间复杂性。

我不完全理解自动区分如何降低时间复杂性

我假设你理解反向传播和/或反向模式自动微分是如何为标量函数y=f(x(工作的,其中f:R^n->R。假设计算f需要时间O(1(。

如果你还记得反向传播,你可以从设置dy/dy=1开始,然后使用链式规则计算dy/dx。这里要做的是计算向量[1.0]与雅可比矩阵的乘积,雅可比矩阵是一个行向量,得到向量雅可比矩阵乘积,这是一个列向量。所以你在计算VJP,你的向量只是一个长度为1的向量。您在时间O(1(内完成此操作。

现在假设我在计算多元函数y=f(x(的导数,其中f:R^n->R^m。那么雅可比矩阵确实是m x n,并且计算具有反向模式AD的完整雅可比矩阵将花费时间O(m(。然而,你可以通过设置dy_i/dy_i=v_i的值来计算时间O(1(与向量v的向量雅可比乘积,对于i={1,…,m}。然后你只需像正常情况一样反向传播,并在一次反向传递中获得VJP。

如果您有隐藏空间是固定的基本假设,那么它是线性的。假设函数f是矩阵变换的组合,其中固定矩阵f1是H-by-N,f2是H-by-H,f3是N-by-H。然后,对于N维向量e,我们可以将计算计算为f1*e,然后应用f2,然后应用f3。这与N成线性比例,但与隐藏空间H不成线性比例。

最新更新