矩阵微积分会涉及到对矩阵函数操作的规则。例如,假设将一个m×n 的矩阵 X 映射到一个p×q 的矩阵 Y 中。而我们期望获得的导数表达式如下:

对于所有的 i,j 和k,l 来说,这里主要的困难在于如何将对矩阵内的元素对应的求导,我们在矩阵计算(1)中最后有关矩阵对矩阵的求导,可是如果矩阵过大,那就非人力可以为之了,所以,为了更好的计算,就需要将矩阵的求导上升到一个较高的抽象的层面。

在矩阵微积分中,最常用的就是vec操作和Kronecker乘积:vec操作就是会将一个矩阵按照它的列进行向量化(因为习惯上使用列为主,而不是行为主)。例如:向量化下面的矩阵:

得到的vec操作结果为:

而两个矩阵的Kronecker乘积为:矩阵A,B,这里A是m×n大小的,而B是p×q大小的,那么定义的乘积为:

也就是得到的结果为mp×nq大小的矩阵。而在vec操作和Kronecker乘积之间有个很重要的关系就是:

在求导矩阵微积分结果中,该式子发挥着举足轻重的作用。(个人:按照矩阵乘法规则,这里的X 应该是个n×p 的矩阵)

另一个需要用到的矩阵操作和vec操作的联系很紧密,定义为将转换成的矩阵:

这里矩阵的大小为mn×mn。具有一些特别的属性,首先是它的定义:如果应用在了一个m×n矩阵的vec操作的结果上,然后在上面再加一个应用,那么原始向量化的矩阵的结果为:

所以:

也就是说:

这是很直观的结果,不过也可以理解成:

也就是说其实这里是一个正交矩阵。

矩阵操作其实是一个置换矩阵(permutation matrix),即它是由0 和1 组成的,在每一行每一列只有一个1。当左乘另一个矩阵的时候,它会将那个矩阵的行进行重排序(或者和其右乘来重排矩阵的列)。

该转置矩阵同样与Kronecker乘积相关联,假设矩阵A,B 如上面一样的定义:

这可以通过引入一个任意n×q矩阵 C来验证:

这里暗示着。因为C 是一个任意矩阵,所以必须要适应任意的情况。

通过上面的结论,立即得到下面的结果::

这里有个技巧,可以发现:。所以如果A 是一个1×n 的矩阵,那么。当涉及到标量的导数的时候,该结果可以进一步简化。

现在说回正题,定义一个函数导数的映射作为一个m×n 矩阵的偏导:

例如,最简单的导数为:

使用这个定义,当遵守矩阵的一致性原则的时候,通常针对导数的规则也是适用的。得到下面这个加法规则:

这里都是标量。当满足一致性原则的时候,链式规则也适用于矩阵乘法。给定两个函数:,该复合函数的导数为:

这里满足矩阵乘法一致性,因而表达式表示为一个n×p的矩阵右乘一个m×n的矩阵(原句:postmultipy an n × p matrix by an
m×n matrix)。为了定义一个乘积规则,考虑表达式,这里。导数通过下面的式子得到的结果为一个1×n的向量:

注意除了乘以乘以之外,没有其他方式可以确保一致性(个人:不懂这句的话,那就忽略它)。一个更通用的乘积规则定义如下。

该乘积规则对于二次函数来说会很有用的:

当A是对称矩阵的时候,可以得到结果为:

上面这些规则是定义向量的导数的,定义矩阵关于矩阵的导数是通过将矩阵向量化来完成的。所以也就等于。所以这里就需要用到vec操作和Kronecker乘积了。考虑关于A(而不是上面关于x 的)的微分:

(一个m×n的矩阵A 关于自身的导数结果为)。

接下来可以定义一个更通用的乘法规则。假设,那么。使用vec操作和Kronecker乘积的关系得到下面的式子:

从而写成更通用的形式:

当A为m×n 的矩阵的时候,的导数为:

所以,结果为:

接着,可以进一步简化,注意到:

结果为;

该乘法规则同样可以用于矩阵逆的求导:

因为的结果等于,所以它的导数等于0,因此:

对于一个行列式的导数来说,也能找到个合适的表达式。假设A 是一个n*n 的矩阵,其中。该行列式可以写成A矩阵的伴随矩阵,,的第 i 行乘以A 的第i 列的形式:

因为的第 i 行的元素不会受到A 的第i 列的影响,所以可以得到:

为了得到关于A的所有元素的导数,可以将关于A的每一列的偏导数连接起来:

下面得到的就是一个直接结果(个人:这里用到了高数的求导法则,有兴趣可以回去看看对lnx 的求导):

矩阵分化的结果可以使我们能够计算某一类平衡问题的解的导数。例如,假设x 为一个线性互补问题(a linear complementarity problem,)的解:

x 的第 i 个元素既可以等于0,又可以等于的第 i  个元素。定义一个对角矩阵D ,使得:

接着,该解可以写成,这里。从而:

而且:

在矩阵求导中,Kronecker乘积使用是十分广泛的,所以如何计算Kronecker乘积自身的导数也是个不容跨过的问题,即:。因为Kronecker乘积的每个元素都涉及到A矩阵中的一个元素乘以B矩阵中另一个元素,所以的导数必须是由0和以某种方式重排序的B 的元素组成的。相似的,导数也是由0和以某种方式重排序的A 的元素组成的。

可以写成如下形式:

这里:

写成更紧凑的形式为:

相似的,可以写成如下形式:

这里:

写成更紧凑的形式为:

注意到,如果A是一个行向量(m=1)或者说B 是一个列向量(q=1),那么,所以可以忽略掉。

为了说明这些关系的用处,考虑关于x (一个n 维向量)的二阶导数:

所以:

另一个例子是:

通常来说,特别是在统计应用中,遇到的矩阵都是对称的。所以,当想要求关于一个对称矩阵的第 (i,j )个元素的导数,而刚好第(j,i)个导数是常量的时候是没有意义的。通常来说,我们更喜欢先将对称矩阵的对角线上部或者下部删除(个人:因为对称的话一半是重复的),然后对其进行向量化,最后再对其进行处理。vech操作通常是删除上部,然后逐列进行向量化的:

或者可以表示成通过对元素的选择的形式,所以可以写成:

这里是一个矩阵,其中都是0和1,在每一行中只有一个1。vech操作同样可以用在下三角矩阵;不需要去求关于下三角矩阵的上部的导数(因为可以通过一个上三角矩阵的转置来完成)(个人:这句话有点不理解,略过不影响全文理解)。vech操作在对称和三角矩阵的计算机存储方面也是很重要的。

为了说明在矩阵微积分应用中的vech操作,考虑一个n*n的对称矩阵C ,然后定义成下三角形式,L:

使用之前类似的方法,可以得到:

使用链式规则:

反转这个表达式就能得到

和矩阵求导相关的问题就是矩阵映射到矩阵的函数的泰勒展开的问题。一种考虑矩阵求导的方式是使用多维数组的形式。一个nm*pq矩阵可以同样被认为是一个m*n*p*q 的4维数组。在MATLAB中的“reshape”函数就是执行这样的转换的。其中各个元素的顺序并没有变,只是元素的索引方式变了。

关于函数上的第d 阶的泰勒展开式可以以下面的形式计算得到:

到目前为止介绍的技术可以用来计算普通的”特殊“函数的导数。首先,考虑一个方阵A 的非负整数幂。使用链式规则来进行递归求导:

这里同样可以表示成 i 项的和:

该结果可以用来计算矩阵指数函数的导数,将其表示成泰勒展开式的形式:

所以:

同样,可以用来计算矩阵的自然对数:

几个操作的总结:

假设A 是m*n的矩阵,B是p*q 的矩阵,X 以适当形式定义(原文:X is defined comformably。个人:就是主要关注的是A B ,X只是形式,怎么符合常规的矩阵计算,就怎么定义)

微分结果的总结:

假设A 是m*n的矩阵,B是p*q 的矩阵,x 是n*1 的向量,X 合适的定义:

参考资料:

[1] http://www.psi.toronto.edu/matrix/intro.html#Intro

[2] http://www.psi.toronto.edu/matrix/calculus.html

[3]http://www.stanford.edu/~dattorro/matrixcalc.pdf

[4] http://www.colorado.edu/engineering/CAS/courses.d/IFEM.d/IFEM.AppD.d/IFEM.AppD.pdf

[5] http://www4.ncsu.edu/~pfackler/MatCalc.pdf

[6] http://center.uvt.nl/staff/magnus/wip12.pdf

[7]   新浪博客http://blog.sina.com.cn/s/blog_61c0518f0100f6wu.html

[8]   维基百科https://en.wikipedia.org/wiki/Matrix_calculus#Numerator-layout_notation

数学-矩阵计算(2)矩阵函数微积分前奏相关推荐

  1. 踏入数学天堂的钥匙-微积分

    微积分有多重要相信大家多多少少心里都有点数,搞数学的不会微积分就跟中学生不会"加减乘除"一样,基本上啥都干不了.牛顿是物理学界的封神人物,然而牛顿还凭借着微积分的发明,跟阿基米德. ...

  2. 数学-矩阵计算(4)两种布局

    之前会发现在有的求导上最后结果需要转置,而有的不需要,很困惑,然后才发现了这个维基上面的解释(这才是写该博文的主要价值,注意到不同的布局问题,其他部分只是为了完整性而写的),而且下面也有很多很不错的参 ...

  3. 数学之史:微积分的发明——变量数学的巨人之争

    [摘要]一百年来,关于"谁发明微积分"的真相变得扑朔迷离.是莱布尼茨?是牛顿? 2001年,备受期待的电影<美丽心灵>上映,影片以诺贝尔经济学奖数学家约翰·纳什的生平经 ...

  4. 【考研数学】四. 多元函数微积分

    文章目录 四. 多元函数微积分 二元函数的极限计算方法 二元函数的连续性 可偏导的定义 复合函数的偏导数和全微分 隐函数(抽象函数)的偏导数和全微分 二元函数的极值和条件极值 求二元函数的极值⭐ 求条 ...

  5. 数学复习[高等数学,微积分,线性代数]

    1 高等数学 内容大部分参考自https://blog.csdn.net/v_JULY_v/article/details/8308762 1.1 微积分 微积分是概数统计基础,概数统计则是DM&am ...

  6. 数学-矩阵计算(1)矩阵和向量的求导法则

    机器学习.模式识别等领域,都是需要借助数学的,所以对于数学的理解和运用是十分重要的,这里先转载网上暂时找到的矩阵求导的一小部分.成长路漫漫,多学一点,就能更加接近自己的梦想! 矩阵分四个博文介绍,这里 ...

  7. 电路分析计算必备数学知识----导数与微积分计算(未完)

    最近工作中需要学会如何去分析电路中的问题,比如电容充放电,傅立叶模型等等的东西.... 想起来惭愧啊,工作两年基本都是写代码写代码,高数的知识几乎都快忘光了,现在工作需求分析一些电路,所以需要重新开始 ...

  8. 有趣的数学 依靠想象力的微积分

    1.无限分割计算圆的面积 考虑将圆切成若干等份,下图为4等份. 下图为8等份. 下图为16等份. 下图为最终想象出来的极限矩形,据此分割为无穷等份的圆拼接为一个矩形. 矩形的面积 = r * C / ...

  9. 矩阵论(八):矩阵微分与矩阵求导

    矩阵论专栏:专栏(文章按照顺序排序) 做机器学习的几乎避免不了矩阵求导,尤其是神经网络方面的,反向传播算法说白了就是在做矩阵求导,拿到代价函数对模型中每个参数矩阵的导数,才能找到一个下降方向,进而更新 ...

最新文章

  1. 2021-12-09把文件夹1中的与文件夹2里同名图片删除或者保存至另一个文件夹
  2. python django vue_Django+Vue.js构建项目
  3. python 参数解析器_Python参数解析器,在h之前引发异常
  4. 在WebApi中实现Cors访问
  5. Delta Lake——数据湖的可靠性
  6. 时间组件选择一个时间段_衡南(光伏支架组件安装)施工队
  7. 解决XShell连接时无法root用户登录问题【Linux】
  8. 教你精确编写高质量高性能的MySQL语法
  9. 详解Python的内置函数eval()
  10. PAT乙级 1076 Wifi密码
  11. python知识点总结一
  12. 以组播流方式替换运营商IPTV直播频道
  13. Android EditText简单自定义边框样式
  14. 一文搞懂广播电视节目制作经营许可证办理流程
  15. php利用七牛云的对象存储完成图片上传-高效管理图片(用php搭建一个自己的图床) nice!!!
  16. Python项目:The Ship Rendezvous Problem,利用贪心算法解决船舶交会问题
  17. 分布式学习之一:事务
  18. 『实用教程』VSPD虚拟串口工具——从此告别硬件串口调试
  19. wps怎么把ppt里的字体一起保存_干货 | 如何快速导出PPT中的文字内容?
  20. Python数据全球人口数据

热门文章

  1. MyEclipseWeb项目配置
  2. 黄聪:VS2017调试时提示“运行时无法计算表达式的值”
  3. Struts2 ( 二 )
  4. C语言32个关键字总结
  5. Spring-boot配置JedisShardInfo
  6. win8 任务栏不合并隐藏标题
  7. FusionChart实现柱状图、饼状图的动态数据显示 附Demo
  8. SQL2005 学记笔记(9)
  9. 给控件做数字签名之三:进行数字签名
  10. 2020年前端面试之JS手写代码题合集