矩阵微分

自己学习矩阵微分的笔记,包含了迹函数、行列式函数以及逆矩阵的求导方法。 
主要是练习求导的链式法则;以及利用微分求导数。 
更具体的参见引用:张贤达,矩阵分析与应用,清华大学出版社,2004



Note:向量用加粗的小写字母表示,行向量表示为,列向量表示为

Note:矩阵用加粗的大写字母表示,如,其转置为

Note:单位矩阵用表示,det()表示矩阵的行列式,tr()表示矩阵的迹。

Note:矩阵和向量不依赖于

参考网站:http://www.psi.toronto.edu/matrix/calculus.html

1.符号说明:

2.矩阵的线性微分(Linear Products)

首先介绍一个重要的性质(类似于函数的求导):

经验:若d(行向量)/d(列向量)或者d(列向量)/d(行向量),则也适合这个公式,如下面的前两个公式:

矩阵转置

图 矩阵的转置过程,转置后行变成列

用一个数字去加或者乘以矩阵

这相当于对矩阵中的每一个元素都独立地进行加法或乘法运算。由于矩阵元素之间的相对值没有发生变化,而只有比例发生了变化,所以上述这类运算称为标量运算(scalar operation)。如果相对矩阵进行常数缩放或者加上一个常数偏移值,就可以使用矩阵标量乘法或加法运算。

图 矩阵上的标量运算,最后的结果是每个元素乘上或者加上某个标量

两矩阵求和

两矩阵要求和,首先必须满足两矩阵的行列数完全一致,矩阵求和相当于每个位置上对应元素求和。

图 矩阵求和

矩阵乘法

两个矩阵要相乘,前一个矩阵的列数必须要等于后一个矩阵的行数。

图 矩阵乘法示意图,

矩阵相乘还可以看成是列的加权求和。

矩阵求逆

矩阵要可逆,首先要是方阵,及矩阵的行数等于列数。

方阵也不一定可逆,这时称它奇异(singular)或退化(degenerate)矩阵。如果某个矩阵的某一列可以表示为其它列的线性组合,则该矩阵是奇异矩阵。

如果能够这样表示,则可以把一列的元素全部归于0.

图 一个奇异矩阵的例子。该矩阵有一列为0,意味着该矩阵不可逆。

向量的范数

范数可以看成向量的长度,可以定义任意阶范数,其形式化定义如下:

可以任意定义自己的向量范数,只要能将向量转换为标量值即可。

矩阵求导

1.行向量对元素求导

2.列向量对元素求导

对于向量,可以对x求导,得到另一个向量

3.矩阵对元素求导

4.元素对行向量求导

5.元素对列向量求导

6.元素对矩阵求导

7.行向量对列向量求导

比如,对于向量另一个向量                

如果A(一个2*1的向量)要对B(一个3*1的向量)求导,会得到如下3*2的矩阵:

8.列向量对行向量求导

9.行向量对行向量求导、.列向量对列向量求导、矩阵对行向量求导、矩阵对列向量求导、行向量对矩阵求导、列向量对矩阵求导、矩阵对矩阵求导:

计算方式与可以类比于前边的方法,不过区别在于这几个求导得出的结果都是超向量或超矩阵,即它们的元素本身就是向量或矩阵。

10.向量积对列向量求导

11.矩阵积对列向量求导法则

矩阵求导链式法则的相关用法参见《矩阵运算的若干应用
http://blog.csdn.net/u012176591/article/details/41552269



求导公式(撇号为转置):

Y = A * X --> DY/DX = A‘
Y = X * A --> DY/DX = A
Y = A‘ * X * B --> DY/DX = A * B‘
Y = A‘ * X‘ * B --> DY/DX = B * A‘

乘积的导数

d(f*g)/dx=(df‘/dx)g+(dg/dx)f‘

于是把以前学过的矩阵求导部分整理一下:

1. 矩阵Y对标量x求导:

相当于每个元素求导数后转置一下,注意M×N矩阵求导后变成N×M了

Y = [y(ij)]--> dY/dx = [dy(ji)/dx]

2. 标量y对列向量X求导:

注意与上面不同,这次括号内是求偏导,不转置,对N×1向量求导后还是N×1向量

y = f(x1,x2,..,xn) --> dy/dX= (Dy/Dx1,Dy/Dx2,..,Dy/Dxn)‘

3. 行向量Y‘对列向量X求导:

注意1×M向量对N×1向量求导后是N×M矩阵。

将Y的每一列对X求偏导,将各列构成一个矩阵。

重要结论:

dX‘/dX =I

d(AX)‘/dX =A‘

4. 列向量Y对行向量X’求导:

转化为行向量Y’对列向量X的导数,然后转置。

注意M×1向量对1×N向量求导结果为M×N矩阵。

dY/dX‘ =(dY‘/dX)‘

5. 向量积对列向量X求导运算法则:

注意与标量求导有点不同。

d(UV‘)/dX =(dU/dX)V‘ + U(dV‘/dX)

d(U‘V)/dX =(dU‘/dX)V + (dV‘/dX)U‘

重要结论:

d(X‘A)/dX =(dX‘/dX)A + (dA/dX)X‘ = IA + 0X‘ = A

d(AX)/dX‘ =(d(X‘A‘)/dX)‘ = (A‘)‘ = A

d(X‘AX)/dX =(dX‘/dX)AX + (d(AX)‘/dX)X = AX + A‘X

6. 矩阵Y对列向量X求导:

将Y对X的每一个分量求偏导,构成一个超向量。

注意该向量的每一个元素都是一个矩阵。

7. 矩阵积对列向量求导法则:

d(uV)/dX =(du/dX)V + u(dV/dX)

d(UV)/dX =(dU/dX)V + U(dV/dX)

重要结论:

d(X‘A)/dX =(dX‘/dX)A + X‘(dA/dX) = IA + X‘0 = A

8. 标量y对矩阵X的导数:

类似标量y对列向量X的导数,

把y对每个X的元素求偏导,不用转置。

dy/dX = [Dy/Dx(ij) ]

重要结论:

y = U‘XV= ΣΣu(i)x(ij)v(j) 于是 dy/dX = [u(i)v(j)] =UV‘

y = U‘X‘XU 则dy/dX = 2XUU‘

y =(XU-V)‘(XU-V) 则 dy/dX = d(U‘X‘XU - 2V‘XU + V‘V)/dX = 2XUU‘ - 2VU‘ +0 = 2(XU-V)U‘

9. 矩阵Y对矩阵X的导数:

将Y的每个元素对X求导,然后排在一起形成超级矩阵。

10.乘积的导数

d(f*g)/dx=(df‘/dx)g+(dg/dx)f‘

结论

d(x‘Ax)=(d(x‘‘)/dx)Ax+(d(Ax)/dx)(x‘‘)=Ax+A‘x (注意:‘‘是表示两次转置)

矩阵求导 属于 矩阵计算,应该查找 Matrix Calculus 的文献:

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

http://www.psi.toronto.edu/matrix/calculus.html

http://www.stanford.edu/~dattorro/matrixcalc.pdf

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

http://www4.ncsu.edu/~pfackler/MatCalc.pdf

http://center.uvt.nl/staff/magnus/wip12.pdf



汇总自:

http://cherishlc.iteye.com/blog/1765932

http://blog.csdn.net/u012176591/article/details/34251843

http://blog.sina.com.cn/s/blog_4a033b090100pwjq.html

时间: 2024-10-21 03:35:27

矩阵微分的相关文章

机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法

在机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法中,我们讨论了定义法求解矩阵向量求导的方法,但是这个方法对于比较复杂的求导式子,中间运算会很复杂,同时排列求导出的结果也很麻烦.因此我们需要其他的一些求导方法.本文我们讨论使用微分法来求解标量对向量的求导,以及标量对矩阵的求导. 本文的标量对向量的求导,以及标量对矩阵的求导使用分母布局.如果遇到其他资料求导结果不同,请先确认布局是否一样. 1. 矩阵微分 在高数里面我们学习过标量的导数和微分,他们之间有这样的关系:$df =f'(x)dx$.

DL4NLP——神经网络(一)前馈神经网络的BP反向传播算法步骤整理

这里把按[1]推导的BP算法(Backpropagation)步骤整理一下,备忘使用.[1] 中直接使用矩阵微分的记号进行推导,整个过程十分简洁.而且这种矩阵形式有一个非常大的优势就是对照其进行编程实现时非常方便. 但其实用标量计算推导也有一定的好处,比如可以清楚地知道某个权重是被谁所影响的. 记号约定: $L$:神经网络的层数.输入层不算. $n^l$:第 $l$ 层神经元的个数.偏置神经元不算在内. $W^{l}\in\mathbb R^{n^l\times n^{l-1}}$:第 $l-1

【Linear Regression】林轩田机器学习基石

这一节开始讲基础的Linear Regression算法. (1)Linear Regression的假设空间变成了实数域 (2)Linear Regression的目标是找到使得残差更小的分割线(超平面) 下面进入核心环节:Linear Regression的优化目标是minimize Ein(W) 为了表达简便,首先需要把这种带Σ符号的转换成matrix form,如下: 1~2:多个项的平方和可以转换成向量的平方 2~3:把每个列向量x都横过来,组成一个新的X矩阵 最后转换成了最终的min

数学好书推荐

数学教材推荐 引言     早就有一种想法:把一些非常好的数学书籍尽量全面地推荐给广大数学爱好者和吧友们.这是由于以下 原因:一是在我们高等数学吧不断有吧友发贴询问推荐一些(高等)数学方面比较好的书籍,可能其中有部 分是初学者,因而急需一些有经验的学长推荐些好书,以便不走弯路.二来恰好笔者也有类似经历,初接触 高等数学方面的书籍时,也不知有啥好坏或者稂莠之别,后来在一些这些书的内容中了解到.在网上一些学长的贴子中看到很多“经典”和比较“好”的教材.参考 书.课外书籍等,于是在广泛查阅.拜读之后,

深度学习:从入门到放弃

https://zhuanlan.zhihu.com/p/22976342 首发于深度学习:从入门到放弃 写文章登录 FCN学习:Semantic Segmentation 余俊 1 年前 感谢@huangh12 @郑途 @麦田守望者对标签图像生成的研究和讨论,这几天研究了一下,补充如下. -----------------------------------------------------分割线------------------------------------------------

资源 | 源自斯坦福CS229,机器学习备忘录在集结

在 Github 上,afshinea 贡献了一个备忘录对经典的斯坦福 CS229 课程进行了总结,内容包括监督学习.无监督学习,以及进修所用的概率与统计.线性代数与微积分等知识. 项目地址:https://github.com/afshinea/stanford-cs-229-machine-learning 据项目介绍,该 repository 旨在总结斯坦福 CS 229 机器学习课程的所有重要概念,包括: 学习该课程所需的重要预备知识,例如概率与统计.代数与微积分等进修课程. 对每个机器

《矩阵分析与应用(第2版)张贤达》分析

机器学习中我们必须具备矩阵相关知识. <矩阵分析与应用(第2版)>系统.全面地介绍矩阵分析的主要理论.具有代表性的方法及一些典型应用.共10章,内容包括矩阵代数基础.特殊矩阵.矩阵微分.梯度分析与最优化.奇异值分析.矩阵方程求解.特征分析.子空间分析与跟踪.投影分析.张量分析.前3章为全书的基础,组成矩阵代数:后7章介绍矩阵分析的主体内容及典型应用.为了方便读者对数学理论的理解以及培养应用矩阵分析进行创新应用的能力,始终贯穿一条主线一一物理问题"数学化",数学结果"

深度学习之前馈神经网络(前向传播和误差方向传播)

这篇文章主要整理三部分内容,一是常见的三种神经网络结构:前馈神经网络.反馈神经网络和图网络:二是整理前馈神经网络中正向传播.误差反向传播和梯度下降的原理:三是梯度消失和梯度爆炸问题的原因及解决思路. 一.神经网络结构 目前比较常用的神经网络结构有如下三种: 1.前馈神经网络 前馈神经网络中,把每个神经元按接收信息的先后分为不同的组,每一组可以看做是一个神经层.每一层中的神经元接收前一层神经元的输出,并输出到下一层神经元.整个网络中的信息是朝着一个方向传播的,没有反向的信息传播(和误差反向传播不是

《深度学习入门基于Python的理论与实现》PDF代码学习指导

入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就能入门. 深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术.书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习. <深度学习入门:基于Python的理论与实现>中文版PDF,314页,带