模型的投影可能会把两个不同的特征向量变成同一个表示。一旦发生这种情况,后续层仅凭该表示就无法区分这两个输入。两个概念可以精确描述这种效果:核指出线性映射会抹去哪些输入变化;像则描述它能够产生哪些输出。
学完本课后,你将能够求出一个小矩阵的这两个集合,并说明它们揭示了哪些信息损失和可表示输出。
学习目标: 找出简单的零空间与像的例子,并解读其含义。
本课将第 033 课的矩阵秩与第 035 课的线性映射矩阵表示联系起来。Mathematics for Machine Learning第 2.7.3 节介绍了线性映射的像与核。下文的投影、计算、人工智能解读、图示和问题均为原创。
一次投影既能抹去一个方向,也会限制输出
考虑由下式表示的映射 P:R3→R3:
它保留前两个坐标,并将第三个坐标设为零。线性映射 T:V→W 的核是 V 中所有映射到 W 的零向量的输入所构成的集合。它的像是 W 中该映射能由某个输入产生的所有输出所构成的集合。这两个集合属于不同的空间:核关乎输入,像关乎输出。
这里的核指线性映射的零空间。在机器学习中,“kernel”也指核方法里比较样本的函数,那是另一个概念。
对于 P,当且仅当 x=0 且 y=0 时,输入会映射为零,而 z 可以是任意值。因此,核就是 z 轴:
ker(P)={(0,0,z):z∈R}=span{(0,0,1)}.
每个输出都形如 (x,y,0),而每个这样的向量都可以由输入 (x,y,0) 到达。因此,像就是 xy 平面:
Im(P)={(x,y,0):x,y∈R}=span{(1,0,0),(0,1,0)}.
这幅图分别呈现了这两个问题。竖直的核方向表示会消失的输入变化;阴影像平面表示仍可到达的输出。
一个映射,两个不同的子空间P(x, y, z) = (x, y, 0):改变 z 会让输入沿核方向移动,而所有输出都留在 xy 平面内。输入空间 ℝ³
- x = (2, 1, 0)
- x + k = (2, 1, 2)
- k = (0, 0, 2)
可达输出:Im(P)
每个输出的第三个坐标都是 0
P(x) = P(x + k) = (2, 1, 0)
核向量说明哪些输入会合并
取 x=(2,1,0),再加上核向量 k=(0,0,2)。这两个输入不同,但映射后的值相同:
因此,核并不是矩阵会逐个忽略的一组输入,而是输入可以沿着移动且结果不变的一组方向。如果模型只接收到投影后的向量,就无法恢复原始输入在这些方向上的起点。
像限定了下游代码能接收到什么
同一个 P 的秩为二,因为它的像有两个独立方向。它的核维数也为一。这两个数相加等于输入空间的维数:
nullity 1dim(ker(P))+rank 2dim(Im(P))=3dim(R3).
这就是有限维输入空间上的线性映射所满足的秩-零度定理。它把独立输出方向的数量与被压到零的独立输入方向的数量联系起来。对于作用于列向量的 m×n 矩阵,像是其列向量的张成空间,核由 Ax=0 求得,秩与零度之和等于 n,也就是输入坐标的数量。
读取代码中的形状时,最后这个数字很重要。NumPy 的 @ 运算符用于矩阵乘法:m×n 矩阵乘以一个含 n 个元素的向量,会产生一个含 m 个元素的向量。对于这个投影,下面的简短计算验证了输出相同,而核方向会消失:
import numpy as np
P = np.diag([1, 1, 0])
x = np.array([2, 1, 2])
k = np.array([0, 0, 2])
print(P @ x) # [2 1 0]
print(P @ (x - k)) # [2 1 0]
print(P @ k) # [0 0 0]
同样的区分有助于诊断学习得到的投影
学习得到的权重矩阵也会把一个特征向量映射到另一个向量。PyTorch 的 torch.nn.Linear 会对按行排列的输入施加仿射映射 y=xAT+b;设置 bias=False 后就只剩矩阵映射。用列向量表示时,同一操作为 Au+b。权重映射决定哪些输入差异会消失:如果 A(u−v)=0,两个输入就会产生相同的输出,因为共同的偏置会相互抵消。权重映射的像描述权重能够提供哪些输出方向;有偏置时,完整输出集合是平移后的子空间 b+Im(A)(PyTorch 文档)。
核与像回答不同的调试问题。非零核表示某些不同的特征向量经过这一层后会变得无法区分。受限的像表示某些输出特征组合根本无法产生。从 R3 映射到 R2 的映射可以有非平凡的核,同时仍能到达二维输出空间中的每一点。反过来,从 R2 映射到 R3 的映射可以保留所有输入差异,同时让输出落在一个平面内。仅凭矩阵的输出形状,无法回答这两个问题;需要查看秩和实际子空间。
下一步是在压缩表示之前,先判断哪些方向是冗余的。如果压缩方式是学习得到的,那么检查权重映射的秩、核和像,就能看出下游模型仍能区分和表达什么。
检查理解
Question 1
P(x, y, z) = (x, y, 0) 的核是什么?它的像又是什么?
Show the step-by-step solution
要使输入映射为零,前两个坐标必须为零,而第三个坐标可以是任意实数。因此,ker(P)={(0,0,z):z∈R}=span{(0,0,1)}。每个输出的第三个坐标为零,而且每个 (x,y,0) 都由输入 (x,y,0) 产生。因此,Im(P)={(x,y,0):x,y∈R},也就是 xy 平面。
Question 2
计算 P(4, −2, 5)。输出保留并丢弃了哪些信息?
Show the step-by-step solution
按矩阵作用于各坐标的规则计算:P(4,−2,5)=(4,−2,0)。前两个坐标保留,第三个坐标被抹去。因此,前两个坐标相同的任意两个输入都会得到相同输出。
Question 3
为什么 (2, 1, 0) 和 (2, 1, 6) 在 P 下有相同输出?
Show the step-by-step solution
它们的差是 (0,0,6),属于核,因为 P(0,0,6)=(0,0,0)。根据线性性质,P(2,1,6)=P((2,1,0)+(0,0,6))=P(2,1,0)+P(0,0,6)=(2,1,0)。
Question 4
若一个线性映射的输入空间是三维且秩为 2,它的零度是多少?
Show the step-by-step solution
秩-零度定理指出,rank+nullity=dim(V)。代入可得 2+nullity=3,所以零度为 1。有一个独立输入方向会映射为零。
Question 5
从 ℝ³ 映射到 ℝ² 的映射能否有非零核,同时仍到达 ℝ² 中的每个输出?
Show the step-by-step solution
可以。坐标映射 (x,y,z)↦(x,y) 的核为 {(0,0,z):z∈R},其中包含非零向量;而它的像是整个 R2,因为任意 (a,b) 都能由 (a,b,0) 映射得到。输入信息损失与输出可达性是彼此独立的性质。
Question 6
如果线性映射加上固定偏置 b,添加偏置会改变哪些输入差异映射后变成相同输出吗?
Show the step-by-step solution
不会。若 F(x)=Ax+b,则 F(u)−F(v)=(Au+b)−(Av+b)=A(u−v)。偏置会抵消,因此 F(u)=F(v) 当且仅当 u−v 属于权重映射 A 的核。可能的输出集合会从 Im(A) 平移为 b+Im(A)。
Question 7
权重映射的秩亏说明模型层可能产生怎样的表示?
Show the step-by-step solution
秩亏意味着像的独立方向数少于输出空间的维数,因此某些输出方向无法到达。如果秩也小于输入维数,那么由秩-零度定理可知核也非零:某些不同输入会合并。断言两种效果都存在之前,应先检查这两个维数。