word2vec和手套有什么区别? 两种方法都可以训练单词嵌入吗?如果是,那么我们如何同时使用两者?
答案 0 :(得分:1)
是的,它们都是训练单词嵌入的两种方式。它们都提供相同的核心输出:每个单词一个向量,向量以一种有用的排列方式排列-相对距离/方向大致与我们的整体单词相关性,甚至沿着某些显着语义维度的相关性相对应。
Word2Vec通过反复迭代训练语料库来进行神经网络的增量,“稀疏”训练。
GloVe可以使向量拟合以对从语料库构建的巨型单词共现矩阵建模。
使用相同的语料库,创建相同维数的单词向量,并将相同的注意力投入元优化,它们产生的单词向量的质量将大致相似。 (当我看到某个人自信地声称一个或另一个肯定更好时,他们经常将一种算法的某些调整/最佳用例与另一种粗略/任意的默认值进行比较。)
我对Word2Vec更加熟悉,我的印象是Word2Vec的训练可以更好地扩展到更大的词汇量,并且具有更多可调整的设置,如果您有时间的话,可以让您将自己训练有素的单词向量更适合您的特定需求应用。
除非将它们彼此进行比较,否则您可能不会使用两者,因为它们在字向量的任何下游应用中都扮演相同的角色。
答案 1 :(得分:0)
Word2vec是一种预测模型:通过尝试根据给定上下文(CBOW方法)或目标语言(skip-gram方法)预测目标单词进行训练。它使用可训练的嵌入权重将单词映射到其对应的嵌入,这有助于模型进行预测。训练模型的损失函数与模型的预测效果有关,因此,当模型进行训练以做出更好的预测时,将得到更好的嵌入效果。
手套基于单词上下文矩阵的矩阵分解技术。它首先构造一个由(单词x上下文)共现信息组成的大型矩阵,即对于每个“单词”(行),您需要计算在某个“上下文”(列)中我们看到该单词的频率(矩阵值)。大语料库。 “上下文”的数量将非常大,因为它的大小实质上是组合的。因此,我们将这个矩阵分解为一个低维(单词x特征)矩阵,其中每行现在为每个单词产生一个矢量表示。通常,这是通过最小化“重建损失”来完成的。这种损失试图找到可以解释高维数据中大部分差异的低维表示形式。
在GloVe之前,单词表示的算法可以分为两个主要流:基于统计的(LDA)和基于学习的(Word2Vec)。 LDA通过在共现矩阵上进行奇异值分解(SVD)来生成低维单词向量,而Word2Vec使用三层神经网络来完成中心上下文单词对分类任务,其中单词向量只是副产品。
Word2Vec的最令人惊奇的一点是,相似的词在向量空间中位于一起,并且对词向量的算术运算可以构成语义或句法关系,例如“国王”-“男人” +“女人”->“女王” ”或“更好”-“好” +“差”->“更差”。但是,LDA无法在向量空间中保持这种线性关系。
GloVe的动机是迫使模型明确基于共生矩阵来学习这种线性关系。本质上,GloVe是具有加权最小二乘目标的对数双线性模型。显然,这是一种基于统计矩阵使用机器学习的混合方法,这是GloVe和Word2Vec之间的一般区别。
如果我们深入研究GloVe中方程的推导过程,我们会发现直觉固有的差异。 GloVe注意到,单词-单词共现概率的比率具有编码某种形式的含义的潜力。以StanfordNLP(Global Vectors for Word Representation)为例,考虑目标词ice和steam与词汇中的各种探测词的共现概率:
但是,Word2Vec处理纯共现概率,从而使目标单词周围的单词成为上下文的概率最大化。
在实践中,为了加快训练过程,Word2Vec使用负采样以对真实数据和噪声数据进行操作的S形函数代替softmax功能。显然,这导致了单词在矢量空间中的聚类成圆锥形,而GloVe的单词矢量的位置更加离散。