【AI数学基础】线性代数:矩阵和线性变换
(观前提醒,这是工科AI相关的数学基础的学习笔记,不是数学专业的文章,所以没有严谨的证明和定义,数院大神请勿批评)
3. 矩阵和线性变换
3.1 定义和例子
3.1.1 矩阵的定义
由
m
×
n
m\times n
m×n个数
a
i
j
(
i
=
1
,
2
,
⋯
,
m
;
j
=
1
,
2
,
⋯
,
n
)
a_{ij}(i=1,2,\cdots,m;j=1,2,\cdots,n)
aij(i=1,2,⋯,m;j=1,2,⋯,n)排成的
m
m
m行
n
n
n列的数表
a
11
a
12
⋯
a
1
m
a
21
a
22
⋯
a
2
m
⋮
⋮
⋮
⋮
a
n
1
a
n
2
⋯
a
n
m
\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 m} \\ a_{21} & a_{22} & \cdots & a_{2 m} \\ \vdots & \vdots & \vdots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n m} \end{array}
a11a21⋮an1a12a22⋮an2⋯⋯⋮⋯a1ma2m⋮anm
称为
m
m
m行
n
n
n列矩阵,简称
m
×
n
m\times n
m×n矩阵,为表示它是一个整体,总是加一个括弧,并用大写黑体字母表示它,记作:
A
=
(
a
11
a
12
⋯
a
1
m
a
21
a
22
⋯
a
2
m
⋮
⋮
⋮
⋮
a
n
1
a
n
2
⋯
a
n
m
)
\mathbf{A}=\left(\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 m} \\ a_{21} & a_{22} & \cdots & a_{2 m} \\ \vdots & \vdots & \vdots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n m} \end{array}\right)
A=
a11a21⋮an1a12a22⋮an2⋯⋯⋮⋯a1ma2m⋮anm
这
m
×
n
m\times n
m×n个数称为矩阵
A
\mathbf{A}
A的元素,简称为元(我超,元),数
a
i
j
a_{ij}
aij位于矩阵
A
\mathbf{A}
A的第
i
i
i行第
j
j
j列。
3.1.2 特殊的矩阵
- 行数与列数都等于 n n n(即行数与列数相等)的矩阵称为 n n n阶方阵, n n n阶矩阵 A \mathbf{A} A也记作 A n \mathbf{A}_n An;
- 只有一行的矩阵,也称行矩阵或者行向量;
- 只有一列的矩阵,也称列矩阵或者列向量。
3.1.3 例子
灰度图像在计算机中是一个二维的矩阵,像素点的数值越小,该像素点对应的颜色越接近于黑色;像素点的数值越大,该像素点对应的颜色越接近白色,像素点的取值是0-255:
某厂向三个商店发送四种产品的数量可列成矩阵:
A
=
(
a
11
a
12
a
13
a
14
a
21
a
22
a
23
a
24
a
31
a
32
a
33
a
34
)
\mathbf{A}=\left(\begin{array}{llll} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \end{array}\right)
A=
a11a21a31a12a22a32a13a23a33a14a24a34
其中 a i j a_{ij} aij为工厂向第 i i i店发送这第 j j j种产品的数量。
3.2 线性变换
3.2.1 线性变换的几何表示
线性空间种的运动,被称为线性变换,线性空间种的一个向量变成另一个向量,都可以通过一个线性变换来完成。输入向量(Input vector)通过线性变换变到输出向量(Output vector)
线性变换需要满足两个条件:
- 变换后的坐标原点在空间中要保持不变;
- 向量的箭头的形状(不能被弯曲)在变换后也要保持不变。
线性变换可以对空间中所有的向量进行,比如把二维空间中的所有向量想象成填满空间的点。
那么空间里的线性变换,其实就相当于对空间这个平面进行拉扯(坐标原点没变)。
下面哪个是线性变换?
只有右下角的图是线性变换,其他要么原点发送改变,要么箭头出现弯曲。
3.2.2 线性变换的数值描述——矩阵
在一个线性空间中,选定一组基向量,将变换之后的基向量的数值列表放在一个矩阵里,那么这个矩阵就可以代表这个线性变换。我们对下图中两个向量进行线性变换后,这两个基向量到了另外一个位置,然后用一组新的数值列表表示它们,这个矩阵就代表了线性变换。
比如在这张图中有两个基向量
i
⃗
\vec{i}
i和
j
⃗
\vec{j}
j,黄色的向量为
V
⃗
\vec{V}
V,一旦向量空间中的基向量确定,那么空间中的任何一个向量都可以用基向量的线性组合来表示。比如
V
⃗
\vec{V}
V就可以通过两个基向量
i
⃗
\vec{i}
i和
j
⃗
\vec{j}
j线性组合表示为
V
⃗
=
−
1
i
⃗
+
2
j
⃗
\vec{V}=-1\vec{i}+2\vec{j}
V=−1i+2j,在几何上可以这样理解:向量
V
⃗
\vec{V}
V可以通过基向量
i
⃗
\vec{i}
i在反方向上进行一个单位的拉伸,然后对于
j
⃗
\vec{j}
j这个基向量在它原本的方向上进行两个单位的拉伸,然后将拉伸后的二者相加得到向量
V
⃗
\vec{V}
V.
之后我们对空间进行拉伸,得到了下图(图中
i
⃗
\vec{i}
i和
j
⃗
\vec{j}
j是拉伸后的结果,黄色向量是
V
⃗
\vec{V}
V拉伸之后的结果):
我们可以看到,由于线性变换的性质,网格线在变换之后会保持平行且等距,新空间里的黄色向量仍然可以通过
i
⃗
\vec{i}
i和
j
⃗
\vec{j}
j线性组合得到。
在对空间进行变换后,
V
⃗
\vec{V}
V仍然可以由基向量表示,但是
变换后的
V
⃗
=
−
1
变换后的
i
⃗
+
2
变换后的
j
⃗
变换后的\vec{V}=-1变换后的\vec{i}+2变换后的\vec{j}
变换后的V=−1变换后的i+2变换后的j,这个过程就是对我们的
V
⃗
\vec{V}
V在空间上进行一个线性变换,用公式来表示就是
A
x
=
y
\mathbf{Ax}=\mathbf{y}
Ax=y,其中
A
=
(
1
3
−
2
0
)
,
x
=
(
−
1
2
)
,
y
=
(
5
2
)
\mathbf{A}=\left(\begin{array}{cc} 1 & 3 \\ -2 & 0 \end{array}\right), \mathbf{x}=\binom{-1}{2}, \mathbf{y}=\binom{5}{2}
A=(1−230),x=(2−1),y=(25)
3.3 矩阵的运算
3.3.1 矩阵的加法
对应元素相加,与向量的加法运算一致。只有当两个矩阵的行数和列数一致时才可以相加,即:
C
=
A
+
B
=
(
a
i
j
)
m
×
n
+
(
b
i
j
)
m
×
n
=
(
c
i
j
)
m
×
n
,
\mathbf{C}=\mathbf{A}+\mathbf{B}=\left(a_{i j}\right)_{m \times n}+\left(b_{i j}\right)_{m \times n}=\left(c_{i j}\right)_{m \times n},
C=A+B=(aij)m×n+(bij)m×n=(cij)m×n,
其中,
c
i
j
=
a
i
j
+
b
i
j
(
i
=
1
,
2
,
⋯
,
m
;
j
=
1
,
2
,
⋯
,
n
)
c_{i j}=a_{i j}+b_{i j}(i=1,2, \cdots, m ; j=1,2, \cdots, n)
cij=aij+bij(i=1,2,⋯,m;j=1,2,⋯,n),即对应元素相加。
3.3.2 矩阵的数乘
设
k
k
k是一个数,
A
\mathbf{A}
A是一个
m
×
n
m\times n
m×n矩阵,数
k
k
k和
A
\mathbf{A}
A的乘积称为数乘矩阵,即
k
A
=
A
k
=
k
[
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
⋮
⋮
⋮
a
m
1
a
m
2
⋯
a
m
n
]
=
[
k
a
11
k
a
12
⋯
k
a
1
n
k
a
21
k
a
22
⋯
k
a
2
n
⋮
⋮
⋮
k
a
m
1
k
a
m
2
⋯
k
a
m
n
]
=
(
k
a
i
j
)
m
×
n
,
\begin{aligned} k \mathbf{A} & =\mathbf{A} k=k\left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 n} \\ \vdots & \vdots & & \vdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{array}\right]=\left[\begin{array}{cccc} k a_{11} & k a_{12} & \cdots & k a_{1 n} \\ k a_{21} & k a_{22} & \cdots & k a_{2 n} \\ \vdots & \vdots & & \vdots \\ k a_{m 1} & k a_{m 2} & \cdots & k a_{m n} \end{array}\right] \\ & =\left(k a_{i j}\right)_{m \times n}, \end{aligned}
kA=Ak=k
a11a21⋮am1a12a22⋮am2⋯⋯⋯a1na2n⋮amn
=
ka11ka21⋮kam1ka12ka22⋮kam2⋯⋯⋯ka1nka2n⋮kamn
=(kaij)m×n,
即
A
\mathbf{A}
A的每个元素都乘以
k
k
k.
3.3.3 矩阵和向量的乘法
矩阵和向量的乘法,本质上是对向量在空间上进行线性变换.
如果是左乘向量,那就是按向量的行和矩阵的列向量做内积,也就是按3.3.4的算法进行,右乘也一样,列向量可看作列矩阵,行向量可看作行矩阵,矩阵和向量的乘法完全可以按照3.3.4矩阵和矩阵的乘法法则进行。
3.3.4 矩阵和矩阵的乘法
代数上,矩阵之间的乘法是这样的(也就是矩阵
M
2
\mathbf{M}_2
M2的行向量和
M
1
\mathbf{M}_1
M1的列向量进行内积得到,矩阵的每一行可视为行向量,矩阵的每一列可视为列向量),矩阵的乘法只能是
m
×
n
m\times n
m×n的矩阵与
n
×
s
n\times s
n×s的矩阵相乘,如果左边矩阵的列数不等于右边矩阵的行数,则没法相乘。
几何上,矩阵相乘是空间中两种线性变换的叠加,比如在下图当中,我们首先对向量空间进行一个旋转(Rotation),然后再进行一个剪切(Shear),这个结果相当于对向量左乘一个矩阵(错切(shear)变换实际上是平面景物在投影平面上的非垂直投影效果。图像错切变换也称为图像剪切、错位或错移变换。)
3.5 矩阵的转置
把矩阵
A
\mathbf{A}
A的行换成同序数的列得到一个新矩阵,叫做
A
\mathbf{A}
A的转置矩阵,记作
A
T
\mathbf{A}^{T}
AT.
例如矩阵:
A
=
(
1
2
0
3
−
1
1
)
\mathbf{A}=\left(\begin{array}{ccc} 1 & 2 & 0 \\ 3 & -1 & 1 \end{array}\right)
A=(132−101)
的转置矩阵为:
A
=
(
1
3
2
−
1
0
1
)
\mathbf{A}=\left(\begin{array}{cc} 1 & 3 \\ 2 & -1 \\ 0 & 1 \end{array}\right)
A=
1203−11
矩阵的转置也是一种运算,满足下述运算规律(假设运算都是可行的,加法需要满足矩阵行和列一致,乘法需要满足其条件,见3.3.4)
(
A
T
)
T
=
A
(
A
+
B
)
T
=
A
T
+
B
T
(
λ
A
)
T
=
λ
A
T
,
λ
是标量
(
A
B
)
T
=
B
T
A
T
.
\left(\mathbf{A}^{T}\right)^{T}=\mathbf{A} \\ (\mathbf{A}+\mathbf{B})^{T}=\mathbf{A}^{T}+\mathbf{B}^{T} \\ (\lambda \mathbf{A})^{T}=\lambda \mathbf{A}^{T},\lambda是标量 \\ (\mathbf{A B})^{T}=\mathbf{B}^{T} \mathbf{A}^{T} .
(AT)T=A(A+B)T=AT+BT(λA)T=λAT,λ是标量(AB)T=BTAT.
3.6 矩阵的行列式
3.6.1 行列式的定义
行列式是数学中的一个函数,将一个 n × n n\times n n×n方阵 A \mathbf{A} A映射成一个标量,记作 det ( A ) \det(\mathbf{A}) det(A)或 ∣ A ∣ |\mathbf{A}| ∣A∣。
3.6.2 二阶和三阶行列式的计算
四阶及以上行列式计算方法详见:
【高等代数笔记】(8-13)N阶行列式
【高等代数笔记】(14-17)N阶行列式
【高等代数笔记】(18)N阶行列式
2阶行列式计算公式:
∣
A
∣
=
∣
a
b
c
d
∣
=
a
d
−
b
c
|A|=\left|\begin{array}{ll} a & b \\ c & d \end{array}\right|=a d-b c
∣A∣=
acbd
=ad−bc
3阶行列式计算公式:
∣
A
∣
=
∣
a
b
c
d
e
f
g
h
i
∣
=
a
e
i
+
b
f
g
+
c
d
h
−
c
e
g
−
b
d
i
−
a
f
h
|A|=\left|\begin{array}{lll} a & b & c \\ d & e & f \\ g & h & i \end{array}\right|=a e i+b f g+c d h-c e g-b d i-a f h
∣A∣=
adgbehcfi
=aei+bfg+cdh−ceg−bdi−afh
3.6.3 行列式的几何意义
在二维空间里,行列式表示矩阵对应的线性变换前后的面积比,若在高维空间里,则是体积。
如果一个矩阵的行列式为负数,说明空间里的向量都进行了180度的翻转。
3.7 逆矩阵
3.7.1 逆矩阵的定义
给定一个
n
n
n阶方阵
A
\mathbf{A}
A,若存在一
n
n
n阶方阵
B
\mathbf{B}
B,使得
A
B
=
B
A
=
I
n
\mathbf{A}\mathbf{B}=\mathbf{B}\mathbf{A}=\mathbf{I}_n
AB=BA=In,其中
I
n
\mathbf{I}_n
In是
n
n
n阶单位矩阵(就是从左上角到右下角的这个对角线上的元素全是1,其余位置全是0的方阵),则称
A
\mathbf{A}
A是可逆的,且
B
\mathbf{B}
B是
A
\mathbf{A}
A的逆矩阵,记作
A
−
1
\mathbf{A}^{-1}
A−1.
只有方阵才可能但非必然有逆矩阵,若方阵
A
\mathbf{A}
A的逆矩阵存在,则称
A
\mathbf{A}
A为非奇异方阵或可逆方阵。
例如:
(
1
1
0
1
)
(
1
−
1
0
1
)
=
(
1
0
0
1
)
\left(\begin{array}{ll} 1 & 1 \\ 0 & 1 \end{array}\right)\left(\begin{array}{cc} 1 & -1 \\ 0 & 1 \end{array}\right)=\left(\begin{array}{ll} 1 & 0 \\ 0 & 1 \end{array}\right)
(1011)(10−11)=(1001)
3.7.2 逆矩阵的几何意义
几何上,一个矩阵的逆矩阵代表的是该矩阵的反运动。
3.8 求解线性方程组
任何一个线性方程组可以写成矩阵和向量组相乘得到另一个向量,比如:
我们知道,矩阵和向量乘法相当于一个向量上施加矩阵
A
\mathbf{A}
A描述的线性变换:
那么如果要从
v
⃗
\vec{v}
v变成
x
⃗
\vec{x}
x,其实就相当于在向量
v
⃗
\vec{v}
v上施加矩阵
A
\mathbf{A}
A的反运动,也就是矩阵
A
−
1
\mathbf{A}^{-1}
A−1,代数上,相当于在
A
x
⃗
=
v
⃗
\mathbf{A}\vec{x}=\vec{v}
Ax=v的两边同时乘上
A
−
1
\mathbf{A}^{-1}
A−1,得到
A
−
1
A
x
⃗
=
A
−
1
v
⃗
\mathbf{A}^{-1}\mathbf{A}\vec{x}=\mathbf{A}^{-1}\vec{v}
A−1Ax=A−1v,因为
A
−
1
A
=
I
\mathbf{A}^{-1}\mathbf{A}=\mathbf{I}
A−1A=I,所以
x
⃗
=
A
−
1
v
⃗
\vec{x}=\mathbf{A}^{-1}\vec{v}
x=A−1v,当然,这里的前提是矩阵
A
\mathbf{A}
A的逆矩阵存在。
如果逆矩阵不存在,那也有两种情况:
如果线性变换的结果使得空间中所有的向量在一条直线上,这种情况下,如果
V
⃗
\vec{V}
V刚好在这条线上,那么解存在(Solution exist);如果
V
⃗
\vec{V}
V不在这条直线上,说明线性方程组的解不存在(No solution exist)。