美文网首页
(转载)数学-矩阵计算 矩阵函数微积分前奏

(转载)数学-矩阵计算 矩阵函数微积分前奏

作者: 科研的心 | 来源:发表于2018-09-30 18:18 被阅读134次

本文来自 仙守 的CSDN 博客
https://blog.csdn.net/shouhuxianjian/article/details/46624207?utm_source=copy


Notes on Matrix Calculus

矩阵微积分会涉及到对矩阵函数操作的规则。例如,假设将一个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 的)的微分:


接下来可以定义一个更通用的乘法规则。假设



,那么

。使用vec操作和Kronecker乘积的关系得到下面的式子:

从而写成更通用的形式:

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

的导数为:

所以,结果为:

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

结果为;

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

因为

的结果等于

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

对于一个行列式的导数来说,也能找到个合适的表达式。假设A 是一个nn 的矩阵,其中

。该行列式可以写成A矩阵的伴随矩阵,

,的第 i 行乘以A 的第i 列的形式:

因为

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

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

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

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

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:

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

使用链式规则:

反转这个表达式就能得到

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



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

到目前为止介绍的技术可以用来计算普通的”特殊“函数的导数。首先,考虑一个方阵A 的非负整数幂

。使用链式规则来进行递归求导:

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

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

所以:

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

几个操作的总结:

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


微分结果的总结:

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



相关文章

  • (转载)数学-矩阵计算 矩阵函数微积分前奏

    本文来自 仙守 的CSDN 博客https://blog.csdn.net/shouhuxianjian/arti...

  • Matlab

    Matlab的数学计算=数值计算+符号计算 矩阵 矩阵生成 通过显式元素列表输入矩阵 通过语句生成矩阵 from:...

  • 简述Python的Numpy,SciPy和Pandas,Matp

    Numpy: 基础的数学计算模块,以矩阵为主,纯数学。 SciPy: 基于Numpy,提供方法(函数库)直接计算结...

  • MATLAB 符号计算

    7.1 概述 建立在Maple组件的基础上 符号表达式计算,化简 符号矩阵计算 符号微积分 符号函数画图 符号代数...

  • (转载)数学-矩阵计算 矩阵和向量的求导法则

    本文来自 仙守 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/shouhuxia...

  • 【MINVERSE】函数使用技巧

    Excel的MINVERSE函数主要是用来计算矩阵的逆矩阵。本文介绍 Microsoft Excel中MINVER...

  • cuda矩阵编程

    一、定义矩阵结构体 二、矩阵赋值 三、Device上执行矩阵计算 四、申明变量分配空间,数据传输 五、主函数 总结...

  • Markdown中使用数学公式

    希腊字母 运算符 三角函数 戴帽符号 矩阵 箭头 微积分 累加 累乘 极限 微积分 范围 特殊符号

  • AI数学基础1-直觉化理解微积分

    人工智能需要三大数学基础:线性代数、微积分和统计与概率论。 线性代数用于矩阵计算,极大的提升了大规模数据计算速度《...

  • 逆矩阵

    逆矩阵 对矩阵函数而言,满秩矩阵是双射函数。因此,满秩矩阵存在逆函数。 初等变换求逆矩阵 高斯若尔当求逆矩阵

网友评论

      本文标题:(转载)数学-矩阵计算 矩阵函数微积分前奏

      本文链接:https://www.haomeiwen.com/subject/kkmwoftx.html