当前位置:   article > 正文

词向量语义匹配:欧氏距离和余弦相似度,选择哪一个?_词向量 识别词间相似度

词向量 识别词间相似度

最近做自然语言处理算法,需要根据词向量判断两个词汇的相似度。面临两个选择:欧氏距离和余弦相似度。选择哪一个好呢?

一、概念图解

为便于理解这个问题,假设词向量是二维的。我们分析一下这两种方法计算词向量相似度的方法的特点。假设两个词向量 X ( x 1 , x 2 ) X(x_1,x_2) X(x1,x2) Y ( y 1 , y 2 ) Y(y_1,y_2) Y(y1,y2)

欧氏距离】:
d = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 (1) \tag1 d = \sqrt{(x_1-y_1)^2+(x_2-y_2)^2} d=(x1y1)2+(x2y2)2 (1)

【余弦相似度】:
c o s = x 1 y 1 + x 2 y 2 x 1 2 + x 2 2 y 1 2 + y 2 2 (2) \tag2 cos = \frac{x_1y_1+x_2y_2}{\sqrt{x_1^2+x_2^2}\sqrt{y_1^2+y_2^2}} cos=x12+x22 y12+y22 x1y1+x2y2(2)

参见下图:

在这里插入图片描述

其中,欧氏距离是线段 XY 的长度,余弦相似度是单位元弧长X’Y’对应角度的余弦。显而易见,我们也很容易定义一个单元圆(单位球)投影距离,当然,这个投影距离本质上就是向量 X 和 Y 之间的夹角|XOY|。

【夹角距离】:
θ = a r c c o s ( x 1 y 1 + x 2 y 2 x 1 2 + x 2 2 y 1 2 + y 2 2 ) (3) \tag3 \theta=arccos(\frac{x_1y_1+x_2y_2}{\sqrt{x_1^2+x_2^2}\sqrt{y_1^2+y_2^2}}) θ=arccos(x12+x22 y12+y22 x1y1+x2y2)(3)

二、距离和夹角的冲突

向量欧氏距离 |XY| 和夹角 |XOY| 并不能保持单调函数关系,也就是说存在这种可能性,欧氏距离增加可能导致对应的单位元投影弧长减少。

产生这种原因的根本原因是,向量欧氏距离是二维空间的度量值,而向量夹角(或单位圆投影弧长)是一维空间的度量值。如果把直角坐标转换成极坐标,就很容易理解了。向量 X ( r x , α ) X(r_x,\alpha) X(rxα) 和 向量 Y ( r y , β ) Y(r_y,\beta) Y(ry,β)直接舍去极径,只保留极角,相当于把二维空间的图形投影到了一维空间(单位圆圆周)上。

于是我们看到,向量之间的距离|XY|,和向量的夹角距离|XOY| 之间必然存在冲突,导致向量之间距离增加时,其投影之间的距离反而会减少。然而,这是否意味着用向量夹角度量其距离不可行呢?

我们平时看到的照片,是三维空间到二维空间的投影。可以肯定的是,三维空间欧氏距离较近的点,在照片中距离也较近。反之,照片中距离较近的点,在三维空间中未必很近,距离较远的概率也是有的。

三、度量冲突的概率

既然欧氏距离和夹角距离冲突不可避免,那么冲突的概率有多大呢?

我不打算做严格的理论推导,画一幅图直观说明一下:
在这里插入图片描述

图中当向量 B 固定不动,如果 A 点移动到红色区域,则 A、B 的欧氏距离减少但角 AOB 的增加,如果 A 点移动到蓝色区域,则 A、B 的欧氏距离增加但角 AOB 的减少。当 A、B 距离很近时,红色区域面积很小。也就是说,如果欧氏距离较小,夹角距离通常也会很小。但是,夹角距离较小,欧氏距离还是可能较大的。

四、用子空间距离代替高维空间距离

另外必须说明的是,词向量空间维度较高。例如腾讯的词向量提供了两种规格,一种是100维的,另一种是200维的。在高维空间下,上述冲突空间的比例几乎可以忽略不计。

有一个不成熟的想法:对于向量 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),定义向量 D = ( d 1 , d 2 , . . . , d n ) = ( ∣ x 1 − y 1 ∣ , ∣ x 2 − y 2 ∣ , . . . , ∣ x n , y n ∣ ) D = (d_1,d_2,...,d_n)=(|x_1-y_1|,|x_2-y_2|,...,|x_n,y_n|) D=(d1,d2,...,dn)=(x1y1,x2y2,...,xn,yn),如果数据为平均分布,利用统计学知识可以证明:

lim ⁡ n → ∞ ( d 1 2 + d 2 2 + . . . + d n − 1 2 n − 1 − d 1 2 + d 2 2 + . . . + d n 2 n ) = 0 (4) \tag4 \lim_{n\to \infty }( \frac{d_1^2+d_2^2+...+d_{n-1}^2}{n-1} - \frac{d_1^2+d_2^2+...+d_{n}^2}{n}) =0 nlim(n1d12+d22+...+dn12nd12+d22+...+dn2)=0(4)

打个不严格的比方,如果知道了数学、语文、物理、化学的成绩,即使还不知道英语的成绩,我应该有能力判断出两名学生谁的总成绩更好了。当然,不同课程成绩之间存在一定相关性,而词向量不同维度之间的数据可能没有相关性。但是,如果每个维度的值域都限制在【-1,1】这个有限的区间,那么,如果两个向量前99维坐标计算出的距离很近,用100维坐标计算器距离,大概率也会很近。

换句话讲,当空间维度足够大时,可以用向量在子空间投影来“估算”向量在高维空间距离。这一点与统计学上用少量样本数据估计整体情况是一样的。这种说法不太严格,但可以算是对数据降维使用的一个理由。

用余弦相似度(或向量夹角)取代欧氏距离,仅仅降低了一个维度,对实际的影响更是微乎其微,因此可以放心使用。

五、余弦相似度,简化相似度计算过程

向量 $X=(x_1,x_2,…,x_n),Y=(y_1,y_2,…,y_n) $ 归一化后,使其满足:
x 1 2 + x 2 2 + . . . + x n 2 = 1 y 1 2 + y 2 2 + . . . + y n 2 = 1 (5) \tag5 x_1^2+x_2^2+...+x_n^2 = 1 \\ y_1^2+y_2^2+...+y_n^2 = 1 x12+x22+...+xn2=1y12+y22+...+yn2=1(5)

于是,余弦相似度可以简化为:
c o s = x 1 y 1 + x 2 y 2 + . . . + x n y n (6) \tag6 cos=x_1y_1+x_2y_2+...+x_ny_n cos=x1y1+x2y2+...+xnyn(6)

因此,如果打算采用余弦相似度,可事先把词向量做归一化处理,从而简化后续计算。

六、余弦相似度更方面用于词义匹配

余弦相似度值域为 [-1,1],等于1时为完全相似。这个特点在根据词向量计算文本相似度时更为有用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/446389
推荐阅读
相关标签
  

闽ICP备14008679号