MIT 18.06 / Stanford CS229 (Linear Algebra 部分)
1.矩阵乘法
1.1 向量 x 向量
-
有向量 x,y∈Rn,xTy 被称为向量内积(Inner Product)或点积(Dot Product),结果为一个实数。
xTy∈Rn=[x1x2...xn]y1y2⋮yn=i=1∑nxiyi
注:xTy=yTx 始终成立。
-
有向量 x∈Rn,y∈Rm,xyT∈Rm×n 被称为向量外积(Outer Product),结果为一个矩阵,其中 (xyT)ij=xiyi。
xyT∈Rm×n=x1x2...xm[y1y2...yn]=x1y1x2y1⋮xmy1x1y2x2y2⋮xmy2⋯⋯⋱⋯x1ynx2yn⋮xmyn
1.2 矩阵 x 向量
有矩阵 A∈Rm×n,向量 x∈Rn,它们的积是一个向量 Ax∈Rm。有两种理解矩阵与向量的乘法的方式:
-
行列内积
如果按行写 A,可以把 Ax 表示为:
y=Ax=−−−a1Ta2T⋮amT−−−x=a1Txa2Tx⋮amTx
可以看出 y 的第 i 行是 A 的第 i 行和 x 的内积,即 yi=aiTx。
-
整列相乘
把 A 按列表示:
y=Ax=∣a1∣∣a2∣⋯∣an∣x1x2⋮xn=[a1]x1+[a2]x2+⋯+[an]xn
可以看到,y 是 A 的列的线性组合,其中线性组合的系数由 x 的元素给出。
也可以在左侧乘以行向量,写为 yT=xTA,其中 A∈Rm×n,x∈Rm,y∈Rn。也有两种理解方式:
-
把 A 按列表示:
yT=xTA=xT∣a1∣∣a2∣⋯∣an∣=[xTa1xTa2⋯xTan]
可以看出 yT 的第 i 个元素为 x 和 A 的第 i 列的内积。
-
整行相乘
把 A 按行表示:
yT=xTA=[x1x2⋯xn]−a1T−−a2T−⋮−amT−=x1[−a1T−]+x2[−a2T−]+⋯+xn[−anT−]
可以看出 yT 是 A 的行的线性组合,其中线性组合的系数由 x 的元素给出。
1.3 矩阵 x 矩阵
两个矩阵相乘,其中 A∈Rm×n,B∈Rn×p(A 的总列数必须与 B 的总行数相等),则:
C=AB∈Rm×p
其中 Cij=rowi×columnj=∑k=1nAikBkj。
-
行列内积
显然,Cij 等于 A 的第 i 行和 B 的第 j 列的内积:
C=AB=−−−a1Ta2T⋮amT−−−∣b1∣∣b2∣⋯∣bp∣=a1Tb1a2Tb1⋮amTb1a1Tb2a2Tb2⋮amTb2⋯⋯⋱⋯a1Tbpa2Tbp⋮amTbp
-
列乘以行
用列表示 A,用行表示 B,这时 Cij 等于 A 的第 i 列和 B 的第 j 行的外积的和:
C=AB=∣a1∣∣a2∣⋯∣an∣−−−b1Tb2T⋮bnT−−−=i=1∑naibiT
这种情况下,ai∈Rm,bi∈Rp,外积 aibiT 的维度是 m×p,与 C 的维度一致。
如:
234789[1060]=234[16]+789[00]=234121824
每一次都是用列向量与行向量相乘得到一个矩阵,每次得到的矩阵都有特点。如:
234[16]=234121824
矩阵
234121824
每一列都和向量
234
同向,即列向量都在
234
这条直线上,列空间是一条直线。同理,行向量都在
[16]
这条直线上,行空间(矩阵行所有可能的线性组合)是一条直线。
-
整列相乘
把 B 用列表示,则可以将 C 的列视为 A 与 B 的列的矩阵向量积(1.2 节):
C=AB=A∣b1∣∣b2∣⋯∣bp∣=∣Ab1∣∣Ab2∣⋯∣Abp∣
cj=Abj,可以看做 C 的第 j 列是 A 的列向量以 B 的第 j 列作为系数所求得的线性组合。
-
整行相乘
把 A 用行表示,则可以将 C 的行视为 A 与 B 的列的矩阵向量积(1.2 节):
C=AB=−−−a1Ta2T⋮amT−−−B=−−−a1TBa2TB⋮amTB−−−
ciT=aiTb,可以看做 C 的第 i 行是 B 的行向量以 A 的第 i 行作为系数所求得的线性组合。
-
分块乘法
[A1A3A2A4][B1B3B2B4]=[A1B1+A2B3A3B1+A4B3A1B2+A2B4A3B2+A4B4]
在分块合适的情况下,可以简化运算。
2.矩阵消元
2.1 消元法
三元方程组
⎩⎨⎧x3x+2y+8y4y+z+z+z=2=12=2
对应的矩阵形式 Ax=b 为:
130284111xyz=2122
消元([A∥b] 为方程组的增广矩阵形式):
[A∣b]=1302841112122r2−3r11002241−21262r3−2r21002201−2526−10
下划线的元素为主元,主元不能为零。如果在消元时遇到主元位置为零,则需要看它的后面的行对应位置是否为 0,如果不为 0,就交换这两行,将非零数视为主元。
消元失效:如果它后面所有行的对应位置都为 0,则该矩阵不可逆,消元法求出的解不唯一。(如:把第三个方程 z 前的系数成 -4,会导致第二步消元时最后一行全部为零,则第三个主元就不存在了,消元就不能继续进行了。)
消元后方程组变为
⎩⎨⎧x+2y2y+z−2z5z=2=6=−10
从第三个方程求出 z=−2,代入第二个方程求出 y=1,再代入第一个方程求出 x=2。
2.1 消元矩阵
8.求解 Ax = b:可解性和解的结构
8.1 Ax = b 的解
举例,同上一讲:有 3×4 矩阵 A:
A=1232462682810
求 Ax=b 的特解:
写出其增广矩阵(augmented matrix)[A∣b]:
1232462682810b1b2b3消元100200220240b1b2−2b1b3−b2−b1
显然,有解的必要条件为 b3−b2−b1=0。
8.1.1 Ax = b 可解性
讨论 b 满足什么条件才能让方程 Ax=b 有解(solvability condition on b):
- 从列空间看:当且仅当 b 属于 A 的列空间时;
- 如果 A 的各行线性组合得到 0 行,则 b 端分量做同样的线性组合,结果也为 0 时,方程才有解。
8.1.2 Ax = b 的解结构
-
特解
解法:令所有自由变量取 0,则有
{x1+2x32x3=1=3
,解得
{x1x3=−2=23
代入 Ax=b 求得特解:
xp=−20230
-
通解
令 Ax=b 成立的所有解:
{AxpAxn=b=0→A(xp+xn)=b
即 Ax=b 的解集为其特解加上零空间。对本例有:
xcomplete=−20230+c1−2100+c220−21
8.2 秩 r 与 Ax = b 的解关系
对于 m×n 矩阵 A,有矩阵 A 的秩 r≤min(m,n)。
8.2.1 列满秩
主元变量为 n,没有自由变量。因为没有自由变量可以赋值,所以列的线性组合得不到 0(因为如果存在非零 x 使 Ax=0 成立,那么 A 中有一列是没有贡献的,既然没有贡献,那么也就不存在列满秩的情况了)。
所以列满秩的解的情况:0 或 1 个特解。
举例:
列满秩 r=n 情况:
A=12653111,R=10000100
rank(A)=2,要使 Ax=b,b=0 有非零解,b 必须取 A 中各列的线性组合,此时 A 的零空间中只有 0 向量。
P.S. 因为行向量是 2 维的,且前两行线性无关,2 维平面中有两个向量线性无关,那该平面的所有向量都可以由这两个向量线性组合得到,所以后面两行一定会是 0 行。
8.2.2 行满秩
每行都有主元,不存在 0 行,那么 b 就没有要求,而且有 n−r 个自由变量,所以解有无穷多个。
举例:
行满秩 r=m 情况:
A=[13216151],R=[1001−−−−]
rank(A)=2,∀b∈Rm 都有 x=0 的解,因为此时 A 的列空间为 Rm,b∈Rm 恒成立,组成 A 的零空间的自由变量有 n−r 个。
8.2.3 行列满秩
代表的是满秩方阵,消元到最简形式是单位矩阵,是一个可逆矩阵,结合 r=m 和 r=n 的解的情况得出此时一定有一个解 b,b 满足是 A 向量的线性组合。
举例:
行列满秩情况:r=m=n,如:
A=[1324]
则 A 最终可以化简为 R=I,其零空间只包含 0 向量。
8.2.4 总结
r=m=nR=I1 solutionr=n<mR=[I0]0 or 1 solutionr=m<nR=[IF]∞ solutionr<m,r<nR=[I0F0]0 or ∞ solution
9. 线性相关性、基、维数
9.1 线性相关性
v1, v2, ⋯, vn 是 m×n 矩阵 A 的列向量:
9.2 基
向量空间 S 中的一组基(basis),具有两个性质:
- 他们线性无关;
- 他们可以生成 S。
对于向量空间 Rn,如果 n 个向量组成的矩阵为可逆矩阵,则这 n 个向量为该空间的一组基,而数字 n 就是该空间的维数(dimension)。
9.3 维数
举例:
A=111212323111
A 的列向量线性相关,其零空间中有非零向量,所以:
rank(A)=2=主元存在的列数=列空间维数
可以很容易的求得 Ax=0 的两个解,如:
x1=−1−110,x2=−1001
根据前几讲,我们知道特解的个数就是自由变量的个数,所以:
n−rank(A)=2=自由变量存在的列数=零空间维数
可以得到:列空间维数 dimC(A)=rank(A),零空间维数 dimN(A)=n−rank(A)。
参考
-
MIT - 18.06 Linear Algebra
-
Stanford - CS229 Machine Learning (Linear Algebra)
-
Github - zlotus/notes-linear-algebra
-
Github - apachecn/18.06-linalg-notes