Abstrcat

two novel model architectures for computing continuous vector representations of words from very large data sets

计算词的连续向量表示的两种新模型架构

large improvements in accuracy at much lower computational cost

算力需求降低,准确率提高(对比已有神经网络)(表现:一天之内从16亿词数据集中学习到高质量词向量)

these vectors provide state-of-the-art performance on our test set for measuring syntactic and semantic word similarities

这些词向量在评估句法和语义相似度时有当前最优(sota)的表现

什么是syntactic and semantic word similarities?

synatactic similarities:词性相近,走和跑都是动词

semantic word similarities:意义相关,苹果和香蕉都是水果


1 Introduction

1.0

正文摘录

treat words as atomic units-there is no notion of similarity between words

现有技术将词视为原子单位,没有词之间相似性的概念(原因:简单,稳定,且先前观察表明大量数据训练简单模型优于少量数据训练复杂模型)(例:n-gram)

the simple techniques are at their limits in many tasks

这类简单技术在目前很多任务上出现瓶颈(自动语音识别任务和机器翻译任务中没有足够的优质数据用于训练),单纯增大规模无法解决问题,需要技术迭代

the most successful concept is to use distributed representations of words

随技术进步,在大数据集上训练复杂模型成为可能。其中最重要的概念是使用词的分布式表示(基于神经网络的语言模型往往优于n-gram模型)

什么是distributed representations?

用一个低维、稠密的向量表示一个词,该词的含义由向量中所有维度的数值【分布式】承载

先前的one-hot编码只能作为索引,而分布式表示能让词之间存在关联

如:猫,狗,香蕉

one-hot

猫[1,0,0],狗[0,1,0],香蕉[0,0,1] 猫与狗之间没有联系

分布式(假设词向量表示为[动物特征,水果特征]):

猫[0.9,0.1],狗[0.8,0.2],香蕉[0.1,0.9] 猫与狗之间有关联,猫与香蕉之间没有


1.1 Goals of the paper

introduce techniques that can be used for learning high-quality word vectors from huge data sets with billions of words, and with millions of words in the vocabulary

文章目标是介绍在一个大规模数据集(词汇表中有几百万词,数据集大小为几十亿词)上学习高质量词向量的技术。先前并没有能够在保持50到100词向量规模下,在几亿词数据集中完成训练的架构

not only will similar words tend to be close to each other, but that words can have multiple degrees of similarity

经过技术验证,不仅相似词在向量空间上接近,词汇还可以具有多重相似度(同一词具有多个评判相似度的维度,在不同维度下与之相似的词也不同,如cat在动物维度与dog相似,在名词维度与apple相似)

vector(”King”) - vector(”Man”) + vector(”Woman”) results in a vector that is closest to the vector representation of the word Queen

另外采用词偏移技术验证,发现词之间相似度已经不局限于句法规则上的相似度。King向量 - Man向量 + Woman向量 的结果与Queen向量最为接近,这是一种语义上的运算

maximize accuracy of these vector operations by developing new model architectures that preserve the linear regularities among words

本文将开发新模型架构,通过保留词之间的线性关系最大化这类向量运算的准确率,同时设计一套测试集来评估词汇在句法规则上和语义上的相似度,并验证这些规则都可以以高准确率建模。(此外还探讨了词向量维度及数据量的影响)


上面一个小节花了快一小时。。后面尝试精简表达提高效率

1.2 Previous Work

这里的previous work包括

文献1(具体文献详见原论文)提出的NNLM(神经网络语言模型):a feedforward neural network with a linear projection layer and a non-linear hidden layer was used to learn jointly the word vector representation and a statistical language model (包含线性投影层与非线性隐藏层的前馈神经网络,学习词向量与统计语言模型)

文献13,14提出的另一种NNLM架构:the word vectors are first learned using neural network with a single hidden layer. The word vectors are then used to train the NNLM (单隐藏层神经网络学习词向量,再用词向量训练完整NNLM)

focus just on the first step where the word vectors are learned using a simple model (本文着重于第一步,简单模型学习词向量)

研究表明词向量在很多NLP任务上有显著改善与简化能力。用文献13的架构方法训练词向量有着成本低于其他架构方法的优势


2 Model Architectures

2.0

目前有多种模型架构估计词的连续向量表示,包括Latent Semantic Analysis(LSA潜在语义分析)与Latent Dirichlet Allocation(LDA潜在狄利克雷分配),本文主要关注distributed representations of words learned by neural networks(通过神经网络习得词的分布式表示)。研究表明分布式表示在保留词间线性规律方面优于LSA;LDA成本过高

to compare different model architectures we define first the computational complex ity of a model as the number of parameters that need to be accessed to fully train the model

为对比模型架构,需要定义计算复杂度:完成模型全量训练所需参数量。计算复杂度小,准确率高的模型更优

量化为(1):O=E\times T \times Q

E为训练轮次,T为训练集中词数量,Q为模型复杂度参数

模型均采用SGD(随机梯度下降法)与反向传播算法训练


2.1 Feedforward Neural Net Language Model (NNLM)

文献1提出The probabilistic feedforward neural network language model(概率前馈神经网络模型),包括输入层,投影层,隐藏层,输出层。

输入层使用one-hot对前N个词编码,通过共享投影矩阵映射为N\times D的投影层(D为词向量维度)

As only N inputs are active at any given time, composition of the projection layer is a relatively cheap operation (由于每一时刻仅有N个输入激活,投影层的计算相对简单)

计算复杂度主要源于投影层与隐藏层间计算,一般情况下N=10,投影层P大小为500-2000,隐藏层H大小为500-1000。隐藏层还要负责计算词汇表的概率分布,词汇表维度为V。每轮训练的复杂度为(2):

Q=N\times D\, +\, N\times D\times H\, + \, H\times V

复杂度主要项为H\times V

这里有一些实用的解决方案来降低这一主要项的复杂度,如using hierarchical versions of the softmax(使用层次softmax)或using models that are not normalized during training(使用训练期间不做归一化的模型)

通过使用二叉树表示词汇表,需评估的输出单元数量可降低到log_{2}\left ( V \right ),此时复杂度主要项变为N\times D\times H

*

为什么二叉树表示词汇表能使评估输出单元数量降低到log2(V)?

在这里想了一会,最终给出解释为:

不使用二叉树时,softmax函数需要计算所有V个词汇的以e为底的指数,而使用二叉树后,由于仅评估某一特定词,只需要计算二叉树中从根节点到指定词的路径上的结点概率,需要评估的输出单元数量降低为树深度log2(V)。

*

the Huffman tree based hierarchical softmax requires only about log2(Unigram_perplexity(V))

本文模型使用层次softmax,即将词汇表构建为Huffman binary tree(哈夫曼二叉树)。基于哈夫曼树的层次softmax仅需评估log_{2}\left ( Unigram\_Perplexity\left ( V \right ) \right )个输出单元。(哈夫曼树基于词频创建树,高频词离根节点近计算快,UP(一元语法困惑度)也是一种基于词频的评估指标,词频分布越不均匀则UP越小)

对于复杂度主要项为N\times D\times H的NNLM没有显著提升,但后续将提出architectures that do not have hidden layers and thus depend heavily on the efficiency of the softmax normalization (无隐藏层,依赖于softmax归一化效率的架构)


2.2 Recurrent Neural Net Language Model (RNNLM)

循环神经网络模型(RNNLM)是为了克服NNLM的某些局限性(如需要指定上下文长度)提出的。理论上RNN能高效表达更复杂的模式,无投影层,What is special for this type of model is the recurrent matrix that connects hidden layer to itself, using time-delayed connections(特殊之处在于循环矩阵使用时间滞后连接将隐藏层与其自身相连),这使得循环模型具备短期记忆,隐藏层状态与上一时刻的隐藏层状态相关联

训练样本复杂度为(3):

Q=H\times H\,+\, H\times V

基于上文的层次softmax优化后,复杂度主要项为H\times H


2.3 Parallel Training of Neural Networks

为了在大数据集上训练模型,作者使用名为DistBelief的大规模分布式框架。这一框架allows us to run multiple replicas of the same model in parallel, and each replica synchronizes its gradient updates(可以同步运行一个模型的多个副本,由中心服务器同步梯度更新)

*

关于DistBelief

由Google的Jeff Dean在2012年发表的《Large Scale Distributed Deep Networks》中首次提出,是Tensorflow框架的前身,核心在于使用Downpour SGD(异步随机梯度下降)结合Adagrad自适应学习率解决了模型并行化的性能问题

*

并行训练中采用小批量异步随机梯度下降,自适应学习率,上百个模型副本在不同机器上调用多个cpu


3 New Log-linear Models

3.0

这一部分将提出两种模型架构来最小化计算复杂度。经上文验证,模型复杂度主要来源于非线性的隐藏层。尽管正是隐藏层为神经网络带来优势,作者将尝试更简单的模型:数据表示精度略低于神经网络,但在大量数据上训练效率更高(对应2.1中提到的无隐藏层的架构)

新架构仍然沿用文献13,14中提出的两步神经网络训练法:用简单模型学习连续词向量;基于词的分布式表示训练N元NNLM


3.1 Continuous Bag-of-Words Model

第一种架构与NNLM类似,但抛去了隐藏层,并将投影层对所有词共享(而非只共享投影矩阵)

*

the projection layer is shared for all words(Why it is Bag-of-Words)

关于将投影层对所有词共享的解释

在NNLM中词经投影层转化为词向量后是拼接为长向量进入隐藏层处理的,这里长向量中隐性的存在一个顺序关系

而CBOW选择把拼接这一步改为相加取平均,即all words get projected into the same position (their vectors are averaged),不存在拼接,词之间隐藏的顺序关系消失,就像被打乱装入一个袋子里一样,这也是为什么模型名为Bag-of-Words(词袋)

*

作者通过构建以4个未来词与4个历史词为输入的对数线性分类器,以正确分类中间词为目标,在后续章节的任务重取得了最优表现,训练复杂度为(4):

Q=N\times D\, + \, D\times log_{2}\left ( V \right )

与标准词袋模型不同,CBOW采用上下文的连续分布式表示(这也是Continuous的由来)


3.2 Continuous Skip-gram Model

第二个架构和CBOW类似,但不是基于上下文预测当前词,而是将一个词输入带连续投影层的对数线性分类器中,预测该词前后一定范围内的其他词。增大范围会提升词向量质量,但也会提升计算复杂度。距离较远的词与当前词通常关联较小,通过减少采样来降低权重,训练复杂度为(5):

Q=C\times \left ( D\, + D\times log_{2}\left ( V \right ) \right )

其中C为词的最大距离。若C=5,对每个训练词,在1到C内随机选择一个R,当前词的前后R个词为正确标签。下文使用C=10


4 Results

4.0

we found that when we train high dimensional word vectors on a large amount of data, the resulting vectors can be used to answer very subtle semantic relationships between words

先前评估词向量质量的方式一般是给出一个表格展示例词及其相似词,直观地评估词向量质量,如法国和意大利都是国家,所以相似

而作者沿用先前结论:词与词之间存在多重相似度。除了考虑一个词在不同维度上与不同词的相似以外,词间相似关系也可以被词向量所表示。可以提出如下问题:“biggest之于big,如同什么单词之于small?”

将该未知单词设为X,Vector X = Vector(biggest)-Vector(big)+Vector(small)

在向量空间中搜索与X余弦距离最近的单词,可以得到smallest

当在大量数据上训练高维词向量时,得到的词向量可以解答词与词间细微的语义关系


4.1 Task Description

为评估词向量质量,作者设计了一套包含5类语义问题和9类语法问题的综合测试集

问题构建分两步:人工整理相似词对;随机组合词对生成问题

评估所有问题的整体准确率与语义和语法问题上分别的准确率。只有计算后所得最近邻词与答案完全一致才认为正确,近义词不行


4.2 Maximization of Accuracy

使用谷歌新闻语料库训练,该语料库包含60亿个tokens,将词汇表大小限制为前一百万个高频词

为了快速获得最优架构,在训练集子集上评估模型,词汇表限制为前三万个高频词。表2展示在不同词向量维度和训练数据量下的实验结果

观察可得,达到一定阈值后,单独提升词向量维度或训练数据量的带来的性能优化微乎其微,需要同时提升两者才能有效提升性能。另外,将训练数据量翻倍和将词向量维度翻倍导致的计算复杂度提升是相近的

在表2和表4的实验中均采用随机梯度下降与反向传播算法,经过3轮训练迭代,初始学习率为0.025,采用线性衰减策略


4.3 Comparison of Model Architectures

在相同训练数据与词向量维度(640维)下,对比不同的词向量模型架构,引入聚焦词汇语法相似性的测试集结果

训练数据由多个LDC语料库组成,包括3.2亿个词,8.2万个词汇表。RNNLM在单CPU上训练耗时约8周;基于DistBelief框架训练NNLM;

观察图中结果可得,RNNLM在语法问题上准确率较高;

NNLM在语法和语义问题上相比RNNLM都有所提升(因为RNNLM词向量直接连接隐藏层);

CBOW在语法问题上与NNLM相比性能有所提升,在语义问题上接近;

Skip-gram在语法问题上与CBOW性能接近,在语义问题上相比CBOW有显著提升

对仅使用单CPU训练的模型进行评估,得到表4

Skip-gram模型在语义问题上有着显著优势

在后续实验中,使用CBOW与Skip-gram仅训练一个轮次,得到表5

观察表5得:在两倍数据量上训练一个轮次,相比在单倍数据集上训练三个轮次耗时更少,效果更好


4.4 Large Scale Parallel Training of Models

表6为基于Google News 6B数据集,在DistBelief框架下训练的不同模型的结果(由于分布式框架本身的开销,CBOW和Skip-gram的CPU使用率较为接近)

CBOW和Skip-gram对比NNLM,花费更少时间训练的同时有较高性能提升,其中Skip-gram在语义问题上仍然表现优异


4.5 Microsoft Research Sentence Completion Challenge

这一小节介绍了Skip-gram模型在微软句子补全挑战上的表现。这一任务包含1040个句子,每个句子缺失一个单词,要从五个选项中选出最合理的单词。N元语法模型,LSA模型,对数双线性模型以及目前最优(55.4%准确率)的RNNLM都尝试过该任务

作者以候选缺失词为输入,预测周围的所有词来计算得分,最终句子得分为预测结果之和,基于不同缺失词的句子得分选择最合理的缺失词,最终表现如表7

尽管Skip-gram模型本身表现不如LSA相似度方法,但该模型得分与RNNLM具有互补性,通过加权和可以得到最优的58.9%准确率


5 Examplesof the Learned Relationships

表8展示了各种具有语义关系的词对。作者采用两个词向量相减的方式来定义语义关系,将这一语义关系加到另一个词向量上,来预测该词在该语义关系下对应的词,准确率在60%左右,可以通过增大词向量维度或数据集/将多个同一语义关系向量取平均来提高准确率。将十组相同语义关系向量取平均后准确率有10%左右的提升


6 Conclusion

在这篇论文中,作者研究了:

基于各类语法及语义任务,用不同模型习得的词向量的质量

(与主流神经网络相比)可以用非常简单的模型架构训练出高质量词向量

由于计算复杂度降低,可以用更大规模数据集训练维度更高,精度更高的词向量

基于DistBelief分布式框架,在词汇表难以计数,词汇多达一万亿级的语料库上也能训练出CBOW与Skip-gram模型,相比先前的同类成果提高数个量级

-

词向量在近期被应用于多种任务,表现显著优于现有最优水平,如SemEval2012任务二。可以预见后续将有很多NLP任务因此有进展(如语义分析,语义检测)

作者后续研究展现了词向量在知识库,机器翻译等方面有应用,助力优化未来NLP的高质量词向量构建


7 Follow-Up Work

初稿完成后,作者发布了实现CBOW与Skip-gram的C++代码,训练速度相比早期报告结果提升了一个量级,每小时能处理数十亿词汇。此外,作者还发布了基于千亿级语料库训练出的140万个命名实体向量


关于负采样

Negative Sampling(负采样)在《Distributed Representations of Words and Phrases and their Application in NLP》中被mikolov提出以解决词汇表过大时层次softmax的效率问题,主要思想为抽取一定的负例,再选择一个正例,训练一个sigmoid分类器,训练过程中正例的输出趋近1,而负例的输出趋近0。通过这样的方式可以将计算复杂度降低到常数水平,不受词汇表大小影响

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐