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(矩阵微积分)(前四节) 的相关文章

  • 如何在 R 中将所有行合并为一行? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个有 100 行和 10 列的数据框 我想知道如何将所有 100 行合并为一行 谢谢 mydata seq 1 1000 mydata
  • 每对观测值的马氏距离

    我正在尝试计算数据集的每个观测值之间的马哈拉诺比斯距离dat 其中每行是一个观察值 每列是一个变量 该距离定义为 我写了一个函数来做到这一点 但我觉得它很慢 在 R 中是否有更好的方法来计算它 生成一些数据来测试该功能 generateDa
  • 如何在Python中从邻接列表中选择子矩阵?

    我有一个邻接列表 其中每个数组代表该行的非零列 例如 下面的 adj 列表中的第 0 个数组意味着第 2 列和第 6 列为 1 其他所有列均为 0 adj list 2 6 1 3 24 2 4 3 5 21 4 6 10 1 5 7 6
  • 矩阵求逆 R

    我想求逆方形对称正定矩阵 我知道有两个功能solve and chol2inv 在 R 中 但他们的结果是不同的 我需要知道为什么会发生这种情况 谢谢 以下是计算矩阵逆的几种方法 包括solve and chol2inv gt A lt m
  • Python - pandas - 将系列附加到空白数据帧中

    假设我有两个 python 中的 pandas 系列 import pandas as pd h pd Series g 4 2 1 1 g pd Series 1 6 5 4 abc 我可以仅使用 h 创建一个 DataFrame 然后将
  • 用于沿大矩阵对角线插入 2x2 矩阵的代码的向量化

    我正在尝试沿大矩阵 例如 10x10 的对角线对小矩阵 2x2 进行元素插入 添加重叠值 并且仅将小矩阵插入到可以完全放入大矩阵的位置 我已经使用 for 循环实现了这一点 但我很好奇该过程是否可以矢量化 function M TestDi
  • 如何从矩阵中提取行名?

    我有一个行名称为日期的矩阵 我想将这些行名称提取到一个变量中 然后使用rownames 将这些日期应用到我拥有的另一个矩阵中 假设该矩阵称为 data matrix 每当我跑步时 data matrix 0 我得到了所有日期的打印输出 所以
  • 创建所有节点具有相同入度和出度的矩阵

    我已经用图论术语阐述了这个问题 但概念化是不必要的 我想要做的是 使用 Python 生成一个由 0 和 1 组成的矩阵 其中每行都有相同数量的 1 每列都有相同数量的 1 当行数 发送节点 不等于列数 接收节点 时 行数将与列数不同 这是
  • Matlab cellfun 上的函数 strfind

    我想用cellfun功能于strfind函数在另一个字符串元胞数组中查找字符串元胞数组中每个字符串的索引 以将它们排除在外 strings aaa bbb ccc ddd eee fff ggg hhh iii jjj excludedSt
  • 矩阵到 JTable

    我需要用静态二维数组填充 JTable 我创建了这个模型JTable public class InsertMatToJTable extends AbstractTableModel String titre age real sex r
  • SSE,行主要与列主要性能问题

    出于个人和娱乐目的 我正在使用 SSE 4 1 编写一个 geom 库 我花了最后 12 个小时试图理解处理行主要与列主要存储矩阵时的性能问题 我知道 Dirext OpenGL 矩阵是以行主顺序存储的 因此对我来说 将矩阵按行主顺序存储会
  • 将 3D 矩阵与 2D 矩阵相乘

    假设我有一个AxBxC matrix X and a BxD matrix Y 是否有一种非循环方法可以将每个C AxB矩阵与Y 作为个人喜好 我希望我的代码尽可能简洁和可读 这是我会做的 尽管它不符合您的 无循环 要求 for m 1 C
  • 如何在 MATLAB 中调整矩阵大小?

    假设我有一个1 by 12矩阵 我想将其调整为4 by 3矩阵 我怎么能这样做呢 我当前的解决方案有点丑陋 for n 1 length mat 3 out n 1 3 mat n 1 3 1 n 1 3 3 end 有一个更好的方法吗 r
  • 使用 MAT2CELL 的 MATLAB

    我有以下矩阵 letter A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h ii jj k l m o p q r s t u v w x y z nu
  • R:有没有一种简单有效的方法来获取分块对角矩阵的构建分块矩阵列表?

    我正在寻找一个 内置 函数 它通过以下方式有效地返回块对角矩阵的构建块列表 而不是迭代插槽以手动获取列表 construct bdiag matrix library Matrix listElems lt list matrix 1 4
  • 如何有效地对一个数组中某个值在另一个数组中的位置出现的次数求和

    我正在寻找一种有效的 for 循环 避免解决方案来解决我遇到的数组相关问题 我想使用一个巨大的一维数组 A gt size 250 000 用于一维索引的 0 到 40 之间的值 以及用于第二维索引的具有 0 到 9995 之间的值的相同大
  • PHP 矩阵的逆矩阵

    I saw 这个问题 https stackoverflow com questions 211160 python inverse of a matrix 并弹出这个想法 PHP 有没有一种有效的方法来做到这一点 EDIT 最好有演示 你
  • 从 Julia 中的文本文件读取数据矩阵

    我有一个包含矩阵的文本文件 我想在朱莉娅中将其作为矩阵来阅读 文本文件如下 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 在 matlab 中 您可以执行以下操作来创建矩阵M
  • 如何在 webgl 中缩放纹理?

    我有一个尺寸为 800x600 的纹理 如何在 webgl 上缩放它
  • 指向二维数组的指针和手动内存管理 - C

    我认为用纯 C 语言构建一个库来处理各种矩阵计算将是一个很好的挑战 现在 尽管我在 Objective C 和 Cocoa 方面有一些很好的经验 但我对 C 的了解正是我所需要的与 Objective C 一起工作 仅此而已 例如 我熟悉

随机推荐

  • 关于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 注 不要把它和几何运算或者是向量运算混淆 前言 在数学中 矩阵微积分是进行多变量微积分的一种特殊符号 特别是在矩阵的空间上 它将关于许多变量的