标量 向量 标量求导链式法则_入门级的向量、矩阵与张量求导

本文并非是作为工具书来查询各种各样的向量矩阵与张量之间的求导公式,而是试图从最简单的层面来对这些求导公式的推导过程进行介绍。

1、将导数表达式简化为最简单的形式

涉及向量与矩阵之间的求导的运算难点往往在于你要一次性的完成多项任务。这些任务包括并行的对对应元素进行求导,考虑表达式中的求和符号以及连乘符号,考虑链式法则。将一个看起来很棘手的求导问题分解为最简单的形式有助于我们仔细理解计算的整个过程。

1.1 考虑单个分量的导数并对求和符号展开

当拿到一个复杂的矩阵求导问题时,首先考虑其每个标量元素对其他标量元素的导数值往往能够简化问题。当将一个复杂的问题转化到最简单的标量间的求导问题时,我们能够对矩阵间的求和、微分等数学运算进行简化。

例如我们考虑这样的一个问题:假设我们有一个维数为

的矩阵
,一个长度为
的列向量
,一个长度为
的列向量
,满足如下的关系,

我们要求向量

对向量
的导数。该求导运算的结果是由
的每个分量对
的每个分量组合而成,因此求导后会得到一个规模为
的矩阵。我们考虑导数的一个分量
的计算,其为一个标量对另一个标量的求导运算。我们只需要找到
的关系,然后按照最普通的求导法则进行计算即可。事实上,我们注意到:

通过这一转化,我么便将原始的矩阵表达式转换为普通的标量表达式。

1.2 去掉求和符号

尽管从上面的表达式中直接计算导数并不困难,但是当求和符号$sum$和连乘符号$prod$里面的内容较为复杂时,将其展开将会有助于我们的计算。于是我们可以将连乘符号展开以确保我们的每步计算都精确无误,从而可以得到:

这一公式就是最简单的线性等式,于是我们有:

通过关注

的单个分量之间的关系,我们能将求导的计算过程化简为最简单的导数计算问题,当我们在计算复杂的导数时,通过这一方法可以帮助我们理清思路。

1.3 补全计算结果

我们最初的目的是为了计算向量

对向量
的导数,通过上面的分析我们注意到,其计算结果是一个维数为
的矩阵,该矩阵具有如下的形式:

在我们的这个例子中,这一矩阵被称为

.我们对每个分量执行上面一小节的对应过程可以得到如下的关系:

这意味着,导数计算结果所对应的矩阵为:

也就是说,经过这些详细的计算过程,我们可以得到对于

,我们有:

1.4 行向量间的求导

行向量对行向量的求导过程与上面的分析过程没有本质的区别,我们考虑,

其中,
是长度为
的行向量,
是长度为
的行向量,
的维数为
同样,我们有,

于是,

从而,

1.5 处理更高的维度

我们同样考虑,

其中,
是长度为
的行向量,
是长度为
的行向量,
的维数为
.在这一小节,我么考虑行向量
对矩阵
的求导表达式:

在这种情形下,

沿着一个坐标轴变化,
沿着两个坐标轴变化,因此很自然的会想到其导数计算结果应该是一个三维张量,事实上,经过之后的推导我们可以发现这一求导结果完全可以用二维的矩阵进行表示。

我们还是首先从向量

的一个分量对矩阵进行求导开始进行推导,事实上,我们有:

于是我们可以看出:

对矩阵中其他元素的偏导数为0.于是我们可以将求导结果定义为新的二维矩阵:

可以看出行向量对矩阵的求导结果同样可以用一个矩阵来表示,这种表示方法在实现神经网络时非常有用。

1.6 矩阵对矩阵求导(多个数据点)

我们考虑将多个数据点进行叠加从而得到如下的关系式:

其中

的维度是
,
的维度是
,
的维度是
,并且矩阵
的每行是由矩阵
的对应行的元素经过线性变换得到的。同样考虑其中的分量我们可以得到:

从这一表达式中我们可以看出对于偏微分

时值均为0.这也就是说,既然
的当前行是由
的对应行算出来的,那么当求导时行数不一致时其导数值均为0.于是我们可以得到

从而我们有:

这一结果是上一小节结果的自然推广。

1.7 将链式法则考虑进去

在这里我们考虑两个列向量

之间的线性变换,其关系如下所示:

我们想要计算向量

对向量
的导数值。我们可以简单的观察到矩阵
与矩阵
的乘积依然是一个矩阵,因此借用上面的结论我们立马能得到求导结果:

在这里为了对链式法则进行应用我们采取一种更为复杂的方式进行求导运算,我们先定义中间变量

其中
具有
个分量,于是我们有
,根据链式法则我们可以得到:

我们考虑单个分量之间的标量求导,可以写为

将上述分量合并为矩阵便可得到同样的求导结果

。当涉及到利用链式法则进行求导运算时,我们可以采取类似的方法首相将各个中间变量找出来,然后考虑单个分量之间的求导计算,最后将涉及到的相关中间结果进行相加即可。

参考资料:

Syllabus | CS 231N​cs231n.stanford.edu http://cs231n.stanford.edu/vecDerivs.pdf​cs231n.stanford.edu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值