机器学习数学基础 120 章

标量与向量

层级:A|必学

1. 先用“类型”理解数学对象

后端工程师读公式时,最有效的第一步是像读函数签名一样判断类型。标量是一个数,向量是一列有顺序的数。混淆两者会直接导致矩阵乘法、梯度和损失函数的形状错误。

2. 标量

标量是单个数,常用普通小写字母表示:

x,y,b,λR.x,y,b,\lambda\in\mathbb R.

在机器学习中,学习率 η\eta、正则化强度 λ\lambda、偏置 bb、损失值 LL 和单个概率 pp 都是标量。标量可以相加、相乘和比较大小。

标量不一定都是连续实数。样本数 nNn\in\mathbb N,二分类标签可能 y{0,1}y\in\{0,1\},但线性代数运算通常把数看作来自 R\mathbb R

3. 向量

dd 维实列向量写作

x=[x1x2xd]Rd.\boldsymbol x= \begin{bmatrix} x_1\\x_2\\\vdots\\x_d \end{bmatrix} \in\mathbb R^d.
  • xjx_j 是第 jj 个分量,是标量;
  • dd 是向量维度或分量个数;
  • 分量有固定顺序;
  • Rd\mathbb R^d 是所有 dd 维实向量组成的空间。

例如一个样本有年龄、收入和历史购买次数三个特征,可以表示为

x=(32,180000,7)TR3.\boldsymbol x=(32,180000,7)^{\mathsf T}\in\mathbb R^3.

这里转置符号 T\mathsf T 把横写的行变成列。正文默认向量为列向量,即使为了节省版面横着写,也会附上 T^{\mathsf T}

4. 向量的三种直觉

数据容器

向量是一组有顺序、可共同运算的数。一个样本的特征、一个模型的参数、一个多分类概率输出都可放入向量。

空间中的点

x=(x1,x2)\boldsymbol x=(x_1,x_2) 可看成平面中的位置;dd 维向量是 dd 维空间的点。

有方向和长度的箭头

向量也可表示从原点指向该点的箭头。方向体现各分量比例,长度由范数给出。这种直觉对梯度、投影和 SVM 很重要。

三种理解并不冲突。上下文决定最有帮助的解释。

5. 行向量与列向量

列向量形状是 d×1d\times1

x=[x1x2].\boldsymbol x= \begin{bmatrix}x_1\\x_2\end{bmatrix}.

行向量形状是 1×d1\times d

xT=[x1x2].\boldsymbol x^{\mathsf T}= \begin{bmatrix}x_1&x_2\end{bmatrix}.

它们包含相同分量,但线性代数类型不同:

xTxR,xxTRd×d.\boldsymbol x^{\mathsf T}\boldsymbol x\in\mathbb R, \qquad \boldsymbol x\boldsymbol x^{\mathsf T}\in\mathbb R^{d\times d}.

前者是内积,得到一个数;后者是外积,得到矩阵。不能只看元素数量判断对象相同。

6. 特殊向量

  • 零向量 0=(0,,0)T\boldsymbol0=(0,\ldots,0)^{\mathsf T}
  • 全一向量 1=(1,,1)T\boldsymbol1=(1,\ldots,1)^{\mathsf T}
  • 标准基向量 ej\boldsymbol e_j:第 jj 个分量为 1,其余为 0;
  • 单位向量:长度为 1 的向量,方向任意;
  • one-hot 向量:只有一个分量为 1,常用于类别编码。

例如三分类标签“类别 2”可以编码为 (0,1,0)T(0,1,0)^{\mathsf T}。它与数值 2 的区别是:one-hot 不人为引入类别间的大小与距离顺序。

7. 向量相等与逐元素比较

两个同维向量相等,当且仅当每个对应分量都相等:

x=y    xj=yjj.\boldsymbol x=\boldsymbol y \iff x_j=y_j\quad\forall j.

普通线性代数没有统一的“x>y\boldsymbol x>\boldsymbol y”几何大小。某些程序库把它解释为逐元素比较,某些优化文献也约定 xy\boldsymbol x\ge\boldsymbol y 表示每个分量均满足,但必须明确说明。

8. 样本向量与参数向量

线性模型

y^=wTx+b\hat y=\boldsymbol w^{\mathsf T}\boldsymbol x+b

中:

  • xRd\boldsymbol x\in\mathbb R^d 是样本特征;
  • wRd\boldsymbol w\in\mathbb R^d 是参数;
  • 每个 wjw_j 对应一个特征 xjx_j
  • 内积得到标量分数;
  • bb 是标量偏置。

维度必须匹配。若输入增加一个特征,参数向量也要增加一个对应权重。

9. 向量与数组的区别

程序中的一维数组可能没有“行/列”方向。例如 NumPy 形状 (d,) 的数组既不是严格的 (d,1),也不是 (1,d),广播和矩阵乘法会根据规则解释。学习推导时建议先坚持二维形状,再有意识地使用库的简化。

一个稳健习惯是为每个公式写形状注释:

wT1×dxd×1=s1×1.\underbrace{\boldsymbol w^{\mathsf T}}_{1\times d} \underbrace{\boldsymbol x}_{d\times1} =\underbrace{s}_{1\times1}.

相邻的内部维度 dd 一致,输出保留外部维度 1×11\times1

10. 易错点

  1. 向量分量是有顺序的,(1,2)(1,2)(2,1)(2,1) 通常不同。
  2. 维度 dd 不是样本数 nn
  3. 行向量与列向量在矩阵乘法中不同。
  4. 类别编号组成的“向量”不一定具有有意义的数值几何。
  5. 零向量没有方向,不能归一化为单位向量。

常见问答

Q1:一个标量能看成一维向量吗?

有时为了统一形式可以,但严格地说标量、1×11\times1 矩阵和一维向量是不同类型。多数推导会在不会混淆时自然等同。

Q2:为什么教材有时把样本写成行向量?

这是数据矩阵约定不同。若每行一个样本,单个样本在表中是行;做线性代数推导时又常把它抽出写成列。只要整体形状一致,两种约定都可用。

Q3:embedding 是向量吗?

是。它把离散对象映射为实向量,使几何距离、内积和线性运算能够表达相似性与组合关系。

练习

  1. 写出 x=(2,1,4)T\boldsymbol x=(2,-1,4)^{\mathsf T} 的维度和第二个分量。
  2. xTx\boldsymbol x^{\mathsf T}\boldsymbol xxxT\boldsymbol x\boldsymbol x^{\mathsf T} 分别是什么形状?
  3. 给四分类中的类别 3 写一个 one-hot 向量。
  4. 模型有 20 个输入特征,w\boldsymbol wx\boldsymbol x 应是什么形状?
  5. 解释为什么 (32,180000,7)(32,180000,7) 直接使用 Euclidean 距离可能不合理。

答案与提示

  1. 3 维;x2=1x_2=-1
  2. 标量(1×11\times1)与 3×33\times3 矩阵。
  3. 若类别从 1 编号:(0,0,1,0)T(0,0,1,0)^{\mathsf T}
  4. 都可取 20×120\times1 列向量。
  5. 收入的数量级远大于另外两个特征,会支配距离。