本文并非是作为工具书来查询各种各样的向量矩阵与张量之间的求导公式,而是试图从最简单的层面来对这些求导公式的推导过程进行介绍。
1、将导数表达式简化为最简单的形式
涉及向量与矩阵之间的求导的运算难点往往在于你要一次性的完成多项任务。这些任务包括并行的对对应元素进行求导,考虑表达式中的求和符号以及连乘符号,考虑链式法则。将一个看起来很棘手的求导问题分解为最简单的形式有助于我们仔细理解计算的整个过程。
1.1 考虑单个分量的导数并对求和符号展开
当拿到一个复杂的矩阵求导问题时,首先考虑其每个标量元素对其他标量元素的导数值往往能够简化问题。当将一个复杂的问题转化到最简单的标量间的求导问题时,我们能够对矩阵间的求和、微分等数学运算进行简化。
例如我们考虑这样的一个问题:假设我们有一个维数为
我们要求向量
通过这一转化,我么便将原始的矩阵表达式转换为普通的标量表达式。
1.2 去掉求和符号
尽管从上面的表达式中直接计算导数并不困难,但是当求和符号$sum$和连乘符号$prod$里面的内容较为复杂时,将其展开将会有助于我们的计算。于是我们可以将连乘符号展开以确保我们的每步计算都精确无误,从而可以得到:
这一公式就是最简单的线性等式,于是我们有:
通过关注
1.3 补全计算结果
我们最初的目的是为了计算向量
在我们的这个例子中,这一矩阵被称为
这意味着,导数计算结果所对应的矩阵为:
也就是说,经过这些详细的计算过程,我们可以得到对于
1.4 行向量间的求导
行向量对行向量的求导过程与上面的分析过程没有本质的区别,我们考虑,
于是,
从而,
1.5 处理更高的维度
我们同样考虑,
在这种情形下,
我们还是首先从向量
于是我们可以看出:
而
可以看出行向量对矩阵的求导结果同样可以用一个矩阵来表示,这种表示方法在实现神经网络时非常有用。
1.6 矩阵对矩阵求导(多个数据点)
我们考虑将多个数据点进行叠加从而得到如下的关系式:
其中
从这一表达式中我们可以看出对于偏微分
当
从而我们有:
这一结果是上一小节结果的自然推广。
1.7 将链式法则考虑进去
在这里我们考虑两个列向量
我们想要计算向量
在这里为了对链式法则进行应用我们采取一种更为复杂的方式进行求导运算,我们先定义中间变量
我们考虑单个分量之间的标量求导,可以写为
将上述分量合并为矩阵便可得到同样的求导结果
参考资料:
Syllabus | CS 231Ncs231n.stanford.edu http://cs231n.stanford.edu/vecDerivs.pdfcs231n.stanford.edu