推导余弦距离和欧式距离的关系

最近看到公式就头疼,深深感受到数学不好就意味着被降维打击。。

在Deep Learning里,因为操作的对象是高维向量,所以很多paper里的公式都喜欢用矩阵乘来表达公式,这样的优点是公式表达更简洁(一个矩阵乘同时包含了乘法和加法),缺点就是菜的人可能一时半会反应不过来,比如说我!

假设有两个 n n n 维向量 x , y x,y x,y x = ( x 1 , x 2 , . . . , x n ) , y = ( y 1 , y 2 , . . . , y n ) x=(x_1, x_2, ..., x _n), y=(y_1, y_2, ..., y _n) x=(x1,x2,...,xn),y=(y1,y2,...,yn)

欧式距离

欧式距离就是所谓的向量的二范式,论文里通常是这么写的 ℓ 2 ( x , y ) = ∥ x − y ∥ 2 \ell_{2}(\mathbf{x}, \mathbf{y})=\|\mathbf{x}-\mathbf{y}\|_{2} 2(x,y)=xy2,相比欧式距离,我感觉人们更喜欢用范式来表达(可能是因为范式更抽象?)

对范式不太清楚的同学可以看这篇文章 矩阵范数与向量范数公式的理解

欧式距离计算公式为:
d = ∑ i = 1 N ( x i − y i ) 2 d=\sqrt{\sum_{i=1}^{N}\left(x_{i}-y_{i}\right)^{2}} d=i=1N(xiyi)2

因为这个公式太常用了,论文里一般不会写,可能就直接写 ℓ 2 \ell_{2} 2

余弦距离

余弦相似度经常被用来衡量两个向量的相似度,计算公式为:
cos ⁡ ( x , y ) = x ⋅ y ∥ x ∥ 2 ∥ y ∥ 2 \cos (x, y)=\frac{x \cdot y}{\|x\|_{2} \|y\|_{2}} cos(x,y)=x2y2xy我们把 1 − cos ⁡ ( x , y ) 1- \cos (x, y) 1cos(x,y)称为余弦距离,取值范围[0,2]

另外,对于一些运算:
向量点积: x ⋅ y = x T y x \cdot y = x^T y xy=xTy
向量距离平方: ℓ 2 = ∥ x ∥ 2 2 = x T x \ell^{2}=\|x\|_2^2=x^Tx 2=x22=xTx

关系

欧氏距离是计算空间中两个点的直线距离,所以它受不同维度上数值尺度的影响比较大,而余弦距离则是计算两者在空间中方向上的差异,它包含的信息更多,而且更稳定,用哪一个看具体场景,不过我感觉用余弦的更多一些。

有时候,为了消除不同维度数值尺度差异的影响或者让收敛更加的平滑,我们会对向量进行单位化(长度归一化),也就是:
x = x ∣ ∣ x ∣ ∣ 2 x=\frac {x}{||x||_2} x=x2x 在这种情况下,欧式距离和余弦距离本质上是等价的,他们的单调性相同,证明如下

扫描二维码关注公众号,回复: 12907046 查看本文章

经过长度归一化后,有:
∥ x ∥ 2 = ∥ y ∥ 2 = 1 \|\mathbf{x}\|_{2}=\|\mathbf{y}\|_{2}=1 x2=y2=1于是:
d 2 = ∥ x − y ∥ 2 2 = ( x − y ) ⊤ ( x − y ) = x ⊤ x − 2 x ⊤ y + y ⊤ y = 2 − 2 x ⊤ y = 2 − 2 cos ⁡ ( x , y ) = 2 ( 1 − cos ⁡ ( x , y ) ) \begin{aligned} d^2=\|\mathbf{x}-\mathbf{y}\|_{2}^{2} &=(\mathbf{x}-\mathbf{y})^{\top}(\mathbf{x}-\mathbf{y}) \\ &=\mathbf{x}^{\top} \mathbf{x}-2 \mathbf{x}^{\top} \mathbf{y}+\mathbf{y}^{\top} \mathbf{y} \\ &=2-2 \mathbf{x}^{\top} \mathbf{y} \\ &=2-2 \cos(\mathbf{x}, \mathbf{y}) \\ &=2(1- \cos(\mathbf{x}, \mathbf{y})) \end{aligned} d2=xy22=(xy)(xy)=xx2xy+yy=22xy=22cos(x,y)=2(1cos(x,y))
可以看到,欧氏距离和余弦距离的单调性相同,这意味着在归一化的情况下,优化两者的效果是一样的,即等价。

如果对你有帮助,请点个赞:-D

猜你喜欢

转载自blog.csdn.net/MoreAction_/article/details/106335586