原文:《Distributed Representations of Words and Phrases and their Compositionality》
原作者:Tomas Mikolov等
摘要
最近引入的连续Skip-gram模型是学习高质量distributed vector representations(分布向量表示)的有效方法,distributed vector representations可以捕获大量精确的句法和语义关系。在本文中,我们提出了几个扩展,提高了向量的质量和训练速度。通过对frequent words进行二次抽样,我们获得了显着的加速,同时还学习了更多的regular word representations(常规单词表示)。我们还提出了一个分层softmax的简单替代方案,称为negative sampling(负采样)。
word representations的一个固有限制是:它们不关心词序,而且无法表示idiomatic phrases(习惯用语)。例如,不能简单地将“Canada/加拿大”和“Air/空中”的含义组合起来得到“Canada Air/加拿大航空公司”的含义。在这个例子的启发下,我们提出了一种在文本中查找短语的简单方法,并表明学习数百万个phrases的good vector representations是可能的。
1 介绍
通过分组相似的单词,在向量空间中的distributed representations可以帮助学习算法在NLP任务中获得更好的表现。最早使用word representations可以追溯到1986年(Rumelhart,Hinton和Williams)。这个想法已经被应用于统计语言建模且取得了相当大的成功。后续工作包括应用于自动语音识别和机器翻译,以及大范围的NLP任务。
最近,Mikolov等人引入了Skip-gram模型,这是一种从大量非结构化文本数据中学习高质量向量表示的有效方法。与过去大部分用于学习word vectors的神经网络架构不同,Skip-gram模型的训练(参见图1)不涉及密集矩阵的乘法。这使得训练非常高效:一个优化过的单机实现可以在一天内训练超过1000亿字。
使用神经网络计算的word representation非常有趣,因为已训练的向量明确地编码了许多语言规律和模式。有点令人惊讶的是,许多这些模式可以表示为线性翻译。例如,向量计算vec("Madrid")-vec("Spain")+vec("France")的结果比任何其他word vector更接近于vec("Paris")。
图1:Skip-gram模型架构。训练目标是学习善于预测附近单词的word vector representations
在本文中,我们提出了原始Skip-gram模型的几个扩展。在训练过程中,对frequent words进行二次采样会导致显着的加速(大约2-10倍),并提高频率较低的word representation的准确性。此外,我们提出了一种用于训练Skip-gram模型的简化NCE(Noise Contrastive Estimation/噪声对比估计)。结果表明,与更复杂的分层softmax相比,它有更快的训练速度,而且frequent words的vector representation也更好。
words representation天生受限于idiomatic phrases的表示。例如,“Boston Globe/波士顿环球报”是报纸,它不是“Boston/波士顿”和“Globe/地球”的含义的自然组合。因此,用向量来表示整个短语会使Skip-gram模型更具表现力。其他旨在通过组合单词向量(例如递归自动编码器/recursive autoencoders)来表示句子意义的技术也将受益于使用phrase vectors而不是word vectors。
模型从基于单词扩展到基于短语模型相对简单。首先,我们使用data-driven的方法识别大量的短语,然后在训练过程中将短语视为单独的tokens(标记)。为了评估短语向量的质量,我们开发了一个包含单词和短语的类比推理任务测试集。测试集中一个典型类比对是"Montreal":"Montreal Canadiens" :: "Toronto":"TorontoMaple Leafs"如果最靠近vec("Montreal Canadiens") - vec("Montreal") + vec("Toronto")的表达是 vec("TorontoMaple Leafs"),则被认为回答正确。
最后,我们描述了Skip-gram模型的另一个有趣属性。我们发现简单的向量加法通常可以产生有意义的结果。例如,vec("Russia")+vec("river")接近 vec("Volga River"),而vec("Germany")+vec("capital")接近 vec("Berlin")。这种组合性表明,通过对word vector representation使用基本的数学运算,可以获得非明显(non-obvious)程度的语言理解。
2 Skip-gram模型
Skip-gram模型的训练目标是找到可用于预测句子或文档中surrounding words的word representation。更正式地,给出训练词
其中
2.1 分层Softmax
Hierarchical(分层) softmax是完全softmax的计算效率近似。它首先由Morin和Bengio在神经网络语言模型的上下文中引入。它的主要优点是,不需要评估神经网络中的
分层softmax使用二叉树表示输出层,其中
更准确地说,从一条合适的路径,可以从root到达每个单词
分层softmax使用的树结构对性能有相当大的影响。Mnih和Hinton探索了构建树结构的一些方法以及训练时间和结果模型精度的影响。在我们的工作中,我们使用一个霍夫曼树(binary Huffman tree),因为它将短codes分配给高频词,从而加快了训练速度。之前已经观察到,根据出现频率组合单词可以很好的作为基于神经网络的语言模型的一种简单加速技术。
2.2 负采样Negative Sampling
分层softmax的替代方案是噪声对比估计(NCE),由Gutmann和Hyvarinen引入,并由Mnih和Teh用于语言建模。NCE认为一个好的模型应该能够通过logistic regression来区分数据和噪声。这类似于Collobert和Weston使用的铰链损失/hinge loss,他们通过对噪声上的数据进行排名来训练模型。
虽然NCE可以最大化softmax的对数概率,但是Skipgram模型只关注学习高质量的向量表示,因此只要向量表示保持其质量,我们可以随意简化NCE。我们通过以下公式定义Negative Sampling(NEG):