Matrix calculus(矩阵微积分)(前四节)

2023-11-19

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

前言:

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

范围

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

f=fx1x1^+fx2x2^+fx3x3^

其中: xi^ ii3 的和是单位向量。
这种形式的导数可以被看作是标量 f 对向量x其结果可以被向量形式表示。
f=fx=[fx1 fx2 fx3]T

更为复杂的形式是一个标量方程对一个矩阵进行求导,也就是梯度矩阵,这个矩阵收集了每一个矩阵元素对应位置的求导结果。如果是那样,被求导的标量就必须是一个包含了所有的矩阵元素的方程。作为另一个例子,如果我们有一个由 m 个自变量构成的因变量或函数的n维度向量,我们可以考虑因变量向量相对于自变量向量的导数。其结果可以使用一个 m×n 维的包含了所有可能求导组合的矩阵。当然,标量,向量,矩阵,一共有 3×3=9 中可能的相互求导的方式。当然有些方式的结果维度太高,于是结果过于复杂。
下表收集了六种矩阵形式最整齐的求导结果:

形式 标量 向量 矩阵
标量 yx yx Yx
向量 yx yx
矩阵 yX

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

和其他导数的关系

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

用途

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

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

符号

向量和矩阵的偏导数在本节和后面的章节中使用矩阵符号,使用一个变量代表众多变量。在后面的章节中,我们为了区分标量,向量和矩阵将采用不同的书写方式。我们使用 M(n,m) 表示一个 n×m 的矩阵,就是说这个矩阵共有 n 行,m列。矩阵使用大写的加粗的字母比如 A,X,Y 等来表示。 M(n,1) 代表一个列向量,使用加粗的小写字母来表示,比如 a,x,y 等。 M(1,1) 代表一个标量使用小写的斜体不加粗的字母来表示,比如 a,t,x 等。 XT 表示矩阵的转置。 tr(X) 表示矩阵的迹。 det(X) 是矩阵的行列式。所有的方程是都假定可分级为 C1 ,除非另有说明。通常来说,字母表的前半部分 (a,b,c,) 用来表示常量,而字母表的后半部分用来表示变量 (t,x,y,)
注:综上所述,在向量和矩阵中偏导数编排系统中存在不同的符号表示。而且到目前为止都没有一个标准。为了方便,在后面两个章节中,我们统一采用分子布局规范,同时避免更为复杂的讨论。更后面的章节将更加深入讨论布局规范。认识到下面这些是很重要的:

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

备选方案

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

向量求导

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

向量对标量求导

向量 y=y1y2ym x 求导(使用分子布局)可以写成:

yx=y1xy2xymx

在向量微积分中,向量 y 相对于标量 x 的导数被称为向量y切向量, yx 注意到这里 y:R1Rm
示例:
简单的例子包括欧几里德空间中的速度矢量,它是位置矢量的切向量(视为时间的函数)。 另外,加速度是速度的切向量

标量对向量求导

元素 y 对向量y=y1y2ym求导(使用分子布局)可以写成:

yx=[yx1 yx2  yxm]

在向量演算中,空间 Rn (其独立坐标是x的分量)中的标量场 y 的梯度是标量由向量求导的转置。在物理学中,所谓电场就是向量梯度的电位。
一个标量函数f(x)对空间向量 x 的方向导数在单位向量 u 上的梯度的定义如下:
uf(x)=f(x)u

使用刚刚定义的标量对于向量导数的符号,我们可以将方向导数重写为 uf(x)=fxu .这种表示形式在使用链式法则或者其他运算的时候非常地友好,因为它和我们熟悉地标量求导非常相似。

向量对向量求导

前面两种情况中的每一种都可以被认为是使用适当大小的向量对向量求导数的应用。类似地,我们将发现涉及矩阵的导数将以相应的方式减少到涉及向量的导数。
对函数向量(一个向量其组成是函数) y=y1y2ym ,对一个输入向量 x=x1x2xm 求导(使用分子布局),可以写成:

yx=y1x1y2x1ymx1y1x2y2x2ymx2y1xny2xnymxn

在向量微积分中,向量函数 y 相对于其分量表示空间的向量 x 的导数被称为前推(或微分)或雅可比矩阵。
对于 Rn 中的向量 v 其对于函数向量的前推可以表示为 df(v)=fxv

对矩阵求导

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

矩阵对标量求导

函数矩阵 Y 对标量 x 的求导结果就是切矩阵,使用(分子布局)可以表示为:

Yx=y11xy21xym1xy12xy22xym2xy1nxy2nxymnx

标量对矩阵求导

一个标量函数 y 对于一个p×q的自变量矩阵的求导,使用(分子布局)可以表示为:

yX=yx11yx12yx1qyx21yx22yx2qyxp1yxp2yxpq

矩阵的迹 tr(X) 和其行列式是矩阵的标量函数的重要的例子。
和向量的微积分类似,这个微分通常被写成如下的形式:
xy(X)=y(X)X

另外,与向量微积分类似,矩阵 X 的标量 f(X) 在矩阵Y的方向上的方向导数由下式给出在矩阵 Y 方向上的导数为:
Yf=tr(fXY)

特别是梯度矩阵,它在估计理论的最小化问题中找到了许多用途,特别是在该领域中非常重要的卡尔曼滤波器算法的推导中。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matrix calculus(矩阵微积分)(前四节) 的相关文章

  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 朱莉娅在矩阵中查找(行,列)而不是索引

    在 Julia 中 您可以通过以下方式找到矩阵中元素的坐标 julia gt find x gt x 2 1 2 3 2 3 4 1 0 2 3 element Array Int64 1 2 4 9 这些值是正确的 但我更希望得到 row
  • 从 r 中的多个列表创建二进制(存在/不存在)数据矩阵

    我有一系列不同长度的单独变量列表 字符串 我想将它们组合成一个数据帧以形成存在 1 不存在 0 矩阵 鉴于它们的长度不同 我什至不知道如何创建初始数据框 这是我的例子 data1 lt c a b c d e f data2 lt c e
  • PHP清晰度卷积矩阵

    我正在使用一个卷积矩阵 http www php net manual en function imageconvolution php为了锐度PHP GD我想改变清晰度 level 我会去哪里做出改变如果我想做到的话或多或少尖锐 imag
  • 将 3D 矩阵转换为级联 2D 矩阵

    我有一个3Dpython中的矩阵如下 import numpy as np a np ones 2 2 3 a 0 0 0 2 a 0 0 1 3 a 0 0 2 4 我想转换这个3D矩阵到一组2D矩阵 我努力了np reshape但这并没
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 如何从一个清晰的例子计算二维图像中的吉布斯能量

    我有一个关于矩阵的有趣问题 在吉布斯分布中 吉布斯能量U x 可以计算为 这是所有可能的派系 C 上的派系势 Vc x 的总和 右图 团 c 被定义为 S 中站点的子集 x 蓝色像素的邻域是左图中黄色像素的邻居 其中每对不同的站点都是邻居
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • 计算带状矩阵的 colCumsums 的更快替代方案

    我是 R 和 stats 的新手 在我当前工作的领域中 我需要以独特的方式计算累积列总和 最初提供宽度为 b 行数为 n 的方带矩阵 例如 n 8 且 b 3 0 1 2 7 0 0 0 0 0 0 3 6 7 0 0 0 0 0 0 3
  • 如何使用 numpy 从一维数组创建对角矩阵?

    我正在使用 Python 和 numpy 来做线性代数 我表演了numpy对矩阵进行 SVD 以获得矩阵 U i 和 V 然而 i 矩阵表示为 1 行的 1x4 矩阵 IE 12 22151125 4 92815942 2 06380839
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小
  • 如何使用 Julia 查找矩阵中的连通分量

    假设我有以下矩阵 此处用 Julia 语言定义 mat 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 将一组值为 1 的相邻元素视为一个 分量 如何识别该矩阵有 2 个分量以及每个分量由哪些顶点组成 对于矩
  • Python矩阵问题[重复]

    这个问题在这里已经有答案了 这是从这个线程继续的 Python矩阵 有什么解决方案吗 https stackoverflow com questions 5835583 python matrix any solution Input fr
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • 如何对每行具有不同列位置的矩阵进行子集化? [复制]

    这个问题在这里已经有答案了 我想为每一行使用不同的 但一列 列来对矩阵进行子集化 那么申请可以完成这项工作吗 但也许智能子集也可以工作 但我还没有找到解决方案 计算时间是一个问题 我有一个带有 for 循环的解决方案 但多次将矩阵加载到 R
  • R 中的自定义对比:对比系数矩阵或对比矩阵/编码方案?以及如何到达那里?

    自定义对比在分析中应用非常广泛 例如 这个三水平因子的第 1 级和第 3 级的 DV 值是否有显着差异 直观上 这种对比用单元均值表示为 c 1 0 1 这些对比中的一个或多个 以列的形式绑定 形成对比系数矩阵 例如 mat matrix
  • 更快的四元数向量乘法不起作用

    我的数学库需要一个更快的四元数向量乘法例程 现在我正在使用规范v qv q 1 它产生的结果与向量乘以由四元数组成的矩阵相同 所以我对它的正确性充满信心 到目前为止 我已经实现了 3 种替代 更快 的方法 1 我不知道我从哪里得到这个 v
  • 如何使用 MPI_Scatterv 将矩阵的行发送到所有进程?

    我正在使用 MPI 接口 我想分割一个矩阵 按行 并将各个部分分配给每个进程 例如 我有这个7x7的方阵M M 0 00 1 00 2 00 3 00 4 00 5 00 6 00 7 00 8 00 9 00 10 00 11 00 12

随机推荐

  • 关于UI适配的文档

    第一部分 原理 1 根据当前屏幕尺寸与开发预设屏幕尺寸尺寸得出以下参数 1 XRatio 当前屏幕尺寸与开发尺寸的X轴比例 2 YRtaio 当前屏幕尺寸与开发尺寸的Y轴比例 3minRatio XRatio与YRtaio中的较小值 2 之
  • 求1到n的所有质数(素数)

    1 一般方法 定义一个空列表 双层循环实现 时间复杂高计算慢 时间复杂度为 O n 2 mathrm O left mathrm n 2
  • 《这些话好帅,经典得让人心痛!》

    http bookmark hexun com shuhe2008 detail aspx bid 6306685 type rss 1 对自己好点 因为一辈子不长 对身边的人好点 因为下辈子不一定能够遇见 2 对不起是一种真诚 没关系是一
  • 线性回归和逻辑回归的区别_【基础】线性回归和逻辑回归

    回归和分类 回归和分类是机器学习可以解决两大主要问题 从预测值的类型上来区分 连续变量的预测称为回归 离散变量的预测称为分类 例如 预测房价的价格是一个回归任务 预测一张图片是猫还是狗的图片是分类任务 线性回归 在一维特征空间 线性回归是通
  • C基础day8(2023.7.10)

    一 Xmind整理 二 课上练习 练习1 基本类型参数 include
  • Ubuntu/Win10双系统安全删除Ubuntu的方法

    为什么要删除Ubuntu 现在 许多筒子喜欢在电脑上安装双系统 Windows Linux Linux系统中最受个人用户用户青睐的当属Ubuntu了 我们常常在Ubuntu上写程序 调代码 做开发 然而 有些时候我们因为各种各样的原因 不得
  • vscode插件开发踩坑

    vscode插件开发踩坑 q npm总是提示连接错误并且切换源也没用 a 卸载重装 卸载干净 usr 下的lib和bin有关node moudle的全删掉 q npm使用sudo时提示错误 a 首先npm不能和sudo一起用 然后因为npm
  • iOS 17 Simulator Failed with HTTP status 400:bad request

    升级 xcode 15 要 ios17 的 sdk 才能运行 但是更新这个 sdk 400 错误了 解决方案 直接去官网下载开发者后台下载dmg文件 使用命令行快速安装即可 https developer apple com documen
  • OCaml简介

    OCaml简介 函数式编程 产生于 优点 ref https zhuanlan zhihu com p 591818090 函数式编程 传统的编程语言 是面向过程 面向对象的 产生于 20世纪80 90年代 产生于法国巴黎高等师范学院 起源
  • 如何在Unity中使用AR Foundation和ARCore创建一个项目并编译到Android 11手机设备中

    最近又开始学如何使用Unity进行AR开发 因为Unity开发的AR Foundation在各种设备 例如Android iOS HoloLens 的原生AR SDK 例如ARCore ARKit Windows 10 SDK 上进行了封装
  • 服务端收发登录注冊流程

    client发包给服务分为主次id struct TCP Command WORD wMainCmdID 主命令码 WORD wSubCmdID 子命令码 一 注冊 1 当在client输入游戏帐号或游戏昵称换行时 进行验证 CS 1 1
  • 《基于spyglass同步设计分析和静态验证》阅读笔记

    常见的CDC问题 亚稳态 data hold数据保持的时间问题 常见的两级触发器同步 多bit信号采用简单的两级触发器同步 CDC中复杂的同步设计 亚稳态总会有概率的存在 单bit信号的CDC同步设计 慢时钟域到快时钟域的同步情况 快时钟域
  • uni-app 运行到MuMu模拟器

    文章目录 1 前言 2 实现流程 2 1 下载MuMu模拟器 2 2 配置全局 adb 2 3 运行到模拟器 2 4 模拟器调为手机版 1 前言 本文使用的模拟器为MuMu模拟器 使用逍遥模拟器会一直卡在 同步手机端程序文件完成 DClou
  • Vue+ElementUI实现从后台动态填充下拉框

    1 首先编写前端代码 将elementUI中的标签写到 vue界面中
  • STM32在休眠模式(Stop/Standby)模式下的关闭看门狗问题的解决

    长期以来一直都认为Stm32启用了IWDG看门狗以后 就不能再使用休眠进入低功耗模式 由于看门狗启动后就不能停止 给很多人带来了困扰 还有很多人放弃了使用看门狗 从而给产品带来一定的不确定性 其实有一个简单的方法可以实现在有看门狗的情况下可
  • Python3:我只用1行代码就下载全网视频,我被我的才华和颜值征服了!!

    you get库使用 1 引言 2 代码实战 2 1 you get介绍 2 2 you get安装 2 3 you get下载视频 2 3 1 指定存储和重命名 2 3 2 查看视频信息 2 3 3 选择需要下载清晰度和格式 2 4 yo
  • 关于华硕飞行堡垒安装Ubuntu时的卡死和 grub引导问题的解决办法

    今天给同学装双系统时发现网上好多博客都不能用 然后结合前辈的一些优点和自己使用deepin和Ubuntu时的感悟 解决了他们两个堡垒关于grub引导和Ubuntu启动时卡死的问题 总结如下 1 关于U盘安装时进不去引导时的解决办法 进入gr
  • 《0基础学安卓逆向》第1集:什么是安卓逆向及环境搭建

    1 安卓逆向是什么 安卓逆向是什么 目前百度知道都没有收录安卓逆向这个词条 大部分能搜索到的资料都是技术人员写的偏技术类的文章 往往充斥着代码和各类工具集合 非技术人员一看就比较懵逼 简单地来说 安卓逆向是对已经打包好的APP进行反编译 源
  • psycopg2中copy_to /copy_from/copy_expert的使用方法

    psycopg2是一个用于在Python中连接和操作PostgreSQL数据库的库 它提供了三个方法copy from copy to和copy expert用于在PostgreSQL数据库中执行COPY操作 copy from方法用于从文
  • Matrix calculus(矩阵微积分)(前四节)

    原文地址 https en wikipedia org wiki Matrix calculus 注 不要把它和几何运算或者是向量运算混淆 前言 在数学中 矩阵微积分是进行多变量微积分的一种特殊符号 特别是在矩阵的空间上 它将关于许多变量的