【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

FAIR 重磅发布大规模语料库 XNLI:支持 15 种语言,解决跨语言理解难题

  • 2018-10-11
  • 本文字数:7511 字

    阅读完需:约 25 分钟

近期,EMNLP 2018 收录的一篇论文“XNLI: Evaluating Cross-lingual Sentence Representations”得到了 Yann LeCun 的关注,他转发并推荐了该论文提供的公开数据集 XNLI(Cross-lingual Sentence Representations)。XNLI 是 Facebook AI 研究院(FAIR)和纽约大学研究团队的一项合作研究成果,它提供了一种用于评估跨语句表征的数据集。自然语言处理系统依赖于使用基于标注数据的有监督学习提高模型的处理能力。目前,许多模型是使用单一语言(通常是英语)训练的,并不能直接应用于其他语言。由于收集每种语言的语料数据是不现实的,因此如何实现跨语言句子理解(XLU)和低资源的跨语言迁移得到了越来越多的关注。这篇论文进一步将多类型自然语言推理语料库(MultiNLI)的开发和测试集扩展到 15 种语言,其中甚至包括斯瓦希里语和乌尔都语等低资源语言,构建了一种用于 XLU 的基准测试数据集。对该论文感兴趣的读者,可访问 XNLI 项目主页下载数据集。据 XNLI 主页介绍,项目源代码也将于近期公开。

XNLI 数据集提供了一些标准的评估任务,意在促进对 XLU 的研究。此外,XNLI 还给出了多语言句子理解的多种基线方法,其中两种基线方法基于机器翻译系统,另外有两种基线分别使用了并行数据(parallel data)训练对齐的多语言词袋和 LSTM 编码器。论文给出了与基线的对比实验,表明 XNLI 具有更优的性能。本文将对 XNLI 的预发表 ArXiv 论文进行解读。

研究现状与挑战

当前,自然语言处理系统通常依赖标注数据去训练模型。常见的训练数据主要集中于英语和中文等单一语言,系统也只能在训练所用的语言中执行分类、序列标注、自然语言推理等任务。一款实用的国际化产品需要处理多种语言输入,但是为所有的语言分别生成标注的数据集是难以实现的。为此,一些研究提出了跨语言语句理解(XLU,cross-lingual Language Understanding)去构建多语言系统。使用 XLU 的系统主要使用一种语言去训练模型,并在其它语言上评估模型。尽管一些 XLU 研究在跨语种文档分类上给出了较好的结果,但目前 XLU 对自然语言推理(NLI,Natural Language Inference)等一些更难以理解的任务依然缺少基准测试数据集。大规模 NLI,即文本蕴含识别(RTE,Recognizing Textual Entailment),业已成为评估语言理解的实际测试平台。在 RTE 中,系统读取两句话,并判定两者间的关系是否为“蕴含”(Entailment)、“矛盾”(Contradict)或“中性”(Neutral)。近期,一些众包的标注工作已生成了具有上百万实例的英语数据集,并在评估神经网络结构和训练策略、训练效果、可重用句子表征等任务中得到了广泛的应用。

该论文给出了一种称为 XNLI(Cross-lingual Natural Language)的数据集。XNLI 将 NLI 数据集扩展到 15 种语言,包括英语、法语、西班牙语、德语、希腊语、保加利亚语、俄语、土耳其语、阿拉伯语、越南语、泰语、中文、印地语、斯瓦希里语和乌尔都语,并以 NLI 的三分类格式为每种语言分别提供了 7500 个经人工标注的开发和测试实例,合计 112500 个标准句子对。XNLI 中包括的语言跨越了多个语系,特别还包括了斯瓦希里语和乌尔都语这两种语料资源稀缺的语言。XNLI 设计用于评估 XLU,即使用一种语言训练模型,并在另一种语言上测试模型。论文使用来自公开可用语料库中的并行数据进行自然语言推理,对多种跨语言学习方法做了评估。论文的实验结果显示,并行数据有助于对齐多种语言中的句子编码,这种对齐机制给出了非常好的结果,使得用英语 NLI 训练的分类器可以正确地用于其它语言句子对的分类任务。XNLI 的另一个实践用于评估预训练的(pretrained)语言通用(language-universal)句子编码器。该基准测试有助于研究领域构建多语言文本嵌入空间,进而推进多语言系统的建立,实现在无监督或有很少监督的情况下实现语言间的迁移。

从相关的研究看,目前对多语言理解的工作主要停留在词的层面,即多语言词嵌入。一些方法提出了学习跨语言词表示,即在嵌入空间中的词表示具有很近的翻译距离。还有一些方法需要做一定程度上的有监督学习,在同一空间中对齐源和目标嵌入。近期一些研究提出了无监督的跨语言词嵌入。在句子表征学习方面,一些方法提出将词嵌入扩展到句子乃至段落表征。生成句子嵌入的最直接方法是使用词表征的平均或加权平均,此类方法称为连续词包法(CBOW,Continuous Bag-Of-Words)。尽管 CBOW 类方法理念比较原始,但是它们通常能提供很好的基线。一类更复杂的方法是捕获句子表征中在语义和语法上的依赖性。尽管此类固定大小的句子嵌入方法在性能上要优于相应的有监督学习方法,但是一些近期研究表明,预训练的语言模型在一定的条件下也可实现很好地迁移。此外,一些研究关注了多语言句子表征问题。有研究训练双语自动编码器,目标是最小化两种语言间的重建错误。还有研究提出在多种语言上联合训练 Seq2Seq 机器翻译系统,学习共享的多语言句子表征。

在跨语言评估基准测试方面,可以说基准测试的缺乏已经妨碍了多语言表征的发展。大量前期提出的方法在评估中使用的是 Reuter 跨语言文档分类语料。但是,该语料中的分类是在文档层面实现的,由于存在多种聚合句子嵌入的方法,非常难以比较不同句子嵌入。此外,Reuters 语料中类的分布是高度不平衡的,数据集并不提供目标语言的开发集,这使得测试更加复杂。此外,Cer 等人在 2017 年提出一种句子层的多语言训练和评估数据集,实现四种语言在语义上的文本相似性。还有研究通过翻译英语数据集或是从并行语料中标注句子,构建了一种多语言 RTE 数据集。最近有研究给出的 SNLI 数据集是通过人工翻译为阿拉伯语、法语、俄语和西班牙语而构建了 1332 个句子对。与上述研究相对比,XNLI 是首个用于评估句子层表征的大规模多语言语料库。

XLNI 数据集

XNLI 同样使用了构建 Multi-Genre NLI 语料库所用的众包方法。它从 Multi-Genre NLI 语料库使用的 10 个文本源中分别收集并验证了 750 新实例,合计 7500 个实例。以这部分数据为基础,XNLI 工作聘请了一些专业翻译者,将这些实例分别翻译为 10 种目标语言,由此创建了完整的 XNLI 语料库。采用对每种语言分别翻译而非生成新的假设句子的做法具有多个好处。首先,这种做法确保了在各个语言间的数据分布的相似性最大化,避免了添加不必要的由人工表达所导致的自由度。第二,它使用了同一组受信任的人,无需为每种语言训练新的一组人工。第三,它支持每种语言所对应的假设。这使得 XNLI 中包括了 150 万假设(Hypothesis)和前提(Premise)的组合,具有支持评估各语言间对齐情况的能力。

但是,使用人工翻译过程也存在一些风险,主要问题在于两种语言对之间的语义关系可能会在翻译中丢失。论文指出,他们针对此问题作了一些统计,结果表明 XNLI 中只有少到可以忽略不计的部分受此问题影响。

数据收集

XNLI 中英语语料的采集使用了和 MultiNLI 语料同样的方法。它从指定的 10 个文本源的 250 个句子中做抽样,这确保了所得到的句子不会与语料的分布产生重叠。在得到句子之后,研究者询问生成 MultiNLI 语料的众包平台上的同一人,为每个的前提生成三个假设的标记,然后将前提语句按 MultiNLI 使用的同一模板展示给标记生成者,并做验证。验证后重标记的句子会指派给四个人做重标记。结果表明,其中 93% 的数据的标记是一致的(即四个人中有三人仲裁一致)。此外 7% 的数据也保留,并用“-”做特殊标记。

得到标记的句子后,XNLI 工作聘请了翻译者,将句子分别翻译为十五种语言,其中前提和假设是分别翻译的,以确保在假设中只是从英语句子中拷贝了标记,没有添加任何额外的上下文。图一给出了所得到结果的部分实例。



图一 XNLI 中各种语言和文体的部分实例,其中包括了前提和假设

生成语料库

在生成语料库时,一个重要的问题是确定一些句子对的金标记(gold label)是否由于添加信息和翻译过程而发生了改变。论文提及,XNLI 研究者在手工查看数据时,发现一个句子对在英文 - 中文翻译中由“蕴含”关系变成了“矛盾”关系,而该句子在翻译为其它语言时标记则未发生变化。为定量地确定该问题在 XNLI 中出现的规模,在论文工作中,英语 - 法语双语人工标注者从数据源中非重叠随机抽取并重新检查了 100 个实例。从整体情况看,在没有任何训练过程和 Burn-in 过程的情况下,标注者可以从 85% 的原始英语句子中得到与仲裁结果一致的标注,在翻译得到法语句子上标注有 83% 是一致的。这是由于语料中的很多句子相对易于翻译,尤其是人工得到的假设文本,因此在翻译过程中不太可能添加歧义。扩展到整个语料库,研究指出生成的 XNLI 具有和 MultiNLI 相似的属性。如图二所示,对于所有语言,前提平均会比假设的文本长两倍。词的重要性使用语料库中每个词和类的互信息打分,假设中最重要的词所显示的类标记,在所有语言对应的句子中是一致的,并且与 MultiNLI 语料库也是一致的。



图二 XNLI 数据集中每种语言的每个句子中的平均 Token 个数

当前版本的 XNLI 中的大部分句子以 OANC 许可公开提供,可自由使用、修改和共享。

跨语言 NLI

实现 XLU 的最直接方法是使用已有的翻译系统。有两种使用翻译系统的方式,一种方式称为“翻译训练”(Translate Train),其中将训练数据翻译为每种目标语言,作为提供给训练每个分类器的数据。另一种方式称为“翻译测试”(Translate Test),其中翻译系统只在测试中使用,用于将输入句子翻译为训练所用语言。这两种方式都可以作为很好的对比基线,但是在实践中都存在一些挑战。前者需要训练和维护使用同一目标语言数据的分类器,而后者在测试时依赖于计算强度很大的翻译。两者都受限于翻译系统的质量,而翻译系统本身则受限于可用的训练数据,以及所用语言句子对之间的相似性。

多语言句子编码器

与之相对比,另一种方法是使用文本的语言通用嵌入(language-universal encoder),并根据表征构建多语言分类器。如果编码器生成英语句子的嵌入与翻译为其它语言的句子嵌入是非常相似的(即在嵌入空间中距离很近),那么在英语句子嵌入上训练的分类器就可以迁移到用于分类其它语言的句子,实现无线翻译系统的推理任务。

论文对两类跨语言句子编码器做了评估。一类方法使用了基于词嵌入均值的预训练通用多语言句子嵌入 X-CBOX,另一类方法是在 MultiNLI 训练数据上训练的双向 LSTM 句子编码器 X-BILSTM。X-COBW 评估了迁移学习,而 X-BILSTM 则评估了使用领域内数据训练的特定 NLI 编码器。两类方法在对齐多语言句子嵌入空间时使用了同一种对齐损失函数。两类方法在从 BiLSTM 中抽取特征向量时,前者使用了最初的和最终的隐含状态,后者使用的是所有状态的逐元素最大值(element-wise max)。

第一类方法通常作为一种很好的单语言语句嵌入的对比基线。在实现中,论文使用了英语 FastText 词嵌入空间,作为一种固定的、良好调优的到其他语言的嵌入,这样句子中词向量的均值非常接近于句子的英语翻译词向量。第二类方法使用 MultiNLI 训练数据学习的英语句子编码器和目标语言上的编码器,目标是使得两种翻译的表征在嵌入空间中的距离非常近。在这两类方法中使用了固定的英语编码器,训练目标语言的编码器,匹配编码器的输出,构建同一空间中的句子表征。当然,对于改进并简化句子嵌入空间,还可以考虑编码器的联合训练和参数共享等方法,这也将作为该论文的进一步工作。

对齐词嵌入

多语言词嵌入是一种高效的语言间知识迁移方法。论文使用了跨语言嵌入直接实现对齐句子层编码器。跨语言嵌入可以在非常少的监督情况下高效地生成。论文通过使用一个具有五千个词对的小型并行字典,学习了一个线性映射去最小化代价函数:

其中,d 是嵌入的维度;X 和 Y 分别是形状为 (d,n) 的矩阵,对应于出现在并行字典中的对齐词嵌入;\(O_{d}(\mathbb{R})\)是一组维度为 d 的对角矩阵;U 和 V 是由\(YX^{T}\)做 SVD 得到,即\(U\sum V^{T}=SVD(YX^{T})\)。一些现有研究表明,在词翻译任务中对线性映射强制对角约束将,将会给出更好的结果。

通用多语言句子嵌入

已有对通用句子表征的学习基本都是基于英语的。虽然一些研究中也考虑了使用公开可用的并行语料库构建对多种语言可共享的句子编码器,但是面对缺少大规模句子曾语义评估,限制了这些方法的应用。这些方法所考虑的语言规模都没有 XNLI 广泛,并局限于一些具有丰富资源的语言。我们考虑使用 CBOW 编码器的 Common Crawl 嵌入。我们的方法考虑翻译词的 CBOW 表征对在嵌入空间中具有很近的距离。认为多语言句子日安全是预训练的,并只在其上学习分类器,并评估分类器的性能,这类似于在多语言环境中的迁移学习。

对齐句子嵌入

相比于翻译源句子和目标句子对的方法而言,在嵌入空间中训练两者间相似度的方法从概念上更易于理解,计算复杂度也更低。论文提出了一种训练跨语言相似度的方法,并验证了对齐句子表征任务评估方法的有效性。两个并行句子的嵌入可能并不相同,但是它们在嵌入空间中可能具有非常近的距离,这种距离上的相似性可用英语分类器的决策边界捕获。

为了对齐两种不同语言的嵌入空间,论文提出了一种简单的对齐损失函数。在 NLI 上训练英语编码器是,采用了最小化损失函数

\(L(x,y)=dist(x,y)-\lambda (dist(x_{c},y)+dist(x,y_{c}))\)

训练目标编码器。其中,对应于源句子嵌入和目标句子嵌入;\((x_{c},y_{c})\)是对比词(即负向抽样);λ控制了损失函数中负向实例的权重。距离函数使用了 L2 范数\(dist(x,y)=||x-y||\)。排序损失(Ranking Loss)采用:

\(L_{rank}(x,y)=max(0,\alpha -dist(x,y_{c})+dist(x,y))+max(0,\alpha -dist(x_{c},y)+dist(x,y))\)

这使得翻译句子对的嵌入间距离,比导致不好结果的负向句子对嵌入间的距离更近。不同于\(L_{align}\),为使得共享分类器可以理解具有同一意思的句子,\(L_{rank}\)并不强制句子对的嵌入距离必须足够近。

论文对跨语言基线 X-CBOW、X-BILSTM-LAST 和 X-BILSTM-MAX 使用了\(L_{align}\)。对于 X-CBOW,编码器是预训练的,但是没有在 NLI 上调优(即做迁移学习),而 BILSTM 的两个英语基线是在 MultiNLI 训练集上做了训练。在上述三个基线方法中,英语编码器和分类器是固定的。其它十四种语言分别具有自己的编码器,它们具有相同的结构。编码器使用\(L_{align}\)损失函数和并行数据在英语编码器上训练。句子嵌入对齐方法如图三所示。

图三 图示使用句子嵌入对齐的语言

实验

在实验中,翻译系统使用的是 Facebook 内部的一种翻译系统,将英语句子翻译为其它十种语言。图四给出了“翻译测试”方法下的翻译情况,其中每个训练集都翻译为英语句子。使用“翻译训练”方法翻译 MultiNLI 的英语训练数据,翻译质量以 BLEU 分值给出,如图六实验结果所示。大部分语言的分词使用了 MOSES,中文使用了 Stanford 分段,泰语使用了 pythainlp 软件包。



图四 十五种语言的 XNLI 测试准确率

X-CBOW 和 X-BILSTM 使用预训练的 300D 对齐词嵌入,只考虑了词典中最频繁的 50 万个词,通常可覆盖 XNLI 数据集中 98% 的词。对于 BiLSTM 基线,隐含单元数量设置为 512,使用 Adam 优化器作为默认参数。分类器接收参数向量\([u,v,|u-v|,u*v]\),其中 u 和 v 分别是共享编码器给出的前提和假设的嵌入,“*”对应于逐元素乘积运算。对齐损失函数中设置λ=0.25,考虑了正向和负向对重要性之间的权衡情况,如图七实验结果所示。

负向实例采用随机抽样获得。将目标 BiLSTM 编码器拟合到英语编码器中,论文在保持源词嵌入固定的情况下,调优了目标编码器关联的查找表(looup table)。分类器使用了前向反馈神经网络,其中隐含层具有 128 个隐含单元,使用 0.1 丢弃率的 Dropout 做规范化。对于 X-BiLSTM,对每种语言在 XNLI 验证集上执行模型选择。对于 X-CBOW,保留并行语句上的验证集,用于评估对齐损失。但是在确定对齐的损失时,需要每种语言对中句子的并行数据集。

并行数据集

论文使用公开可用的并行数据集,学习英语和目标编码器之间的对齐。对于法语、西班牙语、俄语、阿拉伯语和中文,使用 UN 语料库。对于德语、希腊语和保加利亚语,使用了 Europarl 语料库。对于土耳其语、越南语和泰语,使用了 OpenSubtitles 2018 语料库。印地语使用了 IIT Bombay 大学的语料库。所有上述的语言对,都可以收集到超过 50 万并行语句,论文实验中设置了最大并行语句数量为 200 万。但是对于资源匮乏的语言乌尔都语和斯瓦希里语,并行句子的数据量要呈数量级地小于其它语言。乌尔都语使用了圣经和可兰经文本、OpenSubtitles 2016 和 2018、LDC2010T21、LDC2010T23LDC 语料库,得到合计 6.4 万并行句子。斯瓦希里语使用了 Global Voices 和 Tanzil 可兰经文本语料库,只能收集到 4.2 万条并行句子。

对比分析

图五给出了语言间性能情况。使用 BiLSTM 时,BiLSTM-max 的性能总是优于 BiLSTM-last。而 BiLSTM 类基线普遍优于 CBOW 类基线方法。BiLSTM 编码器也优于 CBOW,即便是在 MultiNLI 训练集上调优了词嵌入。该实验说明,正如前期一些研究所指出的,NLI 任务需要的不仅仅是词的信息。



图五 各类方法训练中对齐损失的变化情况,观测到的\(L_{align}\)与准确性的关系

图六显示了翻译给出的 XLU 的基线。“翻译测试”方法在所有语言上看上去总是优于“翻译训练”。在评估中,最优的跨语言结果来自于“翻译测试”。在使用翻译方法时,跨语言性能取决于翻译系统的性能。事实上,基于翻译的结果与翻译系统的 BLEU 分值具有很好的相关性。导致性能偏差的主要原因包括翻译误差、文风变化,以及由翻译系统引入的训练与测试数据集之间的差异。



图六 多语言词嵌入训练模型(XX-En) P@1 的 BLUE 分值

对于跨语言性能,实验观察到英语结果和其它语言的结果存在这一定差距。图六显示了在三种语言上的验证准确性,其中使用了具有不同训练超参数的 BiLSTM-max。调优嵌入并未显著地影响结果,这表明 LSTM 本身就确保了并行句子嵌入的对齐。



图七 使用 BiLSTM-max 情况下的验证准确性

结论

缺少英语以外其它语言(尤其是一些资源匮乏语言)的语料库,这是工业级应用中面对的一个现实问题。考虑到为每种语言生成标记数据是不现实的做法,因此在各语言场景下的跨语言理解和低资源迁移得到了广泛的关注。XNLI 论文的工作扩展了 MultiNLI 语料库到十五种语言,设计用于解决在跨语言理解中缺少语料库的问题,并希望能有助于研究社区进一步推动这一领域研究的发展。论文还给出了对多种基于跨语言编码器和翻译系统的评估。虽然机器翻译基线在实验中给出了最优的结果,但是这些方法在训练和测试中依赖于计算强度很大的翻译模型。

查看英文原文: XNLI: Evaluating Cross-lingual Sentence Representations

感谢蔡芳芳对本文的审校。

2018-10-11 18:243577
用户头像

发布了 391 篇内容, 共 125.1 次阅读, 收获喜欢 255 次。

关注

评论

发布
暂无评论
发现更多内容

分布式事务 - 三种常见的解决方案

Java收录阁

分布式事务

架构师必备的ToB产品交付之双轮驱动思维模型

常平

产品 极客大学架构师训练营

N皇后问题之位运算解法

孙苏勇

算法 DFS 位运算

React之Context源码分析与实践

费马

源码分析 React useContext Context React-Router

csapp-chapter2

卓丁

深入理解计算机系统 csapp

路径依赖 - 偶然决策导致的依赖。

石云升

思维模型 路径依赖 网络效应 沉没成本 价值网依赖

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(五)

图雀社区

Vue Node

为什么你成不了「超级个体」?

非著名程序员

程序员 互联网 提升认知 认知提升

重磅推出:第14份年度敏捷状态报告(最新2020)

Bob Jiang

敏捷 调查报告 state of agile

csapp-chapter1

卓丁

深入理解计算机系统 csapp

大话设计模式 | 0 面向对象基础

Puran

C# 设计模式

愚蠢写作术(2):怎么让你的文章变得冷冰冰

史方远

学习 个人成长 写作

ArrayList浅析

章小传

Java collection 原理 ArrayList

Sula - 可能是西湖区最好用的antd配置框架

开远

大前端 antd sula 配置化开发

JDK 15 都发布了,可 Java 8 依然是最爱

古时的风筝

Java Java 25 周年 Java版本

科学提升认知方法之贝叶斯公式

奈学教育

贝叶斯公式

JUC整理笔记五之梳理Varhandle(下)

JFound

Java

SpringCloud-OpenFeign源码

云淡风轻

Spring Cloud

【译文】为什么说Rust是机器人技术的未来

袁承兴

rust 机器人 嵌入式

自定义 SpringBootStarter

子路无倦

做一个纸上谈兵的项目经理

escray

多来点胜利,对冲颓丧

zhoo299

成长 备忘

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(四)

图雀社区

Vue Node

我的个人知识管理方法

lidaobing

个人成长 知识管理 PKM

GitHub上10个不可错过的另类有趣项目

码农神说

GitHub 开源 程序员

中台上线半年,我总结出了“七宗罪”

punkboy

中台 企业中台 后台开发 业务中台 后台

源码分析 | 像盗墓一样分析Spring是怎么初始化xml并注册bean的

小傅哥

源码分析 小傅哥 spring源码 bean注入过程

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(三)

图雀社区

vue.js Vue Node

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(六)

图雀社区

node.js Vue

如何让解决无法访问 GitHub 的问题?

JackTian

GitHub

除了公关,我还能为公司做点什么?(系列1)

邓瑞恒Ryan

学习 个人成长 自我管理 成长 职业成长

FAIR重磅发布大规模语料库XNLI:支持15种语言,解决跨语言理解难题_语言 & 开发_盖磊_InfoQ精选文章