一文读懂矩阵的秩和行列式的意义

移动开发 深度学习
详解人工神经网络中最基本的运算单元:矩阵。

 作为一个工科的学生,我们长期以来会使用比如像是矩阵以及行列式这些在线性代数上的知识,在这篇文章中,我想来聊一聊这些问题,即什么是面积,以及什么是面积的高纬度的推广.

1 什么是面积?

对于什么是面积,大家可能首先就会想到我们生活中常用的长*宽么?真的是这样么,其实在这里我们所谈论的面积,其实是欧几里得空间几何面积的基本的单位:平行四边形的面积.关于平行四边形的面积的定义,几何上所说的就是相邻两边边长乘以他们之间的夹角的正弦.

但是当我们面对到一些更一般的情形和更高维度的数理问题的时候,我们就有必要把这个面积的定义推广开来.首先我们应当要注意的是.面积是作为一个标量,他是来自于相邻的两个边的两个矢量相乘的结果,因此来时,我们需要把面积看作为一种映射的关系.

一文读懂矩阵的秩和行列式的意义

这里的V可以看做一个适量,V*V代表的是两个适量的有序对,那么f自然而然就是所求的面积.

现在我们将来证明这个映射是一个线性的映射,请坐稳扶好:

现在我们举一个最简单的例子,现在我们假设***个矢量是(1.0),第二个矢量是(0,1),也就是说两个矢量分别是X轴和Y轴上的单位为正的单位向量,那么由这两个矢量构成的四边形,这个四边形其实就是一个正方形,根据面积的定义,其实就是*宽=1*1=1

一文读懂矩阵的秩和行列式的意义

因此我们可以得到:

一文读懂矩阵的秩和行列式的意义

现在假设把***个矢量缩放a倍,这个四边形的面积也会变为相对应的a倍,这样的面积也将会变为原来的a倍,把第二个矢量缩放为b倍,这样的面积也会变为原来的b倍,如果这个时候我们同时对两个向量缩放为ab倍,这样的话面积也会变为原来的ab倍,这说明,面积的映射对于其他的两个操作数的矢量的标量积是呈现出各自线性的,如下:

一文读懂矩阵的秩和行列式的意义

其实在实际的情况下,面积的映射对于其操作数(矢量)的矢量加法也是线性的.因为矢量加法的操作本身就是一个线性的,那么他的面积的映射其实也就是一个线性的映射.现在我想通过几个例子,来解释下映射加法线性的一些后果.

一文读懂矩阵的秩和行列式的意义

两个共线矢量所张成的平行四边形是一条线,因此来说这个面积是0.现在假设面积映射是关于一个适量加法的线性映射,那么我们有以下的结果

一文读懂矩阵的秩和行列式的意义

其实这里其实用到了一个理论:

一文读懂矩阵的秩和行列式的意义

也就是说,在交换相互垂直操作数适量的顺序后,面积的映射变成一个负值.到底是正还是负取决于你认为的定义.一般情况下,我们把X轴的矢量放在前边,Y轴的矢量放在后边,从X轴到Y轴张成的一个平行四边形的面积,我们把这个符号一般看作为正号.

2 三维空间里的应用

在三维空间中,我们一般是利用的右手定则进行实验.如果以X轴的正方形为头部,Y轴的正方向为尾部.右手定则告诉我,纸面方向向外的方向是面积的正方向.如果反过来,纸面向内的方向就是该面积的正方向.与所规定的正负号的方向是相反的.现在这样来看正负号的几何的意义就比较明显了

现在我们假设用平面内的任意两个矢量所张成的平行四边形的面积,现在用公式来进行表示:

一文读懂矩阵的秩和行列式的意义

在这里,其实我们不难看到,所谓的面积其实就是一个2*2的矩阵的行列式:

一文读懂矩阵的秩和行列式的意义

就跟下边的图所示的一样:

一文读懂矩阵的秩和行列式的意义

其实我们的***行即使我们的***个行向量(a,b),第二行就是第二个行向量(c,d),再或者是***列是***个列向量(a,b)的转秩,第二个列自然就是第二个列向量(c,d)的转秩.当然这么做还是取决于我们是把矢量写成行向量还是列向量的形式表达.

3 行列式的性质的计算

在上述的推理中,我们可以很容易的发现,行列式的值是把与行列式的矢量写成列向量的横排还是行向量的竖排的方式是无关的.这也就是为什么,在计算行列式的时候,行列的地位是对等的.并且我们还应当注意到,根据上述的分析,交换向量的顺序,面积是负号的原因.这也就是为什么行列式中,交换列向量或者行向量一次,就应当要取一次负号的原因.另外行列式其他的计算的性子,其实都一一反映在面积映射的线性性当中.

所以,综上所述,行列式实际上本身就是一个关于面积的形式的推广.其实就是在给定一组基的情况下,N个向量张成的一个N维定义的广义四边形的体积,其实这就是行列式本质的一个含义.

4 行列式的一个推广

根据上边的结论,我们其实很容易的推广到三维体积的一个计算:

一文读懂矩阵的秩和行列式的意义

在这里我们应该要注意到,行列式的定义,其实是每一行各取一个不同列的元素的一个乘积并且符号和所谓的逆序性有关的.什么是逆虚性?所谓逆序性,其几何意义就是在规定了一个正方向之后(比如从1,2,3,4,5...N这个顺序定义为正号),交换任意一对数都取一次负号。这样的性质我们在上述的面积函数中已经有所看到,实际上体积,更高维度的广义体积,也有正方向之说,只不过已经难以用右手法则(以及叉乘)来形象说明罢了。右手定则的局限性也是将高维面积推广成行列式表达的一个动机之一。

对于这样交换任意一堆指标的操作就可以改变符号的性质,其实我们就叫做反对称性.这个时候,如果你善于思考,你会想为什么要取不同行不同列元素的乘积.因为如果有任意两个元素是同行同列的,那么他们交换他们的列指标,乘积不变但是符号要相反.因此乘积必须要是0,这也就是在行列式值中不予体现的原因之一.

行列式的定义其实是比较的冗杂的,其实就是来自于广大的面积映射的反对称性,其实面积映射是一个2维的,把二维任意拓展到多维,我们其实就可以发现R维的形式和R*R的行列式的形式是完全一致的.

其实在这里,我们可以把各种维度所代表的东西来总结下,二维所代表的是平面内的面积,三维自然而然其实就是三维空间内的体积,四维其实就是四维空间内的超体积.依次类推.在上边的推理中我们发现,这些矢量给定的基坐标写出的矩阵必然是方阵,矩阵的行列式对应的面积或者是体积.这样的推广证明相信在任意一本的线性代数书中都会看到,我只是说了人话而已.

5 行列式和矩阵的逆

我们知道很多定理,比如行列式为0的矩阵,不可逆,行列式不为0的矩阵,可逆,这个时候我们不禁要问,代表面积的行列式,是如何和线性变化的可逆性联合在一起的.

这个时候我们就应该要理解线性变化的几何意义.现在我来陈述一下:

如果我们把空间中一组线性无关的矢量都写成列向量的形式,那么他们所张成的N维体体积不为零,根据上面的分析,其值由行列式给出。向量经过线性变换A变换之后,得到的新向量形式如下:

一文读懂矩阵的秩和行列式的意义

注意到A是一个N*N的矩阵,向量是列向量。

变换前,N维体的体积是:

一文读懂矩阵的秩和行列式的意义

变换之后,N维体的体积是(注意到,第二个等式实际上说明了几何意义是如何定义矩阵乘法的,也就是N*N矩阵A和另外一个N个列向量组成的N*N矩阵的乘法):

一文读懂矩阵的秩和行列式的意义

A的行列式如果不为零,则代表这个变换后,N维体的体积不是NULL。又结合线性无关与体积的性质,我们可以说:

如果A的行列式不为零,那么A可以把一组线性无关的矢量,映射成一组新的,线性无关的矢量;A是可逆的(一对一的映射,保真映射,KERNEL是{0})

如果A的行列式为零,那么A就会把一组线性无关的矢量,映射成一组线性相关的矢量

如果A的行列式为负数,那么A将会改变原N维体体积的朝向。

从线性无关到线性相关,其中丢失了部分信息(例如坍缩成共线或者共面),因此这个变换显然就是不可逆的。线性是否无关和所张成N维体的体积有直接关系,这个体积值又与A的行列式有关。因此我们就建立了A的行列式与其是否可逆的几何关系。

举例说明,我们假设A是一个3维的矩阵。如果映射前,有一组三个线性无关的矢量,我们知道它们张成的体积不是0;经过映射后,他们对应的新矢量也能张成一个平行六面体,那么这个平行六面体的体积就是原体积乘以A的行列式。

显然,如果A的行列式是0,那么变换后的新“平行六面体"的体积将不可避免的也是0。根据上文的结论,我们有:变换后的这一组新矢量线性相关。

结论:

线性变换A的行列式是否为零,就代表了其映射的保真性,也即,能不能把一组线性无关的矢量变换成另一组保持无关性的矢量。

6 秩

但是有的时候,虽然行列式A不能把空间一组数目***的矢量线性无关,但是它能够保证那个一组少数目的矢量让其线性无关,这个数目矢量往往小于线性空间的维度,这个数目就叫做线性变换A的秩

比如:一个秩为2为3*3的矩阵A,因为秩小于3,那么任何一个3维六面体经过他的变化后,体积变为0,退化一个面,但是仍然存在一个面积不为0的面,在变换以后还是一个非零面积的面

所以说所谓的一个线性变换的秩,无非就是变化后,还能保持一个非零体积的几何形状的***的维度.

通过上边理解了秩,行列式,可逆性的几何意义,我们就能随意的构造一个线性变化的A,使得他要么保全所有的几何体,要么降维成为特定维度特定结构的几何体,压缩成为更低维度的几何体,所以说,可以看作为一个”降维打击”

更高维度的推理,希望有兴趣的小伙伴可以自己去证明,不明白的问题亦可以在文章下面评论.希望能够和大家多多交流,多谢指教.

本文转自雷锋网,如需转载请至雷锋网官网申请授权。本文作者夏洪进,原载于作者的个人博客

责任编辑:张子龙 来源: 雷锋网
相关推荐

2021-09-04 19:04:14

配置LogbackJava

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智领云

2023-11-21 09:41:00

缓存策略存储

2022-03-13 18:27:09

Redis数据库开源

2020-05-15 15:29:36

Stata数据分析

2022-05-12 10:53:42

keepalivevrrp协议

2022-09-22 09:00:46

CSS单位

2018-09-28 14:06:25

前端缓存后端

2022-11-06 21:14:02

数据驱动架构数据

2022-10-20 08:01:23

2021-12-29 18:00:19

无损网络网络通信网络

2023-05-20 17:58:31

低代码软件

2023-11-27 17:35:48

ComponentWeb外层

2022-07-26 00:00:03

语言模型人工智能

2022-12-01 17:23:45

2022-07-05 06:30:54

云网络网络云原生

2022-04-20 11:10:17

bias推荐系统debias

2023-10-23 15:38:12

Spring 5开发

2017-03-07 15:13:28

Scala偏函数函数
点赞
收藏

51CTO技术栈公众号