AI 数学课程 · 第 30 课,共 180

向量张成:线性模型能够表达的预测

用向量张成找出线性模型能由特征列产生的所有预测,并判断目标值是否无法由现有特征表达。

分享这篇文章

线性预测规则可以任意调整权重,却仍可能错过特征无法表达的模式。从所有训练样本来看,这个限制很清楚:每个预测向量都是特征列的加权和。这些加权和构成一个称为张成的集合。

学完本课后,你将能够描述这个可达集合、计算其中的一个预测,并检验一组拟议的目标值是否可能由模型产生。

学习目标: 识别由线性组合可达的向量集合。

第 29 课:线性无关消除冗余询问特征方向是否带来不同的信息。这里我们接着问:模型实际上能到达这些方向的哪些组合?官方《机器学习数学(Mathematics for Machine Learning)》第 2.5 节介绍了线性组合和线性无关,它们是本课定义张成所需的术语。本文的预测示例、计算、代码、图示和练习均为原创。

模型输出位于一个可达集合中

假设数据集有 nn 个样本和 pp 个数值特征。将特征 jj 在全部 nn 个样本上的取值放入列向量 xj∈Rn\boldsymbol{x}_j\in\mathbb{R}^n。设计矩阵 X∈Rn×pX\in\mathbb{R}^{n\times p} 将这些列堆叠起来。对于权重向量 w=(w1,…,wp)T∈Rp\boldsymbol{w}=(w_1,\ldots,w_p)^\mathsf{T}\in\mathbb{R}^p,不含截距项的线性模型预测为

y^=Xw=w1x1+⋯+wpxp.\hat{\boldsymbol{y}}=X\boldsymbol{w} =w_1\boldsymbol{x}_1+\cdots+w_p\boldsymbol{x}_p.

矩阵与向量相乘在概念上做了一件重要的事:它用模型权重混合特征列。系数可以变化,但可用的方向只有 XX 中已有的列。

最后一句是在这组有限数据上的容量结论:张成恰好包含不受约束的线性权重能够产生的预测向量。它并不是说模型能够对未来输入实现任意映射;那取决于特征规则、模型参数以及它将看到的输入。

求出可达的预测

考虑三个样本和两个特征:

X=[100111],x1=[101],x2=[011].X=\begin{bmatrix} 1&0\\ 0&1\\ 1&1 \end{bmatrix}, \qquad \boldsymbol{x}_1=\begin{bmatrix}1\\0\\1\end{bmatrix}, \quad \boldsymbol{x}_2=\begin{bmatrix}0\\1\\1\end{bmatrix}.

每组权重 (a,b)(a,b) 都会产生

ax1+bx2=a[101]+b[011]=[aba+b].a\boldsymbol{x}_1+b\boldsymbol{x}_2 =a\begin{bmatrix}1\\0\\1\end{bmatrix} +b\begin{bmatrix}0\\1\\1\end{bmatrix} =\begin{bmatrix}a\\b\\a+b\end{bmatrix}.

因此,每个可达预测向量都具有 [a,b,a+b]T[a,b,a+b]^\mathsf{T} 的形式。它的第三个坐标必须等于前两个坐标之和。这是 R3\mathbb{R}^3 中经过原点的一个平面:记录了三个输出坐标,但两个特征方向只能填满这个平面。

问题出在特征的限制,而不是没有足够努力地寻找正确系数。模型优化器可以选择不同权重,但若不改变特征方向或模型形式,就无法离开列空间。

预测空间

特征列限定了所有可能的预测

有两条特征列时,模型能够到达它们张成的平面。目标向量位于平面之外,因为它的第三个值不等于前两个值之和。

可达的预测平面与不可达的目标一个经过原点的平面标注为 y 三等于 y 一加 y 二。两支实线箭头表示位于平面上的特征列 x 一和 x 二。一支虚线箭头标出坐标为一、二、四且位于平面外的目标 y。Col(X):y₃ = y₁ + y₂x₁ = [1, 0, 1]x₂ = [0, 1, 1]目标 y = [1, 2, 4]零点
该平面表示所有向量 [a, b, a + b]。图中的有限平面片只是观察窗口;张成会沿平面内的每个方向无限延伸。虚线目标不满足坐标规则。
特征组合及其是否属于列空间
向量坐标张成检验
特征列 x₁[1, 0, 1]属于:第三项 = 第一项 + 第二项
特征列 x₂[0, 1, 1]属于:第三项 = 第一项 + 第二项
w = [2, −1] 的预测[2, −1, 1]属于:第三项 = 第一项 + 第二项
拟议目标[1, 2, 4]不属于:4 ≠ 1 + 2

图示从模型的角度呈现了相同的代数关系。实线特征箭头生成这个平面,它们的任意加权组合仍在平面内。虚线目标则位于平面之外。图示让位置关系更直观;方程 y3=y1+y2y_3=y_1+y_2 才是精确检验。

用一段简短的 NumPy 计算检验限制

模型计算直接遵循定义。NumPy 的 matmul 实现了矩阵与向量相乘,因此用 XX 乘以权重就能得到预测向量:

import numpy as np

X = np.array([[1, 0], [0, 1], [1, 1]])
weights = np.array([2, -1])
prediction = X @ weights
target = np.array([1, 2, 4])

print(prediction)  # [ 2 -1  1]
print(prediction[2] == prediction[0] + prediction[1])  # True
print(target[2] == target[0] + target[1])  # False

第一行确认了算出的预测。第二行检验此列空间中所有向量都必须满足的规则。第三行用相同的精确关系排除了拟议目标。这是一项结构检验,并不依赖权重如何训练。

这个视角也解释了线性回归中的一个常见约束。scikit-learn 的线性模型指南将预测定义为特征的加权和,并说明可以选择加入截距项。拟合过程可能尝试减少误差,但对于本课中的样本,不含截距项的模型仍然只能产生 Col⁡(X)\operatorname{Col}(X) 中的预测。如果所有特征列都冗余,新增特征时张成可能不会扩大;如果新列指向真正不同的方向,它就能扩大可达集合。

张成描述的是可用方向

张成包含每个实数系数值,包括零和负权重。这很重要:若只考虑正系数组合,描述的集合会更小,通常是一个锥,而不是完整的张成。标准的无约束线性回归允许正系数和负系数。约束可以限制允许的系数,而正则化会改变训练目标偏好的权重;两者都不会改变特征矩阵本身所定义的列空间。

仅凭特征列的数量,无法判断它们提供了多少个独立方向。两列可能沿同一条直线,此时它们的张成仍是一维的。下一步要判断新向量何时增加独立方向并扩大张成。这正是第 29 课:线性无关消除冗余探讨的问题。

一个实用的习惯是:模型反复错过某种模式时,先问它的特征是否能够表达所需输出,再责怪优化器。张成告诉你哪些预测向量甚至可能出现。

检查你是否理解

Question 1

用自己的话说,两个特征列的张成包含什么?

Show the step-by-step solution

张成包含这样的每个向量:将第一条特征列乘以任意实数,将第二条特征列乘以任意实数,再把结果相加。系数可以为零或负数,也可以为正数,因此这个集合包括两列所生成的全部方向,而不仅是它们之间的点。

Question 2

设 x₁ = [1, 0, 1]ᵀ,x₂ = [0, 1, 1]ᵀ。计算 3x₁ − 2x₂,并检查结果是否符合张成的坐标规则。

Show the step-by-step solution

先分别缩放向量:3x1=[3,0,3]T3\boldsymbol{x}_1=[3,0,3]^\mathsf{T},−2x2=[0,−2,−2]T-2\boldsymbol{x}_2=[0,-2,-2]^\mathsf{T}。将坐标相加得到 [3,−2,1]T[3,-2,1]^\mathsf{T}。它的第三项为 11,前两项之和为 3+(−2)=13+(-2)=1,因此符合规则并属于张成。

Question 3

对于列为 [1, 0, 1]ᵀ 和 [0, 1, 1]ᵀ 的矩阵,写出权重 [a, b]ᵀ 对应的一般预测向量。

Show the step-by-step solution

第一列乘以 aa 得到 [a,0,a]T[a,0,a]^\mathsf{T}。第二列乘以 bb 得到 [0,b,b]T[0,b,b]^\mathsf{T}。两者相加为 [a,b,a+b]T[a,b,a+b]^\mathsf{T}。因此,每个预测的第三个坐标都等于前两个坐标之和。

Question 4

这个双特征模型能产生 [2, 1, 4]ᵀ 吗?请给出决定性的检验。

Show the step-by-step solution

如果前两个坐标是 22 和 11,张成规则就要求第三个坐标为 2+1=32+1=3。拟议的第三个坐标是 44。由于 4≠34\ne3,无论如何选择两个权重,都无法产生这个向量。

Question 5

假设第三条特征列为 [0, 0, 1]ᵀ。给出一组权重,用全部三列产生 [1, 2, 4]ᵀ。

Show the step-by-step solution

对 [1,0,1]T[1,0,1]^\mathsf{T} 使用权重 11,对 [0,1,1]T[0,1,1]^\mathsf{T} 使用权重 22,对 [0,0,1]T[0,0,1]^\mathsf{T} 使用权重 11。前两条加权列相加为 [1,2,3]T[1,2,3]^\mathsf{T}。再加上第三列,就得到 [1,2,4]T[1,2,4]^\mathsf{T};因此,新特征恰好为这个目标补上了此前缺少的方向。

Question 6

列空间是否描述了训练后的模型对任意未来输入都能计算的每个函数?请说明这个结论的适用范围。

Show the step-by-step solution

不是。这里的列空间描述的是用于构造 XX 的固定样本行上的预测向量,前提是采用所述的不含截距项线性模型和不受约束的实数权重。新输入上的预测取决于它们的特征值。改变特征映射或加入非线性运算,也可能改变模型所表示的函数族。

Question 7

对于这三个样本行,如果增加截距列 [1, 1, 1]ᵀ,张成会怎样变化?为什么之后能到达 [1, 2, 4]ᵀ?

Show the step-by-step solution

截距列不是原来两列的线性组合:原来的张成要求第三项等于第一项与第二项之和,而 [1,1,1]T[1,1,1]^\mathsf{T} 不满足 1=1+11=1+1。新列在 R3\mathbb{R}^3 中增加了第三个独立方向,因此扩展后的列张成整个 R3\mathbb{R}^3。具体而言, [1,2,4]T=2x1+3x2−1[1,2,4]^\mathsf{T}=2\boldsymbol{x}_1+3\boldsymbol{x}_2-\boldsymbol{1}。

Question 8

一个模型有四条特征列,其中两条分别是前两条的精确副本。它一定因此获得四个独立的预测方向吗?请用张成解释。

Show the step-by-step solution

不会。重复已有列不会产生新方向。重复列的任意组合都可以并入其副本的系数,因此张成仍与原来两个方向的张成相同。列数统计的是可用的系数位置;张成则揭示这些位置合起来能到达哪些输出方向。

资料来源

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.matmul
  4. scikit-learn documentation: Linear Models