模型二维表示中的同一个点,可以写成 (1, 7) 或 (3, 2)。只要说明使用的是哪一种坐标系,这两个数对都可以表示第一坐标为 1、第二坐标为 7 的向量。第一组使用熟悉的水平轴和垂直轴;第二组使用两个倾斜的基向量。基底使这种替代表示成为一种完整且没有歧义的方式,能够描述空间中的每个向量。
学完本课后,你将能够检验一组向量是否构成基底,在该基底中计算向量的坐标,并解释输入坐标改变时线性模型必须如何变化。
**学习目标:**验证一个基底,并用基底坐标表示向量。
本课建立在线性无关和张成空间的基础上:基底结合了这两个概念。讲解依据《Mathematics for Machine Learning》第 2.6 节;下面的数值示例、模型得分计算、交互探索器和问题均为原创。
基底恰好提供所需方向
考虑一个有限维向量空间。一组向量要成为该空间的基底,必须通过两项检验:
- **它张成该空间:**空间中的每个向量都能由这组向量的线性组合构成。
- **它线性无关:**其中没有冗余向量;只有所有系数都为零的线性组合才能得到零向量。
这两个条件合在一起,意味着这组向量拥有到达每个向量所需的足够方向,也没有会造成歧义的多余方向。该书第 2.6 节给出了等价表述:基底是极小的张成集,也是极大的线性无关集;而且每个向量都能由该基底唯一地线性组合得到。
在 Rn 中,基底恰有 n 个向量。对于更小的子空间,基底中的向量数等于该子空间的独立方向数。例如,两个向量可以构成 R3 中一个平面的基底,却不构成整个 R3 的基底。
为什么坐标是唯一的
假设 b1,…,bn 是一个基底,v 是空间中的任意向量。张成性保证至少存在一组系数可以表示它:
v=c1b1+⋯+cnbn.
现在设另一组系数 d1,…,dn 也能得到同一个向量。将两个表达式相减可得
0=(c1−d1)b1+⋯+(cn−dn)bn.
由于基向量线性无关,这个零线性组合中的每个系数都必须为零。因此,每个 i 都有 ci=di。基底没有冗余方向,所以坐标是唯一的。
我们把坐标列写作 [v]B。下标很重要:它说明这些坐标是由哪个基底给出的。向量与它的坐标列相关,但两者不是可以互换的对象。
计算坐标变换
取 R2 中的两个向量:
b1=[11],b2=[−12].
把基向量放在矩阵的列中:
B=[11−12].
它们线性无关:行列式为 1⋅2−(−1⋅1)=3,不等于零。R2 中有两个线性无关的向量,因此它们也张成整个平面,构成一个基底。
求 v=(1,7)T 的坐标。坐标列 c=[v]B 必须满足 Bc=v。令 c=(c1,c2)T,矩阵方程就变成两个普通方程:
c1−c2c1+2c2=1,=7.
用第二个方程减去第一个方程:3c2=6,因此 c2=2。接着 c1−2=1,所以 c1=3。直接检查重构结果:
3[11]+2[−12]=[3−23+4]=[17].
坐标对 (3,2) 表示“沿 b1 前进三步,再沿 b2 前进两步”。它指向标准坐标 (1,7) 所表示的同一个终点。
一个向量,两种坐标系
所选基底下的坐标: (1, 7)
标准坐标下的向量: (1, 7)
v = c₁b₁ + c₂b₂
所选基底下的坐标: (1, 7) 终点始终固定在 (1, 7)。改变基底会改变用于命名该点的坐标对。
探索器初始显示标准坐标。使用可通过键盘操作的选择器切换到倾斜基底:指向 v 的箭头终点保持不变,而显示的坐标从 (1,7) 变为 (3,2)。图注和读数也会以文本形式呈现结果。
让 NumPy 求解坐标方程
对于较大的基底,同一关系就是一个线性方程组。把基向量作为矩阵的列存储,然后求解 Bc=v:
import numpy as np
B = np.array([[1, -1],
[1, 2]]) # columns are b1=(1, 1) and b2=(-1, 2)
v = np.array([1, 7])
rank = np.linalg.matrix_rank(B)
coordinates = np.linalg.solve(B, v)
reconstructed = B @ coordinates
print(rank) # 2: full rank in R^2
print(coordinates) # [3. 2.]
print(np.allclose(reconstructed, v)) # True
对于这个 R2 中的方阵,满秩意味着两列线性无关,足以证明它们构成基底。numpy.linalg.solve 返回方阵满秩系统的解;矩阵奇异或不是方阵时,NumPy 会引发 LinAlgError。这里的秩结果是一种数值诊断:NumPy 通过奇异值和容差估计秩,因此,对于接近线性相关的浮点数据,可能需要根据应用的尺度和测量精度选择容差。请参阅官方 NumPy matrix_rank 参考文档和 solve 参考文档。
对于小型整数的精确示例,上面的手算行列式可以给出明确证明。对于实数数据,检查重构结果很有用,但它本身并不能检验是否为基底:奇异矩阵仍可能重构某些向量。还要检查矩阵形状正确且满秩。
模型权重必须随坐标一起变化
基底变换可以帮助理解模型的内部表示,但必须与使用该表示的运算协调进行。考虑线性得分 s=wTv,其中 w=(2,1)T,v=(1,7)T。在标准坐标中,得分为
2⋅1+1⋅7=9.
在倾斜基底中,v=Bc,且 c=(3,2)T。于是
wTv=wTBc=(BTw)Tc.
新坐标中相匹配的权重是 BTw=(3,0)T,得分仍为 3⋅3+0⋅2=9。如果把原权重 (2,1) 直接用于新的坐标对,得分就会变成 2⋅3+1⋅2=8。表示方式变了,但模型参数没有相应更新。
对于这里展示的线性得分,这个等式是精确成立的。在层与层之间应用非线性激活、归一化或其他运算的神经网络,任意基底变换不一定能保持其行为。实际中,表示的坐标与已学习的参数及其周围运算相联系;只改变其中一部分就可能改变预测结果。
候选向量组不合格时
两个候选向量即使指向同一方向,看起来仍可能像列表中的两个独立条目:
a1=[11],a2=[22].
第二个向量是第一个的两倍。它们的行列式为零,张成空间仅为直线 y=x,而非整个平面。它们完全无法到达向量 (1,7)。即便对于可达向量,坐标也可能有歧义:(2,2) 可以写作 2a1+0a2,也可以写作 0a1+1a2。
近乎平行的向量可能通过精确的线性无关检验,但只要测量或舍入发生微小变化,求得的坐标就可能很敏感。这是数值条件问题:数学上的坐标可能唯一,计算出的数值却很脆弱。秩估计与重构残差回答的是不同问题,应结合数据精度来解读。
因此,基底不只是一个紧凑的向量列表。它是一项约定:选定空间中的每个向量都可达,并且固定基底后,每个向量恰好只有一组坐标。基向量数也就给出了空间的维数,这是下一步将线性代数与模型表示联系起来的基础。
检查理解情况
问题 1
(2, 0) 和 (1, 3) 是否构成 ℝ² 的基底?写出线性无关检验,并解释为什么在这里它足以判断。
显示分步解答
将两个向量作为矩阵的列:
A=[2013].其行列式为 2⋅3−1⋅0=6,不为零,因此两列线性无关。R2 中有两个线性无关向量;它们张成整个平面,构成基底。
问题 2
使用 b₁=(1, 1) 和 b₂=(−1, 2),求 v=(1, 7) 的基底坐标,并通过重构验证答案。
显示分步解答
令 c1b1+c2b2=(1,7)。比较分量可得 c1−c2=1 和 c1+2c2=7。用第二式减去第一式:3c2=6,因此 c2=2。随后 c1=3。重构:3(1,1)+2(−1,2)=(3−2,3+4)=(1,7)。坐标为 (3,2)。
问题 3
在同一个倾斜基底中,坐标 (−2, 4) 在标准坐标中表示哪个向量?
显示分步解答
将坐标代入线性组合:−2(1,1)+4(−1,2)。第一分量为 −2−4=−6;第二分量为 −2+8=6。因此,所表示的向量是 (−6,6)。
显示分步解答
假设 v=∑icibi 与 v=∑idibi 都成立。将两个表达式相减,得到 ∑i(ci−di)bi=0。线性无关性说明,只有所有系数都为零,才能得到零向量。因此,对每个基向量都有 ci=di。
问题 5
设 a₁=(1, 2),a₂=(2, 4)。它们能表示 (3, 1) 吗?给出一个可达向量,并展示它有多种坐标表示。
显示分步解答
两个向量都位于直线 y=2x 上,因此任意线性组合也位于该直线上。由于 (3,1) 不满足 1=2⋅3,所以无法到达。可达向量 (2,4) 有两种表示:2a1+0a2 和 0a1+1a2。线性相关既导致无法张成整个平面,也使某些可达向量的坐标不唯一。
问题 6
在 ℝ³ 中,设 a₁=(1, 0, 1)、a₂=(0, 1, 1)、a₃=(1, 1, 2)。这组向量是整个 ℝ³ 的基底吗?a₁ 和 a₂ 能否成为一个更小空间的基底?
显示分步解答
注意到 a3=a1+a2,所以这组三个向量线性相关。它不能构成 R3 的基底;它张成的空间至多是一个平面。前两个向量线性无关,因此它们构成其张成空间的基底,也就是由 a1 和 a2 生成的平面。
问题 7
对于基向量按列存储的 B=[[1, −1], [1, 2]],`np.linalg.solve(B, [1, 7])` 会返回什么?之后应检查什么?
显示分步解答
方程组为 c1−c2=1 和 c1+2c2=7。解为 c=(3,2)。通过 Bc 重构,检查是否返回 (1,7);np.allclose(B @ coordinates, v) 之类的数值残差检验可以发现转置或索引错误。还要检查 B 是方阵且满秩,之后才能把它的列视为 R2 的基底。
问题 8
线性模型用 w=(2, 1) 对 v=(1, 7) 评分。如果坐标在倾斜基底中变为 c=(3, 2),需要匹配什么权重才能保持得分?如果仍用原权重会怎样?
显示分步解答
写成 v=Bc。于是 wTv=(BTw)Tc,所以新权重为 BTw=(3,0)。得分为 3⋅3+0⋅2=9,与原得分 2⋅1+1⋅7=9 相同。如果将原权重 (2,1) 原样用于 (3,2),得分会变成 2⋅3+1⋅2=8,模型输出因此改变。