生活资讯
矩阵求导 、转置矩阵求导
2023-04-12 00:55  浏览:36

矩阵求导问题

L = sum A(i,j)x(i)x(j), 所以L对A(i,j)的偏导数是x(i)x(j), 排成与A同阶的矩阵形式可以表示成dL/dA=xx^T

矩阵的迹对于一个矩阵如何求导? d(tr(...))/d(A) 怎么算啊 A是一个矩阵 求高手指点!!!!!!!!!!

以d(tr(BX))/dX为例,B为m*n、X为n*m的矩阵。

1) 设B的第i, j个元素为bij,X的第i, j个元素为xij,则BX的第i, j个元素yjj为(k从1到n求和)bik*xkj。

2) 于是有tr(BX)为对BX的对角线上的元素,也就是第jj个元素yjj对j从1到n求和,也就是两层求和(分别将bjk*xkj对j和k),将其看做xij的函数。

3) 对矩阵X求导,就是对矩阵X的每个元素xij求偏导,放到与X大小相同的矩阵的对应位置上。此时,我们令tr(BX)对xij求偏导。虽然前面求和求的很多,但tr(BX)中,与xij相乘的只有bji。因此,对xij求偏导得到的是bji。

4) 综上,d(tr(BX))/dX得到的矩阵的第i, j个元素是bji,也就是说,d(tr(BX))/dX的结果是B的转置。

对矩阵求导,过程上可能稍微复杂些,但细心点,理清关系,就能得出正确答案。~

Matrix Derivative矩阵求导

Welcome To My Blog

学习机器学习算法时总碰见矩阵求导,现学习一波,主要总结下

注意:这里只涉及实数的求导,研究通信的人可能接触的往往是负数求导

矩阵可以写成列向量(column vectors)或行向量(row vectors)的形式,这两种不同的形式把矩阵求导分成了两种不同的情况

机器学习中,以线性回归为例,每个输入都有多个属性,在表示属性时可以采用列向量或者行向量的形式,这两种形式会造成求导结果形式的不同.

注意是形式上的不同,因为本质上形式的不同不会影响求导结果,只不过将结果按照不同的方式组织起来,方便进一步运算

布局决定(L***out conventions)就是为了将不同形式的求导分类.分为两种布局:分子布局(numerator l***out)和分母布局(denominator l***out)

通俗解释,现规定 向量或者矩阵 分为原始形式和转置形式两种,比如在线性回归中我们把列向量作为属性值的原始形式,其转置形式就是行向量

将上述表格中的分子布局单独拿出来,求导结果如下

将上述表格中的分母布局单独拿出来,求导结果如下

现给出常见的求导结果,推导相关公式时可以查表

求导有链式法则(Chain Rule),但是矩阵乘积不满***换律,所以链式法则对于matrix-by-scalar derivatives和scalar-by-matrix derivatives这两种情况不适用

下面贴出三种求导结果

之所以先展示vector-by-vector的表格,是因为所有适用于vector-by-vector求导的操作也直接适用于vector-by-scalar or scalar-by-vector这两种情况

参考:

Matrix calculus

矩阵求导

矩阵对矩阵求导会出现四阶张量

当然,一般来讲你没必要关系张量如何排列,只要会对分量求偏导就行了,比如说

(D'*D)的(i,j)元素对D的(k,l)元素求偏导,把i,j,k,l都取遍就行了

按何种次序排成四阶张量完全是人为的,没有特殊需求的话不必关心

矩阵向量求导

本文整理自李建平 机器学习中的矩阵向量求导 系列和长躯鬼侠的 矩阵求导术 。

默认符号:

已知:

求:

所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么我们可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。

例1:

所以,将求导结果组成向量:

利用导数和微分之间的关系:

例:

所以,根据导数与微分的联系:

若标量 和向量 之间的依赖关系为: ,则:

推广到多个向量的情况, ,则有:

已知:

求:

与标量对向量求导类似,标量对矩阵里的每个分量分别求导,最后把求导的结果排列在一起,用一个矩阵表示而已。

例: ,求

先对矩阵 的任意一个位置的 求导:

将所有位置求导结果排成 矩阵,得:

一元微积分中的导数(标量对标量的导数)与微分之间的关系:

多元微积分中的梯度(标量对向量的导数)与微分之间的关系:

矩阵导数与微分之间的关系:

利用导数与微分,以及迹技巧,可以求得标量函数 对于矩阵 的导数:

注:标量对矩阵的求导不能随意沿用标量的链式求导法则。

假设有这样的依赖关系: ,很难给出矩阵基于矩阵整体的链式求导法则,可以给出关于 中某一标量的链式求导:

例1: ,求 。其中 是 列向量, 是 矩阵, 是 列向量。

Step1: 使用矩阵乘法法则求微分:

这里因为 是常量,所以

Step2: 套上迹,并做矩阵乘法交换:

Step3:对照导数与微分之间的联系:

例2: ,求 。

Step1: 使用矩阵乘法法则求微分:

Step2: 套上迹,并做矩阵乘法交换:

Step3:对照导数与微分之间的联系:

例3【线性回归】 ,求 的最小二乘估计。其中 是 列向量, 是 矩阵, 是 列向量, 是标量。

Step1: 将向量模平方改成向量与内积形式:

Step1: 使用矩阵乘法法则求微分:

Step2: 套上迹,并做矩阵乘法交换:

Step3:对照导数与微分之间的联系:

Step3:求 的最小二乘估计

向量对向量的求导比较麻烦, 为列向量 对 维列向量 求导,那么一共有 个标量对标量的求导。

分子布局(numerator l***out):

分母布局(denominator l***out):

对于机器学习算法原理中的推导,究竟是采用什么布局一般是隐含的,需自己推导。本文以分子布局的雅克比矩阵为主。

例: ,其中 是 的矩阵, 分别是 维例向量。

Step1: 先求 的第 个分量对 的第 个分量的导数:

Step2: 将每个标量求导结果排列成矩阵,这里用分子布局:

若向量之间有这样的依赖关系: ,则有下面的链式求导法则:

, , 矩阵 中的 个元素要分别对矩阵 中的 个元素求导,那么求导结果一共会有 个元素。求导结果的排列有很多种。这里只介绍目前主流的做法。

目前主流的矩阵对矩阵求导定义是对矩阵先做向量化,然后再使用向量对向量的求导。而这里的向量化一般是使用列向量化。也就是说,现在我们的矩阵对矩阵求导可以表示为:

的维度是 列向量, 的维度是 列向量。结果使用分母布局,得到一个 的矩阵。

利用导数与微分的联系:

求解步骤:

注:

闲话矩阵求导

title: 闲话矩阵求导

原始文件没有办法把latex公式正常显示,所以一个一个弄出来了,保留了原来的公式。原始文章来自《闲话矩阵求导》。

矩阵求导,想必许多领域能见到。统计学,经济学,优化,机器学习等等,在对目标问题建立数学模型之后,问题往往被抽象为关于矩阵的优化问题。于是免不了需要对矩阵进行求导等操作。

简单的向量和矩阵求导,大多数熟悉这些计算的人,应该都能直接写下,然而复杂的矩阵函数求导则没那么简单,著名的 matrix cookbook 为广大的研究者们提供了一本大字典,里面有着各种简单到复杂矩阵和向量的求导法则,但是如果你的好奇心和我一样重,那么你肯定不会满足于查字典这种方法,特别是在推导公式一气呵成满纸乱飞的时候,查字典岂不是大煞风景?

事实上,所有求导的法则都可以从最基本的求导规则推导出来。不知你有没发现,不同的文献中,同样的式子求导的结果有时候会不一样,仔细观察会发现刚好相差一个转置,于是我们得先说说求导的两个派别(布局)。

不知道为什么会是这个名字,总之矩阵求导有两种布局,分子布局( numerator l***out )和分母布局( denominator l***out )。

为了阐明这两种布局的区别,我们先来看最简单的求导规则。

首先是向量 yy 对标量 xx 求导,我们假定所有的向量都是列向量,

在 分子布局 下,

而在 分母布局 下,

以下都是在分母布局下的定义 。

这一部分,我们将看到一些基本的求导规则,这些与其说是规则,倒不如说是定义。因此这一部分是需要好好理解并且记忆(如果你看一遍还记不住的话)的。

标量 !$mathrm{mathbf{y}}$ 对向量 !$x$ 求导:

注意到,标量对向量求导和向量对标量求导刚好反过来。

向量对向量求导,

事实上,直观上看,凡是对标量求导,结果的形式都要转置,而标量对向量和矩阵求导则位置保持不动。这样总结方便我们记忆。

总的来说,涉及矩阵和向量的求导不外乎五大类别,

接下来我们来看一些常见的求导,

首先是 !$frac{partialmathbf{Ax}}{partialmathbf{x}} $ ,

注意到

理论上对于任意的表达式,我们都可以通过定义出发,利用上面这种形式推导得到。

但是对于一些复杂的求导,这个时候恐怕逐项展开分析就不是很靠谱了。

我们先来看求导分类的前三类,对于这三类问题,我们来看一个非常强大的方法,通过分析维度来得到结果。

1、

假如 !$mathbf{A}inmath***{R}^{mtimes n},mathbf{u}inmath***{R}^{ntimes1},mathbf{x}inmath***{R}^{ptimes1}$

我们知道最后结果肯定和 !$frac{partialmathbf{u}}{partialmathbf{x}}$ 有关,注意到 !$frac{partialmathbf{u}}{partialmathbf{x}}inmath***{R}^{ptimes n}$ ,于是 !$mathbf{A}$ 只能转置以后添在后面,因此

a,u是和x相关的标量

同样对于 !$frac{partial amathbf{u}}{partialmathbf{x}},atext{}$ 和 !$mathbf{x}$ 相关的标量,假定 !$mathbf{u}inmath***{R}^{mtimes1},mathbf{x}inmath***{R}^{ntimes1}$ 根据乘积法则(非精确版本),前一个部分肯定是 !$afrac{partialmathbf{u}}{partialmathbf{x}}$ ,后一部分为 !$frac{partial a}{partialmathbf{x}}inmath***{R}^{ntimes1}$ 和 !$mathbf{u}$ 的某种形式的积,分析维度发现只能是 !$frac{partial a}{partialmathbf{x}}mathbf{u}^{mathrm{T}}$

于是

我们发现,虽然乘积法则的精准形式无法应用于矩阵求导中,然而这种非精确的乘积法则可以准确的告诉我们哪些项一定会出现在结果中,然后通过分析维度,我们就可以写出结果。

再看 !$frac{partialmathbf{x}^{mathrm{T}}mathbf{Ax}}{partialmathbf{x}}$ ,其中 !$mathbf{A}$ 和 !$mathbf{x}$ 无关,

为了分析这个问题,我们考虑一个更一般的问题,

我们利用非精确的乘积法则,可以将这个分成两部分

于是结果和两部分相关,一个是

,另一个是

,同样通过分析维度,我们可以得到

因此

最后看一个式子

所以,

注意到

所以(注意到 !$mathbf{x}^{mbox{T}}mathbf{b}inmath***{R}$ ),

接下来看五种类型中剩下的两类,在实际的问题中,主要是矩阵的迹对矩阵的求导问题。 正如我们在前面看到的,在矩阵的求导中,不存在精确的乘积法则,我们只是通过非精确的乘积法则分析出单项式中含有的项,再通过维度分析得到结果。 但是,有一种情形下,乘积法则是精确成立的,我们现在就来看这一种情形——迹的微分。因为在微分形式下,

等价于:

为了方便记忆,防止混淆,我们干脆将一下3个式子等同起来

等价于

注意这是分子布局下的,对应分母布局下应该为

为了方便记忆,防止混淆,我们干脆将

直接等同起来。

于是所有的迹形式对矩阵的求导都先转化为微分形式,比如

其实很简单,我们再看几个例子来加深理解:

先回忆一些非常有用的迹的性质:

所以,

所以

这是一份简短的矩阵求导介绍,它的目的是告诉你如何更好的快速推导这些公式,避免查阅手册的麻烦。当然如果你觉得你完全是一个工程师,查阅手册感觉很方便,那么继续按照你的方式生活吧。如果你觉得很有用,那么请继续: Have fun with math!

矩阵求导的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于转置矩阵求导、矩阵求导的信息别忘了在本站进行查找喔。

发表评论
0评