本文是我在阅读Erik Learned-Miller的《Vector, Matrix, and Tensor Derivatives》时的记录,点此下载。

本文的主要内容是帮助你学习如何进行向量、矩阵以及高阶张量(三维及以上的数组)的求导。并一步步引导你来进行向量、矩阵和张量的求导。

1 简化、简化,还是简化(重要的事情说三遍)

在求解涉及到数组的导数时,大部分的困难是因为试图一次性做太多事情。比如说同时求解多个组成部分的导数,在求和符号存在的情况下求解导数,或者使用链式法则。在有丰富的求导经验之前,同时执行所有的这些操作,我们就很容易出错。

1.1 将矩阵计算分解为单个标量的计算

为了简化给定的计算,我们将矩阵的求导分解为每个单独标量元素的表达式,每个表达式只包含标量变量。在写出单个标量元素与其他标量值的表达式后,就可以使用微积分来计算。这比同时进行矩阵的求和以及求导要容易一些。(看起来有点晕,没关系,看后面的案例就清晰了)。

In order to simplify a given calculation, it is often useful to write out the explicit formula for a single scalar element of the output in terms of nothing but scalar variables. Once one has an explicit formula for a single scalar element of the output in terms of other scalar values, then one can use the calculus that you used as a beginner, which is much easier than trying to do matrix math, summations, and derivatives all at the same time.

例如:假设我们有一个

阶列向量
,它是由
维矩阵
阶列向量
计算得到:

假设我们计算

关于
的导数。要完完全全的求解导数,就需要计算
中的每一个元素对
中的每一个元素的(偏)导数。那么在本例中,因为
中有
个元素,
中有
个元素,所以一个包含
次运算。

比如说,我们要计算

的第3个元素对
的第7个元素的(偏)导数,这就是向量中的一个标量对其他向量中的一个标量求导:

在求导之前,首先要做的就是写下计算

的公式, 根据矩阵-向量乘法的定义,
等于矩阵
中的第3行和向量
的点积。

现在,我们将原始的矩阵方程式(1)简化成了标量方程式。此时再进行求导就简单多了。

1.2 去除求和符号

虽然可以直接在公式(2)中求导,但是在包含求和符号(

)或者连乘符号(
)的方程式中求导很容易出错。在求导之前,最好先去掉求和符号,把各项相加的表达式写出来,确保每一项不出错。去掉求和符号的表达式如下所示(下标从1开始):

在这个表达式中,我们专门把

凸显出来,这是因为这一项正是我们要求导的项。显然,可以看出在求
的偏导数时,我们只需要关心
这一项即可。因为其他项都不包含
,它们对
的偏导数均为0。接下来就很清晰了:

在求导过程中,只关注

中的一个量和
中的一个量,能够把求导过程简化很多。如果以后进行求导时遇到问题,采取这种方式可以帮助我们把问题简化至最基础的程度,这样便于理清思绪、找出问题所在。

1.2.1 完成求导:雅可比矩阵

我们的最终目标是计算出

中的每个元素对
中每个元素的导数,共计
个。下面的这个雅克比矩阵直观的表示了这些导数:

对于公式

来说,
的偏导数可以用
来表示。实际上对于所有的
来说,都有

即上述的偏导数矩阵等于:

显然,就是

本身嘛。

因此,我们最终可以得出,对于

对于
的偏导数为:

2 行向量的情况

现在关于神经网络的第三方包特别多,在使用这些包的时候,要特别关注权值矩阵、数据矩阵等的排列。例如:数据矩阵

中包含非常多的向量,每个向量代表一个输入,那到底是矩阵中的每一行代表一个输入,还是每一列代表一个输入呢?

在第一节中,我们介绍的示例中使用的向量

是列向量。不过当
是行向量时,求导的基本思想是一致的。

2.1 示例2

在本例中,

是一个
阶行向量,它是由
阶行向量
维矩阵
和计算得到:

虽然

的元素数量和之前的列向量是一样的,但矩阵
相当于第一节使用的矩阵
的转置。并且本例中是矩阵
左乘
,而不是之前的右乘。

在本例中,我们同样可以写出

的表达式:

同样地,

注意本例中的

的下标和第一节中的相反。如果我们写出完整的雅克比矩阵的话, 我们仍然可以得出完整的求导结果:

3 维度大于2的情况

让我们考虑另一个密切相关的情形,如下式:

在这种情形中,

沿着一个坐标变化,而
沿着两个坐标变化。因此,整个导数自然是一个三维数组。一般避免使用“三维矩阵”这种术语,因为矩阵乘法和其他矩阵操作在三维数组中的定义尚不明确。

在处理三维数组时,试图去找到一种展示它们的方法可能带来不必要的麻烦。直接将结果定义为公式会更简单一些,这些公式可用于计算三维中的任何元素。

我们继续从计算标量的导数开始,比如

中的一个元素
中的一个元素
。首先要做的还是写出
的表达式:

显然,

的表达式中没有起到任何作用,因此,

同时,

中第3列元素的求导结果是非零的,正如公式(5)中展示的那样。例如
的偏导数为:

一般来说,当

中元素的下标等于
中元素的第二个下标时,其偏导数就是非零的,其他情况则为零。整理如下:

除此之外,三维数组中其他的元素都是0。如果我们用

来表示
的导数,

那么,

,其余的情况等于0

此时如果我们使用一个二维数组

来表示三维数组

可以看出,三维数组

中的全部数据实际上都可以使用二维数组
来存储,也就是说,
中的非零部分其实是二维的,而非三维的。

以更加紧凑的方式来表示导数数组对于神经网络的高效实现来说,意义重大。

4 多维数据

前面提到的实例中,不论是

还是
都只是一个向量。当需要多条数据时,例如多个向量
组成一个矩阵
时,又该如何计算呢?

我们假设每个单独的

都是一个
阶行向量,矩阵
则是一个
的二维数组。而矩阵
和之前实例中的一样,为
的矩阵。此时
的表达式为:
是一个
列的矩阵。因此,
中的每一行给出一个与输入
中对应行相关的行向量。按照之前的方式,可以写出如下表达式:

从这个方程式可以看出,对于偏导数

,只有当
的情况下不为0,其他情况均为0。因为
中的每一个元(X_{i,:})素都只对与
中对应的那一行求导,
的不同行元素之间的导数均为0。

还可以进一步看出,计算偏导数

的行没关系。

实际上,矩阵

包含了所有的偏导数,我们只需要根据公式(8)来找到我们想要的某个具体地偏导数。

如果用

来表示
中的第
行,用
来表示
中的第
行,那么

5 链式法则

上面介绍了两个基本示例和求导方法,本节将上述方法和链式法则结合起来。同样,假设

为两个列向量,

在计算

的导数时,我们可以直观地将两个矩阵
的乘积视为另一个矩阵
,则

但是,我们想明确使用链式法则来定义中间量的过程,从而观察非标量求导是如何应用链式法则的。我们将中间量定义为

此时,

那么在求导时,我们使用链式法则:

为了确保确切地清楚该式的含义,我们还是使用每次只分析一个元素的方法,

中的一个元素对
中的一个元素的导数为:

链式法则的思想是当某个函数由复合函数表示,那么该复合函数的导师,可以用构成复合函数的各个函数的导数乘积来表示。

如果

中有M个元素,那么上式可以写成:

回忆一下之前向量对向量的求导方法,我们可以发现,

整理可得:

至此,我们用

中的元素表示出了求导表达

欢迎关注我的公众号:一刻AI

http://weixin.qq.com/r/kChDW_bEAbt_raI4932C (二维码自动识别)

二元函数对xy同时求导_让向量、矩阵和张量的求导更简洁些吧相关推荐

  1. 二元函数对xy同时求导_矩阵求导与矩阵微分

    矩阵求导与矩阵微分 符号定义 ​ 使用大写的粗体字母表示矩阵 ​ 使用小写的粗体字母表示向量 ,这里默认为列向量 ​ 使用小写的正体字母表示标量 需要明白的是,矩阵求导的意义在哪来,我们回想一下函数求 ...

  2. 二元函数对xy同时求导_做题笔记:多元函数求导的链式法则

    本文使用 Zhihu On VSCode 创作并发布 核心公式: Very Easy 设 ,求 . (二元函数换成一元函数,直接代入或者链式法则均可) 解: 2. 设 ,求 . (这同样可以看成二元函 ...

  3. 二元函数对xy同时求导_复变函数(1)——解析与保角,导数的几何意义,柯西-黎曼方程...

    学习阶段:大学数学. 前置知识:复数的三角形式.棣莫弗定理.多元微分学. 1. 复变函数 1.1 复变函数的定义 说地简单点,复变函数就是自变量和应变量都是复数的函数.其定义域和值域均 ,是实函数的扩 ...

  4. 二元函数对xy同时求导_第二章 导数与微分 隐函数及参数方程确定的函数的导数...

    我的公众号"每日晴天",可关注领取我的笔记pdf版哦~ -------------------------------------------------------------- ...

  5. 二元函数对xy同时求导_微积分-7.关于三角函数、极坐标系与参数方程

    到目前为止,我们都只讨论了平面直角坐标系下的函数. 我们知道,牛顿切入微积分的角度,是为了研究现实世界中的物理运动.假如把函数看作是点 随着时间 的运动轨迹,可以发现,平面直角坐标系,更易于描述平移类 ...

  6. 二元函数对xy同时求导_复变函数学习笔记(5)

    到现在为止复变函数的理论还算友善,只是Cauchy积分定理很难证.不过接下来,一系列震撼我妈的结论就要出现,这就是复变函数与实函数的区别. (果然我还是喜欢无口系少女www) Cauchy积分公式,复 ...

  7. 二元函数对xy同时求导_【“数”你好看】求导

    微积分的核心是极限(Limit),求导(Derivative)是微积分的重要内容,本质就是求极限.导数公式有很多, 靠死记还是比较麻烦的,但这又是微积分的基础,不然接下去导数的应用(求切线.求法线.增 ...

  8. c++求矩阵的秩_对于向量和矩阵的理解

    学数值计算还有复变函数了喔,矩阵忘干净了.又看了一遍 蓝棕 的相关的讲解,总结一下. 1.向量是什么? 从初到末的箭头(物理角度,表示一种运动过程) 有序的数字列表(计算机/数学角度)[1,2] 加和 ...

  9. 二元函数对xy同时求导_陕西省特级教师魏玉英:让“数形结合思想”浸润在教学中——《二元一次方程与一次函数》同课异构课例分析...

    魏玉英,安康市平利县城关初级中学数学教师,陕西省特级教师,陕西省教学能手,安康市突出奉献专家 所谓数形结合,就是根据数学问题的题设和结论之间的内在联系,既分析其数量关系,又掲示其几何意义,使数量关系和 ...

最新文章

  1. ZooKeeper小结
  2. 汇编语言(十三)之偶数转成哥德巴赫猜想
  3. MacOSX下的BaiduPCS-Go的安装及使用说明
  4. python3自定义函数(五分钟读懂)
  5. 安装APK时INSTALL_FAILED_ALREADY_EXISTS的解决办法
  6. sql语句的书写顺序和执行顺序(包括各种可能的指令)
  7. UUID 生成器有多快
  8. vbb论坛(vBulletin)后台获取webshell
  9. 计算机模拟的概念,湍流概念及数值模拟方法
  10. RV减速器动力学模型静力学matlab程序代码
  11. 一部电影晓生活-韩国
  12. 【极速下载】gradle各版本快速下载地址大全
  13. 条形码扫描仪行业调研报告 - 市场现状分析与发展前景预测
  14. 吴恩达---机器学习的流程(持续更新)
  15. 佳蓝php智能应答系统|在线客服 v1.0,佳蓝PHP智能应答系统|在线客服 v1.0
  16. 跟着团子学SAP CS:SAP CS(客户服务)模块概览
  17. 126邮箱如何绑定qq邮箱服务器,ecshop使用企业邮箱、qq邮箱和126邮箱如何设置SMTP验证发送邮件...
  18. 0712-插曲-对拍
  19. Mac字体路径,解决matplotlib中文显示问题,超级好用~
  20. Too Files - 免费无限空间网络硬盘

热门文章

  1. matlab怎么运行电路图,电工原理的MATLAB实现
  2. 公司内部Wiki,你建立了么?
  3. 最新网站挂qq代码(php,asp,js)
  4. 收银员小票的html布局,小票打印源码(分成一行、二行、三行打印)
  5. 微信官方文档学习——API
  6. 批改网作文提交时分析不出来_考研英语作文免费批改工具
  7. python数据分析基础教程 numpy 2pdf_Python数据分析基础教程:NumPy学习指南(第2版)...
  8. 地理信息系统考研浅析
  9. 适合有一些Java基础的实战项目
  10. 2022-7-29 第八组wly 异常处理