标量(Scalar)
只有大小、没有方向的单个数值。与向量相对——向量有大小和方向,标量只是一个数。温度、长度、点积的结果都是标量。
标量(Scalar)
一句话理解
标量就是一个普通的数——只有大小,没有方向。
与向量的对比:
| 标量 | 向量 | |
|---|---|---|
| 信息量 | 只有大小 | 大小 + 方向 |
| 例子 | 温度 25°C、距离 3km | 速度 60km/h 向北、位移 (3, 4) |
| 数学表示 | 单个数 a | 一组数 [a1,a2,…,an] |
| 维度 | 0 维 | 1 维或更高 |
在 AI 中的标量
在深度学习中,标量无处不在:
- 损失值(Loss):模型预测与真实值的差距,是一个标量。整个训练过程就是让这个标量越来越小
- 学习率(Learning Rate):控制参数更新步长的标量,如 0.001
- 点积结果:两个向量做点积运算后得到一个标量,表示它们的相似程度
- 注意力分数:Query 和 Key 做点积后的结果是标量,再经过 Softmax 变成注意力权重
- Softmax 温度:Scaled Dot-Product Attention 中的 dk 就是一个标量缩放因子
标量运算与向量运算
标量可以与向量做乘法——标量乘法(缩放):
c⋅v=c⋅[v1,v2,…,vn]=[c⋅v1,c⋅v2,…,c⋅vn]效果是把向量的每个分量同比放大或缩小,方向不变(负数时反向)。这就是 Transformer 中除以 dk 的本质——用一个标量缩放所有注意力分数。
编程视角
javascript
const scalar = 42; // 标量:一个数
const vector = [1, 2, 3]; // 向量:一组数
// 标量 × 向量 = 缩放
const scaled = vector.map(v => scalar * v);
// [42, 84, 126]
在 JavaScript 中,number 就是标量,number[] 就是向量——你每天都在用。