线性代数伴随矩阵 矩阵基础

【线性代数】矩阵的四个基本子空间
矩阵的四个基本子空间
矩阵A的零空间就Ax=0的解的集合。假设矩阵的秩为r,矩阵为m*n的矩阵,则零空间的维数为n-r。因为秩为r,则自由变量的个数为n-r,有几个自由变量,零空间就可以表示层几个特解的线性组合,也即是零空间的维数为自由变量的个数。
矩阵A的列空间就是矩阵A中各列的线性组合。假设矩阵的秩为r,矩阵为m*n的矩阵,则列空间可以表示为r个主元的线性组合,即零空间的维数为r。
在线性代数中,我们一般习惯将矩阵看出是一组列向量的组合,matlab中矩阵的存储是按列存储的(c中不是)。因此,我们可以将矩阵A进行转置后来讨论行空间和左零空间。假设转置后的矩阵为AT,则A的行空间就是AT的列空间,A的左零空间为AT的零空间。注意这里AT为n*m的矩阵。则此时行空间的维数为r。
4、左零空间
左零空间是ATx=0的解的集合。由于秩为r,则自由变量的个数为m-r,即左零空间的维数为m-r。
上面都是一些定理结果,下面来举例说明上述定理:
假设矩阵为A:
经过高斯消元得到行最简式R:
于是我们知道矩阵A的秩为2,则其列空间,行空间的维数都是2,零空间的维数为4-2=2,左零空间的维数为3-2=1。
很明显,矩阵A的列中,前两列是线性无关的,则其列空间可以由前两列来表示。同理,前两行是线性无关的,其行空间可以有前两行来表示。由于只有两个主元,则自由变量个数为4-2=2,所以零空间的特解有两个,零空间可以由这两个特解的线性组合来表示。由于左零空间可以看成是ATx=0的线性组合,则有:
我们知道初等行变换不改变矩阵的行空间,但可能改变其列空间(因为行变换是行向量的线性组合),并且消元过程可以表示如下:
我们可以看出,初等矩阵E的第三行与A相乘得到的是0向量即:
对比下式:
可以求得x的值:
这个x就是左零空间的基,因此左零空间的维数为3-2=1。
作者:nineheadedbird
没有更多推荐了,
不良信息举报
举报内容:
【线性代数】矩阵的四个基本子空间
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
不良信息举报
举报内容:
线性代数1-矩阵基础
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!豆丁微信公众号
君,已阅读到文档的结尾了呢~~
线性代数主要知识点
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
线性代数主要知识点
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口主成分分析的线性代数基础:如何求矩阵的特征值与特征向量(一:理论篇)
主成分分析(PCA)有一个十分关键的数学基础。那就是求解矩阵的特征值及特征向量。其实这个东西,求特征值和特征向量在量子力学,量子化学,计算机视觉中也有大量的应用。其实作为一个数学工具求特征值和特征向量并不难,只是这是一个比较容易迷糊的地方。同时另一方面,求解特征值和特征向量有着非常强大的数学及几何意义。我们现在就对这一方法进行一个小小的总结。并且提供可以求解任意矩阵特征值的python代码。
特征值(eigen-value)与特征向量(eigen-vector)中的eigen,其实是一个德语单词,意思是“自身的,本征的(请注意慎重和量子力学里的“本征”联想)。”这是20世纪初伟大的数学家希尔伯特所给的定义。希尔伯特曾经说过,伟大的数学进步,是从“问题”开始的,那么,我们既然要搞清楚特征值和特征矩阵,就不妨从一个问题开始吧。需要的知识只是一点点:矩阵的乘法的定义。
我们现在在空间中有一个给定的向量,n(这个向量在后面被称为特征向量,eigenvector)。我们现在取一个矩阵A(这个矩阵在后面会被成为特征矩阵)。求解A·n我们可以得到一个新的矩阵n'。假如我们所求得的新矩阵n'与原来的矩阵n在同一个方向上(几何意义),那么自然会有表达式n'=λn成立。其中的λ我们称为特征值(eigenvalue)。另外,在这个地方,characteristic和eigen是同一个意思。
换成表达式形式:
定义 设A是n阶方阵,如果数λ和n维非零列向量x使关系式
Ax=λx (1)
成立,那么这样的数λ称为矩阵A特征值,非零向量x称为A的对应于特征值λ的特征向量.(1)式也可写成,
( A-λE)X=0 (2)
仔细想一想。这是一件非常伟大的事情啊!原本是用矩阵乘法才能做到的事情被我们用一个小小的数乘就做到了。我们也可以从另一个角度思考一下这个问题。我们在空间中存在一个二维向量,我们只需要用一个矩阵(好比是一个力,或者F/m是加速度),就可以将二维向量的大小和方向全部改变。也因此,在理论力学中矩阵算法被大量应用。而其中两种特殊情况,即大小改变,但方向不变或者反转(仍然维持在同一条直线上),就是我们所要研究的特殊情况:特征向量与特征值。
与此同时,我们也可以将这种思路引入图像处理问题。仔细想一想:我们也可以用这种矩阵表达式去描绘图像的放大,缩小,旋转和翻转!类似的算法在数字图像处理的相关书籍中可以说是连篇累牍。有兴趣的话可以参考冈萨雷斯,或英国巴斯大学的书。
好,我们回到我们的问题当中来。
我们能获得一个方程:An=λn。
我们现在来分析这个方程。我们可以将他换成另一个形式:
(A-λE)n=0(注意E'是一个全部elements等于1的对角矩阵,不要忘了否则表达式形式不对)。
恰好经过前代数学家的严格分析(我们略去不讲,感兴趣的朋友参考任何一本大学线性代数教材都可以查到),上式成立有一个充要条件:det|A-λE|=0。
好,那么我想接下来的问题就十分容易解决了。行列式求解是一套非常系统的方法。按照标准的流程去操作即可。请注意这个表达式不一定保证实数解。有可能会出现含有虚数解的情况。关于这一问题,更深层次的探讨请参阅任何一本高等代数教材。我想以上的部分足够我们在PCA的分析中应用了。
在这个地方还需要着重强调一个问题。对于特征方程来说,在一些情况下,根据变换A,以及空间的性质,我们可以将特征值方程,表示成一组微分方程。
我在这里也想谈我本人学习数学的一点心得。我不是专业学数学的。所以我有一个习惯。我会把很多的数学知识在脑子里面按照“树”的结构去存储。我会尽力拓宽知识的广度,不追求过分精确严格的定义。在我需要的时候现场学习补充知识就足够了。其实作为非数学专业(其实也包括统计和物理专业)的同学,不一定将大量的时间和精力投资在繁琐严格的数学证明上面。追求“道”而非“术,”遵循“气宗”而非“剑宗”未必不是好的思路和方法。
好我们关于这个问题讲两个应用吧。
第一个是量子力学中的薛定谔方程。量子力学中不含时且非相对论情况的薛定谔方程写法是:
其中H是Hamilton算子,一个二阶微分算子。H右边的那个玩意发音叫pu
sai,就是波函数的意思。用这个玩意描述微观粒子的运动。E代表能量。
我们把问题进行一个限定(其实求解薛定谔方程的一个核心思路就是在许多繁杂的定义下进行简化):我们只需要bound
state的结果。问题中的空间是一个希尔伯特空间。我们可以在这种情况中引入一个基集合。这种情况下,pu
sai就是一个一维数组,而H就是一个可以用完全的线性代数系统描述的矩阵。
那么,薛定谔方程在不含时,非相对论,只要束缚态解的情况下,自然就是一个很简单的求矩阵特征值特征向量的问题了。
第二个是求特征脸。想了想我准备在这里买个关子。后面写一组python或者Julia的代码来给大家展示一下求特征脸。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。深度学习中的基础线性代数-初学者指南
线性代数在深度学习领域有着举足轻重的作用,它是深度学习各种算法的基本数学工具。本文作者对深度学习中会用到的一些线性代数的基本概念和运算操作进行了介绍,希望能让有兴趣的同学一起来进行学习。
作者介绍:Brendan Fortuner 是一名在西雅图的亚马逊的软件工程师,目前自己在人工智能方面进行研究。
上过Jeremy Howard的深度学习课程后,我意识到我在线性代数方面的不足,而这大大影响我对类似反向传播这样的概念的理解。因此我决定在这个方面花点时间,以补全这方面的知识。 本文是对线性代数的基本介绍,用于深度学习中会使用到的一些常见的线性代数操作。
什么是线性代数?
在深度学习的背景下,线性代数是一个数学工具,它提供了有助于同时操作数组的技术。 它提供了像向量和矩阵(电子表格)这样的数据结构用来保存数字和规则,以便进行加,减,乘,除的运算。
线性代数为什么有用?
线性代数可以将复杂的问题简单化,让我们能够对问题进行高效的数学运算。 以下是线性代数如何达到这些目标的一个例子。
初始化这两个数组后,用线性代数的方法会快3倍。
如何在深度学习中使用线性代数?
神经网络将权重存储在矩阵中。 线性代数使矩阵运算变得更加快捷简便,尤其是在GPU上进行训练的时候。 实际上,GPU是以向量和矩阵运算为基础的。 比如,图像可以表示为像素数组。视频游戏使用庞大且不断发展的矩阵来产生令人炫目的游戏体验。 GPU并不是处理单个像素,而是并行地处理整个像素矩阵。
向量是1维数组。 在几何中,向量将大小和方向的潜在变化存储到一个点。 例如,向量[3,-2]表示向右移3个单位距离和向下移2个单位距离。而具有多个维度的向量称为矩阵。
我们可以以不同的方式来表示向量。 这里有几个常见的表示方式。
几何中的向量
向量通常表示从一个点出发的运动。 它们将大小和方向的潜在变化存储到一个点。 向量[-2,5]表示左移2个单位,向上5个单位。 参考资料(http://mathinsight.org/vector_introduction?spm=.blogcontLhQ6Q)。
向量可以应用于任何空间点。 向量的方向就是向上5个单位和向左2个单位的斜线,它的大小等于斜线的长度。
标量运算涉及向量和某个数字。 我们可以通过对向量中的所有项进行加,减,乘,除操作来对其进行修改。
Scalar addition
在诸如加法,减法和除法的元素操作中,相应位置的值被重新组合以产生新的向量。 向量A中的第一个值与向量B中的第一个值配对。第二个值与第二个值配对,依此类推。也就是说,这两个向量必须有着相同的尺寸,才能完成元素操作*。
Vector addition
*请参阅下面关于numpy 中的broadcasting方法详细信息。
向量乘法有两种类型:点积和Hadamard乘积。
两个向量的点积是一个标量。 向量和矩阵的点积(矩阵乘法)是深度学习中最重要的操作之一。
Hadamard乘积
Hadamard乘积是元乘法,它的输出是一个向量。
如果我们对一个点(x,y)应用一个加法或乘法的向量函数,向量场则表示了该点可能会移动多远。 给定空间中某一个点,向量场显示了图中各个不同点可能的变化力度和方向。
参考:https://en.wikipedia.org/wiki/Vector_field?spm=.blogcontLhQ6Q
向量场是非常有趣的,因为它根据不同的起点可以向不同的方向移动。 这是因为向量场背后的向量存储着2x或x?2;这样的函数关系,而不是像-2和5这样的标量值。对于图上的每个点,我们将x值代入2x或x?2;,并从起始点绘制箭头指向新的位置。向量场对于类似梯度下降(Gradient Descent)这类的机器学习技术的可视化是非常有用的。
矩阵是数字或字符的矩形网格(如Excel表格),并具有加,减,乘等运算规则。
我们用列和行来描述矩阵的维度。
矩阵标量运算
矩阵的标量运算与向量一样。 简单地将标量应用于矩阵中的每个元素进行加,减,乘,除等操作。
Matrix scalar addition
矩阵单元操作
为了对两个矩阵进行加,减或除法,它们必须具有相等的维度。*我们以元素组合的方式产生对应的值,得到新的矩阵。
Numpy 的broadcasting方法*
这是个不得不提的话题,因为它在实践中非常重要。 在numpy中,元素操作的维度要求通过称为broadcasting的机制来扩展。 如果每个矩阵(行与行,列与列)中的相应维度满足以下要求,则这两个矩阵是兼容的:
1.? ? ? ? 两个矩阵维度相等,或
2.? ? 一个矩阵的维度为1
但在更高的维度上(3维或4维),事情会变得有点奇怪,但是现在我们不用担心。 了解二维上的操作是个很好的开始。
矩阵Hadamard乘积
矩阵的Hadamard乘积是一个元素运算,就像向量一样。 相应位置的值通过乘法运算来产生一个新的矩阵。
只要矩阵维度符合broadcasting要求,就可以用Numpy对矩阵和向量进行Hadamard乘积运算。
神经网络经常处理维度不符合要求的矩阵。 而矩阵转置提供了一种方法来“旋转”其中一个矩阵,以使其操作符合乘法要求。 转置矩阵有两个步骤:
1. 矩阵旋转90°
2.反转每行元素的顺序(例如[a b c]变为[c b a])
例如,将矩阵M转置为T:
矩阵乘法规定了一组对矩阵进行乘法运算,以产生新矩阵的规则。
并不是所有的矩阵都能进行乘法运算的。 并且,对输出矩阵的维度也存在要求。参考资料
1.? ? ? ? 第一矩阵的列数必须等于第二个矩阵的行数
2.? ? M×N矩阵和N×K矩阵的乘积是M×K矩阵。 新矩阵取第一个矩阵的行和第二个矩阵的列。
矩阵乘法依赖于点积与行列元素的各种组合。 以下图为例(取自Khan学院的线性代数课程),矩阵 C中的每个元素都是矩阵A中行与矩阵B中列的点积。
操作a1·b1表示我们取矩阵A中第一行(1,7)和矩阵B中第1列(3,5)的点积。
这里是另一种方法:
为什么矩阵乘法以这种方式工作?
矩阵的乘法运算非常有用。但背后并没有太深奥的数学规律。 之所以数学家发明了这种运算,完全是因为它简化了以前乏味的计算。 这是一个人为的产物,但却非常有效。
用一下几个例子自我测试一下
矩阵乘法与Numpy
Numpy使用函数np.dot(A,B)进行向量和矩阵乘法运算。 它有一些其他有趣的功能和问题,所以我希望大家能在使用前阅读一下相关文档。
更多英文教程
Khan Academy Linear Algebra
Deep Learning Book Math Section
Andrew Ng’s Course Notes
Explanation of Linear Algebra
Explanation of Matrices
Intro To Linear Algebra
Immersive Math
本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。
文章原标题《Linear algebra cheat sheet for deep learning》,作者:Brendan Fortuner,译者:friday012,审阅:李烽
文章为简译,更为详细的内容,请查看原文
一周精彩文章回顾
ID:yunqiinsight
云计算丨互联网架构丨大数据丨机器学习丨运维
这里“阅读原文”,查看本文及更多深度学习好文
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点

我要回帖

更多关于 线性代数矩阵视频 的文章

 

随机推荐