机器学习数学基础 120 章

内积、夹角与余弦相似度

层级:A|必学

1. 一个运算连接代数与几何

内积把两个同维向量变成一个标量。代数上它是对应分量乘积之和;几何上它同时编码长度与夹角;机器学习中它是线性打分、相似度、投影、核函数和注意力机制的基本运算。

2. Euclidean 内积

x,yRd\boldsymbol x,\boldsymbol y\in\mathbb R^d

x,y=xTy=j=1dxjyj.\langle\boldsymbol x,\boldsymbol y\rangle =\boldsymbol x^{\mathsf T}\boldsymbol y =\sum_{j=1}^{d}x_jy_j.

例如

(1,2,1)(3,0,4)=1×3+2×01×4=1.(1,2,-1)\cdot(3,0,4)=1\times3+2\times0-1\times4=-1.

输入是两个 dd 维向量,输出是标量。内积满足:

  1. 对称:x,y=y,x\langle x,y\rangle=\langle y,x\rangle
  2. 线性:ax+bz,y=ax,y+bz,y\langle ax+bz,y\rangle=a\langle x,y\rangle+b\langle z,y\rangle
  3. 正定:x,x0\langle x,x\rangle\ge0,且等于 0 当且仅当 x=0x=0

3. 内积与长度

向量的 Euclidean 长度为

x2=xTx.\|\boldsymbol x\|_2=\sqrt{\boldsymbol x^{\mathsf T}\boldsymbol x}.

因此自身内积是长度平方:

xTx=x22.\boldsymbol x^{\mathsf T}\boldsymbol x=\|\boldsymbol x\|_2^2.

平方长度常比长度更方便求导,并且排序相同,因此最小二乘直接使用平方误差。

4. 内积与夹角

非零向量夹角 θ[0,π]\theta\in[0,\pi] 满足

xTy=x2y2cosθ.\boldsymbol x^{\mathsf T}\boldsymbol y =\|\boldsymbol x\|_2\|\boldsymbol y\|_2\cos\theta.

所以:

  • 内积 >0>0:夹角小于 9090^\circ,方向总体相近;
  • 内积 =0=0:夹角为 9090^\circ,两向量正交;
  • 内积 <0<0:夹角大于 9090^\circ,方向总体相反。

零向量没有方向,因此与其他向量的夹角未定义,尽管它与任何向量的内积都是 0。

5. 余弦相似度

cosSim(x,y)=xTyx2y2.\operatorname{cosSim}(\boldsymbol x,\boldsymbol y) =\frac{\boldsymbol x^{\mathsf T}\boldsymbol y} {\|\boldsymbol x\|_2\|\boldsymbol y\|_2}.

它等于夹角余弦,范围为 [1,1][-1,1]。若数据分量非负,通常落在 [0,1][0,1]

余弦相似度忽略整体尺度。例如 (1,2)(1,2)(10,20)(10,20) 余弦相似度为 1,因为方向完全相同;Euclidean 距离却很大。文本词频、embedding 检索常更关心模式方向而非长度。

若先把向量 L2 归一化为单位向量,则余弦相似度就等于普通内积。

6. Cauchy–Schwarz 不等式

xTyx2y2.|\boldsymbol x^{\mathsf T}\boldsymbol y| \le\|\boldsymbol x\|_2\|\boldsymbol y\|_2.

它保证余弦相似度不会超出 [1,1][-1,1]。等号当且仅当两个向量线性相关,即一个是另一个的标量倍数。

一种直觉证明来自平方非负:对任意 tt

xty220.\|\boldsymbol x-t\boldsymbol y\|_2^2\ge0.

把它看成关于 tt 的二次式,要求判别式不为正,就能得到不等式。

7. 投影系数

x\boldsymbol x 投影到非零方向 u\boldsymbol u 上:

proju(x)=uTxuTuu.\operatorname{proj}_{\boldsymbol u}(\boldsymbol x) =\frac{\boldsymbol u^{\mathsf T}\boldsymbol x} {\boldsymbol u^{\mathsf T}\boldsymbol u}\boldsymbol u.

u\boldsymbol u 是单位向量,系数简化为 uTx\boldsymbol u^{\mathsf T}\boldsymbol x。内积在这里测量 x\boldsymbol x 沿方向 u\boldsymbol u 有多少分量。线性回归、PCA 和正交分解都依赖投影。

8. 线性分类器中的内积

f(x)=wTx+b.f(\boldsymbol x)=\boldsymbol w^{\mathsf T}\boldsymbol x+b.

wTx\boldsymbol w^{\mathsf T}\boldsymbol x 衡量样本在权重方向上的投影强度。w\boldsymbol w 同时是决策超平面的法向量。若不含偏置,f(x)=0f(x)=0 是所有与 ww 正交的向量集合。

特征缩放会改变内积。如果一个特征的数值范围极大,它的乘积项可能支配总分,所以标准化和权重正则化很重要。

9. Gram 矩阵

设列向量集合组成 V=[v1,,vk]\boldsymbol V=[\boldsymbol v_1,\ldots,\boldsymbol v_k],Gram 矩阵为

G=VTV,Gij=viTvj.\boldsymbol G=\boldsymbol V^{\mathsf T}\boldsymbol V, \qquad G_{ij}=\boldsymbol v_i^{\mathsf T}\boldsymbol v_j.

它保存所有向量两两内积。GG 对称且半正定。核方法不用显式写出高维特征,只计算类似的内积矩阵。

10. 更一般的内积

给定对称正定矩阵 M\boldsymbol M,可以定义

x,yM=xTMy.\langle\boldsymbol x,\boldsymbol y\rangle_{\boldsymbol M} =\boldsymbol x^{\mathsf T}\boldsymbol M\boldsymbol y.

它相当于重新缩放和旋转空间,产生不同的角度与距离。Mahalanobis 距离和度量学习使用这类结构。并非任何形如 xTAyx^TAy 的式子都构成合法内积;必须满足相应的对称与正定条件。

易错点

  1. 内积输出标量,外积输出矩阵。
  2. 内积为零只表示正交,不表示随机变量独立。
  3. 余弦相似度不考虑长度,可能忽略有用的强度信息。
  4. 零向量不能计算余弦相似度。
  5. 未归一化点积会随向量长度增大,不是纯方向相似度。

常见问答

Q1:点积越大是否一定越相似?

不一定。点积同时受方向和长度影响;两个长向量即使夹角不小也可能点积很大。是否合适取决于任务。

Q2:为什么 attention 要除以 d\sqrt d

若向量各分量近似独立且方差相当,点积方差随维度 dd 增长。除以 d\sqrt d 可控制尺度,避免 Softmax 过早饱和。

Q3:余弦距离一定是严格度量吗?

1cosSim1-\text{cosSim} 常被称为余弦距离,但通常不满足三角不等式,不是严格数学度量。角距离可在合适条件下形成度量。

练习

  1. 计算 (1,2)T(1,2)^T(3,1)T(3,-1)^T 的内积。
  2. 两个非零向量内积为负,夹角属于什么范围?
  3. (1,0)T(1,0)^T(1,1)T(1,1)^T 的余弦相似度。
  4. x=(3,4)Tx=(3,4)^T 投影到 u=(1,0)Tu=(1,0)^T
  5. 证明单位向量的内积等于其夹角余弦。
  6. 比较 (1,2)(1,2)(10,20)(10,20) 的余弦相似度和 Euclidean 距离。

答案与提示

  1. 11
  2. (90,180](90^\circ,180^\circ];严格负值排除 9090^\circ
  3. 1/21/\sqrt2
  4. (3,0)T(3,0)^T
  5. 将两向量范数 11 代入夹角公式。
  6. 余弦相似度为 1;距离为 959\sqrt5