【线性代数】机器学习·算法必备 线性代数总结
目录
一、九层之台,起于垒土:坐标与变换
1.1 描述空间的工具:向量(Vector)
1.1.1 重温向量(Vector)
1.1.2 使用Python语言表示向量
1.1.3 向量(Vector)的加法运算
1.1.4 向量(Vector)的数量乘法
1.1.5 向量间的乘法:内积(Inner Product)和外积(Outer Product)
1.1.6 向量的线性组合(Linear Combination)
1.2 道生一,一生二:“搞基”
1.2.1 向量(Vector)的坐标
1.2.2 向量的坐标依赖于选取的基底
1.2.3 向量在不同基底上表示为不同坐标
1.2.4 构成基底的条件
1.2.5 张成(Span)空间
1.3 矩阵(Matrix),让向量动起来
1.3.1 矩阵:排列的向量,堆放的数字
1.3.2 特殊形态的矩阵
1.3.3 向量(Vector):可以视为一维矩阵
1.3.4 矩阵(Matrix)的加法运算
1.3.5 矩阵(Matrix)的数量乘法
1.3.6 矩阵与矩阵的乘法
1.3.7 矩阵乘以向量:改变向量空间的位置
1.4 矩阵乘向量的新视角:变换基底
1.4.1 重温矩阵乘向量的运算法则
1.4.2 列向量视角:重新组合矩阵的列向量
1.4.3 再引申:向量基底的变换
1.4.4 运算矩阵的各列就是映射后的新基底
1.4.5 更一般地:m×n矩阵乘以n维列向量
二、 空间与映射:矩阵的灵魂
2.1.1 矩阵表示的空间映射
2.1.2 降维了,“矮胖”矩阵对空间的压缩
2.1.3 “高瘦矩阵”无法覆盖目标空间
2.1.4 方阵,也得分情况讨论
2.1.5 秩:决定映射后的空间形态
2.2 逆矩阵和逆映射
2.2.1 逆矩阵
2.2.2 “矮胖矩阵”压缩空间:不存在逆映射
2.2.3 零空间(Null Space)的概念
2.2.4 “高瘦矩阵”不存在逆映射
2.2.5 列空间(Column Space)的概念
2.2.6 方阵:可能存在逆映射
2.2.7 逆矩阵存在的条件
2.2.8 逆映射总结
2.3 向量空间(Vector Space)和子空间(Subspace)
2.3.1 向量空间(Vector Space)
2.3.2 子空间(Subspace)
2.3.3 矩阵乘法的核心思想:列空间(Cloumns space)
2.3.4 矩阵乘法的核心思想:零空间(Null Sapce)
2.3.5 矩阵乘法的核心思想:行空间
2.3.6 矩阵乘法的核心思想:左零空间
一、九层之台,起于垒土:坐标与变换
1.1 描述空间的工具:向量(Vector)
1.1.1 重温向量(Vector)
在初中高中的时候,我们都一定接触过向量的概念,我们知道:
用几何语言描述向量(Vector)是一条有向线段,有大小、有方向,它是对空间描述的一种有力工具;
用数学语言描述向量(Vector)是排列成一行或一列的数字;
例如:
对于一个简单的二维向量可以理解为二维平面中坐标为、坐标为的一个点,也可以理解为在平面中以原点为起点,以为终点的一条有向线段,如图1.1.1 二维向量的空间表示:
由此可见一个向量中数的个数就是向量的维数。同理三维向量,如:可以用来表示三维空间中的一个指定点,或者用来表示三维空间中以原点为起点,以为终点的一条有向线段,如图1.1.2 三维向量的空间表示:
以此类推,还有更高维的向量,只不过难以用图形展示出来。不过向量不仅局限于直接来描述空间中的点坐标和有向线段,也可以凭借数据展示功能,来描述事物的属性。例如张三的考试成绩为:语文95,数学99,英语96,即分数=,这样来看,把向量分数看做一个盛放数据的容器,似乎也可以利用它将各科成绩与空间建立起来某种联系。
1.1.2 使用Python语言表示向量
import numpy as np
a=np.array([1,2,3,4])
print(a)
使用Numpy来生成一个向量,默认生成的是行向量,一般情况下我们通常使用列向量的形式,Python中的列向量代码如下:
import numpy as np
A=np.array([[1,2,3,4]])
print(A.T)
1.1.3 向量(Vector)的加法运算
两个维数相同的向量才可以进行加法运算,只要将相同位置上的元素相加即可,结果向量的维数保护不变。两个n维向量x和y的加法运算规则可以表示为:
例如:
,
由此可见,同维数的向量相加,其维度没有发生改变,但是所表示的点或有向线段发生了变换,如图1.1.3 向量的加法表示:
使用Python计算向量的加法:
import numpy as np
u=np.array([[1,2,3]]).T
v=np.array([[5,6,7]]).T
print(u+v)
1.1.4 向量(Vector)的数量乘法
向量的数量乘法就是将参与乘法运算的标量同向量的每个元素分别相乘,以此得到最终的结果向量。很显然,得到的结果向量维数依然不变。从向量数量乘法的几何意义上来看,就是将向量沿着所在直线的方向拉伸相应的倍数,拉伸方向和参与运算的标量符号一致。
例如,一个标量c和n维向量x的数量乘法运算规则可以表示为:
例如:
,
1.1.5 向量间的乘法:内积(Inner Product)和外积(Outer Product)
向量间的乘法分为内积和外积两种形式,首先我们来介绍向量的内积运算。
1. 向量的内积(Inner Product)
内积运算与向量的加法前提一样,参与内积运算的两个向量必须维数相等,运算规则是先将对应位置上的元素相乘,然后合并相加,向量的内积运算最终结果是一个标量。例如向量x,y的内积运算规则为:
对于这个定义我们看上去没有什么特殊含义,但是内积的另一种表示方法:
所包含的几何意义就十分明确了,它表示向量x在向量y方向上投影的长度乘向量y的模长,如图1.1.5 向量内积的几何表示
例如:
使用Python计算内积(Inner Product)
import numpy as np
x=np.array([3,5,2])
y=np.array([1,4,7])
print(np.dot(x,y))
2. 向量的外积(Outer Product)
我们只讨论二维平面和三维空间中的运算情况。
在二维平面中,向量x和向量y的外积(Outer Product)运算法则为:
与内积(Inner Product)运算类似,对于外积运算也有另一种表达式:
这个表达的几何意义会更加直观一些,向量的外积(Outer Product)表示表示两个向量张成(span)的平行四边形的“面积”。当两个向量的夹角大于,那么向量的外积运算得到的结果为负,如图1.1.5(2) 向量外积的几何表示:
例如:
三维向量x,y的运算法则为:
例如:
通过外积运算,得到的结果向量是有明确几何意义的,它表示x,y两个两个向量张成(span)平面的法向量(Normal Vector).
使用Python计算外积(Outer Product)
import numpy as np
x=np.array([3,3,9])
y=np.array([1,4,12])
print(np.cross(x,y))
1.1.6 向量的线性组合(Linear Combination)
基于向量加法和数量乘法,这两类基本运算,将其进行组合应用,就是向量的线性组合.
首先我们介绍向量线性组合的含义。针对向量u和向量v,先求出标量c和u的数量积,再求出标量d和v的数量积,最后将二者叠加,就得到了向量u和向量v的线性组合cu+dv.需要注意的是这里的标量c和标量d可以取任意值。
针对线性组合(Linear Combination),举一个实例,3个3维向量u,v,w的线性组合运算规则.
其中c,d,可以取包含0在内的任意值,当然维数向上扩展到任意维数n也是同理。
那么进一步思考一下,我们知道,两个向量相加,在几何上是将两个向量依次首尾相连,所得到的结果向量就是连接最初起点和最终重点的有向线段。
线性组合(Linear Combination)的几何图像是什么样的?讨论一下他们几种不同的线性组合情况,假定有3个非零的三维向量:
第一种情况:cu的所有线性组合(Linear Combination)构成的图像
由于标量c可以取0值,因此cu的所有线性组合可以表示为三维空间中一条穿过原点(0,0,0)的直线,如图图1.1.6 cu的所有线性组合构成的图像:
第二种情况:cu+dv的所有线性组合(Linear Combination)构成的图像
(1) 当向量u和向量v不在同一条直线上时,cu+dv的所有线性组合(Linear Combination)构成的线性组合可以表示为三维空间中一个通过原点(0,0,0)的二维平面,如图图1.1.6(2) 向量u,v不共线时,cu+dv所有线性组合构成的图像:
(2) 当向量u和v在同一条直线上时,cu+dv的图像就变为了情况一,这里就不做单独绘图说明了。
第三种情况:cu+dv+ew所有线性组合(Linear Combination)构成的图像
(1) 当向量u,v,w不在一个平面上时,cu+dv+ew构成的所有线性组合图像是整个三维空间。
(2) 当向量u,v,w在一个平面上时,cu+dv+ew构成的所有线性组合的图像与情况二一样。
(3) 当向量u,v,w在一条直线上时,cu+dv+ew构成的所有线性组合的图像与情况一一样。
其实不难发现,在上述讨论线性组合时,反复提到了共线,共面的概念.这些特殊性质会对一组向量。线性组合(Linear Combination)所得到的的结果向量在空间中的位置产生重要的影响。
1.2 道生一,一生二:“搞基”
第一节中,我们介绍了向量的基本概念和基本运算方法。有人戏称线代就是“搞基”,可见基底在线代中的重要性,正所谓大道至简,在线性代数中基底便是“至简”,基底构建一切,基底决定坐标。
1.2.1 向量(Vector)的坐标
根据我们前面的介绍,一个向量可以描述空间中的一个指定的点或者或者以原点为起点以向量的坐标点为终点的一条有向线段,如向量
可以表示二维平面中的一个点,其x轴和y轴上的坐标分别为1和2;
在表示有向线段时,x轴和y轴上的投影长度分别为1和2。
其中,值的正负性代表了与坐标轴的方向一致还是相反。
向量的加法表示多个向量首位相接,两端起止点相连的有向线段。
向量的数量乘法表示,向量在某方向上进行相应的倍数改变。
向量的乘法有向量的内积(Inner Produc)和外积(Outer Product).
内积(Inner Produc)表示向量x在向量y上投影的长度乘以向量y的模长。
在二维平面中,外积(Outer Product)表示两个向量的张成的平行四边形的“面积”。
在三维空间中,向量的外积(Outer Product)表示,两个向量张成平面的法向量(Normal Vector)。
向量的线性组合(Linear Combination),即就是向量的数量乘法与向量加法的结合运算。
以上都是上节中介绍的内容,这里不再赘述。
1.2.2 向量的坐标依赖于选取的基底
对于一个二维向量
它表示在x轴的投影为1,在y轴上的投影为2的有向线段,它的坐标是(1,2)。对这个含义而言,我们常常忽略的它的一个前提条件,利用方向为x轴和y轴正方向,并且长度为1的两个向量,即:
因此对于向量x而言,其完整的写法应该为:
这种表现形式是最完整的,在这里被选取的向量它们成为基底,基底的每一个成员向量被称为基向量,而坐标就是对应基向量的系数。总体的来说,关于向量x的完整准确说法为:
在基底下,其坐标是(1,2)。
1.2.3 向量在不同基底上表示为不同坐标
一个指定的向量可以在多组不同的基底上进行坐标表示,在不同基底的表示下,坐标自然也是不同的。
例如,向量x在基底下的表示为:
向量x在基底上表示的坐标为(4,5).
对于一个新基底
首先是将基向量单位化(就是将向量的方向不变,模长转化为1),从向量的的完整写法
,其中为向量的坐标,为基向量。将基向量单位化,只要将向量的各个分量除以它的模长即可,新基底向量的模长为,则
这样就使基向量的模长单位1,叫作将基向量单位化。
再分别计算向量与基向量的内积(Inner Product)
在该基底下,坐标就被表示为: ,如图1.2.3所示,表述利用不同基底对同一坐标进行表示的情况。
1.2.4 构成基底的条件
作为n维空间的一组基底,必须满足这样的要求:在n维空间中,任意一个向量都可以表示为这一组基向量的线性组合,且这种线性组合的方式(也就是系数)必须是唯一的。
(1) 向量数足够
如在三维空间中,如果想要成为三维空间中的一组基底,首先每一个基向量的维数都必须为3,其次,基向量的个数也必须为3个。
(2) 满足线性无关
一组向量需要满足线性无关,那么其中的任何一个向量都不能通过其余的向量来表示。
总结一下,一组向量,能构成n维空间的一组基底,就必须满足:n维空间中的任何向量v,都能表示为:
换句话说,n维空间中的n个基底向量需要满足线性无关。
1.2.5 张成(Span)空间
张成(Span)空间:对于一组向量,有它的所有线性组合构成的空间称为张成空间。
张成(Span)空间对于所讨论向量的线性相关性没有要求,这些向量可以是线性相关(Linearly Dependent)的,也可以是线性无关(Linearly Independent)的。下面我们举几个例子,方便大家理解,张成(Span)空间的概念。
(1) 与是线性无关(Linearly Independent)的二维向量,它构成了二维空间中的一组基底,因此他们的张成(Span)空间是整个二维空间。
(2) 两个向量对应分量成比例,因此它们是线性相关(Linearly Dependent)的,它们的张成(Span)空间是一条过原点的直线。
(3) 两个向量线性无关(Linearly Independent),但是向量个数只有两个,因此它们的张成(Span)空间是三维空间汇总一个穿过原点的二维平面。
(4) 三个向量满足的线性组合(Linear Combination)关系,因此它们是线性相关(Linearly Dependent)的,这三个向量的张成(Span)空间仍然是三维空间中一个过原点的二维平面。
(5) 三个向量线性无关(Linearly Independent),可以构成三维空间中的一组基底,因此它们的张成(Span)空间是整个三维空间。
1.3 矩阵(Matrix),让向量动起来
矩阵可能是线性代数这门科学中中出现最高频率的词汇了,它可以被看做排列的向量或者堆放在一起的数字。矩阵的意义非常重要,它可以作用在一个具体位置上,使其空间位置发生变化。
1.3.1 矩阵:排列的向量,堆放的数字
对于矩阵,最直观的描述就是一个的数字方阵.它可以看做是n个m维列向量从做左到右并排摆放,也可以看做m个n位行向量从上到下进行叠放。
举一个例子:一个的矩阵A
显而易见,它是由4行2列构成的,一共包含8个元素。
另一方面,也可以看做2个4维列向量或者4个2维行向量。
1.3.2 特殊形态的矩阵
(1) 方阵
行数和列数相等的一类矩阵称为方阵,其行数或列数称为它的阶数.例如一个4阶方阵,例如:
(2) 转置与对称矩阵
转置矩阵的概念:对于矩阵
如果把其行列上对应的元素进行互换,就可以得到一个全新的矩阵
把这个全新矩阵称为原矩阵的转置矩阵(Transposed Matrix),记作。
如果转置后的矩阵和新得到矩阵相等,那么就把这个矩阵称为对称矩阵(Symmetric Matrices),例如:
(3) 零矩阵(Null Matrix)
所有元素都等于0的矩阵,就将其称为零矩阵(Null Matrix),记作O,如:
(4)对角矩阵(Diagonal Matrix)
在非对角线的位置上,它的元素都为0,这个矩阵就称为对角矩阵(diagonal Matrix),如:
其中0元素可以省去不写。
(5) 单位矩阵(Identity Matrix)
单位矩阵(Identity Matrix)是指对角位置上所有元素为1,其余元素均为0的矩阵,如:
1.3.3 向量(Vector):可以视为一维矩阵
n维的行向量可以看作是一个的特殊矩阵,同理,n维的列向量同样也可以看作是一个的特殊矩阵。
1.3.4 矩阵(Matrix)的加法运算
矩阵(Matrix)之间加法运算必须是在等规模的矩阵之间(同型矩阵),即行数和列数相等的矩阵。矩阵之间的加法,就是把同型矩阵之间对应元素相加,得到最终的结果矩阵。
举个例子,矩阵A与矩阵B的加法运算
1.3.5 矩阵(Matrix)的数量乘法
矩阵(Matrix)的数量乘法也非常简单,就是将参与运算的标量数字分别与矩阵的每一个元素矩阵相乘,得到的结果矩阵对应的新元素。
例如:
1.3.6 矩阵与矩阵的乘法
矩阵与矩阵的乘法运算稍微要复杂一点,需要注意的是,不是随意两个矩阵都可以进行相乘,乘法运算对于矩阵的形态有特定的要求。下面举例矩阵A与矩阵B的乘法运算规则。
观察上面的计算公式,可以总结出一些特殊要求和基本规律:
(1) 左边矩阵的列数和右边矩阵的行数必须相等;
(2) 左边矩阵的行数决定了最终结果矩阵的行数;
(3) 左边矩阵的列数决定了最终结果矩阵的行数;
(4) 左边矩阵和右边矩阵的顺序不能改变;
举个例子说明:
这种以行为主的内积运算(也称点积),将左矩阵第一行和右矩阵第一列进行点积,进行n次乘法和n-1次加法才得到的结果矩阵第一行第一列元素,这种计算方式颗粒度太细,适合机器运算,却不利于理解;我们应该拥有更高维度更清晰的视角 —— 列向量(Column Vector),这些是我们本文主要介绍的方法,从列向量(Column Vector)的角度来理解矩阵的乘法,下面我们先以二阶方阵举例:
以列为主的视角将矩阵乘法视为对矩阵的列向量进行线性组合(Linear Combination),所谓线性组合,即线性+组合,线性是指向量乘以一个标量,沿着向量的方向缩放,方向不变;组合是把多个向量加起来。列视角是线性代数非常核心的基础概念,基础并不是说它简单,而是说它像地基一样重要,在学习任何线代知识前,应该先要打好的地基。矩阵乘法列向量的乘法视角,如下图所示:
使用Python计算矩阵的乘法
import numpy as np
A=np.mat([[1,2],[3,4],[5,6],[7,8]])
B=np.mat([[2,3,4,5],[6,7,8,9]])
print(A*B)
1.3.7 矩阵乘以向量:改变向量空间的位置
矩阵与向量的乘法,一般而言是写成矩阵A在左,列向量x在右的Ax运算形式.这种Ax形式的写法便于描述向量x的空间位置在矩阵A在作用下进行变换的过程。矩阵与向量的乘法,本质矩阵与矩阵乘法的一种特殊形式.只不过后面是一个列数为1的特殊矩阵。
对照前面矩阵乘法的规则,我们来总结一下矩阵与向量的乘法规则:
(1) 矩阵在左,列向量在右,矩阵的列数和列向量的行数相等。
(2) 矩阵和列向量相乘的结果向量是一个列向量。
(3) 矩阵的行数就是结果向量的维数。
(4) 乘法运算的实施过程就是矩阵的每行和列向量的对应元素分别相乘之后再进行相加。
例如:
它表示的几何意义为,原始向量表示二维平面上的一个点,其坐标为(4,5),经过矩阵
的乘法作用最终将原始点转化为三维空间中的一个新的目标点,其坐标为(14,32,50)。因此,从这个例子中可以总结出矩阵所发挥的重要作用。在指定矩阵的乘法作用下,原始空间中的向量被映射转换到了目标空间中的新坐标,向量的空间位置由此发生了变化,甚至在映射之后,目标的空间的维数相较于原始空间都有可能发生改变。
1.4 矩阵乘向量的新视角:变换基底
在1.3阶中我们介绍了矩阵和向量的表示方法及加法、乘法等基本运算规则,我们思考一个这样的问题,矩阵A和列向量x的乘法运算Ax有没有更深层次的几何含义呢?带着这个问题,我们开始介绍1.4节。
1.4.1 重温矩阵乘向量的运算法则
我们先简单回顾一下矩阵和向量相乘的运算法则,举一个二阶方阵A与二维列向量的x相乘的例子,运算公式为:
即就是矩阵的第i行向量的各成分和列向量x各成分分别相乘后再相加。
1.4.2 列向量视角:重新组合矩阵的列向量
前面我们多次介绍了从列向量的视角来理解矩阵的乘法,通过这种运算,会有一套全新的计算步骤.下面用一个二阶方阵进行举例。
通过这种形式拆解组合,也能得到最终的正确结果。从列的角度来看,矩阵A与向量x的乘法,实质上是对矩阵A的各个列向量进行线性组合的过程,每个列向量的组合系数就是向量x的各个对应成分。
使用上面的公式,我们再来举一个例子:
通过乘法运算,最终得到的结果向量就是:位于矩阵第一列的列向量
的3倍加上位于第二列的列向量
的5倍。
综上所述:一个矩阵和一个列向量乘法的过程可以理解为对于原矩阵各列的列向量(Column Vector)重新进行线性组合的过程。
1.4.3 再引申:向量基底的变换
为了说明原理,我们仍然使用二阶方阵
与二维列向量
的乘法运算进行分析说明。
二维向量
的坐标是基于基底
那么这个基底的完整表达式是
上面是我们回顾前面的内容,现在我们利用它将矩阵与向量的乘法运算表达式做进一步的展开处理,即:
即在矩阵
的作用下,向量最终完成了下面的转换过程。
更直白的说,通过乘法运算,矩阵把向量的基底进行了变换,旧的基底
被变换成了新基底
映射前由旧基底分别乘以对应的坐标值(x,y)来表示其空间位置,而乘法运算之后,由于旧的基底被映射到了新的基底,那么向量自然而然的应该用新基底去分别乘以对应坐标值(x,y)来描述改变之后的空间位置:
如图1.4.3所示.
1.4.4 运算矩阵的各列就是映射后的新基底
结合矩阵的式子不难发现:矩阵A的第一列就是,
就是原始的默认基向量
变换后的目标位置(新的基向量),而第二列
就是另一个基向量
映射后的目标位置。
1.4.5 更一般地:m×n矩阵乘以n维列向量
矩阵A与n维列向量x的乘法运算规则可以理解为:
在矩阵A的作用下,原始的n维基向量
被映射成了新的m维基向量
原始的n维基向量
被映射成了新的m维基向量
从上面的推导过程中可以发现,映射前后,列向量x的基向量维数都发生了变化,原始的n为列向量x被变换成了n个m维的列向量线性组合的形式。最终的运算结果是一个m维的列向量。
二、 空间与映射:矩阵的灵魂
在线性代数中,矩阵所扮演的角色就是完成向量在不同空间之间的映射过程,理解了这一点就能把控住整个线性代数的灵魂所在。在前面的介绍中,我们已经建立了一些学习线性代数的核心思想如:向量的坐标依赖于基底的选取,同一个坐标,可以用不同的基底表示,对于不同的基底,经过线性组合,可以表示同一坐标;对于矩阵与向量的乘法,其核心思想为向量在矩阵的作用下被映射到了空间中的另一个位置,所以矩阵的核心是空间映射;有了这两个核心思想,我们第二章开始研究对于不同形态的矩阵,在空间中映射的具体关系。
2.1.1 矩阵表示的空间映射
在默认基底所构成的空间中,矩阵A与列向量x成乘法Ax其本质就是变换原始向量的基底。将默认基底中的各个基向量分别对应地变换为矩阵A的各个列,由于矩阵A的各列充当目标向量新的“基向量”,在结合原始向量的坐标,最终得到目标向量在目标空间中的新位置。
2.1.2 降维了,“矮胖”矩阵对空间的压缩
对于矩阵A与向量x的乘法Ax,第一种情况,当m<n时,矩阵A的行数小于列数,我们成为“矮胖矩阵”。列向量x是n维空间R^n中的一个n维向量,向量x的n个默认基底是,分别被矩阵A映射成了n个m维的目标向量。由于m<n,则矩阵A所能张成空间的维数最大为m,在矩阵A的映射下,向量x被映射成了维数更低的m维列向量。因此,可以说当矩阵A的行列数m<n时,“矮胖矩阵”A压缩了原始空间。
举一个实例:
从上面的公式中,三维空间中的向量x被映射成了二维平面上的向量
这三个二维向量必然是线性相关的.但是仍然也要分为两种情况。
第一种情况:
若这三个目标向量全部不共线,那么其线性行组合的结果是二维平面,经过矩阵A的映射,原始向量空间被压缩成了一个二维平面。
第二种情况:
若这3个二维向量全部共线,那么其线性组合只能分布在二维平面R^2一条过原点的直线上。
2.1.3 “高瘦矩阵”无法覆盖目标空间
在矩阵中m>n的情况,对应地,称为“高瘦矩阵”。
n维向量x的基向量被矩阵A映射为了m维基向量,向量x的维数由n变为了m。
那么我们能不能说在矩阵A的映射作用下,由原始向量x所构成的空间变成了维数更高空间呢?
很显然答案是否定的,低维向量所携带的信息不能平白无故的增加。
举一个实例:
因此,在矩阵A的乘法作用下,二维空间的映射结果就是目标向量
和
所张成的空间。
对于目标向量
同样是分成两种不同的情况讨论:
第一种情况:
如果两个目标向量线性无关,那么由两个向量所张成的空间就是一个二维平面,这个二维平面是在空间中,过原点的一个平面。
第二种情况:
如果两个目标向量线性相关,那么二者的张成空间就是一条直线,同样的,这条直线是在R^3空间中,过原点的一条直线。
2.1.4 方阵,也得分情况讨论
当m=n时,即矩阵A为方阵.我们很容易发现,空间中的向量x,经过方阵A的映射,其目标空间仍是n个n维列向量所张成的空间。其映射后得到的空间的维度必然小于等于n,当且仅当这n个列向量线性无关时可以取等号。
举例说明:
第一种情况:
当矩阵A的三个列向量线性无关时,原始向量x的基向量经过映射后得到的目标向量仍然可以构成三维空间中的一组基。意味着原始空间经过矩阵A的映射,其映射后的空间仍然是一个等价的三维空间.原始向量空间在这个过程中没有被压缩,并且映射后的目标空间内的每一个向量也都能找到其对应的原始空间中的向量。
第二种情况:
当矩阵A的三个列向量共面但不共线时,空间中的向量经过矩阵A的映射作用,都会分布在空间过原点的一个平面。
第三种情况:
当矩阵A的三个列向量共线时,空间中的向量经过矩阵A的映射作用,都会形成空间中过原点的一条直线。
2.1.5 秩:决定映射后的空间形态
我们来总结提炼一些规律性的知识.先介绍一下像空间的概念:我们把一个空间经过矩阵映射后得到的新空间称为它的像空间。我们发现:一个原始空间,被行数列数不同的矩阵进行映射,最终得到的像空间的维数可能是不同的,也可能是相同的。那么问题来了,像空间维度的决定性因素是什么?很明显,像空维度的决定性因素就是空间映射矩阵各列的线性相关性,由各列所张成的空间维数就是原始空间映射后的像空间维数.(即最大线性无关组的向量个数)矩阵各列所张成空间的维数称为这个映射矩阵的秩.此外,秩也可以看做该矩阵线性无关的个数。
2.2 逆矩阵和逆映射
通过一个m行n列的矩阵可以将n维空间中x的坐标向量映射到m维空间中的y坐标向量。
2.2.1 逆矩阵
在前面的内容中,我们反复讲述了一个这样的结论:矩阵的本质就是映射。
对于一个的矩阵A,矩阵乘法y=Ax的作用是将向量从n维原始空间中的x坐标位置,映射到m维目标空间中的y坐标位置,这是一个正向映射的过程.那么,如果已知结果向量y的坐标,去推原始向量x的坐标,这个过程就称为逆映射。因为,逆映射也是一种映射过程,所有有同样的矩阵与之相对应,那么就将逆映射的矩阵称为矩阵A的逆矩阵,记作
矩阵的逆矩阵类似于数的倒数:如 a*b=b*a=1,数b是a的倒数,即
2.2.2 “矮胖矩阵”压缩空间:不存在逆映射
当映射矩阵m<n时:
从数学的角度来理解,矩阵A,因为m<n,矩阵A不可逆,无法用目标空间y的坐标位置,反推原始空间x的坐标位置,因此“矮胖矩阵不存在逆映射”即不存在。
从几何的角度来的理解,在我们2.1.2的例子中,“矮胖矩阵”对空间进行了压缩。
举个例子:
我们的目标是寻找满足
成立的向量x。
展开得到:
经过矩阵A的映射作用,都能映射到目标空间中的零向量上,c可以取任意值,满足条件的向量有无数个。
目标空间向量y经过矩阵A的映射在原始空间中有无数个向量x满足条件,因此目标向量的向量空间与原始向量的向量空间是一对多关系,因此“胖矮矩阵”不存在逆映射。
2.2.3 零空间(Null Space)的概念
对于给定的矩阵A,在映射的作用下满足等式Ax=0成立的向量x的集合,称为矩阵A的零空间(Null Space),记作N(A).
从定义可知,零空间(Null Space)体现的是齐次线性方程组Ax=0的解x的集合。
2.2.4 “高瘦矩阵”不存在逆映射
当映射矩阵m>n时:
从矩阵A的数学角度来理解,m>n,矩阵不存在逆矩阵,因此,“高瘦矩阵”不存在逆矩阵。从几何的角度来理解,我们引用2.1.3的内容来说明:
二维向量x,被的矩阵映射:
若矩阵各列的向量线性相关,目标空间是中一条穿过原点的直线。
若矩阵各列的向量线性无关,目标空间是中一条穿过原点的平面。
反过来讲中有无数个y的坐标点,满足y=Ax。
因此,高瘦矩阵不存在逆矩阵。
2.2.5 列空间(Column Space)的概念
一个原始空间经过矩阵A的映射得到对应的空间,本质上是该矩阵各列线性组合结果的集合,将其称为矩阵A的列空间C(A)。
例如:在空间中,一个过原点的二维平面。
2.2.6 方阵:可能存在逆映射
根据我们2.1.4的讨论:
当方阵A的三个列向量共面但不共线时,矩阵A的秩为2,矩阵A的列空间是一个“斜搭”在目标空间中的二维平面。
当方阵A的三个列向量共线时,矩阵A的列空间是一条直线。
当方阵A的三个列向量线性无关时,矩阵A的列空间是整个三维空间,矩阵A存在逆映射。
2.2.7 逆矩阵存在的条件
在我们上面的讨论中,一直在反复强调,逆矩阵存在的条件先手要保证矩阵是一个方阵.但是不一定所有方阵都存在逆矩阵。把原始空间中不同的向量x和通过矩阵A的作用映射到目标空间中的相同目标向量y,用数学语言来描述一下这个过程:
此时矩阵A的列向量a_1可以用其余各列进行线性表示,即矩阵A的秩小于n。
综上所述,在映射方阵A中,如果某个列向量a_i可以写成其他列向量线性组合的形式,即:
那么对应的矩阵一定是空间压缩的矩阵,一定不存在逆矩阵。
2.2.8 逆映射总结
综上所述,如果方阵A的列向量彼此之间线性相关,则该矩阵A对应着空间压缩的映射
如果方阵A的列向量彼此之间线性无关,则映射空间不会被压缩,矩阵A又逆矩阵存在
逆矩阵存在的条件:
(1) 矩阵A是方阵
(2) 列向量线性无关
2.3 向量空间(Vector Space)和子空间(Subspace)
2.3.1 向量空间(Vector Space)
前面我们反复见到的就是一种向量空间,如等,空间由所有含有n个成分的列向量。
向量空间(Vector Space)的概念(狭义):针对一个向量集合V,如果任取V中的两个向量u和v,只要满足以下两个条件,那么这个向量集合V就构成了一个向量空间。
(1) u+v仍存在于V中
(2) 任取标量c,满足cu也在V中
即,一个向量集满足向量加法,实数标量乘法规则的总和。
2.3.2 子空间(Subspace)
向量空间的描述方法与R^n向量空间的区别:
向量空间必须包含所有的三维向量
那么对于一个过原点的平面,其组成成分仍然是一个三维向量,因此这个平面就不能说是R^3空间,但是它是一个向量空间吗?
答案是肯定的,这个穿过R^3空间零点的平面是R^3空间的一个子空间(Subspace)。
一个三维向量空间的子空间有四种形式:
R^3空间本身、R^3空间中过原点的平面、R^3空间中过原点的直线和零向量自身。三维向量空间的子空间如图2.3.2所示:
2.3.3 矩阵乘法的核心思想:列空间(Cloumns space)
在上文已经不断提到过从列向量的视角来理解矩阵乘法。对于矩阵A而言,它包含了n个m维的列向量,那么矩阵A的列空间就包含了所有这n个m维列向量的线性组合。由于各列都在空间中,并且列空间中任意两个向量的和及任意向量与任意标量的数量积依然都可以表示为:列向量的线性组合的形式。因此矩阵A的列空间是C(A)是一个向量空间,并且是空间的子空间。即矩阵A的最大线性无关组所张成(span)的空间,最大无关组中的列向量是列空间的基(Basis),通过对基的线性组合可以得到列空间内的任意向量,所以有人说线代是“搞基”。
列空间对线性方程组有重要的意义,将线性方程组写成矩阵乘法的形式Ax=b,只有当向量b写成矩阵A各列的线性组合形式时,
才意味着方程组有解。
换句话说,对于线性方程组Ax=b,当且仅当向量b在矩阵A的列空间中时,方程组才有解。
举一个例子:设矩阵
矩阵的秩r=2,列空间(A)的维数为2,任选两个线性无关的向量
它们的线性组合就构成了矩阵A的列空间。对矩阵列向量进行线性组合得到列空间的思想,是线性代数重要的基础,以矩阵A的列空间举例,如下图2.3.3所示:
2.3.4 矩阵乘法的核心思想:零空间(Null Sapce)
对于矩阵,所有满足等式Ax=0的向量x的集合称为零空间,记作N(A)
与列空间不同的是,零空间关注是x的空间。从我们前面的介绍,映射是矩阵的灵魂,等式Ax=0就是将n维向量x在矩阵A的作用下映射到零向量上面来,零空间为齐次线性方程组解得集合。
我们知道,
如果矩阵A的各列线性无关,向量x只有零向量唯一解;
如果矩阵A的各列线性相关,向量x就有非零解;
举一个实例:矩阵
要找到零空间,那么就只主要找到Ax=0成立的线性无关的所有解向量。
零空间的的维度为3,按照这个思维,我们试着找到3个线性无关的向量:
它们构成零空间的一组基,因此零空间用它们线性组合表示为:
2.3.5 矩阵乘法的核心思想:行空间
矩阵各列可以张成列空间,对应的也有一个行空间。对于矩阵,其行空间是由各行的向量张成的空间。换个角度来看,矩阵A的行向量就是转置矩阵A^T的列向量,因此矩阵A的行空间就是转置矩阵的列空间,记作C()
2.3.6 矩阵乘法的核心思想:左零空间
对于矩阵,其左零空间就是转置矩阵的零空间,即满足等式成立的所有向量的集合。
写在后面的话:
自学了一遍线性代数,第一遍重温了,大学的教材线性代数,同济大学版,第一章是行列式,从线代的发展史来看,先有行列式,再有矩阵,但是这种理解方式会加大理解矩阵的难度,让你感到线代面目可憎,浪费你的宝贵时间。行列式的几何意义是向量围成空间的面积或体积,线性代数这门科学研究的是AX=b方程的解,更深层次的研究的应该是空间与映射和空间的变换,从列向量的视角出发,理解在矩阵的作用下,向量x被映射到新的空间,或者说在矩阵的作用下向量x的基底变换为了矩阵A各列的列向量,由此而引出了线代的核心思想列空间、行空间、零空间和左零空间。
对矩阵列向量进行线性组合得到列空间的思想,是线代的最重要的基础,应在学习任何其他知识前,先要打好的地基。理解了这些,解Ax=b方程就手到擒来了。
学会了这些基础知识和核心思想,理解相似矩阵,特征值和特征向量和对称矩阵就容易很多,剩余内容正在更新中。文章这么长,感谢您能读到此处,如果文章对您有帮助,点赞,收藏,肝就完了。
【线性代数】机器学习·算法必备 线性代数总结相关推荐
- 机器学习中的线性代数
第二章 机器学习中的线性代数知识 线性代数作为数学中的一个重要的分支,广发应用在科学与工程中.掌握好线性代数对于理解和从事机器学习算法相关的工作是很有必要的,尤其是对于深度学习而言.因此,在开始介绍深 ...
- 10个例子带你了解机器学习中的线性代数
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自:机器之心 本文介绍了 10 个常见机器学习案例,这些案例需要 ...
- 初学者 | 10个例子带你了解机器学习中的线性代数
选自 | machinelearningmastery 作者 | Jason Brownlee 编译 | 机器之心 参与 | 张倩.刘晓坤 本文介绍了 10 个常见机器学习案例,这些案例需要用线性 ...
- 矩阵分析理论在实际工程中的应用_机器学习中的线性代数
[妹子说]上一篇文章中讲了如何打好机器学习中的概率统计基础,那今天就再来说说线性代数的学习路径和思路吧. 没问题. 线性代数作为利用空间来投射和表征数据的基本工具,可以方便的对数据进行各种变换,从而让 ...
- 读懂系列 | 10个例子带你了解机器学习中的线性代数
(给机器学习算法与Python学习加星标,提升AI技能) 选自machinelearningmastery 作者:Jason Brownlee 编译:机器之心(almosthuman2014) 原文: ...
- Interview:人工智能岗位面试—人工智能岗位求职之机器学习算法工程师必备知识框架结构图
Interview:人工智能岗位面试-人工智能岗位求职之机器学习算法工程师必备知识框架结构图 目录 机器学习算法工程师思维导图 机器学习算法工程师思维导图 后期继续更新-- 1.思维导图01
- 机器学习中的线性代数之矩阵求导
前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理.接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍. 矩阵求导(Matrix Derivative)也称作矩阵微分 ...
- 【机器学习】【线性代数】均值,无偏估计,总体/样本方差,样本标准差,矩阵中心化/标准化、协方差,正/不/负相关等,协方差矩阵
本篇是概念讲解,协方差以及协方差矩阵的Python实现代码详见:[机器学习][线性代数]协方差+协方差矩阵的多种求解方法的Python实现(公式法 + 样本集中心化方法 + np.cov()法等) 0 ...
- 机器学习中的线性代数知识(中)
关于作者 作者小硕一枚,研究方向为机器学习与自然语言处理,欢迎大家关注我的个人博客https://wangjie-users.github.io/,相互交流,一起学习成长. 前言 在机器学习中的线性代 ...
最新文章
- 二分图匹配匈牙利算法DFS实现
- 一直都想总结一下自己遇到过的web安全方面的问题--2015-03-31
- python 数据比对 函数_1行代码实现Python数据分析:图表美观清晰,自带对比功能丨开源...
- python获取文本光标_python 文件的操作以及调整光标
- java 时间l_java中获取系统时间并格式化输出
- 专门用来显示大量数据的视图:AdapterView(1)
- 如何建设移动 DevOps?
- Kafka设计原理看了又忘,忘了又看?
- CSS-标准盒模型和怪异盒模型box-sizing
- 为什么jdk中把String类设计成final
- C C++ 文件输入与输出
- VirtualBox centos下设置共享文件夹
- Appium 环境搭建
- UG NX二次开发 - CAM 获取和设置公差的方法,含内外公差、边界内外公差的设置方法
- openharmony常用网站
- 信息安全意识教育日历——By 安全牛
- 切线空间(Tangent Space)法线映射(Normal Mapping)
- CE修改器入门:寻找指针基址
- iOS8 定位新增功能
- Java网课|apiscanner
热门文章
- Command(命令模式)行为型
- Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡
- 制造业MES生产管理系统程序代码 MES源码
- background-image属性
- 【计算机图形学】壹 · 光栅图形学之直线段的扫描转换算法
- LeetCode 19 螺旋矩阵
- hive启动失败 显示:Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time
- ORACLE锁定账户的原因及解决办法
- 编译原理知识点总结——字母表和串(附思维导图)
- 立杆见影 加快Win XP启动速度的六种办法(转)