Normalization 在使用余弦相似性之前,是否有任何理由(不)L2规范化向量?

Normalization 在使用余弦相似性之前,是否有任何理由(不)L2规范化向量?,normalization,cosine-similarity,text2vec,vector-space,Normalization,Cosine Similarity,Text2vec,Vector Space,我正在阅读Levy等人的论文,在讨论他们的超参数时,他们说: 向量标准化(nrm)如第2节所述,所有向量(即W的行)均标准化为单位长度(L2标准化),使点积运算等效于余弦相似性 然后我回忆起,Rtext2vec包中的sim2向量相似性函数的默认值是首先使用L2范数向量: sim2(x, y = NULL, method = c("cosine", "jaccard"), norm = c("l2", "none")) 所以我想知道,规范化和余弦(就text2vec和一般而言)的动机是什么。我试

我正在阅读Levy等人的论文,在讨论他们的超参数时,他们说:

向量标准化(nrm)如第2节所述,所有向量(即W的行)均标准化为单位长度(L2标准化),使点积运算等效于余弦相似性

然后我回忆起,R
text2vec
包中的
sim2
向量相似性函数的默认值是首先使用L2范数向量:

sim2(x, y = NULL, method = c("cosine", "jaccard"), norm = c("l2", "none"))
所以我想知道,规范化和余弦(就text2vec和一般而言)的动机是什么。我试着阅读L2范数,但大多数情况下,在使用欧几里德距离之前,它是在标准化的背景下出现的。在词向量空间/嵌入的余弦相似性的情况下,我找不到(令人惊讶的)任何关于L2范数的建议。我没有足够的数学技能来计算分析差异


因此,这里有一个问题,是指从文本数据中学习到的词向量空间(或者只是可能通过tfidf、ppmi等加权的共现矩阵;或者像手套这样的嵌入),以及计算词的相似性(目标当然是使用向量空间+度量,最好地反映真实世界的词的相似性)
简单地说,有没有理由(不)在计算向量/单词之间的余弦相似性之前,在单词特征矩阵/术语共现矩阵上使用L2范数?

text2vec
自动处理所有事情-它将使行具有单位L2范数,然后调用点积来计算余弦相似性

但是,如果矩阵已经有具有单位L2范数的行,则用户可以指定
norm=“none”
,并且
sim2
将跳过第一个规范化步骤(节省一些计算)


我理解混淆-可能我需要删除
norm
选项(规范化矩阵不需要太多时间)。

如果您想要获得余弦相似性,您不需要规范化到L2 norm,然后计算余弦相似性。余弦相似性对向量进行归一化,然后取两个向量的点积


如果你在计算欧几里德距离,那么如果距离或向量长度不是一个重要的区别因素,你需要标准化。如果向量长度是一个区别因素,那么不要规范化和计算欧几里德距离

谢谢。让我直截了当地说-所以在
sim2
中,如果方法是
cosine
,但
norm=“none”
(并且事先没有进行标准化),那么
sim2
实际上只做点积,而不是cosine相似度本身?