原文地址:https://en.wikipedia.org/wiki/Matrix_calculus
注:不要把它和几何运算或者是向量运算混淆

前言:

在数学中,矩阵微积分是进行多变量微积分的一种特殊符号,特别是在矩阵的空间上。 它将关于许多变量的单个函数的各种偏导数和/或关于单个变量的多变量函数的偏导数收集到可以被视为单个实体的向量和矩阵中。 这大大简化例如找到多元函数的最大值或最小值,以及求解微分方程组的操作。 这里使用的符号通常用于统计和工程中,而张量指数符号在物理学中是比较常用的。
两种对立的符号(行向量和列向量)把矩阵微积分分成了两个独立的阵营。这两个阵营的区别就是他们把标量的导数以行向量还是列向量写入。以行向量还是列向量写入都是可能的,即使人们通常在和矩阵同时处理的时候是以行向量(而不是列向量)的形式写入。一个简单的约定(使用行向量还是列向量)可能成为某个经常使用矩阵微积分计算的行业的业内标准(比如,经济学,统计学,估计理论,和机器学习)。但是即便是某个固定领域中的作者也可能同时使用这两种书写方式。即使在这个领域中已经有了一个大家都认可的规范书写方式。如果不认真处理这两种书写方式混用的情况,则会导致非常严重的错误。因此必须保证符号一致性,这两种约定和他们的区别在布局约定的时候就已经确定了。

范围

矩阵微积分是指一组不同的符号,这组符号使用矩阵和向量来收集因变量的每个分量相对于自变量的每个分量的导数。总的来说,自变量可以是标量,向量,或者是一个矩阵,因变量也可以是上述的三者之一。每一种不同的自变量和因变量的组合都有不同的一套运算规则。矩阵符号是一种有组织的可以方便收集很多导数的方式。
作为第一个例子,考虑向量微积分中的梯度运算。对于一个有三个自变量的标量方程, f(x1,x2,x3) <script type="math/tex" id="MathJax-Element-1">f(x_1,x_2,x_3)</script>,梯度被定义为下面的方程式:

f=fx1x1^+fx2x2^+fx3x3^
<script type="math/tex; mode=display" id="MathJax-Element-2"> \nabla f=\dfrac{\partial f}{\partial x_1}\hat{x_1}+\dfrac{\partial f}{\partial x_2}\hat{x_2}+\dfrac{\partial f}{\partial x_3}\hat{x_3} </script>
其中: xi^ ii3 <script type="math/tex" id="MathJax-Element-3">\hat{x_i}\space i\leq i\leq 3</script>的和是单位向量。
这种形式的导数可以被看作是标量 f <script type="math/tex" id="MathJax-Element-4">f</script>对向量x<script type="math/tex" id="MathJax-Element-5">\mathbf{x}</script>其结果可以被向量形式表示。
f=fx=[fx1 fx2 fx3]T
<script type="math/tex; mode=display" id="MathJax-Element-6"> \nabla f=\dfrac{\partial f}{\partial \mathbf{x}}=\left[\dfrac{\partial f}{\partial x_1} \space\dfrac{\partial f}{\partial x_2}\space\dfrac{\partial f}{\partial x_3}\right]^T </script>
更为复杂的形式是一个标量方程对一个矩阵进行求导,也就是梯度矩阵,这个矩阵收集了每一个矩阵元素对应位置的求导结果。如果是那样,被求导的标量就必须是一个包含了所有的矩阵元素的方程。作为另一个例子,如果我们有一个由 m <script type="math/tex" id="MathJax-Element-7">m</script>个自变量构成的因变量或函数的n<script type="math/tex" id="MathJax-Element-8">n</script>维度向量,我们可以考虑因变量向量相对于自变量向量的导数。其结果可以使用一个 m×n <script type="math/tex" id="MathJax-Element-9">m\times n</script>维的包含了所有可能求导组合的矩阵。当然,标量,向量,矩阵,一共有 3×3=9 <script type="math/tex" id="MathJax-Element-10">3\times 3=9</script>中可能的相互求导的方式。当然有些方式的结果维度太高,于是结果过于复杂。
下表收集了六种矩阵形式最整齐的求导结果:

形式 标量 向量 矩阵
标量 yx <script type="math/tex" id="MathJax-Element-11">\dfrac{\partial y}{\partial x}</script> yx <script type="math/tex" id="MathJax-Element-12">\dfrac{\partial \mathbf{y}}{\partial x}</script> Yx <script type="math/tex" id="MathJax-Element-13">\dfrac{\partial \mathbf{Y}}{\partial x}</script>
向量 yx <script type="math/tex" id="MathJax-Element-14">\dfrac{\partial y}{\partial \mathbf{x}}</script> yx <script type="math/tex" id="MathJax-Element-15">\dfrac{\partial \mathbf{y}}{\partial \mathbf{x}}</script>
矩阵 yX <script type="math/tex" id="MathJax-Element-16">\dfrac{\partial y}{\partial \mathbf{X}}</script>

在这里我们把矩阵作为最一般的情况,把向量和标量分别视为矩阵的特殊形式。而且,我们使用粗体小写字母代表向量,粗体大写字目代表矩阵。这些符号的使用是贯通全文的。
注意到我们也可以讨论向量对矩阵求导,或者是上表中的任何没有填写的部分。然而这些求导的结果的维度太高,所以不能被写成2维矩阵形式。在接下来的三个章节中我们将定义每一种求导形式和与他们相关的一系列的数学计算。请参阅布局约定部分以获取更详细的表格。

和其他导数的关系

矩阵求导不过是一种方便计算的用来保存一系列偏导结果的符号。Fréchet导数是在设置功能性分析的标准的方式,以获取有关向量的导数。在矩阵的矩阵函数为Fréchet可微的情况下,这两个导数将允许符号的转换。 一般在偏导数的情况下,一些公式可能会在弱分析条件下延伸,而不是像导数的存在那样近似线性映射。

用途

矩阵微积分用于推导最优随机估计量,通常涉及使用拉格朗日乘子。 这包括的导数有:

  • 卡尔曼滤波器
  • 维纳过滤器
  • 高斯混合的期望最大化算法

符号

向量和矩阵的偏导数在本节和后面的章节中使用矩阵符号,使用一个变量代表众多变量。在后面的章节中,我们为了区分标量,向量和矩阵将采用不同的书写方式。我们使用 M(n,m) <script type="math/tex" id="MathJax-Element-17">M(n,m)</script>表示一个 n×m <script type="math/tex" id="MathJax-Element-18">n\times m</script>的矩阵,就是说这个矩阵共有 n <script type="math/tex" id="MathJax-Element-19">n</script>行,m<script type="math/tex" id="MathJax-Element-20">m</script>列。矩阵使用大写的加粗的字母比如 A,X,Y <script type="math/tex" id="MathJax-Element-21">\mathbf{A,X,Y}</script>等来表示。 M(n,1) <script type="math/tex" id="MathJax-Element-22">M(n,1)</script>代表一个列向量,使用加粗的小写字母来表示,比如 a,x,y <script type="math/tex" id="MathJax-Element-23">\mathbf{a,x,y}</script>等。 M(1,1) <script type="math/tex" id="MathJax-Element-24">M(1,1)</script>代表一个标量使用小写的斜体不加粗的字母来表示,比如 a,t,x <script type="math/tex" id="MathJax-Element-25">{a,t,x}</script>等。 XT <script type="math/tex" id="MathJax-Element-26">\mathbf{X}^T</script>表示矩阵的转置。 tr(X) <script type="math/tex" id="MathJax-Element-27">tr(\mathbf{X})</script>表示矩阵的迹。 det(X) <script type="math/tex" id="MathJax-Element-28">det(\mathbf{X})</script>是矩阵的行列式。所有的方程是都假定可分级为 C1 <script type="math/tex" id="MathJax-Element-29">C^1</script>,除非另有说明。通常来说,字母表的前半部分 (a,b,c,) <script type="math/tex" id="MathJax-Element-30">(a,b,c,\dots)</script>用来表示常量,而字母表的后半部分用来表示变量 (t,x,y,) <script type="math/tex" id="MathJax-Element-31">(t,x,y,\dots)</script>。
注:综上所述,在向量和矩阵中偏导数编排系统中存在不同的符号表示。而且到目前为止都没有一个标准。为了方便,在后面两个章节中,我们统一采用分子布局规范,同时避免更为复杂的讨论。更后面的章节将更加深入讨论布局规范。认识到下面这些是很重要的:

  1. 尽管有“分子布局”和“分母布局”,但是实际上还有多于两种的符号布局可以选择。选择“分子” vs <script type="math/tex" id="MathJax-Element-32">vs</script>“分母”(或者在某些情况下,是分子” vs <script type="math/tex" id="MathJax-Element-33">vs</script>“混合”)可以独立地进行,标量对向量,向量对标量,向量对向量,向量对矩阵地偏导。有些作者混合使用不同的布局方式。
  2. 下面选择“分子布局”选择并不意味着“分子布局”这是“正确的”或“优越的”选择。 各种布局类型都有优点和缺点。 如果不小心将不同布局的公式结合在一起,就可能导致严重的错误,并且从一个布局转换到另一个时需要注意避免这样的错误。 因此,在使用现有公式时,最好的策略可能是识别使用哪种布局并保持布局一致性,而不是尝试在所有情况下使用相同的布局。

备选方案

张量索引符号以其爱因斯坦求和约定和矩阵微积分演算是非常相似的,除了一次一个写入仅表示单一组分。它的优点是可以很容易地操作任意高阶张量,而高于二阶的张量则用矩阵符号很难操作。这里所有的工作都可以在不使用单变量矩阵表示法的情况下完成。然而,在估计理论和应用数学的其他领域的许多问题将导致太多的指标得到适当的跟踪,指向这些领域的矩阵微积分。而且,爱因斯坦符号在证明这里提出的身份方面是非常有用的(参见区分一节)作为典型元素符号的替代方法,当明确的和数被执行时会变得麻烦。请注意,矩阵可以被认为是二级张量。

向量求导

因为向量是只有一列的矩阵,所以对向量的偏导是最简单的矩阵偏导。
这里的符号可以通过识别具有欧几里得空间 Rn <script type="math/tex" id="MathJax-Element-34">\mathbf{R}^n</script>的 n <script type="math/tex" id="MathJax-Element-35">n</script>向量的空间M(n,1)<script type="math/tex" id="MathJax-Element-36">M(n,1)</script>并且使用 R <script type="math/tex" id="MathJax-Element-37">R</script>来标识标量M(1,1)<script type="math/tex" id="MathJax-Element-38">M(1,1)</script>来容纳向量演算的常规操作。 对应的向量微积分在每个小节结束时指出。
注:本节中的讨论假定用于教学目的的分子布局约定。 一些作者使用不同的约定。 关于布局约定的部分更详细地讨论了这个问题。

向量对标量求导

向量 y=y1y2ym <script type="math/tex" id="MathJax-Element-39">\mathbf{y}=\left[\begin{aligned}y_1\\y_2\\\vdots\\y_m\end{aligned}\right]</script>对 x <script type="math/tex" id="MathJax-Element-40">x</script>求导(使用分子布局)可以写成:

yx=y1xy2xymx
<script type="math/tex; mode=display" id="MathJax-Element-41"> \dfrac{\partial{\mathbf{y}}}{\partial{x}}=\left[\begin{aligned}\dfrac{\partial{y_1}}{\partial{x}}\\\dfrac{\partial{y_2}}{\partial{x}}\\\vdots\\\dfrac{\partial{y_m}}{\partial{x}}\end{aligned}\right] </script>
在向量微积分中,向量 y <script type="math/tex" id="MathJax-Element-42">\mathbf{y}</script>相对于标量 x <script type="math/tex" id="MathJax-Element-43">x</script>的导数被称为向量y<script type="math/tex" id="MathJax-Element-44">\mathbf{y}</script>的切向量, yx <script type="math/tex" id="MathJax-Element-45">\dfrac{\partial{\mathbf{y}}}{\partial{x}}</script>注意到这里 y:R1Rm <script type="math/tex" id="MathJax-Element-46">\mathbf{y}:\mathbf{R}^1\rightarrow \mathbf{R}^m</script>
示例:
简单的例子包括欧几里德空间中的速度矢量,它是位置矢量的切向量(视为时间的函数)。 另外,加速度是速度的切向量

标量对向量求导

元素 y <script type="math/tex" id="MathJax-Element-47">y</script>对向量y=y1y2ym<script type="math/tex" id="MathJax-Element-48">\mathbf{y}=\left[\begin{aligned}&y_1\\&y_2\\&\vdots\\&y_m\end{aligned}\right]</script>求导(使用分子布局)可以写成:

yx=[yx1 yx2  yxm]
<script type="math/tex; mode=display" id="MathJax-Element-49"> \dfrac{\partial{y}}{\partial{\mathbf{x}}}=\left[\begin{aligned}\dfrac{\partial{y}}{\partial{x_1}}\space \dfrac{\partial{y}}{\partial{x_2}}\space \cdots\space \dfrac{\partial{y}}{\partial{x_m}}\end{aligned}\right]\cdot </script>
在向量演算中,空间 Rn <script type="math/tex" id="MathJax-Element-50">\mathbf{R}^n</script>(其独立坐标是x的分量)中的标量场 y <script type="math/tex" id="MathJax-Element-51">y</script>的梯度是标量由向量求导的转置。在物理学中,所谓电场就是向量梯度的电位。
一个标量函数f(x)<script type="math/tex" id="MathJax-Element-52">f(\mathbf{x})</script>对空间向量 x <script type="math/tex" id="MathJax-Element-53">\mathbf{x}</script>的方向导数在单位向量 u <script type="math/tex" id="MathJax-Element-54">\mathbf{u}</script>上的梯度的定义如下:
uf(x)=f(x)u
<script type="math/tex; mode=display" id="MathJax-Element-55"> \nabla_{\mathbf{u}}f(\mathbf{x})=\nabla{f(\mathbf{x})\cdot\mathbf{u}} </script>
使用刚刚定义的标量对于向量导数的符号,我们可以将方向导数重写为 uf(x)=fxu <script type="math/tex" id="MathJax-Element-56">\nabla_{\mathbf{u}}f(\mathbf{x})=\dfrac{\partial{f}}{\partial{\mathbf{x}}}\mathbf{u}\cdot</script>.这种表示形式在使用链式法则或者其他运算的时候非常地友好,因为它和我们熟悉地标量求导非常相似。

向量对向量求导

前面两种情况中的每一种都可以被认为是使用适当大小的向量对向量求导数的应用。类似地,我们将发现涉及矩阵的导数将以相应的方式减少到涉及向量的导数。
对函数向量(一个向量其组成是函数) y=y1y2ym <script type="math/tex" id="MathJax-Element-57">\mathbf{y}=\left[\begin{aligned}\begin{matrix}y_1\\y_2\\\vdots\\y_m\end{matrix}\end{aligned}\right]</script>,对一个输入向量 x=x1x2xm <script type="math/tex" id="MathJax-Element-58">\mathbf{x}=\left[\begin{aligned}\begin{matrix}x_1\\x_2\\\vdots\\x_m\end{matrix}\end{aligned}\right]</script>求导(使用分子布局),可以写成:

yx=y1x1y2x1ymx1y1x2y2x2ymx2y1xny2xnymxn
<script type="math/tex; mode=display" id="MathJax-Element-59">\dfrac{\partial\mathbf{y}}{\partial\mathbf{x}}= \left[ \begin{aligned} \begin{matrix} \dfrac{\partial{y_1}}{\partial{x_1}}&\dfrac{\partial{y_1}}{\partial{x_2}}&\cdots&\dfrac{\partial{y_1}}{\partial{x_n}}\\ \dfrac{\partial{y_2}}{\partial{x_1}}&\dfrac{\partial{y_2}}{\partial{x_2}}&\cdots&\dfrac{\partial{y_2}}{\partial{x_n}}\\ \vdots&\vdots&\ddots&\vdots\\ \dfrac{\partial{y_m}}{\partial{x_1}}&\dfrac{\partial{y_m}}{\partial{x_2}}&\cdots&\dfrac{\partial{y_m}}{\partial{x_n}}\\ \end{matrix} \end{aligned} \right]</script>
在向量微积分中,向量函数 y <script type="math/tex" id="MathJax-Element-60">\mathbf{y}</script>相对于其分量表示空间的向量 x <script type="math/tex" id="MathJax-Element-61">\mathbf{x}</script>的导数被称为前推(或微分)或雅可比矩阵。
对于 Rn <script type="math/tex" id="MathJax-Element-62">\mathbf{R}^n</script>中的向量 v <script type="math/tex" id="MathJax-Element-63">\mathbf{v}</script>其对于函数向量的前推可以表示为 df(v)=fxv <script type="math/tex" id="MathJax-Element-64">\mathbb{d}\mathbf{f}(\mathbf{v})=\dfrac{\partial\mathbf{f}}{\partial\mathbf{x}}\mathbf{v}</script>

对矩阵求导

对于矩阵导数有两种类型可以最终整理成相同的大小的矩阵,它们是矩阵对向量求导,还有就是向量对矩阵求导。这些可以用于最小化在应用数学的许多领域中发现的问题,并且已经分别在其向量的类比之后采用名称切线矩阵和梯度矩阵。
注:本部分的讨论假设分子布局约定。一些作者使用不同的约定。关于布局约定的部分更详细地讨论了这个问题。

矩阵对标量求导

函数矩阵 Y <script type="math/tex" id="MathJax-Element-229">\mathbf{Y}</script>对标量 x <script type="math/tex" id="MathJax-Element-230">x</script>的求导结果就是切矩阵,使用(分子布局)可以表示为:

Yx=y11xy21xym1xy12xy22xym2xy1nxy2nxymnx
<script type="math/tex; mode=display" id="MathJax-Element-231">\dfrac{\partial\mathbf{Y}}{\partial{x}}= \left[ \begin{aligned} \begin{matrix} \dfrac{\partial{y_{11}}}{\partial{x}}&\dfrac{\partial{y_{12}}}{\partial{x}}&\cdots&\dfrac{\partial{y_{1n}}}{\partial{x}}\\ \dfrac{\partial{y_{21}}}{\partial{x}}&\dfrac{\partial{y_{22}}}{\partial{x}}&\cdots&\dfrac{\partial{y_{2n}}}{\partial{x}}\\ \vdots&\vdots&\ddots&\vdots\\ \dfrac{\partial{y_{m1}}}{\partial{x}}&\dfrac{\partial{y_{m2}}}{\partial{x}}&\cdots&\dfrac{\partial{y_{mn}}}{\partial{x}}\\ \end{matrix} \end{aligned} \right]</script>

标量对矩阵求导

一个标量函数 y <script type="math/tex" id="MathJax-Element-1534">y</script>对于一个p×q<script type="math/tex" id="MathJax-Element-1535">\mathbb{p}\times\mathbb{q}</script>的自变量矩阵的求导,使用(分子布局)可以表示为:

yX=yx11yx12yx1qyx21yx22yx2qyxp1yxp2yxpq
<script type="math/tex; mode=display" id="MathJax-Element-1536">\dfrac{\partial{y}}{\partial{\mathbf{X}}}= \left[ \begin{aligned} \begin{matrix} \dfrac{\partial{y}}{\partial{x_{11}}}&\dfrac{\partial{y}}{\partial{x_{21}}}&\cdots&\dfrac{\partial{y}}{\partial{x_{p1}}}\\ \dfrac{\partial{y}}{\partial{x_{12}}}&\dfrac{\partial{y}}{\partial{x_{22}}}&\cdots&\dfrac{\partial{y}}{\partial{x_{p2}}}\\ \vdots&\vdots&\ddots&\vdots\\ \dfrac{\partial{y}}{\partial{x_{1q}}}&\dfrac{\partial{y}}{\partial{x_{2q}}}&\cdots&\dfrac{\partial{y}}{\partial{x_{pq}}}\\ \end{matrix} \end{aligned} \right]</script>
矩阵的迹 tr(X) <script type="math/tex" id="MathJax-Element-1537">tr(\mathbf{X})</script>和其行列式是矩阵的标量函数的重要的例子。
和向量的微积分类似,这个微分通常被写成如下的形式:
xy(X)=y(X)X
<script type="math/tex; mode=display" id="MathJax-Element-1538">\nabla_{\mathbf{x}}y(\mathbf{X})=\dfrac{\partial{y(\mathbf{X})}}{\partial\mathbf{X}}</script>
另外,与向量微积分类似,矩阵 X <script type="math/tex" id="MathJax-Element-1539">\mathbf{X}</script>的标量 f(X) <script type="math/tex" id="MathJax-Element-1540">\mathbb{f}(\mathbf{X})</script>在矩阵Y的方向上的方向导数由下式给出在矩阵 Y <script type="math/tex" id="MathJax-Element-1541">Y</script>方向上的导数为:
Yf=tr(fXY)
<script type="math/tex; mode=display" id="MathJax-Element-1542">\nabla_{\mathbf{Y}}f=\mathop{\mathbb{tr}}\left(\dfrac{\partial{f}}{\partial\mathbf{X}}\mathbf{Y}\right)</script>
特别是梯度矩阵,它在估计理论的最小化问题中找到了许多用途,特别是在该领域中非常重要的卡尔曼滤波器算法的推导中。

本来想一次翻译完的,发现自己水平不够,只好分几次完成了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐