第一遍(游览文章)
标题以及作者
- **文章类型:**经典NLP文章
- **paper地址:**http://arxiv.org/pdf/1301.3781.pdf
- **源码地址:**https://code.google.com/p/word2vec
摘要
我们提出两种可以从非常大的数据集训练连续向量表示的模型架构。在词相似任务上来衡量这些表示的质量,并将结果与之前基于不同类型的神经网络的表现最好的技术进行比较。我们观察到以更低的计算成本在准确性上有了很大的提高,从16亿单词数据集中学习词向量只要不到一天时间。本文还测试了词向量在语法和语义词的相似性。
结论
本文研究了一系列句法和语义语言任务中,不同模型衍生的词向量表示的质量。我们观察到,与流行的神经网络模型(前馈神经网络和循环神经网络)相比,使用非常简单的模型架构可以训练高质量的但词向量。由于计算复杂度大大降低,因此可以从更大的数据集计算非常精确的高纬词向量。
我们正在进行的工作表明,词向量可以成功地应用于知识库中事实的自动拓展,也可以用于验证现有事实的正确性。
1 介绍
- 之前的N-gram模型具有简单性、鲁棒性(在大量数据上的简单模型比在少量数据上的复杂模型表现更好),但是简单的技术在很多任务中受限(很多场景缺乏数据)。
- 随着近年来机器学习技术的进步,在更大的数据上训练更复杂的模型已经成为可能,它们通常由于简单模型。可能最成功的概念是使用单词的分布式表示。例如:基于神经网络的语言模型显著优于N-gram模型。
1.1 Goals of the Paper
在本文中,我们尝试通过开发新的模型架构来最大化这些向量运算的准确性(词向量的简单线性运算,例如:king-man+woman = queen),以保持单词之间的线性规律。本文设计了一个新的综合测试集来测量语法和语义规则;此外,我们还讨论了训练时间和准确性如何取决于词向量的维数和训练数据的数量。
1.2 Previous Work
- NNLM,该模型使用线性投影层和非线性隐藏层的前馈神经网络来联合学习单词向量和统计语言模型
- 词向量首先使用带有单个隐藏层的神经网络学习,然后用词向量来训练NNLM。因此,不构造完整的NNLM,词汇向量也可以被学习。本文中,我们直接拓展了这个架构,并专注于第一步,使用一个简单的模型学习词向量。
- 后来的研究表明,词向量可以显著改善和简化很多NLP应用。
第二遍(精读主要部分)
2 Model Architectures
2.1 Feedforward Neural Net Language Model(NNLM)
代码可见:
NNLM每个训练样例的计算复杂度是: Q = N × D + N × D × H + H × V Q = N×D+N×D×H+H×V Q=N×D+N×D×H+H×V(N表示输入个数,D表示投影维度,H表示隐藏层维度),计算瓶颈在H×V。经过层次softmax后,瓶颈变成N×D×H
2.2 Recurrent Neural Net Language Model(RNNLM)
RNNLM每个训练样例的计算复杂度是: Q = H × H + H × V Q = H×H+H×V Q=H×H+H×V
2.3 Parallel Training of Neural Networks
我们在一个名为DistBelief的大规模分布式框架上实现了多个模型
3. New Log-linear Models
在本节中,我们提出了两种新的模型架构,用于学习单词的分布式表示,它们试图降低计算复杂度至最低。从上一节观察到,大部分的复杂度是由模型中的非线性隐藏层造成的。
3.1 Continuous Bag-of-Words Model (CBOW)
第一个提出的结构类似于前馈NNLM,其中非线性隐藏层被去除,投影层为所有单词共享(而不仅仅是投影矩阵,NNLM是通过索引从投影矩阵获取词嵌入,而CBOW使用投影层生成词向量);因此,所有单词都被投影到相同的位置。我们称这种架构为词汇袋模型,因为词汇在历史中的顺序不影响投影。
此外,我们也使用了来自未来的词,采用完形填空的方式去预测中间的词。
训练复杂度为: Q = N × D + D × l o g 2 ( V ) Q = N × D + D × log_2(V) Q=N×D+D×log2(V)
3.2 Continuous Skip-gram Model
第二种架构类似于CBOW,但它不是根据上下文预测当前的单词,而是试图根据同一个句子中的另一个单词最大限度地分类一个单词。
更准确地说,我们将每个当前词作为一个输入到一个带连续投影层的对数线性分类器中(linear+softmax),预测当前词前后一定范围内的词。我们发现,增加范围可以提高结果词向量的质量,但也增加了计算的复杂性。由于距离较远的单词与当前单词之间的联系通常比距离较近的单词更小,因此我们通过在训练示例中对这些单词进行更少的抽样,从而对距离较远的单词给予更少的权重。
训练复杂度: Q = C × ( D + D × l o g 2 ( V ) ) Q = C×(D+D×log_2(V)) Q=C×(D+D×log2(V)),C表示预测的最大距离
4 结果
4.1 Task Description
为了衡量词向量的质量,我们定义了一个包含5类语义题和9类句法题的综合测试集。每个类别中的两个示例如上图所示。总共有8869道语义题和10675道句法题。每个类别中的问题都是通过两个步骤创建的:首先,手动创建一个相似的词对列表;然后,通过连接两个词对形成一个大的问题列表。例如,我们列出了68个美国大城市和它们所属的州,并通过随机选择两组词组成大约2.5万个问题。我们在测试集中只包含单个标记词,因此不存在多词实体(例如New York)。
我们评估所有问题类型的整体准确性,并分别评估每个问题类型(语义、句法)。只有当使用上述方法计算出的最接近向量的单词与问题中的正确单词完全相同时,才认为问题是正确的;同义词被算作错误。这也意味着达到100%的准确率是不可能的,因为目前的模型没有任何关于词法的输入信息。
4.2 Maximization of Accuracy
我们使用Google News语料库来训练单词向量。这个语料库包含大约6B个tokens。我们已经将vocabulary限制在100万个最常用的单词。显然,我们面临的是时间约束优化问题,因为可以预期,使用更多的数据和更高维度的词向量都将提高精度。为了估计模型架构的最佳选择,以尽可能快地获得最好的结果,我们首先评估了在训练数据子集上训练的模型,vocabulary限制在最频繁的30k个单词。在单词向量维数选择不同、训练数据量增加的情况下,使用CBOW架构的结果如表2所示。
可以看出,在某个点之后,增加更多的维度或增加更多的训练数据所带来的改善是递减的。因此,我们必须同时增加向量维数和训练数据的数量。
4.3 Comparison of Model Architectures
首先,我们使用相同的训练数据和640个相同维数的词向量,比较不同的模型架构来导出词向量。在进一步的实验中,我们使用新的语义-句法词关系测试集中的全套问题,即不受30k词汇量限制。我们还包括[20]中引入的一个测试集的结果,该测试集关注单词之间的语法相似性。
从表3可以看出,来自RNN的词向量在句法问题上表现较好。NNLM向量的表现明显优于RNN——这并不奇怪,因为RNNLM中的词向量直接连接到非线性隐藏层。CBOW体系结构在句法任务上比NNLM更好,在语义任务上与NNLM基本相同。最后,Skip-gram架构在语法任务上的表现比CBOW模型略差(但仍然比NNLM好),在测试的语义部分的表现比所有其他模型好得多。
对于进一步报告的实验,我们只使用了一个训练周期(同样,我们线性降低学习率,以便在训练结束时它接近于零)。使用一个epoch在两倍的数据上训练模型,比使用三个epoch在相同的数据上迭代,可以得到类似或更好的结果,如表5所示,并提供了额外的小速度。
5 Example of the Learned Relationships
表8显示了遵循各种关系的单词。我们遵循上面描述的方法:通过减去两个单词向量定义关系,然后将结果添加到另一个单词。例如,巴黎-法国+意大利=罗马。可以看出,准确率是相当不错的,虽然很明显还有很大的提升空间
我们相信,在具有更大维度的更大数据集上训练的词向量将会表现得更好,并将使新的创新应用程序的开发成为可能。另一种提高准确性的方法是提供不止一个关系的例子。通过使用10个而不是1个例子来形成关系向量(我们将每个向量平均起来),我们观察到在语义-语法测试中,我们最好的模型的准确性提高了约10%。
也可以应用向量运算来解决不同的任务。例如,我们观察到,通过计算单词列表的平均向量并找到最远的单词向量,可以很好地选择列表外的单词。在某些人类智力测试中,这是一种常见的问题。显然,使用这些技术仍有许多发现有待发现。
第三遍(回忆与思考)
- 本文提出的背景:当时NLP还处于统计语言模型和神经语言模型阶段,作者发现更加简单的模型可以在更大的数据上进行训练从而得到更好地效果(数据更为重要),或者说当时的复杂模型不易训练而且也没有好的计算工具(很多都在CPU上进行训练)。
- 作者本文的模型起源于NNLM,但是不同于NNLM的是,不使用非线性层,单词映射矩阵换成投影层,让词向量投影在一个空间中。(NNLM每次更新N-1个词向量,但是Word2vec更新整个映射空间)
- 作者仅使用了两层线性层,然后两种训练模式(CBOW、Skip-gram)在大量数据上进行训练,得到了具有较好语义和语法关系的词向量。(神经网络的副产物,线性层权重)
- 作者实现过程中为了降低softmax分类的计算复杂度,还加入层次softmax以及负采样的方法来减少计算量。
小结:(优点、使用场景、缺点)
优点:
训练出来的词向量具有更好的语义和语法关系;模型较为轻量;使用模型训练出来的词向量,进行语义和语法相关的实验。
使用场景:
可以提取出词向量,用于下游NLP任务
缺点:
目前是预训练模型的世界,通过微调应用于NLP下游任务,不会直接使用词向量。