【ACM】大文本语料库中词嵌入的异部训练

标题:Asynchronous Training of Word Embeddings for Large Text Corpora

作者:Avishek Anand, Megha Khosla , Jaspreet Singh,Jan Hendrik Zab, Zijian Zhang

来源: WSDM'19: Proceedings of the Twelfth ACM International Conference on Web Search and Data Mining (第十二届ACM网络搜索和数据挖掘国际会议)

编译:李灏城,孙静正,刘博艺,数据挖掘组


摘要

词嵌入是一种强大的语言分析方法,在信息检索和文本挖掘等众多任务中得到了广泛的应用。在大型语料库上进行嵌入式培训在计算上非常昂贵,因为输入通常是按顺序处理的,并且参数是同步更新的。已经提出的用于异步培训的分布式体系结构要么关注词汇表大小和维度的缩放,要么承受昂贵的同步延迟。在本文中,我们提出了一种可扩展的方法来训练词嵌入,它通过对输入空间进行分区来实现大规模的文本语料库的扩展,同时又不牺牲嵌入的性能。我们的训练过程不涉及任何参数同步,除了最后一个通常在几分钟内执行的子模型合并阶段。我们的分布式训练可以无缝地扩展到大型语料库,我们使用我们的分布式过程所训练的模型,在各种NLP基准测试中获得可比较的、有时甚至高达45%的性能改进,而这只需要基线方法所用时间的1/10。最后,我们还证明了我们对子模型中缺失的单词具有很强的鲁棒性,并且能够有效地重建单词表示。


核心内容

什么是词嵌入?

词嵌入(word embedding)又称词向量,是一种词转化成一种分布式表示,是将词汇映射到实数向量的方法总称。分布式表示将词表示成一个定长的连续的稠密向量。词嵌入是自然语言处理(NLP)的重要突破之一。

解释:词嵌入实际上是一类技术,单个词在预定义的向量空间中被表示为实数向量,每个单词都映射到一个向量。举个例子,比如在一个文本中包含“猫”“狗”“爱情”等若干单词,而这若干单词映射到向量空间中,“猫”对应的向量为(0.1 0.2 0.3),“狗”对应的向量为(0.2 0.2 0.4),“爱情”对应的映射为(-0.4 -0.5 -0.2)(本数据仅为示意)。像这种将文X{x12345……xn12345……yn},这个映射的过程就叫做词嵌入。

目的:通过词嵌入这种方式将单词转变为词向量,机器便可对单词进行计算,通过计算不同词向量之间夹角余弦值cosine而得出单词之间的相似性。


【ACM】大文本语料库中词嵌入的异部训练


意义:通过词嵌入这种方式将单词转变为词向量,机器便可对单词进行计算,通过计算不同词向量之间夹角余弦值cosine而得出单词之间的相似性。

——来自CSDN


词嵌入算法发展:

单词表示通常是通过无监督的方式从大型文本语料库中学习的——传统上是通过矩阵分解方法学习,最近则是通过使用神经网络学习。

Word2Vec(Word to Vector)

一个特别流行的实现是带负抽样的跳跃(SGNS),也称为Word2Vec。SGNS方法的流行是由于基于异步梯度下降(通过无锁更新和使用负采样、子采样和词汇剪枝进行细致的模型更新)的改进,训练时间更快。缺点:尽管这些改进提高了实例级训练的速度,但输入本身必须按顺序处理,从而降低了训练大量数据集的速度。



创新:

针对SGNS的分布式体系结构也已经被提出,但是目标不同。有的尝试通过划分嵌入维度来扩展SGNS训练,有的通过划分词汇空间来扩展到更大的词汇量。本论文则使用划分输入空间的方法。



在本文中提出了一种可扩展的方法来训练词嵌入,即通过划分输入空间来扩展到大量的文本语料库,同时又不牺牲嵌入的性能。在大量的词相似,类比和分类基准方面,与使用的集中的和分布式的基线方法相比较,这种方法是简单的,易于实现和有效的。


详细方法

Step1:

划分阶段:

这个阶段,使用的策略是将数据划分为若干个子语料库,这样就可以保留unigram和bigram分布。

为确保在子语料库中不漏掉单词和单词上下文,实验提出了一种简单而有效的随机抽样方法,将输入数据(一组句子)分成多个较小的子语料库。特别地,实验建议使用r(In %)的抽样率进行随机抽样,即从rN /100个句子中分别选择100/r个样本,每个样本独立地、均匀地随机地选择句子,并进行替换。


Step2:

训练阶段:

研究通过MapReduce框架中实现了采样和培训,以利用并行数据加载和处理。与早期的工作不同,实验采用无状态的方法进行培训。映射者负责将输入采样到子语料库中,而还原者负责训练。请注意,一个句子可以被分配给多个子语料库。

ShuffleApproach

为了确保相同的模型接收到完全相同的输入,需要对样本进行一定程度的物化(假设输入不是驻留在内存中)。研究提出了一种称为Shuffle的无状态方法,在每个epoch (MapReduce轮)中,不要求每个子模型接收与前一轮/秒相同的输入样本。注意,即使不是相同的训练数据,每个子模型仍然接收整个输入数据的相同部分。这样做有两个明显的好处。首先,培训过程是真正无状态的,因此是可伸缩的。这是因为实验不需要确保相同的训练实例使用相同的缩减器,而这通常是使用基于内容的哈希技术实现的。其次,更重要的是,为相同的模型提供跨epoch的不同样本具有正则化效果,并且比跨epoch看到相同的输入时表现得更好。


Step 3:

合并阶段:

在这个阶段中,本实验致力于找到一个单一的嵌入矩阵(有时也称为一致嵌入矩阵),这个矩阵给出了d维单词嵌入矩阵。这里区分了两种情况:(1)所有的n个子模型都有相同的词汇表;(2)存在一个或多个给定矩阵中缺失的单词(存在于至少一个子模型中)

对于第一种情况:将子模型与通用词汇表合并。一种很简单的方法是将得到的矩阵连接起来,以获得最终的表示。然而,在存在大量子模型的情况下,合并矩阵的大小可能已经变得很大,因此不受欢迎。另一个简单的替代方法是在连接的矩阵上使用主成分分析或或PCA,并使用PCA作为一种表示的原则组件的子集,并使用主成分的一个子集作为表示。

对于第二种情况:用部分词汇表合并子模型。研究发展了GeneralizedProcrustes

Analysis (GPA) 方法来理词汇缺失的问题。寻求共识表示的GPA方法可以总结如下:

(1)对组合表示进行初始化,例如通过随机选择其中一个表示或使用随机值来初始化Y。

(2)将所有表示与Y对齐。

(3)计算Y '为对齐表示的均值。

(4)如果Y和Y '之间的误差大于阈值,则设Y = Y ',返回步骤2。


主要试验情况

实验设置:

【ACM】大文本语料库中词嵌入的异部训练

表1:基准数据统计(论文选择基准数据来评估相似度、分类和类比任务)


数据集使用:

实验中使用了两个大型文本数据集,Wikipedia和Web。这两个语料库都是通过去除非文本元素、句子拆分和标记化来预处理的。

维基百科:维基百科的语料库包含了4,227,933个句子,跨越2,313,580,449个标记。实验使用Wikipedia语料库进行所有的有效性和可伸缩性实验。

Web:是指2007年从.co.网站上抓取的大量网页的文本语料库。数据集是286 GB未压缩的。Web语料库要大得多,包含1198、460、804个句子和47、297、217、342个标记。只可在可伸缩性实验中使用Web语料库,因为Web构建基线模型在计算上是不允许的。


模型构建:

实验将Hogwild基线和子模型的维数固定为500。对于Hogwild和Shuffle方法,在训练前将两个数据集的词汇量设置为300,000(按频率过滤)。


【ACM】大文本语料库中词嵌入的异部训练


表2:不同抽样策略的评价结果。使用ALiR合并初始化与Pca和运行3个纪元。括号中的数字表示每个基准测试的词汇表中没有出现在最终合并模型中的单词数。带下划线的值对应于每个基准的每采样率的最佳结果。粗体表示每个基准测试的最佳结果。


实验结果:


【ACM】大文本语料库中词嵌入的异部训练


图2:以10%的采样率训练Wikipedia和Web数据集的比例递增所需的时间。相比之间合并时间太小了,选择忽略。


词汇稀疏和缺失的影响

为了更加精确的研究词汇缺失对ALiR,Concat和Pca三种训练方法的影响,实验通过系统地从子模型中删除基准词来模拟更多OOV术语的影响。图3显示了从至少一个子模型的每个基准中删除10%和50%的唯一单词的效果。


【ACM】大文本语料库中词嵌入的异部训练

从子模型中删除10%基准测试


【ACM】大文本语料库中词嵌入的异部训练

从子模型中删除50%基准测试词

图3(上述两图): 从基准测试中删除至少一个子模型的唯一单词的k%后,使用ALiR,与Concat和Pca进行缺失词重建的表现对比。


对照分析:在相同的基准测试中,当删除10%的基准测试词时,ALiR的表现与Concat和Pca的表现相当,而后者的表现则要差得多。当删除50%的唯一单词时,这种效果在所有基准测试中都更明显。虽然ALiR的表现略有下降,但Concat和Pca的表现下降幅度很大(男性患者中,Concat和Pca分别为0.59和0.27、0.57和0.17)。这个结果表明,对于词汇量非常大的集合,即使各个子模型中的词汇量不一致,使用ALiR的并行异步训练过程也可以找到良好的表示。


原文链接:https://doi.org/10.1145/3289600.3291011


Abstract

Word embeddings are a powerful approach for analyzing language and have been widely popular in numerous tasks in information retrieval and text mining. Training embeddings over huge corpora is computationally expensive because the input is typically sequentially processed and parameters are synchronously updated. Distributed architectures for asynchronous training that have been proposed either focus on scaling vocabulary sizes and dimensionality or suffer from expensive synchronization latencies. In this paper, we propose a scalable approach to train word embeddings by partitioning the input space instead in order to scale to massive text corpora while not sacrificing the performance of the embeddings. Our training procedure does not involve any parameter synchronization except a final sub-model merge phase that typically executes in a few minutes. Our distributed training scales seamlessly to large corpus sizes and we get comparable and sometimes even up to 45% performance improvement in a variety of NLP benchmarks using models trained by our distributed procedure which requires 1/10 of the time taken by the baseline approach. Finally we also show that we are robust to missing words in submodels and are able to effectively reconstruct word representations.



分享到:


相關文章: