在模型训练过程中,在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础。

在机器学习问题中,通常将特征表示为向量的形式,所以在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是$[-1,1]$,相同的两个向量之间的相似度为1.如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为$[0,2]$,相同的两个向量余弦距离为0。

为何在一些场景中使用余弦相似度而不是欧式距离?

对于两个向量$A$和$B$,其余弦相似度定义为$cos(A,B) = \frac{A·B}{||A||_2||B||_2}$,即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是$[-1,1]$。当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。此外,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同时1,正交时为0,相反时为-1”的性质,而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。

在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧式距离与余弦距离有着单调的关系,即:

$$||A - B||_2 =\sqrt{2(1-cos(A,B))}$$

其中$||A-B||_2$表示欧氏距离,$cos(A,B)$表示余弦相似度,$1-cos(A,B)$表示余弦距离。在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧式距离的结果是相同的。

总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为$(0,1)$,用户B为$(1,0)$,此时二者的余弦距离很大,而欧式距离很小;分析两个用户对于不同食品的偏好,更关注相对差异,显然应当使用余弦距离。而分析用户活跃度,以登陆次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离会认为$(1,10)、(10,100)$两个用户距离很近,但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧式距离。

特定的度量方法适用于什么样的问题,需要在学习和研究中多总结多思考。

余弦距离是否是一个严格定义的距离?

首先距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性、对称性、三角不等式)成立,则该实数可称为这对元素之间的距离。

余弦距离满足正定性和对称性,但是不满足三角不等式,因此它并不是严格定义的距离。具体来说,对于向量$A$和$B$,三条距离公理的证明过程如下。

·正定性

根据余弦距离的定义,有

$$dist(A,B)=1-cosθ=\frac{||A||_2||B||_2-AB}{||A||_2||B||_2}$$

考虑到$||A||_2||B||_2-AB≥0$,因此有$dist(A,B)≥0$恒成立。特别地,有

$$dist(A,B)=0 \Longleftrightarrow ||A||_2||B||_2=AB \Longleftrightarrow A=B$$

因此余弦距离满足正定性。

·对称性

根据余弦距离的定义,有

$$dist(A,B)=\frac{||A||_2||B||_2-AB}{||A||_2||B||_2}=\frac{||B||_2||A||_2-AB}{||B||_2||A||_2}=dist(B,A)$$

因此余弦距离满足对称性。

·三角不等式

该性质并不成立,下面给出反例。给定$A=(1,0)$,$B=(1,1)$,$C=(0,1)$,则有

$$dist(A,B)=1-\frac{\sqrt{2}}{2}$$

$$dist(B,C)=1-\frac{\sqrt{2}}{2}$$

$$dist(A,C)=1$$

因此有

$$dist(A,B)+dist(B,C)=2-\sqrt{2}\lt1=dist(A,C)$$

也可思考余弦距离和欧式距离的关系,根据前文知道,单位圆上欧氏距离和余弦距离满足

$$||A-B||=\sqrt{2(1-cos(A,B))}=\sqrt{2dist(A,B)}$$

即有如下关系

$$dist(A,B)=\frac{1}{2}||A-B||^2$$

显然在单位圆上,余弦距离和欧式距离的范围都是$[0,2]$。已知欧氏距离为合法距离,而余弦距离与欧氏距离有二次关系,自然不满足三角不等式。具体来说,可以假设$A$与$B$、$B$与$C$非常近,其欧氏距离为极小量$u$,此时$A$、$B$、$C$虽然在圆弧上,但近似在一条直线上,所以$A$与$C$的欧氏距离接近于$2u$。因此$A$与$B$、$B$与$C$的余弦距离为$\frac{u^2}{2}$,$A$与$C$的余弦距离接近于$2u^2$,大于$A$与$B$、$B$与$C$的余弦距离之和。

在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距离,还有KL距离(Kullback-Leibler Divergence),也叫作相对熵,它常用于计算两个分布之间的差异,但不满足对称性和三角不等式。