Computer science 线性时间下的自动微分向量雅可比积?

Computer science 线性时间下的自动微分向量雅可比积?,computer-science,matrix-multiplication,autograd,automatic-differentiation,Computer Science,Matrix Multiplication,Autograd,Automatic Differentiation,我对自动微分的内部工作原理还不太熟悉,并且看到了一些论文和幻灯片,其中指出可以使用自动微分在线性时间内计算向量雅可比积。具体写法: $e^\top ( \frac{\partial f}{\partial x} )$ 可以为O(N)中的任何e计算。 雅可比矩阵是N乘N。我认为这是N^2,但我不完全理解自动微分如何降低时间复杂度。如果你有一个基本假设,即隐藏空间是固定的,那么它是线性的。假设函数f是矩阵变换的组合,其中固定矩阵f1是H-by-N,f2是H-by-H,f3是N-by-H。然后对于

我对自动微分的内部工作原理还不太熟悉,并且看到了一些论文和幻灯片,其中指出可以使用自动微分在线性时间内计算向量雅可比积。具体写法:

$e^\top ( \frac{\partial f}{\partial x} )$ 
可以为
O(N)
中的任何e计算。
雅可比矩阵是
N乘N
。我认为这是
N^2
,但我不完全理解自动微分如何降低时间复杂度。

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

我不完全理解自动微分如何降低时间复杂度。

我假设您了解反向传播和/或反向模式自动微分如何对标量函数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。那么雅可比矩阵实际上是mxn,用反模式AD计算完整的雅可比矩阵需要时间O(m)。但是,通过设置dy_i/dy_i=v_i的值,对于i={1,…,m},可以用向量v计算时间O(1)中的向量雅可比积。然后,您只需像正常情况一样反向传播,并在一次向后传递中获得VJP

所以不运动乳胶渲染器。文本形式将被理解。