NLP中词向量计算相似度的点积

数据挖掘 nlp 词嵌入 word2vec 相似 软最大
2022-03-06 21:13:25

在 NLP 中,在计算单词到向量时,我们尝试最大化 log(P(o|c))。其中 P(o|c) 是 o 是外部词的概率,假设 c 是中心词。

U o是外部词的词向量
V c是中心词的词向量
T 是词汇表中的词数

上面的等式是 softmax。并且U o和V c的点积作为分数,应该越高越好。如果单词 o 和 c 更接近,那么它们的点积应该很高,但点积并非如此。由于以下原因:
考虑向量
A=[1, 1, 1], B=[2, 2, 2], C=[100, 100, 100]
AB = 1 * 2 + 1 * 2 + 1 * 2 = 6
交流 = 1 * 100 + 1 * 100 + 1 * 100 = 300

与 A 和 C 相比,向量 A 和 B 更接近,但是点积 AC > AB
所以点积作为距离而不是相似性度量。那为什么在softmax中使用它。
请帮助我更好地理解

3个回答

参考指向word2vec 库源代码)。

它在训练期间不使用归一化向量(尽管它确实使用余弦相似度度量来对已训练的向量进行语义比较)。

在训练过程中只使用点积而不是余弦相似度的原因可能是:

  1. 点积是余弦相似度的变体
  2. 长度捕获一些语义信息,因为长度可以与给定上下文中的出现频率相关,因此使用点积也只能捕获这些信息(尽管仍然使用严格的相似性测试余弦度量)
  3. 当向量被归一化时,这两个度量重合
  4. 效率(做更少的计算)

参考:

  1. 为什么 word2vec 目标使用内积(在 softmax 内部),但它的最近邻阶段使用余弦?这似乎是一个不匹配。
  2. 我应该在使用 word2vec 的词向量之前对其进行规范化吗?
  3. 使用单词的分布式表示来测量单词的重要性
  4. word2vec 参数学习解释

点积是一个向量的投影大小vw,这不是一个很好的相似性度量,但是:

vw=vwCos(θ)

存在θ两个向量之间的角度。
和:

vw=i=1nviwi

存在:v=vv
通过非常简单的数学,我们可以得到:

vvww=Cos(θ)
作为

1Cos(θ)1

如果向量除以它们的范数(归一化),我们可以说“点刺越高,越相似”

矢量 Uo 和 Vc 在幅度上或多或少相似。而且幅度非常小。由向量长度归一化的点积是余弦相似度。