既然自动微分 (AD) 和计算导数有关, 让我们以考虑什么是导数开始. 如果你所接受的入门性微积分课程和我差不多的话, 那么你会学到一个函数在一个点处 (要求其在的定义域之中) 的导数是一个数字, 定义如下:也就是说, 告诉了我们在处对于输入变化的缩放有多快.
这个定义对于类型之外的函数有多适用呢? 复数情形 () 表现良好, 其中除法也有定义. 扩展至的情形也能成立, 如果我们以通常的方式解释一个(中的)向量除以一个标量. 然而, 如果我们扩展至的情形, 或者甚至只是, 这个定义就不再适用了, 因为其依赖于除以一个向量.
这种非标量定义域上的微分的困难通常以相对于的个标量分量的偏导数
的概念解决, 经常记作, 其中. 当也是一个非标量时, 即, 那么我们就有了一个矩阵 (Jacobi矩阵), 其中而每个是函数的第投影, 其由取的结果的第个分量得到. {译注: 然而, 即便, 我们得到的也是一个矩阵, 只不过是的矩阵而已.}
到目前为止, 我们已经看到了一个函数的导数可以是一个数字 (), 一个向量 (), 一个矩阵(). 而且, 每种情形都有与之相伴的链式规则, 其说明了该如何对于函数的复合进行微分. 标量链式规则牵涉将两个标量导数相乘, 而向量链式规则牵涉将两个矩阵和 (Jacobi矩阵) 相乘
, 其定义如下:既然我们可以将标量视为向量的特殊情形, 那么标量乘法也可以是为矩阵乘法的特殊情形, 或许我们已经抵达了所需的一般性. 然而, 当我们将注意力转向高阶导数的时候, 即导数的导数, 情况就变得复杂起来了, 我们需要更高维度的表示, 以及相应的更加复杂的链式规则.
幸运的是,