embedding 向量相似度公式 cosine similarity 的数学来源

把两个向量看成一个三角形的两条边,然后利用余弦定理计算第三条边的长度。


1. 先理解 $\vec a - \vec b $ 表示什么

假设:

\[\vec a=(a_x,a_y) \]

\[\vec b=(b_x,b_y) \]

把两个向量都放在坐标原点:

        A
       /
      /  a
     /
O ---------------- B
       b

其中:

  • (O) 是原点
  • (OA=\vec a)
  • (OB=\vec b)

现在考虑:

\[\vec a-\vec b \]

向量减法的几何意义:

\[\vec a-\vec b \]

表示:

从 (\vec b) 的终点指向 (\vec a) 的终点的向量。

即:

\[\vec a-\vec b=\overrightarrow{BA} \]

所以三个点:

\[O,A,B \]

形成一个三角形:

          A
         /|
        / |
     a /  | a-b
      /   |
     /θ   |
    O-----B
       b

三条边长度:

  • (OA=|\vec a|)
  • (OB=|\vec b|)
  • (BA=|\vec a-\vec b|)

2. 应用余弦定理

高中余弦定理:

对于三角形:

        C
       / \
      b   a
     /     \
    A---c---B

如果角 (C) 是边 (a,b) 的夹角,则:

\[c^2=a^2+b^2-2ab\cos C \]

意思是:

已知两条边和它们之间的夹角,可以计算第三条边。


现在把它应用到向量三角形:

所以,第三边平方:

\[|\vec a-\vec b|^2 \]

等于:

\[|\vec a|^2+|\vec b|^2 \]

减去:

\[2|\vec a||\vec b|\cos\theta \]

因此:

\[\boxed{ |\vec a-\vec b|^2 = |\vec a|^2+|\vec b|^2 -2|\vec a||\vec b|\cos\theta } \]

  1. 余弦定理给出:

\[|\vec a-\vec b|^2 = |\vec a|^2+|\vec b|^2 -2|\vec a||\vec b|\cos\theta \]

而坐标计算:

\[\vec a-\vec b=(a_x-b_x,a_y-b_y) \]

所以:

\[|\vec a-\vec b|^2 = (a_x-b_x)^2+(a_y-b_y)^2 \]

展开:

\[=a_x^2+b_x^2-2a_xb_x+a_y^2+b_y^2-2a_yb_y \]

整理:

\[=(a_x^2+a_y^2)+(b_x^2+b_y^2)-2(a_xb_x+a_yb_y) \]

注意:

\[|\vec a|^2=a_x^2+a_y^2 \]

\[|\vec b|^2=b_x^2+b_y^2 \]

所以:

\[|\vec a-\vec b|^2 = |\vec a|^2+|\vec b|^2 -2(a_xb_x+a_yb_y) \]

和余弦定理比较:

\[|\vec a|^2+|\vec b|^2 -2|\vec a||\vec b|\cos\theta \]

得到:

\[a_xb_x+a_yb_y = |\vec a||\vec b|\cos\theta \]

这就是点积公式。


所以整个推导链条是:

\[\boxed{ \text{余弦定理} \rightarrow |\vec a-\vec b|^2 \rightarrow \text{坐标展开} \rightarrow \vec a\cdot\vec b } \]

这也是现代机器学习中 embedding 向量相似度公式 cosine similarity 的数学来源。

posted @ 2026-08-27 14:23  立体风  阅读(13)  评论(0)    收藏  举报