《Distributed Representations of

2019-09-17  本文已影响0人  Colleen_oh

标题:词语和短语的分布表示及其组成性

摘要:本文提出了几种提高矢量质量和训练速度的扩展方法。词语表征的一个固有限制是他们对语序漠不关心,无法表达成语短语。例如,“Canada” 和“Air” ,合并起来是“Air Canada”,很难合并理解为“加拿大航空”。在这个例子的激励下,我们提出了一种简单的文本短语查找方法,并给出了对数百万短语的学习良好的矢量表示。

1、介绍

最近,Mikolov等人介绍了Skip-gram模型,这是一种从大量非结构化文本数据中学习单词高质量向量表示的有效方法。不像大多数以前用于学习单词向量的神经网络体系结构,Skipgram模型的训练(见图1)不涉及密集矩阵乘法。这使得训练变得极端。高效:一个优化的单机实现可以在一天内训练超过1000亿字。

图1

本文给出了原Skip-gram模型的几个推广。我们发现,在训练过程中,频繁词的次采样会导致显著的加速(约2x-10倍),并提高了较少频繁的单词表示的准确性。此外,还提出了一种简化的噪声对比估计(Nce),用于训练Skip-gram模型,从而达到快速的效果。ER训练和更好的频繁单词向量表示,与以前工作中使用的更复杂的层次化软件(Softmax)相比。

从基于词的扩展到基于短语的模型比较简单。首先,文中使用数据驱动的方法识别大量的短语,然后将短语作为单独的标记来处理。在训练的时候。为了评估短语向量的质量,作者开发了一套包含单词和短语的类比推理任务测试集。

2、Skip-gram模型

Skip-gram模型的训练目标是寻找对预测句子或文档中的周围单词有用的单词表示。

给一个序列中的训练单词定义为:w_1,w_2,w_3...,w_T,Skip-gram模型的目标是最大化平均log概率:

其中c是训练上下文的大小(可以是中心单词W_T的函数)。c值越大,训练实例就越多,从而可以提高训练的准确性,当时训练时间也会增加。基本的Skip-gram公式使用Softmax函数:

其中v_w和v^,_w是输入和输出向量,W是词汇表中的单词数。这个公式是不切实际的,因为计算log[p(W_o|W_i)]的成本与W 成正比,W通常很大(10^5-10^7项)。

2.1 层次化 softmax

层次化的Softmax使用输出层的二叉树表示,W字作为其叶子,对于每个节点,显式地表示其子节点的相对概率。这些定义了一种随机游走,将概率分配给单词。

更准确地说,每个单词w都可以从树根通过适当的路径到达。令n(w,j)从根到w(叶子)的路径上的第j个节点,L(w)是根到叶子的路程。则n(w,1)=rootn(w,L(w))=w。另外,对于任意内节点n,设ch(n)n的任意固定子,设[x]1,若x为真,否则为-1。然后,层次化的Softmax将定义为:

其中σ(x) = 1/(1 + exp((x)),这可以通过\sum\nolimits_{w=1}^W p(w|w_I ) = 1证明。这就暗示了log [p(w_O|w_I )]的代价是和L(w_O)是成正比的,其平均值不会超过logW

2.2 负采样

层次化Softmax的另一种方法是噪声对比估计(NCE),由Gutmann和Hyvarinen提出,Mnih和Teh将其应用于语言建模。NCE定位一个好的模型应该能够通过Logistic回归来区分数据和噪声。这类似于Colobert和Weston使用的铰链损失,他们通过对d进行排序来训练模型。

虽然NCE可以显示为大约最大限度地最大化SoftMax的log概率,但是Skipgram模型仅涉及学习高质量的矢量表示,因此我们可以自由地简化只要矢量表示能够保持它们的质量。我们根据目标定义负采样(NEG)如下:

可用于替换Skip-gram目标中的每一个log P(w_O|w_I)项。因此,现在的任务是使用Logistic回归将目标词W_O 从噪声分布P_n(w)中提取出来,其中每个数据样本都有k个负样本。我们的实验表明,在5-20范围内的k值对于小的训练数据集是有用的,而对于大数据集,k可以小到2-5。负采样和NCE的主要区别在于NCE同时需要样本和噪声分布的数值概率,而负采样只需要样本。

NCE和NEG均以噪声分布p_n(w)作为自由参数。

2.3 频繁词的 Subsampling

在非常大的语料库中,最频繁的单词很容易出现数亿次(例如“in”、“the”和“a”)。这样的词通常比罕见的词提供的信息价值更少。

为了克服稀有词和频繁词之间的不平衡,我们使用了一种简单的次抽样方法:训练集中的每个单词以公式计算的概率被丢弃。

其中,其中f(w_i) 是单词w_i的频率,t是选择的阈值,通常在10^{-5}左右。作者们选择这个次抽样公式,是因为它在保持频率排序的同时,对频率大于t的词进行了积极的子采样。作者们发现它在实践中效果很好。它加速了学习,甚至显着地提高了r的学习向量的准确性。

3.经验结果

为了训练Skip-gram模型,作者们使用了一个由各种新闻文章组成的大型数据集(一个包含10亿字的内部Google数据集)。我们从词汇中剔除了所有在训练数据中发生的少于5次的单词,从而产生了692 K的词汇量。

表1报告了各种Skip-gram模型在单词模拟测试集上的性能。NCE代表噪声对比估计,HS-Huffman代表基于频率的霍夫曼码的分级SoftMax。

表一

从表中可以看出,NEG的性能是比另外的优秀。

4、学习短语

正如前面所讨论的,许多短语具有的意思不是其各个词的含义的简单组成。要学习短语的矢量表示,首先查找出现的单词经常在一起,在其他情况下很少。

通过这种方式,我们可以形成许多合理的短语,而不会大大增加词汇量的大小。以前已经开发了许多技术来识别文本中的短语; 然而,比较它们超出了工作范围。 于是作者们决定使用一种简单的数据驱动方法,这里面得短语是根据单数和双字元计数形成的,使用如下公式:

其中\delta 用作折扣系数,防止由非常不常用的单词组成的短语过多。然后将分数超过所选阈值的作为短语使用。这是用来评价性能的工具。

4.1 Skip-gram模型实现短语的表示

从与之前实验相同的新闻数据开始,我们首先基于训练语料库构建了短语,利用不同的超参数训练了多个Skip-gram模型。和之前一样,我们使用向量维数300和上下文大小5。此设置已经在短语数据集上取得了良好的性能。实验结果如下:

结果表明,即使在k=5的情况下,负采样也能达到令人满意的精度。使用k=15可以获得更好的性能。令人惊讶的是,当我们发现分层的softmax在没有Subsampling 的情况下训练时性能是最低的,但当有Subsampling 的情况下,分层的softmax的性能却是最好的。这表明Subsampling 可以加快训练速度,也可以提高准确性,至少在某些情况下。

为了最大限度地提高短语类比任务的准确性,作者们增加了训练数据的数量。通过使用一个大约330亿字的数据集。同时使用了层次化的softmax,维度一千个,整个句子的上下文。这就产生了一个精确的模型占72%。当我们将训练数据集的大小减少到6百万时,我们的准确率降低了66%这说明大量的训练数据是至关重要的。

通过比较,作者们发现,似乎最好的短语表示是通过一个带有层次化softmax和Subsampling的模型来学习的。

5、结论

文中展示了如何使用skip-gram模型来训练单词和短语的分布式表示,并证明这些表示呈现线性结构使类比推理成为可能的结构。

上一篇下一篇

猜你喜欢

热点阅读