为啥 word2Vec 使用余弦相似度?

Posted

技术标签:

【中文标题】为啥 word2Vec 使用余弦相似度?【英文标题】:Why does word2Vec use cosine similarity?为什么 word2Vec 使用余弦相似度? 【发布时间】:2016-11-20 06:34:42 【问题描述】:

我一直在阅读有关 Word2Vec 的论文(例如 this one),并且我认为我理解训练向量以最大化在相同上下文中找到其他单词的概率。

但是,我不明白为什么余弦是单词相似度的正确度量。余弦相似度表示两个向量指向相同的方向,但它们的大小可能不同。

例如,余弦相似度比较文档的词袋是有意义的。两个文档的长度可能不同,但单词的分布相似。

为什么不说欧几里得距离?

谁能解释为什么余弦相似度适用于 word2Vec?

【问题讨论】:

非常感谢亚伦和马丁。我想我对“相似的词最终彼此靠近”的说法感到困惑。我可以看到为什么反向传播相似的值会产生相似的上下文,因此出现在相似上下文中的单词应该产生相似的值。但是,我不明白为什么指向相同方向的值应该生成相同的上下文。但根据 Aaron 的链接,我猜他们会这样做。也许同样适用于所有维度的恒定比例会以某种方式抵消。 【参考方案1】:

这两个距离指标可能具有很强的相关性,因此您使用哪一个可能并不重要。正如您所指出的,余弦距离意味着我们根本不必担心向量的长度。

这篇论文指出,词的出现频率和word2vec向量的长度有关系。 http://arxiv.org/pdf/1508.02297v1.pdf

【讨论】:

【参考方案2】:

两个n维向量A和B的余弦相似度定义为:

这只是 A 和 B 之间角度的余弦。

而欧几里得距离定义为

现在考虑向量空间中两个随机元素的距离。对于余弦距离,最大距离为1,因为cos的范围是[-1, 1]。

但是,对于欧几里得距离,这可以是任何非负值。

当维度 n 变大时,两个随机选择的点的余弦距离越来越接近 90°,而 R^n 的单位立方体中的点的欧几里德距离大约为 0.41 (n)^0.5 (source)

TL;DR

余弦距离更适合高维空间中的向量,因为存在维度诅咒。 (不过我不是很确定)

【讨论】:

对不起,我认为这不对。维度诅咒同样适用于余弦距离和欧几里得距离。 @Aaron 你能详细说明你为什么这么认为吗? (当我有时间的时候,我会检查 n 维超立方体中点的平均余弦距离随着 n 的上升......如果它变为 0,那么你可能是对的)

以上是关于为啥 word2Vec 使用余弦相似度?的主要内容,如果未能解决你的问题,请参考以下文章

Word2Vec 计算词语之间的余弦相似度

余弦相似度的应用

余弦相似度计算

20-余弦相似度及其R实现

余弦相似度

余弦计算相似度理解以及计算