(29)[NIPs13] Distributed Representations of Words and Phrases and their Compositionality

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37993251/article/details/88928984

计划完成深度学习入门的126篇论文第二十九篇,Google的Jeffrey Dean、Greg Corrado、Tomas Mikolov及Ilya Sutskeve发表的word2vec论文,引用高达12000次,同时也是CS224nLecture1的推荐readings。


ABSTRACT&INTRODUCTION

摘要

最近引入的Skip-gram模型是一种高效的学习高质量分布式向量表示的方法,它能捕获大量精确的句法和语义单词关系。在本文中,我们提出了几个扩展,以提高向量的质量和训练速度。通过对频繁出现的单词进行subsampling,我们获得了显著的加速,并学习了更多的规则单词表示。我们还描述了一个简单的替代Hierarchical softmax最大值称为负抽样。

word representations的一个固有限制是它们对单词顺序的漠视和它们无法表示惯用短语。例如,Canada和Air的意思不能简单地结合起来得到Air Canada。在这个例子的启发下,我们提出了一个在文本中查找短语的简单方法,并证明学习数百万短语的良好向量表示是可能的。

介绍

向量空间中单词的Distributed representations有助于学习算法,通过对相似的单词进行分组,从而在自然语言处理任务中获得更好的性能。最早使用单词表示可以追溯到1986年,这要归功于Rumelhart、Hinton和Williams[13]。该思想已应用于统计语言建模,并取得了相当大的成功。后续工作包括应用于自动语音识别和机器翻译[14,7],以及广泛的NLP任务[2,20,15,3,18,19,9]。

最近,Mikolov等人[8]引入了Skip-gram模型,这是一种从大量非结构化文本数据中学习高质量单词向量表示的有效方法。与以前用于学习单词向量的大多数神经网络架构不同,Skip-gram模型的训练不涉及密集矩阵乘法。这使得训练非常高效:一个优化的single-machine可以在一天内训练超过1000亿个单词。

使用神经网络计算单词表示是非常有趣的,因为所学习的向量显式地编码了许多语言规则和模式。有些令人惊讶的是,其中许多模式都可以表示为线性平移。例如,向量计算的结果vec(Madrid) - vec(Spain) + vec(France)比任何其他向量都更接近vec(Paris)[9,8]。

本文对原始Skip-gram模型进行了若干扩展。我们发现,训练中频繁单词的子采样可以显著加快速度(大约2倍- 10倍),并提高了较不频繁单词表示的准确性。此外,我们提出了一种简化的噪声对比估计Noise Contrastive Estimation(NCE)[4]的变体,用于训练Skip-gram模型,与之前的工作[8]中使用的更复杂的Hierarchical softmax相比,该模型能够更快地训练频繁单词,并提供更好的向量表示。

单词表示受限于它们无法表示非单个单词组成的惯用短语。例如,“Boston Globe”是一份报纸,所以它并不是“Boston”和“Globe”含义的自然组合。因此,使用向量来表示整个短语使得Skip-gram模型更具表现力。其他旨在通过组合单词向量来表示句子意思的技术,例如递归自动编码器[15],也将受益于使用短语向量而不是单词向量。

从基于单词的模型扩展到基于短语的模型相对简单。首先,我们使用数据驱动的方法识别大量短语,然后在训练期间将这些短语视为单个标记。为了评估短语向量的质量,我们开发了一套包含单词和短语的类比推理任务测试集。我们测试集中一个典型的类比对是 “Montreal”: “Montreal Canadiens”::“Toronto”:“Toronto Maple Leafs”。如果与vec(Montreal Canadiens)- vec(Montreal)+ vec(Toronto)最近的代表是vec(Toronto Maple Leafs),则认为这是正确答案。

最后,我们描述了Skip-gram模型的另一个有趣的性质。我们发现,简单的向量加法通常可以产生有意义的结果。例如,vec(“Russia”) + vec(“river”)意思接近vec(“Volga River”),vec(“Germany”) + vec(“capital”)接近vec(“Berlin”)。这种组合性表明,通过对单词向量表示进行基本的数学运算,可以获得不明显的语言理解程度。

2 The Skip-gram Model

Skip-gram模型的训练目标是找到对预测句子或文档中周围单词有用的单词表示形式。更正式地说,给定一系列训练单词w1、w2、w3,…,跳变函数模型的目标是使平均对数概率最大化

其中c为训练上下文的大小(可以是中心词w_t的函数)。较大的c导致更多的训练实例,因此可以导致更高的精度,但代价是需要更长的训练时间。基础的Skip-gram定义使用softmax:

其中为w的“输入”和“输出”向量表示,w为词汇表中的单词数。这个公式不切实际,因为计算成本太高。正比于W,这通常是大型(10^5 - 10^7级别)。

2.1 Hierarchical Softmax

一个计算上有效的近似完整的软最大值是Hierarchical softmax最大值。在神经网络语言模型的背景下,它首先由Morin和Bengio[12]提出。其主要优点是,不需要对神经网络中的W输出节点进行评估来获得概率分布,只需要对log2(W)节点进行评估即可。

Hierarchical softmax使用输出层的二叉树表示,以W个单词作为叶节点,并且对于每个节点,显式地表示其子节点的相对概率。它们定义了一个随机walk,将概率分配给单词。

更精确地说,每个单词w都可以通过从树的root开始的适当路径到达。让n (w, j)是第j节点路径从根上w、L(w),让这条路的长度,所以n(w, 1)  = root和。此外,对于任何内部节点n,让ch(n)是任意固定的孩子(n,让 =1如果x是真的,否则。Hierarchical softmax定义为:

。可以证明。这意味着成本计算成正比,平均不大于。此外,与标准的softmax格式的Skip-gram分配两个表示'的每一个字w,Hierarchical softmax格式有一个表示v_w的每一个字w和一个表示v_n '的每一个内部节点的二叉树。

Hierarchical softmax使用的树的结构对性能有很大的影响。Mnih和Hinton探索了许多构建树结构的方法,以及它们对训练时间和最终模型精度[10]的影响。在我们的工作中,我们使用二进制哈夫曼树,因为它给频繁出现的单词分配了短代码,所以训练速度很快。此前已有研究发现,将单词按频率分组是一种非常简单的基于神经网络的语言模型加速技术[5,8]。

2.2 Negative Sampling

另一种替代hierarchical softmax最大值的方法是噪声对比估计(NCE),它由Gutmann和Hyvarinen[4]引入,并由Mnih和Teh[11]应用于语言建模。NCE假设一个好的模型应该能够通过逻辑回归将数据与噪声区分开来。这类似于Collobert和Weston[2]使用的铰链损耗,他们通过将数据排列在噪声之上来训练模型。

虽然NCE可以近似地最大化softmax的log概率,但是Skipgram模型只关心学习高质量的向量表示,因此只要向量表示保持其质量,我们就可以自由地简化NCE。我们定义负抽样(NEG)目标

用于替换Skip-gram目标中的每一个项。因此,我们的任务是使用logistic回归将目标词wO与draw从噪声分布Pn(w)中区分出来,其中每个数据样本都有k个负样本。我们的实验表明,在520范围内的k值对于小的训练数据集是有用的,而对于大的数据集,k值可以小到2.5。负采样与NCE的主要区别在于,NCE同时需要样本和噪声分布的数值概率,而负采样仅使用样本。虽然NCE近似地最大化了softmax的日志概率,但是这个属性对我们的应用程序并不重要。

NCE和NEG均将噪声分布Pn(w)作为一个自由参数。我们研究了Pn(w)的多种选择,发现单克分布U(w)提高到3/4次方(即。U(w)3/4/Z)在NCE和NEG的每个任务上(包括语言建模,这里没有报告)都明显优于unigram和均匀分布。

2.3 Subsampling of Frequent Words

在非常大的语料库中,最频繁的单词很容易出现数亿次(例如In、the和a)。这些词通常提供的信息价值比罕见的词少。例如,虽然Skip-gram模型从观察法国和巴黎的共同出现中获益,但是从观察法国和the的频繁共同出现中获益要少得多,因为几乎每个单词都经常在一个句子中与the同时出现。这个想法也可以用在相反的方向;经过对数百万个例子的训练,频繁词的向量表示没有显著变化。

为了解决罕见词和频繁词之间的不平衡,我们采用了一种简单的子抽样方法:将训练集中的每个单词wi丢弃,由公式计算概率

f(wi)是单词wi和t的频率,通常是一个选择的阈值,通常在10 - 5之间。我们选择了这个次采样公式,因为它积极地将频率比t大的单词进行子样本,同时保持频率的排序。虽然这一次抽样公式被选择了,但我们发现它在实践中很好地工作。它加速学习,甚至显著提高了罕见单词的学习向量的准确性,如下所示。

3 Empirical Results

在本节中,我们评估了训练词的Hierarchical Softmax(HS)、Noise Contrastive Estimation、Negative Sampling和subsampling。我们使用了Mikolov等人提出的类比推理任务1。类比任务包括“Germany” : “Berlin” :: “France” : ?,这是通过找到一个解决向量vec (x),这样是最接近vec(“Berlin”) - vec(“Germany”) + vec(“France”)根据余弦距离(我们丢弃的输入文字搜索)。如果x是Paris,则认为这个特定的例子已经被正确地回答了。该任务有两大类:句法类比(如quick: fast:: slow: slow)和语义类比(如country to capital city relationship)。

为了训练Skip-gram模型,我们使用了由各种新闻文章组成的大型数据集(一个包含10亿个单词的内部谷歌数据集)。我们将训练数据中出现次数少于5次的单词从词汇表中剔除,得到的词汇量为692K。表1报告了各种Skip-gram模型在单词类比测试集上的性能。由表可知,负采样在类比推理任务上优于Hierarchical softmax最大值,甚至比噪声对比估计性能稍好。对常用词进行子抽样后,训练速度提高了几倍,单词表示的准确性显著提高。

可以说,skip-gram模型使其向量的线性更适合这样的线性类比推理,但Mikolov et al .[8]的结果还表明,向量学习标准的s形的复发性神经网络(高度非线性)显著改善这个任务作为训练数据的数量增加,这表明非线性模型也有偏爱的线性结构这个词表示

4 Learning Phrases

正如前面所讨论的,许多短语的意思并不是由单个单词的意思简单组合而成的。要学习短语的向量表示,我们首先要找到经常出现在一起的单词,以及不经常出现在其他上下文中的单词。例如,“New York Times”和“Toronto Maple Leafs”在训练数据中被独特的令牌所替代,而这个双字母的表示将保持不变。

这样,我们可以在不大幅度增加词汇量的情况下形成许多合理的短语:理论上,我们可以使用所有的n-gram来训练Skip-gram模型,但是那样会占用太多内存。以前已经开发了许多技术来识别文本中的短语;但是,对它们进行比较超出了我们的工作范围。我们决定使用一种简单的数据驱动方法,即使用:

δ是作为discounting系数和防止太多的非常罕见的词组成的短语。得分高于所选阈值的bigram将用作短语。通常,我们运行2-4遍阈值递减的训练数据,允许形成由多个单词组成的更长的短语。我们使用一个新的包含短语的类比推理任务来评估短语表示的质量。表2显示了在这个任务中使用的五类类比的例子。这个数据集在web上是公开的。

4.1 Phrase Skip-Gram Results

我们从与之前实验相同的新闻数据出发,首先构建基于短语的训练语料库,然后使用不同的超参数训练多个Skip-gram模型。和前面一样,我们使用了向量维数300和上下文大小5。该设置在短语数据集上已经取得了良好的性能,并允许我们快速比较负采样和Hierarchical softmax最大值,无论是否对频繁令牌进行子采样。结果如表3所示。

结果表明,当k = 5时,负抽样也能达到令人满意的精度,而当k = 15时,则能获得更好的性能。令人惊讶的是,虽然我们发现Hierarchical softmax最大值在不进行子采样的情况下训练时性能较差,但当我们对频繁出现的单词进行降采样时,它成为了性能最好的方法。这表明,子抽样可以导致更快的训练,也可以提高准确性,至少在某些情况下。

为了最大限度地提高短语类比任务的准确性,我们使用了大约330亿个单词的数据集,增加了训练数据量。我们使用Hierarchical softmax、1000的维数和整个句子作为上下文。这使得模型的准确率达到了72%。当我们将训练数据集的大小缩减到6B words时,我们的准确率降低了66%,这表明大量的训练数据是至关重要的。

为了进一步了解不同模型学习的表示有多么不同,我们使用不同的模型手动检查了不频繁短语的最近邻居。在表4中,我们展示了这种比较的一个示例。与之前的结果一致,似乎短语的最佳表示是通过Hierarchical softmax最大值和子抽样模型学习的。

5 Additive Compositionality

我们证明了由Skip-gram模型学习到的单词和短语表示具有线性结构,这使得使用简单的向量算术进行精确的类比推理成为可能。有趣的是,我们发现跳跃符号表示呈现出另一种线性结构,这种结构使得通过元素明智地添加单词的向量表示来有意义地组合单词成为可能。这个现象如表5所示。

通过对训练目标的考察,可以解释向量的可加性。字向量与软极大非线性的输入呈线性关系。通过训练单词向量来预测句子中周围的单词,向量可以被看作是单词出现时上下文的分布。这些值与输出层计算的概率呈对数关系,因此两个词向量的和与两个上下文分布的乘积有关。乘积在这里作为AND函数:两个单词向量都赋予高概率的单词将具有高概率,而其他单词将具有低概率。因此,如果伏尔加河与俄语、River这两个词频繁出现在同一个句子中,那么这两个词向量的和就会得到一个与伏尔加河向量非常接近的特征向量。

6 Comparison to Published Word Representations

许多以前从事基于单词表示的神经网络研究的作者已经发表了他们的结果模型,以供进一步使用和比较:其中最著名的作者是Collobert和Weston[2]、Turian等人的[17],以及Mnih和Hinton[10]。我们从web3下载了他们的word vector。Mikolov等人[8]已经在单词类比任务上对这些单词表示形式进行了评估,其中Skip-gram模型以巨大的优势获得了最好的性能。

为了更深入地了解学习向量的质量差异,我们通过表6中不频繁单词的最近邻来进行实证比较。这些例子表明,在大型语料库上训练的Skip-gram模型在学习表示的质量上明显优于所有其他模型。这在一定程度上可以归因于这个模型已经训练了大约300亿个单词,这比之前工作中使用的典型大小多了大约2到3个数量级的数据。有趣的是,虽然训练集要大得多,但是Skip-gram模型的训练时间只是以前模型体系结构所需时间复杂度的一小部分。

7 Conclusion

这项工作有几个关键贡献。我们展示了如何使用Skip-gram模型训练单词和短语的分布式表示,并证明这些表示具有线性结构,使得精确的类比推理成为可能。本文所介绍的技术也可用于训练[8]中引入的连续词包模型。

由于使用了计算效率高的模型体系结构,我们成功地在比以前发布的模型多几个数量级的数据上训练了模型。这使得学习到的单词和短语表示的质量有了很大的提高,特别是对于罕见的实体。我们还发现,对经常出现的单词进行子抽样,不仅训练速度更快,而且对不常见单词的表示也明显更好。本文的另一个贡献是负采样算法,它是一种非常简单的训练方法,可以学习准确的表示,特别是对于频繁出现的单词。

训练算法的选择和超参数的选择是一个特定于任务的决策,因为我们发现不同的问题具有不同的最优超参数配置。在我们的实验中,影响性能的最关键的决策是模型体系结构的选择、向量的大小、子采样率和训练窗口的大小。

这项工作的一个非常有趣的结果是,向量这个词可以用简单的向量加法有意义地组合起来。本文提出的另一种学习短语表示的方法是用单个标记简单地表示短语。这两种方法的组合提供了一种强大而简单的方法来表示较长的文本,同时具有最小的计算复杂度。因此,我们的工作可以看作是对现有方法的补充,现有方法试图使用递归矩阵向量操作[16]来表示短语。

基于本文描述的技术,我们将训练单词和短语向量的代码作为一个开源项目。code.google.com/p/word2vec
 

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/88928984
今日推荐