本文地址:http://blog.csdn.net/mounty_fsc/article/details/51583809

前言

本文为维基百科上矩阵微积分部分的翻译内容。本文为原文的翻译与个人总结,非一一对照翻译。由于水平不足理解不够处,敬请原谅与指出。原文地址https://en.wikipedia.org/wiki/Matrix_calculus。原文为矩阵微积分,本文题为矩阵求导,原因是原文主要介绍的是矩阵微分的内容。

1 简介

矩阵的微积分本质上是多元变量的微积分的问题,只是应用在矩阵空间上而已。

在讨论矩阵微分的时候,有两种布局方式,分子布局,与分母布局,第2,3部分不关注这个问题,第5部分以后介绍两种布局方式。

以下为六种以矩阵形式组织的常见的导数。

类型 标量 y y 向量y\mathbf{y} 矩阵 Y \mathbf{Y}
标量 x x ∂y∂x\frac{\partial y}{\partial x} ∂y∂x \frac{\partial \mathbf{y}}{\partial x} ∂Y∂x \frac{\partial \mathbf{Y}}{\partial x}
向量 x \mathbf{x} ∂y∂x \frac{\partial y}{\partial \mathbf{x}} ∂y∂x \frac{\partial \mathbf{y}}{\partial \mathbf{x}}
矩阵 X \mathbf{X} ∂y∂X \frac{\partial y}{\partial \mathbf{X}}

其他三种方式并不常用,且符号也没有统一的认识。

2 符号

  1. 矩阵
    M(n,m) M(n,m)表示 n n行mm列的实矩阵,一般使用加粗大写字母表示,如 A,X,Y \mathbf{A,X,Y}等。

  2. 向量
    M(n,1) M(n,1)为列向量,一般用小写加粗表示,如 a,x,y \mathbf{a,x,y}等。

  3. 标量
    M(1,1) M(1,1)为标量,一般用小写斜体表示,如 a,x,y a,x,y等。

  4. 其他
    XT X^T为转置, tr(X) tr(X)为迹, det(X) det(X)为行列式。字母表前半 (a,b,c,⋯) (a,b,c,\cdots)为常量,后半 (t,x,y,⋯)为变量 (t,x,y,\cdots)为变量

3 关于向量的导数

以分子布局来介绍,仅出于说明目的,不代表分子布局优于分母布局。

3.1 向量关于标量求导

向量 y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥⎥ \mathbf{y}=\left[ \begin{array}{c}y_1\\ y_2 \\ \vdots \\y_m\end{array} \right]关于标量 x x求导可以表示为∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂ym∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥\frac{\partial \mathbf{y}}{\partial x}=\left[ \begin{array}{c}\frac{\partial y_1}{\partial x} \\ \frac{\partial y_2}{\partial x} \\ \vdots \\\frac{\partial y_m}{\partial x}\end{array} \right]
此时为正切向量。 ∂y∂x \frac{\partial \mathbf{y}}{\partial x}为 y \mathbf{y}的正切向量。注意,有映射 y:Rm→Rm \mathbf{y}:R^m {\rightarrow } R^m

3.2 标量关于向量求导

标量 y y关于向量x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥\mathbf{x}=\left[ \begin{array}{c}x_1\\ x_2 \\ \vdots \\x_n\end{array} \right]求导可以表示为 ∂y∂x=[∂y∂x1∂y∂x2⋯∂y∂xn] \frac{\partial {y}}{\partial \mathbf{x}}=\left[ \begin{array}{cccc}\frac{\partial y}{\partial x_1} \frac{\partial y}{\partial x_2} \cdots \frac{\partial y}{\partial x_n}\end{array} \right]
此时为梯度向量。 ∂y∂x \frac{\partial {y}}{\partial \mathbf{x}}为标量 y y在空间RmR^m的梯度,该空间以 x \mathbf{x}为基。

3.3 向量关于向量求导

向量函数(即函数组成的向量) y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥⎥ \mathbf{y}=\left[ \begin{array}{c}y_1\\ y_2 \\ \vdots \\y_m\end{array} \right]关于向量 x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥ \mathbf{x}=\left[ \begin{array}{c}x_1\\ x_2 \\ \vdots \\x_n\end{array} \right]的导数可以写作 ∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂ym∂x1∂y1∂x2∂y2∂x2⋮∂ym∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥ \frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left[ \begin{array}{cccc}\frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \cdots & \frac{\partial y_1}{\partial x_n} \\\frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_2}{\partial x_n} \\\vdots & \vdots & \ddots &\vdots \\\frac{\partial y_m}{\partial x_1} & \frac{\partial y_m}{\partial x_2} & \cdots & \frac{\partial y_m}{\partial x_n}\end{array} \right]
此时,为Jacobian矩阵

4 关于矩阵的导数

4.1 矩阵关于标量求导

正切矩阵表示为 ∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x∂y21∂x⋮∂ym1∂x∂y12∂x∂y22∂x⋮∂ym2∂x⋯⋯⋱⋯∂y1n∂x∂y2n∂x⋮∂ymn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥ \frac{\partial \mathbf{Y}}{\partial x}=\left[ \begin{array}{cccc}\frac{\partial y_{11}}{\partial x} & \frac{\partial y_{12}}{\partial x} & \cdots & \frac{\partial y_{1n}}{\partial x} \\\frac{\partial y_{21}}{\partial x} & \frac{\partial y_{22}}{\partial x} & \cdots & \frac{\partial y_{2n}}{\partial x} \\\vdots & \vdots & \ddots &\vdots \\\frac{\partial y_{m1}}{\partial x} & \frac{\partial y_{m2}}{\partial x} & \cdots & \frac{\partial y_{mn}}{\partial x}\end{array} \right]

4.2 标量关于矩阵求导

梯度矩阵表示为 ∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x12⋮∂y∂x1q∂y∂x21∂y∂x22⋮∂y∂x2q⋯⋯⋱⋯∂y∂xp1∂y∂xp2⋮∂y∂xpq⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥ \frac{\partial y}{\partial \mathbf{X}}=\left[ \begin{array}{cccc}\frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{21}} & \cdots & \frac{\partial y}{\partial x_{p1}} \\\frac{\partial y}{\partial x_{12}} & \frac{\partial y}{\partial x_{22}} & \cdots & \frac{\partial y}{\partial x_{p2}} \\\vdots & \vdots & \ddots &\vdots \\\frac{\partial y}{\partial x_{1q}} & \frac{\partial y}{\partial x_{2q}} & \cdots & \frac{\partial y}{\partial x_{pq}}\end{array} \right]
注意以上 X \mathbf{X}为其索引的转置。

5 布局约定(Layout conventions)

由向量关于向量的求导 ∂y∂x \frac{\partial \mathbf{y}}{\partial \mathbf{x}}可以得出两种矛盾的表示:结果表示为 n×m n \times m矩阵或 m×n m \times n矩阵。也就是把 y y表示为列向量xx表示为行向量或者反过来表示的问题。根据这两种可能,有以下情况:

  1. 分子布局(Numerator layout),即准确表示是 ∂y∂xT \frac{\partial \mathbf{y}}{\partial \mathbf{x^T}}( y y为列向量),即Jacobian formulation。

  2. 分母布局(Denominator layout),即准确表示是∂yT∂x\frac{\partial \mathbf{y^T}}{\partial \mathbf{x}}( y y为行向量),即Hessian formulation(也有些作者称为梯度布局,尽管梯度不够准确)

所以:

  1. 对于分子布局,正切向量∂y∂x\frac{\partial \mathbf{y}}{\partial x}为 y \mathbf{y}为列向量,梯度向量 ∂y∂x \frac{\partial {y}}{\partial \mathbf{x}}为行向量。
  2. 对于分母布局,正切向量 ∂y∂x \frac{\partial \mathbf{y}}{\partial x}为 y \mathbf{y}为行向量,梯度向量 ∂y∂x \frac{\partial {y}}{\partial \mathbf{x}}为列向量。
  3. 对于分子布局,正切矩阵 ∂Y∂x \frac{\partial \mathbf{Y}}{\partial x}为 Y Y,梯度矩阵∂y∂X\frac{\partial y}{\partial \mathbf{X}}为 XT X^T
  4. 对于分母布局,正切矩阵 ∂Y∂x \frac{\partial \mathbf{Y}}{\partial x}为 YT Y^T,梯度矩阵 ∂y∂X \frac{\partial y}{\partial \mathbf{X}}为 X X

然而,对于正切矩阵∂Y∂x\frac{\partial \mathbf{Y}}{\partial x}采用分母布局,即 YT Y^T,很不符合表达的习惯,所以一般如下表示:

  1. 统一使用分子布局,即 ∂Y∂x \frac{\partial \mathbf{Y}}{\partial x}为 Y Y,梯度矩阵∂y∂X\frac{\partial y}{\partial \mathbf{X}}为 XT X^T
  2. 使用混合布局,即 ∂Y∂x \frac{\partial \mathbf{Y}}{\partial x}为 Y Y,梯度矩阵∂y∂X\frac{\partial y}{\partial \mathbf{X}}为 X X

注意:

  1. 并非所有书与论文从头为都是统一那个分子布局或者分母分的,往往是结合起来使用,根据上下文来确认。
  2. 分母布局与分子布局呈转置关系

6 恒等式

由以上可知,计算的结果可以通过转置在分子与分母布局中转换。

以下恒等式基于三条重要法则:求和法则(线性法则)、乘积法则、链式法则(注,类似标量的求导法则得知此三条法则),其中:

  1. 求和法则是通用的。
  2. 乘积法则对以下讨论大部分情况适用。由于矩阵乘法是不可交换的,所以需要给定矩阵相乘的顺序。标量关于矩阵求导不能直接使用。
  3. 链式法则只适用于部分情况。不适用与矩阵关于标量求导即标量关于矩阵求导。后者大部分情况涉及秩的计算。

6.1 向量关于向量求导

向量关于标量求导以及标量关于向量求导都可以看出是这种情况的特殊形式。

对于∂y∂x\frac{\partial \mathbf{y}}{\partial \mathbf{x}},有如下恒等:

为说明以上图中分子布局及分母布局中 y \mathbf{y}, x \mathbf{x}的行列向量表示,把上图中部分项重新详细展开表示,可以有:

条件 表示(未带布局信息) 分子布局 分母布局
a \mathbf{a}非 x \mathbf{x}的函数 ∂a∂x \frac{\partial \mathbf{a}}{\partial \mathbf{x}} ∂a∂xT=0 \frac{\partial \mathbf{a}}{\partial \mathbf{x^T}}=\mathbf{0} ∂aT∂x=0 \frac{\partial \mathbf{a^T}}{\partial \mathbf{x}}=\mathbf{0}
∂x∂x \frac{\partial \mathbf{x}}{\partial \mathbf{x}} ∂x∂xT=I \frac{\partial \mathbf{x}}{\partial \mathbf{x^T}}=\mathbf{I} ∂xT∂x=I \frac{\partial \mathbf{x^T}}{\partial \mathbf{x}}=\mathbf{I}
A \mathbf{A}非 x \mathbf{x}的函数 ∂Ax∂x \frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} ∂Ax∂xT=A \frac{\partial \mathbf{Ax}}{\partial \mathbf{x^T}}=\mathbf{A} ∂(Ax)T∂x=∂(xTAT)∂x=AT \frac{\partial \mathbf{(Ax)^T}}{\partial \mathbf{x}}=\frac{\partial \mathbf{(x^TA^T)}}{\partial \mathbf{x}}=\mathbf{A^T}
A \mathbf{A}非 x \mathbf{x}的函数 ∂xTA∂x \frac{\partial \mathbf{x^TA}}{\partial \mathbf{x}} ∂(xTA)T∂xT=∂ATx∂xT=AT \frac{\partial \mathbf{(x^TA)^T}}{\partial \mathbf{x^T}}=\frac{\partial \mathbf{A^Tx}}{\partial \mathbf{x^T}}=\mathbf{A^T} ∂xTA∂x=A \frac{\partial \mathbf{x^TA}}{\partial \mathbf{x}}=\mathbf{A}
a a非x\mathbf{x}的函数, u=u(x) \mathbf{u=u(x)} ∂au∂x \frac{\partial a\mathbf{u}}{\partial \mathbf{x}} ∂au∂xT=a∂u∂xT \frac{\partial a\mathbf{u}}{\partial \mathbf{x^T}}=a\frac{\partial \mathbf{u}}{\partial \mathbf{x^T}} ∂auT∂x=a∂uT∂x \frac{\partial a\mathbf{u^T}}{\partial \mathbf{x}}=a\frac{\partial \mathbf{u^T}}{\partial \mathbf{x}}

6.2 标量关于向量求导

6.3 向量关于标量求导

6.4 标量关于矩阵求导

注意此处不适用链式及乘积法则。乘积法则可以借助微分及迹函数的性质得到,因为迹函数转置和循环排列: tr(A)=tr(AT) tr(A)=tr(A^T), tr(ABCD)=tr(BCDA)=tr(CDAB)=tr(DABC) tr(ABCD)=tr(BCDA)=tr(CDAB)=tr(DABC)。
根据这些性质,如计算 ∂tr(AXBXTC)∂X \frac{\partial tr(AXBX^TC)}{\partial X}:

根据6.7中内容可以得到

6.5 矩阵关于标量求导

6.6 标量关于标量求导

  1. 涉及向量

  2. 涉及矩阵

6.7 微分形式

我们常常使用微分形式计算,最后转换成导数形式。仅在分子布局有用,以下” a a”为标量

  1. 标量关于矩阵

  2. 矩阵

  3. 微分到导数转换
    从微分到导数的转换,首先转换成规范形式,然后按照一下等式转换。

8 矩阵角度看映射,函数

函数为一对一的关系,可以理解为输入为nn维, n∈N∗ n\in N^*,输出为 1 1维。进一步可以理解为,输入为nn维向量,输出为标量。
映射为一对多的关系,可以理解为输入为 n n维,n∈N∗n\in N^*,输出 m m维,m∈N∗m\in N^*。进一步可以理解为,输入为 n n维向量,输出为mm维向量。
当然,有时也称呼以上函数为标量函数,映射为向量函数(即由多个标量函数组成映射)

(Math)矩阵求导相关推荐

  1. 矩阵求导——Numerator Layout Denominator Layout

    突然想起这个问题了,刚刚看到有人在问某个的公式,自己闷头想了想居然都忘的差不多了,于是乎稍微整理一下供以后参考.  其实,关于矩阵求导讲的最详细的还是wiki上的页面面http://en.wikipe ...

  2. 矩阵求导(本质、原理与推导)详解

    矩阵求导是机器学习与深度学习的基础,它是高等数学.线性代数知识的综合,并推动了概率论与数理统计向多元统计的发展.在一般的线性代数的课程中,很少会提到矩阵导数的概念:而且在网上寻找矩阵求导的知识点,也是 ...

  3. 【数理知识】二次型求导 矩阵求导

    最近在做一些 LQR 的研究,发现涉及到了大量的二次型求导以及矩阵求导问题,故简单整理如下. 因为是 LQR 的问题,故从一个哈密顿 Hamilton 函数开始吧. 有哈密顿函数 H=12xTQx+1 ...

  4. 二阶矩阵转置怎么求_矩阵求导术(下)

    本文承接上篇 https://zhuanlan.zhihu.com/p/24709748,来讲矩阵对矩阵的求导术.使用小写字母x表示标量,粗体小写字母 表示列向量,大写字母X表示矩阵.矩阵对矩阵的求导 ...

  5. java二维矩阵怎么进行转置_矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)...

    〇. 前言 在一个多月前,针对有同学关于矩阵求导中分子布局.分母布局两者的区别的疑问,我写了如下的这篇答案. 矩阵求导中布局约定,两者布局的意义是什么?​www.zhihu.com 虽然这篇答案给出了 ...

  6. AI基础:矩阵求导,你一定要收藏

    不得不说,向量和矩阵真的是一门高深而又通用的学问,应用十分广泛,不信你可以往回看,前面有关线性代数的文章,哪一篇没个矩阵或者向量.所以呢,我们今天就来看一下向量的导数(矩阵求导)相关内容. 1.定义和 ...

  7. 矩阵求导术(上、下)

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 矩阵求导的技术,在统计学.控制论.机器学习等领域有广泛的应用.鉴于我看过的一些资料或言 ...

  8. 矩阵论思维导图_矩阵求导与矩阵微分

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

  9. 矩阵求导公式,及MathJax公式编辑

    最近学到线性回归中要用到向量,矩阵求导,所以就搜集了下资料,总结如下: 矩阵求导有两种布局: 分子布局(numerator layout) 分母布局(denominator layout) 下面用向量 ...

最新文章

  1. jQuery Validate
  2. loadrunner中创建唯一随机数
  3. 2016 Multi-University Training Contest 1 GCD【RMQ+二分】
  4. CentOS 6.6编译安装LAMP(Apache2+PHP+Mysql+PHPmyAdmin)
  5. QCustomPlot使用手册(一)
  6. VTK:PolyData之HighlightBadCells
  7. 最新js实现复制粘贴功能实例
  8. java中构造函数有什么用,java中的构造函数有什么用?用它有什么好处?在什么地方用?...
  9. 目标检测性能评价指标mAP、Precision、Recall、IoU
  10. php mysql购物车代码_php购物车实现代码实例汇总
  11. 教育类产品 竞品分析
  12. 谈2010年WEBGAME的发展趋势
  13. php unexpected t_if,zblog提示syntax error, unexpected 'if' (T_IF)出错,模版压缩导致PHP提示代码错误...
  14. Django 4.x Caches 缓存使用示例和配置方法
  15. 应用计算机解数学模型之我见,初中数学建模教学之我见
  16. 提升团队客户服务技能的6个秘诀
  17. 【转】调优方法——warmup
  18. 华为交换机查光衰_华为交换机硬件信息查看命令
  19. install Understand on ubuntu 22.04
  20. 基于多传感器的学生课堂掌握程度评估系统和方法

热门文章

  1. iOS9.x-10.x可以实现永久越狱啦
  2. Java 中ArrayList中的重复数据
  3. python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...
  4. ISP(二) Demosiac 去马赛克 (CIP)
  5. 别再说自己不会了!2021年教你增加拿到BAT等大厂offer几率,醍醐灌顶!
  6. 【Docker容器安装、配置、部署】
  7. golang 如何快速清空数组
  8. 什么是死锁?死锁的预防?
  9. jmeter(二十):Logic Controller:逻辑控制器(上)
  10. 单片机时钟周期、状态周期、机器周期、指令周期的理解