标量与向量
层级:A|必学
1. 先用“类型”理解数学对象
后端工程师读公式时,最有效的第一步是像读函数签名一样判断类型。标量是一个数,向量是一列有顺序的数。混淆两者会直接导致矩阵乘法、梯度和损失函数的形状错误。
2. 标量
标量是单个数,常用普通小写字母表示:
x,y,b,λ∈R.
在机器学习中,学习率 η、正则化强度 λ、偏置 b、损失值 L 和单个概率 p 都是标量。标量可以相加、相乘和比较大小。
标量不一定都是连续实数。样本数 n∈N,二分类标签可能 y∈{0,1},但线性代数运算通常把数看作来自 R。
3. 向量
d 维实列向量写作
x=x1x2⋮xd∈Rd.
- xj 是第 j 个分量,是标量;
- d 是向量维度或分量个数;
- 分量有固定顺序;
- Rd 是所有 d 维实向量组成的空间。
例如一个样本有年龄、收入和历史购买次数三个特征,可以表示为
x=(32,180000,7)T∈R3.
这里转置符号 T 把横写的行变成列。正文默认向量为列向量,即使为了节省版面横着写,也会附上 T。
4. 向量的三种直觉
数据容器
向量是一组有顺序、可共同运算的数。一个样本的特征、一个模型的参数、一个多分类概率输出都可放入向量。
空间中的点
x=(x1,x2) 可看成平面中的位置;d 维向量是 d 维空间的点。
有方向和长度的箭头
向量也可表示从原点指向该点的箭头。方向体现各分量比例,长度由范数给出。这种直觉对梯度、投影和 SVM 很重要。
三种理解并不冲突。上下文决定最有帮助的解释。
5. 行向量与列向量
列向量形状是 d×1:
x=[x1x2].
行向量形状是 1×d:
xT=[x1x2].
它们包含相同分量,但线性代数类型不同:
xTx∈R,xxT∈Rd×d.
前者是内积,得到一个数;后者是外积,得到矩阵。不能只看元素数量判断对象相同。
6. 特殊向量
- 零向量 0=(0,…,0)T;
- 全一向量 1=(1,…,1)T;
- 标准基向量 ej:第 j 个分量为 1,其余为 0;
- 单位向量:长度为 1 的向量,方向任意;
- one-hot 向量:只有一个分量为 1,常用于类别编码。
例如三分类标签“类别 2”可以编码为 (0,1,0)T。它与数值 2 的区别是:one-hot 不人为引入类别间的大小与距离顺序。
7. 向量相等与逐元素比较
两个同维向量相等,当且仅当每个对应分量都相等:
x=y⟺xj=yj∀j.
普通线性代数没有统一的“x>y”几何大小。某些程序库把它解释为逐元素比较,某些优化文献也约定 x≥y 表示每个分量均满足,但必须明确说明。
8. 样本向量与参数向量
线性模型
y^=wTx+b
中:
- x∈Rd 是样本特征;
- w∈Rd 是参数;
- 每个 wj 对应一个特征 xj;
- 内积得到标量分数;
- b 是标量偏置。
维度必须匹配。若输入增加一个特征,参数向量也要增加一个对应权重。
9. 向量与数组的区别
程序中的一维数组可能没有“行/列”方向。例如 NumPy 形状 (d,) 的数组既不是严格的 (d,1),也不是 (1,d),广播和矩阵乘法会根据规则解释。学习推导时建议先坚持二维形状,再有意识地使用库的简化。
一个稳健习惯是为每个公式写形状注释:
1×dwTd×1x=1×1s.
相邻的内部维度 d 一致,输出保留外部维度 1×1。
10. 易错点
- 向量分量是有顺序的,(1,2) 与 (2,1) 通常不同。
- 维度 d 不是样本数 n。
- 行向量与列向量在矩阵乘法中不同。
- 类别编号组成的“向量”不一定具有有意义的数值几何。
- 零向量没有方向,不能归一化为单位向量。
常见问答
Q1:一个标量能看成一维向量吗?
有时为了统一形式可以,但严格地说标量、1×1 矩阵和一维向量是不同类型。多数推导会在不会混淆时自然等同。
Q2:为什么教材有时把样本写成行向量?
这是数据矩阵约定不同。若每行一个样本,单个样本在表中是行;做线性代数推导时又常把它抽出写成列。只要整体形状一致,两种约定都可用。
Q3:embedding 是向量吗?
是。它把离散对象映射为实向量,使几何距离、内积和线性运算能够表达相似性与组合关系。
练习
- 写出 x=(2,−1,4)T 的维度和第二个分量。
- xTx 与 xxT 分别是什么形状?
- 给四分类中的类别 3 写一个 one-hot 向量。
- 模型有 20 个输入特征,w 与 x 应是什么形状?
- 解释为什么 (32,180000,7) 直接使用 Euclidean 距离可能不合理。
答案与提示
- 3 维;x2=−1。
- 标量(1×1)与 3×3 矩阵。
- 若类别从 1 编号:(0,0,1,0)T。
- 都可取 20×1 列向量。
- 收入的数量级远大于另外两个特征,会支配距离。