word2vec 是如何学习词关系的?

How does word2vec learn word relations?

算法的哪一部分专门使嵌入具有king - boy + girl = queen能力?他们只是无意中这样做的吗?

编辑:

以CBOW为例。我知道他们使用嵌入而不是单热向量来对单词进行编码,并使嵌入可训练,而不是我们在使用数据本身不可训练的单热向量时的做法。然后输出是目标词的单热向量。他们只是在某个时候对所有周围的词嵌入进行平均,然后再放置一些乐高积木层。所以最后他们惊讶地发现提到的属性,或者是否有训练程序或网络结构给出了属性?

的嵌入

该算法仅用于训练(优化)浅层 neural-network 模型,该模型擅长根据附近的其他词预测词。

这是唯一的内部训练目标——受制于神经网络对单词表示方式的限制(N floating-point 维度),或者结合模型的内部权重来呈现可解释的预测(前向传播规则) ).

关于单词 'should' 彼此之间的关系,没有其他 'coaching'。所有单词仍然只是 word2vec 的不透明标记。它甚至不考虑他们的字母:whole-token 只是 whole-vector 的查找键。 (不过,word2vec 变体 FastText 通过训练子词向量而有所不同——因此可以模糊地模拟人们对 word-roots/suffixes/etc 的相同直觉。)

附近单词的有趣 'neighborhoods',以及将 human-interpretable 方面与 high-dimensional 坐标 space 中的模糊方向对齐的相对方向,不在预测任务中.这些相对方向导致了您所问的令人惊讶的“类比算术”。

在内部,一遍又一遍地应用一个微小的内部训练循环:“推动这个 word-vector 稍微更好地预测这些相邻的词”。然后,用另一个词和其他邻居重复。一次又一次,数百万次,每次只查看数据的一小部分。

但是相互矛盾的更新相互抵消,而那些在源训练文本中代表可靠模式的更新相互加强。

从一个角度来看,它本质上是在尝试将一些庞大的词汇表——数万到数百万个独特的词——“压缩”成更小的N-dimensional表示——当你有足够的维度时,通常是 100-400 个维度训练数据。 dimensional-values 在预测邻居时变成 as-good-as-possible(但从来没有必要伟大)结果也展示了其他理想的定位。