glove 和 word2vec 之间的主要区别是什么?

What's the major difference between glove and word2vec?

word2vec 和 glove 有什么区别? 这两种方法都是训练词嵌入的吗?如果是,那么我们如何同时使用两者?

是的,它们都是训练词嵌入的方法。它们都提供相同的核心输出:每个词一个向量,向量以有用的方式排列。也就是说,向量的相对 distances/directions 大致对应于人类对整体单词相关性的想法,甚至是某些显着语义维度上的相关性。

Word2Vec 通过在训练语料库上反复迭代,对神经网络进行增量 'sparse' 训练。

GloVe 致力于拟合向量以对从语料库构建的巨大词 co-occurrence 矩阵建模。

使用相同的语料库,创建相同维度的 word-vectors,并对 meta-optimizations 投入相同的注意力,其结果 word-vectors 的质量将大致相似。 (当我看到有人自信地声称一个或另一个肯定更好时,他们经常将一种算法的一些 tweaked/best-case 使用与另一种算法的一些 rough/arbitrary 默认值进行比较。)

我对 Word2Vec 更熟悉,我的印象是 Word2Vec 的训练可以更好地扩展到更大的词汇表,并且具有更多可调整的设置,如果您有时间,可能允许调整您自己训练的 word-vectors更适合您的具体应用。 (例如,使用 small-versus-large window 参数可以对单词的 nearest-neighbors 是 'drop-in replacement words' 还是更普遍的 words-used-in-the-same-topics 有很大影响。不同的下游应用程序可能更喜欢 word-vectors 偏向一种或另一种方式。)

相反,一些 GLoVe 的支持者宣称它在不需要元参数优化的情况下表现相当好。

除非将它们相互比较,否则您可能不会同时使用两者,因为它们对 word-vectors 的任何下游应用程序起着相同的作用。

Word2vec 是一种预测模型:通过尝试预测给定上下文的目标词进行训练(CBOW method) or the context words from the target (skip-gram 方法)。它使用可训练的嵌入权重将单词映射到它们相应的嵌入,这些嵌入用于帮助模型进行预测。训练模型的损失函数与模型的预测有多好有关,因此随着模型训练做出更好的预测,它会产生更好的嵌入。

手套基于 word-context 矩阵的矩阵分解技术。它首先构建一个包含(单词 x 上下文)co-occurrence 信息的大型矩阵,即对于每个“单词”(行),您计算我们在某些“上下文”(列)中看到该单词的频率(矩阵值) ) 在大型语料库中。 “上下文”的数量会非常大,因为它本质上是组合大小的。因此,我们将这个矩阵分解为一个 lower-dimensional(单词 x 特征)矩阵,其中每一行现在为每个单词生成一个向量表示。通常,这是通过最小化“重建损失”来完成的。这种损失试图找到 lower-dimensional 表示,它可以解释 high-dimensional 数据中的大部分方差。

在GloVe之前,词表示的算法可以分为两大流,statistic-based(LDA)和learning-based(Word2Vec)。 LDA 在 co-occurrence 矩阵上通过奇异值分解 (SVD) 生成低维词向量,而 Word2Vec 使用 three-layer 神经网络来执行 center-context 词对分类任务,其中词向量是只是 by-product.

Word2Vec 最令人惊奇的一点是相似的词在向量中位于一起 space 并且对词向量的算术运算可以构成语义或句法关系,例如,“king”-“man”+“女人”->“女王”或“更好”-“好”+“坏”->“更差”。但是LDA无法在向量space.

中保持这种线性关系

GloVe 的动机是强制模型显式地学习基于 co-occurreence 矩阵的这种线性关系。从本质上讲,GloVe 是一个 log-bilinear 模型,加权 least-squares objective。很明显,它是一种基于统计矩阵使用机器学习的混合方法,这就是GloVe和Word2Vec的一般区别。

如果我们深入研究 GloVe 中方程的推导过程,我们会发现直觉中固有的差异。 GloVe 观察到 word-word co-occurrence 概率的比率有可能编码某种形式的意义。以 StanfordNLP (Global Vectors for Word Representation) 为例,考虑目标词 ice 和 steam 的 co-occurrence 概率以及词汇表中的各种探测词:

  • 正如人们所预料的那样,冰 co-occurs 与固体相比更频繁 与气体相关,而蒸汽 co-occurs 与气体相关的频率高于 它与固体有关。
  • 这两个词 co-occur 与它们共享的 属性 水频繁,并且 co-occur 与不相关的词时尚很少。
  • 只有在概率比中,来自 non-discriminative 词(如水和时尚)的噪声才会抵消,因此大值(远大于 1)与冰的特定属性相关性很好,而小值(远大于 1)小于 1) 与蒸汽的特定属性密切相关。

然而,Word2Vec 的工作原理是纯粹的 co-occurrence 概率,因此目标词周围的词成为上下文的概率最大化。

在实践中,为了加快训练过程,Word2Vec采用负采样将softmax函数替换为对真实数据和噪声数据进行操作的sigmoid函数。这明确地导致单词在向量 space 中聚类成一个圆锥体,而 GloVe 的单词向量位于更离散的位置。