原文: http://cs231n.stanford.edu/vecDerivs.pdf
本文让大家更好地学习使用向量、矩阵和高阶张量的求导。
1 简化,简化再简化
很多关于数组的求导的困惑来自于一次性想做太多事。这些事包括同时对多个部分求导,和式的求导,和应用链式法则。同时做这么多事情,至少在我们还没有足够熟练之前,那就很容易会出现错误。
1.1 对每个部分展开式子成显式求和及等式
为了简化一个给定的计算,通常将对于输出的一个简单的标量元素使用标量变量展开成显式公式。一旦我们对于输出的单个标量元素有了一个显式的用其他标量值表达的公式后,我们可以利用基本的微积分知识进行求导了,这里就避免将复杂的矩阵数学,求和及求导同时进行了。
例子. 假设我们有一个列向量
其长度为
1.2.1 雅克比(Jaccobian)矩阵
我们最初的愿望是计算
每个部分关于
的每个部分的导数,注意到会有
这么多对。他们可以被写成一个矩阵,形如:
这个矩阵被成为雅克比矩阵。
注意到对于等式:
,
关于
的偏导数就是
。如果你观察一些其他的部分,你也能发现,对于所有的
和
,
.
这意味着偏导数的矩阵为:
所以,其实就是
本身。
我们现在可以给出结论:对于
,我们有
.
2 行向量
在使用不同的神经网络库的时候需要慎重对待权重矩阵、数据矩阵等的排列。例如