标量(Scalar)

只有大小、没有方向的单个数值。与向量相对——向量有大小和方向,标量只是一个数。温度、长度、点积的结果都是标量。

标量(Scalar)

一句话理解

标量就是一个普通的数——只有大小,没有方向。

与向量的对比:

标量向量
信息量只有大小大小 + 方向
例子温度 25°C、距离 3km速度 60km/h 向北、位移 (3, 4)
数学表示单个数 aaa一组数 [a1,a2,,an][a_1, a_2, \ldots, a_n][a1,a2,,an]
维度0 维1 维或更高

在 AI 中的标量

在深度学习中,标量无处不在:

  • 损失值(Loss):模型预测与真实值的差距,是一个标量。整个训练过程就是让这个标量越来越小
  • 学习率(Learning Rate):控制参数更新步长的标量,如 0.001
  • 点积结果:两个向量做点积运算后得到一个标量,表示它们的相似程度
  • 注意力分数:Query 和 Key 做点积后的结果是标量,再经过 Softmax 变成注意力权重
  • Softmax 温度:Scaled Dot-Product Attention 中的 dk\sqrt{d_k}dk 就是一个标量缩放因子

标量运算与向量运算

标量可以与向量做乘法——标量乘法(缩放):

cv=c[v1,v2,,vn]=[cv1,cv2,,cvn]c \cdot \vec{v} = c \cdot [v_1, v_2, \ldots, v_n] = [c \cdot v_1, c \cdot v_2, \ldots, c \cdot v_n]cv=c[v1,v2,,vn]=[cv1,cv2,,cvn]

效果是把向量的每个分量同比放大或缩小,方向不变(负数时反向)。这就是 Transformer 中除以 dk\sqrt{d_k}dk 的本质——用一个标量缩放所有注意力分数。

编程视角

javascript
const scalar = 42;           // 标量:一个数
const vector = [1, 2, 3];    // 向量:一组数

// 标量 × 向量 = 缩放
const scaled = vector.map(v => scalar * v);
// [42, 84, 126]

在 JavaScript 中,number 就是标量,number[] 就是向量——你每天都在用。