【理解线性代数】(四)线性运算的推广与矩阵基础

1. 数值加法和乘法

数值加法与乘法,是小学数学课程中的基本数学运算。例如:

加法:1+1=2

乘法:2*2=4

在这个知识层次下,运算的基本单位是数字。

2. 从数值到向量

数值加法,可以看作一维空间中的向量加法,即:

加法:(1) + (1) = (2)

数值乘法,可以看作一维空间中的向量乘法,即:

乘法:(2) * (2) = 2 * 2 * cos(0) = 4

通过将数值推广成一维向量,实现了数值和向量概念的统一。在这个知识层次下,向量是运算的基本单位。

3. 向量到矩阵

向量加法和乘法,总是两两进行运算,这种运算比较简单。

现实应用中,往往需要对很多向量组成的向量集合进行批量运算,向量批量运算有何规律?为了研究向量的批量运算,需要将一个向量集合视为一个整体,这个整体看起来是矩形的数字阵列,所以叫做 矩阵 。例如下图是一个矩阵,此矩阵由 (a, b, c) 和 (d, e, f) 两个三维向量组成:
( a b c d e f ) \begin{pmatrix} a & b & c\\ d & e & f \end{pmatrix} (adbecf)

矩阵的行数表示向量个数,矩阵的列数表示向量的维度。

目前,矩阵仅仅表示多个向量的组合,没有其他任何含义,不需要想得太复杂。

下面将根据我们自己的理解,对矩阵运算规则进行推导,然后再和教科书上的运算规则进行比对,从而验证我们的理论。

3.1 矩阵加法

矩阵加法含义很简单,就是一组向量加上另外一组向量,对应位置的向量相加即可。因为向量相加,必须在两个向量之间进行,所以矩阵相加,两个相加的矩阵包含的向量个数必须相等,否则会因为缺少向量而无法进行。

可以正确进行的矩阵加法如下:
( a 1 b 1 c 1 d 1 e 1 f 1 ) + ( a 2 b 2 c 2 d 2 e 2 f 2 ) = ( a 1 + a 2 b 1 + b 2 c 1 + c 2 d 1 + d 2 e 1 + e 2 f 1 + f 2 ) \begin{pmatrix} a1 & b1 & c1\\ d1 & e1 & f1 \end{pmatrix} + \begin{pmatrix} a2 & b2 & c2\\ d2 & e2 & f2 \end{pmatrix} = \begin{pmatrix} a1+a2 & b1+b2 & c1+c2\\ d1+d2 & e1+e2 & f1+f2 \end{pmatrix} (a1d1b1e1c1f1)+(a2d2b2e2c2f2)=(a1+a2d1+d2b1+b2e1+e2c1+c2f1+f2)

无法进行的矩阵加法如下:
( a 1 b 1 c 1 d 1 e 1 f 1 ) + ( a 2 b 2 c 2 ) = 非法 \begin{pmatrix} a1 & b1 & c1\\ d1 & e1 & f1 \end{pmatrix} + \begin{pmatrix} a2 & b2 & c2 \end{pmatrix} = 非法 (a1d1b1e1c1f1)+(a2b2c2)=非法

3.2 矩阵乘法

下面从简单向复杂推导矩阵乘法运算规则。

3.2.1 1行3列矩阵 * 1行3列矩阵

设矩阵A:
A = ( a 1 b 1 c 1 ) A= \begin{pmatrix} a1 & b1 & c1 \end{pmatrix} A=(a1b1c1)

和矩阵B
B = ( a 2 b 2 c 2 ) B= \begin{pmatrix} a2 & b2 & c2 \end{pmatrix} B=(a2b2c2)

进行乘法运算,因为只有两个向量,可以尝试将这两个向量进行点乘运算,即:
A ∗ B = a 1 a 2 + b 1 b 2 + c 1 c 2 = ( a 1 a 2 + b 1 b 2 + c 1 c 2 ) A * B = a1a2 + b1b2 + c1c2 = (a1a2 + b1b2 + c1c2) A∗B=a1a2+b1b2+c1c2=(a1a2+b1b2+c1c2)

结果是一个数值,也可以看作是一个一维向量。

分析:

矩阵A包含1个三维向量,矩阵B包含1个三维向量,矩阵B可以代表三维空间中的一个一维空间,所以A中的所有向量投影到B,最终的结果变成了一个一维向量,符合我们对向量点乘及矩阵的理解。

3.2.2 2行3列矩阵 * 1行3列矩阵

增加矩阵A的行数,设矩阵A:
A = ( a 1 b 1 c 1 d 1 e 1 f 1 ) A= \begin{pmatrix} a1 & b1 & c1 \\ d1 & e1 & f1 \end{pmatrix} A=(a1d1b1e1c1f1)

和矩阵B
B = ( a 2 b 2 c 2 ) B= \begin{pmatrix} a2 & b2 & c2 \end{pmatrix} B=(a2b2c2)

进行乘法运算,尝试分别进行点乘运算,即:
A ∗ B = ( a 1 a 2 + b 1 b 2 + c 1 c 2 d 1 a 2 + b 1 b 2 + c 1 c 2 ) A * B = \begin{pmatrix} a1a2 + b1b2 + c1c2 \\ d1a2 + b1b2 + c1c2 \end{pmatrix} A∗B=(a1a2+b1b2+c1c2d1a2+b1b2+c1c2)

结果矩阵是一个2行1列的矩阵。

分析:

矩阵A包含2个三维向量,矩阵B包含1个三维向量,矩阵B可以代表三维空间中的一个一维空间,所以A中的所有向量投影到B,最终的结果变成了2个一维向量,符合我们对向量点乘及矩阵的理解。

3.2.3 2行3列矩阵 * 2行3列矩阵

设矩阵A:
A = ( a 1 b 1 c 1 d 1 e 1 f 1 ) A= \begin{pmatrix} a1 & b1 & c1 \\ d1 & e1 & f1 \end{pmatrix} A=(a1d1b1e1c1f1)

和矩阵B
B = ( a 2 b 2 c 2 d 2 e 2 f 2 ) B= \begin{pmatrix} a2 & b2 & c2 \\ d2 & e2 & f2 \end{pmatrix} B=(a2d2b2e2c2f2)

进行乘法运算,尝试分别进行点乘运算,即:
A ∗ B = ( a 1 a 2 + b 1 b 2 + c 1 c 2 a 1 d 2 + b 1 e 2 + c 1 f 2 d 1 a 2 + e 1 b 2 + f 1 c 2 d 1 d 2 + e 1 e 2 + f 1 f 2 ) A * B = \begin{pmatrix} a1a2 + b1b2 + c1c2 & a1d2+b1e2+c1f2\\ d1a2 + e1b2 + f1c2 & d1d2+e1e2+f1f2 \end{pmatrix} A∗B=(a1a2+b1b2+c1c2d1a2+e1b2+f1c2a1d2+b1e2+c1f2d1d2+e1e2+f1f2)

结果矩阵是一个2行2列的矩阵。

分析:

矩阵A包含2个二维向量,矩阵B包含2个三维向量,矩阵B可以代表三维空间中的一个二维平面空间(两条线组成一个面),所以A中的所有向量投影到B,最终的结果变成了2个二维向量,符合我们对向量点乘及矩阵的理解。

这个矩阵乘法稍微有些复杂,但有计算过程中有一个量没变,那就是矩阵A中向量的个数等于变换结果矩阵中向量的个数,即矩阵A的行数和变换结果矩阵的行数相等。在行数相等不变的情况下,只能将向

量点乘的结果按列依次向后摆放,最终,结果矩阵的列数,和矩阵B的行数相同。

3.2.4 矩阵不能相乘的情况

如果两个矩阵列数不同,也就是维度不同,还能相乘吗?

不能,因为向量点乘要求两个向量具有相同的维度,如果两个矩阵列数不同,矩阵中的向量互相无法进行点乘。不同维度的向量,坐标个数不一样,无法做乘法。

所以,两个矩阵相乘,必须乘号两边的矩阵有相同的维度。

3.2.5 推广


A ∗ B = C A * B = C A∗B=C

为例。

只要矩阵A和矩阵B的列数相同,不管矩阵A、矩阵B各自有多少行,都可以进行相乘。并且有:

  • 结果矩阵C包含的向量个数和A中的向量个数相同,投影过程是一个线性变换,向量个数不会增加也不会减少,故投影前后向量个数不变。
  • 结果矩阵C的向量维度和矩阵B的维度相同,因为矩阵C包含的向量,是矩阵A向矩阵B的投影,所以它们全部位于矩阵B所代表的空间中,所以C和B的维度必然相同。

3.2.6 验证复杂矩阵相乘:2行3列矩阵 * 3行3列矩阵

设矩阵A:
A = ( a 1 b 1 c 1 d 1 e 1 f 1 ) A= \begin{pmatrix} a1 & b1 & c1 \\ d1 & e1 & f1 \end{pmatrix} A=(a1d1b1e1c1f1)

和矩阵B
B = ( a 2 b 2 c 2 d 2 e 2 f 2 g 2 h 2 i 2 ) B= \begin{pmatrix} a2 & b2 & c2 \\ d2 & e2 & f2 \\ g2 & h2 & i2 \end{pmatrix} B= a2d2g2b2e2h2c2f2i2

进行乘法运算,结果为:
A ∗ B = ( a 1 a 2 + b 1 b 2 + c 1 c 2 a 1 d 2 + b 1 e 2 + c 1 f 2 a 1 g 2 + b 1 h 2 + c 1 i 2 d 1 a 2 + e 1 b 2 + f 1 c 2 d 1 d 2 + e 1 e 2 + f 1 f 2 d 1 g 2 + e 1 h 2 + f 1 i 2 ) A * B = \begin{pmatrix} a1a2 + b1b2 + c1c2 & a1d2+b1e2+c1f2 & a1g2+b1h2+c1i2\\ d1a2 + e1b2 + f1c2 & d1d2+e1e2+f1f2 & d1g2+e1h2+f1i2 \end{pmatrix} A∗B=(a1a2+b1b2+c1c2d1a2+e1b2+f1c2a1d2+b1e2+c1f2d1d2+e1e2+f1f2a1g2+b1h2+c1i2d1g2+e1h2+f1i2)

结果矩阵是一个2行3列的矩阵。

分析:

矩阵A包含2个三维向量,矩阵B包含3个三维向量,矩阵B可以代表三维空间中的一个三维立体子空间,所以A中的所有向量投影到B,最终的结果变成了2个三维向量,符合我们对向量点乘及矩阵的理解。

3.2.7 和书本理论进行比较

书本上的矩阵规则和我们理解的矩阵只有一点不同。还是以
A ∗ B = C A * B = C A∗B=C

为例。

书本上将矩阵B,进行了转置。也就是说,B矩阵中的向量,按照我们的理解,应该一行一行依次摆放,但是书本上规定应该竖着依次摆放。为什么?因为书本规定,矩阵A乘矩阵B,矩阵A的每一个行向量要和矩阵B的每一个列向量进行点乘,而我们的运算规则是矩阵A的每一个行向量要和矩阵B的每一个行向量进行点乘,所以在书本上规定的运算规则下,必须将向量B进行转置。其实运算结果和原理是完全一样的。

3.2.8 特别的变换

如果矩阵B为三行三列的单位矩阵(单位矩阵用E表示),即
B = E = ( 1 0 0 0 1 0 0 0 1 ) B = E = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} B=E= 100010001

任意一个m行3列的矩阵A,乘以矩阵B,都等于矩阵A本身,即
A ∗ B = A ∗ E = A A * B = A * E = A A∗B=A∗E=A

这个大家可以自己尝试演算一下。我们这里不做演算,我们这里做一个理论分析:

B矩阵为单位矩阵时,B矩阵所代表的空间,和当前的整个三维空间完全重合。矩阵A乘矩阵B,就是将矩阵A变换到原空间,而且不改变向量的长度,那么变换结果必然也和A重合,也就是说结果等于A。通过分析,我们可以很容易地理解,为什么一个矩阵乘以单位矩阵,结果是它本身。


下一篇:《矩阵乘法进阶》

相关推荐
wubba lubba dub dub75010 小时前
第四十九周学习周报
人工智能·算法·机器学习
装不满的克莱因瓶10 小时前
学习使用 Python 机器学习工具 sklearn
人工智能·python·学习·机器学习·ai·agent·智能体
Omics Pro11 小时前
3种蛋白结构输入方式!已申报欧洲发明专利
数据库·人工智能·python·机器学习·plotly
Omics Pro12 小时前
「自兹以往」动物肠道微生物组
数据库·人工智能·机器学习·语言模型·自然语言处理
oddsand112 小时前
pgvector 三大相似度算法
人工智能·算法·机器学习
落羽的落羽14 小时前
【项目】JsonRpc框架——开发实现1(细节功能、字段定义、抽象层、具象层)
linux·服务器·网络·c++·人工智能·算法·机器学习
keykey6.15 小时前
卷积神经网络(CNN):让AI学会“看“
开发语言·人工智能·深度学习·机器学习
升鲜宝供应链及收银系统源代码服务15 小时前
升鲜宝AI助手 E-R 图与操作说明书(三)---升鲜宝生鲜配送供应链管理系统源代码服务
大数据·人工智能·机器学习·生鲜供应链源代码·供应链源代码出售·生鲜配送源代码服务·门店连锁系统源代码
AI科技星16 小时前
精细结构常数α的多维度物理比值特性及空间螺旋模型研究
人工智能·线性代数·架构·概率论·学习方法
keykey6.16 小时前
用 PyTorch 训练图像分类器:完整实战
开发语言·人工智能·深度学习·机器学习