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
}
\]
- 余弦定理给出:
\[|\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 的数学来源。

浙公网安备 33010602011771号