Facebook 开源增强版 LASER 库:可实现 93 种语言的零样本迁移
雷锋网 AI 科技评论按:去年 12 月份,Facebook 在论文中提出了一种可学习 93 种语言的联合多语言句子表示的架构,该架构仅使用一个编码器,就可以在不做任何修改的情况下实现跨语言迁移,为自然语言处理领域带来了较大的突破性进展。而近日,Facebook 开源了扩展和改进后的 LASER 工具包,该工具包可应用于使用 28 种不同的字符串编写的 90 多种语言。 LASER 开源「大礼包」中一同开源的还有多语言编码器、PyTorch 代码,以及面向 100 多种语言的多语言测试集。Facebook 将这项成果在其官网上进行了报道,雷锋网 (公众号:雷锋网) AI 科技评论编译如下。
为了加速 NLP 应用在更多语言上的部署,Facebook 对 LASER (Language-Agnostic SEntence Representations)工具包进行了扩展和改进。LASER 是首个可探索多语言句子表示的工具包,Facebook 日前对其实现了开源并共享在 NLP 社区。该工具包现在可应用于使用 28 种不同的字符串编写的 90 多种语言,也就是说,它将所有语言一同嵌入到一个独立的共享空间中(而不是为每一种语言都创建一个单独的模型),从而实现在 90 多种语言中的应用。此外,一同开源的还有多语言编码器、PyTorch 代码,以及面向 100 多种语言的多语言测试集。
LASER 开源地址(含多语言编码器、PyTorch 代码、面向 100 多种语言的多语言测试集): https://github.com/facebookresearch/LASER
LASER 为实现 NLP 模型从一种语言(如英语)到其他许多种语言(包括训练数据极度有限的语言)的零样本迁移带来了可能。它是首个可以使用单个模型来处理多种语言(包括低资源语言,如卡拜尔语、维吾尔语以及吴语等方言)的开发库。有朝一日,这项工作或许有助于 Facebook 以及其他公司推出特定的 NLP 功能,例如将某种语言的电影评论分类为正面或负面评论,并随后将这些评论用其他 100 多种语言展示出来。
性能和功能亮点
针对 XNLI 语料库的 14 种语言,LASER在其中 13 种语言的零样本跨语言自然语言推理任务上实现了当前最佳的准确率。同时,它还在跨语言文本分类((MLDoc 语料库)上取得了很不错的结果。基于 LASER,句子嵌入在平行语料库的挖掘上的表现也很强大,并在 BUCC 4 个语言对中的 3 个语言对的共享任务上取得了最佳表现(BUCC 即 2018 Workshop on Building and Using Comparable Corpora)。除了 LASER 工具包以外,Facebook 还共享了一个基于 Tatoeba 语料库的 100 多种语言的对齐句子的新测试集。句子嵌入通过使用该数据集,可以在多语言相似性搜索上得到很好的结果,即使是在低资源的语言中也是如此。
此外,LASER 还具有以下几个优势:
它的运行速度非常快,在 GPU 上每秒能处理约 2000 个句子;
只需要很少的外部依赖,就能使用 PyTorch 实现句子编码器;
资源有限的语言可以从多种语言的联合训练中收益;
模型支持在一个句子中使用多种语言;
随着新语言的增加以及系统学习识别该语言语系的特征,相关的任务性能能够得到增强。
通用的和语言无关的句子嵌入
LASER 的句子向量表示对于输入语言和 NLP 任务都是通用的,它将任一语言的句子映射到高维空间中的一个点,目标是让所有语言同样的表述落在相同的区域内。这种表示可以被视作语义向量空间的一种通用语言。Facebook 观察到在该空间中的句子距离与句子语义接近度非常相关。
图左展示了一个单语嵌入空间;图右则展示了 LASER 的方法——将所有语言嵌入到一个独立的共享空间中。
LASER 的方法建立在于神经机器翻译相同的底层技术上:编码器/解码器方法,也就是序列到序列处理。Facebook 为所有的输出语言使用一个共享编码器,并使用一个共享解码器来生成输出语言,其中,编码器是一个五层双向的 LSTM 网络(长短时记忆网络)。与神经机器翻译相比,LASER 这一方法不使用注意力机制,而是使用 1024 维固定大小的向量来表示输出句子,这个向量则是通过对 BiLSTM 最终的状态进行最大池化所获得的。这使得研究人员可以比较句子表示并将它们直接输入到分类器中。
这张图展示了 LASER 的架构。
这些句子嵌入通过线性变换对解码器 LSTM 进行初始化,并在每个时间步连接到它的输入嵌入上。编码器和解码器之间没有其他的连接,因为 Facebook 希望通过句子嵌入来捕获输入序列的所有相关信息。
解码器需要被告知生成哪种语言,同时获取一个在每个时间步都连接到输入和句子嵌入上的语言标识嵌入。Facebook 使用联合字节对编码(BPE)词汇表,来进行在所有训练语料库的连接上训练的 5000 项操作。由于编码器没有指示输入语言的显式信号,因而该方法鼓励它去学习与语言无关的表示。Facebook 在与英语和西班牙语对齐的公共平行数据中的 2.23 亿个句子上训练他们的系统,对于每个小批量,他们都随机选择一种输入语言,并训练系统将句子翻译成英语或者西班牙语。大多数语言都与目标语言保持对齐,不过并不要求它们必须对齐。
这项工作开展之初,Facebook 只在不到 10 种欧洲国家的语言上训练模型,并且这些语言都用相同的拉丁语脚本进行编写。随着 Europarl 语料库中的语言逐渐增加到 21 种语言,Facebook 发现增加的语言越多,多语言迁移的表现就越好。这个系统也学到了语系的通用特征。通过这些方法,低资源的语言可以从同语系的高资源语言的资源中受益。
通过使用在所有语言的连接上进行了训练的共享 BPE 词汇表,这一切成为可能。对每种语言的 BPE 词汇分布之间的对称化的 Kullback-Leiber 距离进行的分析和分类,展现出其与从语言上定义的语系是完全相关的。
这张图片展示了 LASER 自动发现的各种语言之间的关系,它们与语言学家人为定义的语系分类高度一致。
之后,Facebook 的研究人员意识到单个共享 BiLSTM 编码器可以处理多个脚本,并逐渐将其扩展到所有他们确定可以免费获得平行文本的语言。融入到 LASER 的 93 种语言包括主动宾(SVO)顺序的语言(如英语)、主宾动(SOV)顺序的语言(如孟加拉语和土耳其语)、动主宾(VSO)顺序的语言(如塔加路语和柏柏尔语),甚至是动宾主(VOS)顺序的语言(如马达加斯加语)。
该编码器能够泛化到训练期间没有用到过(即便被用作单语言文本)的语言上,Facebook 的研究人员观察到这一编码器在方言以及地域性的语言上(如阿斯图里亚斯语、法罗语、弗里西语、卡舒比语、北摩鹿加语、皮埃蒙特语、斯瓦比亚语、索布语)的表现也非常强大。这些语言与其他主要语言都有不同程度上的相同点,不过它们各自的语法和特定词汇都不相同。
上表展示了 LASER 在 XNLI 语料库上的零样本迁移性能(资料来源:Conneau 等人所作的论文 Evaluating Cross-lingual Sentence Representations,EMNLP 2018收录论文,论文查看地址:https://aclweb.org/anthology/D18-1269)。BERT 模型的结果提取自它的 GitHub README。(注意:这些结果是通过 PyTorch 1.0 实现获得的,因此数值上会和使用了 PyTorch 0.4 的论文中的数据有所不同)。
零样本、跨语言的自然语言推理
该模型在跨语言自然语言推理(NLI)上获得了出色的结果,其在这一任务上的表现也表明了该模型能够很好地表示句子的意义。Facebook 的研究人员考虑进行零样本设置,换句话说,就是研究人员在没有微调或者目标语言资源的情况下,在英语上训练 NLI 分类器,然后将它应用到目标语言中。对于 14 种语言,使用零样本的模型在其中的 8 种语言(包括与英语关系很远的俄语、汉语以及越南语等)上的性能是其在英语上的性能的 5% 以内。同时,该模型也在斯瓦希里语和乌尔都语等低资源的语言上表现出色。最终,对于 14 种语言,LASER 在其中的 13 种语言上的零样本迁移表现,都超越了此前的所有方法。
与此前要求句子一定要用英语表示的方法相比,Facebook 的系统完全可以使用多种语言,并且还支持任意组合不同语言的前提和假设。
这张图展示了 LASER 是如何确定 XNLI 数据集中不同语言的句子之间关系的。以前的方法只会考虑同一语言的前提和假设。
这一完全相同的句子编码器同样也被应用于挖掘大型单语言文本集的平行数据。Facebook 研究人员仅需要计算出所有句子对之间的距离并选择出离得最近的那一对。这种方法通过考虑最临近的句子以及其他最临近的相邻句子之间的间隔而得到进一步改进。这一搜索通过使用 Facebook 的 FAISS 开发库(开发库地址: https://code.fb.com/data-infrastructure/faiss-a-library-for-efficient-similarity-search/ )得以高效完成。
该方法在共享的 BUCC 任务上的表现明显超越了当前最好的结果。这个获胜的系统就是专为该任务所设计的,基于这个系统,Facebook 研究人员把德/英的 F1 分数从 85.5 提高到了 96.2、法/英的 F1 分数从 81.5 提升到了 93.9、俄/英从 81.3 改进到 93.3、中/英从 77.5 到 92.3。这些案例表明了,Facebook 所实现的结果在所有语言上都高度均匀。
同样的方法也适用于使用任意语言对来挖掘 90 多种语言的平行数据。这一方法有望显著地改进大量依赖于平行训练数据的 NLP 应用,包括低资源语言的神经机器翻译。
未来的应用
LASER 开发库也可被应用于其他相关任务,例如多语言语义空间的属性可被应用于在 LASER 所支持的同一种语言或者其他 93 种语言中,对句子进行意译或者搜索意义相似的句子。Facebook 表示,未来还将将会继续改进模型,为开发库增加这 93 种语言以外的更多语言。
via: https://code.fb.com/ai-research/laser-multilingual-sentence-embeddings/
另附:
大家如果想对该方法进行更具体的了解,可前往阅读 Facebook 与 Mikel Artetxe 合作的研究论文 Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond
论文地址: https://arxiv.org/abs/1812.10464
论文简介:
本文介绍了一种可学习 93 种语言(这些语言属于 30 多个不同语族,且用 28 种不同的脚本编写)的联合多语言句子表征的架构。该系统使用单个 BiLSTM 编码器和所有语言共享的 BPE 词汇表,其中,编码器与一个辅助解码器耦合,并在公开的平行语料库上进行训练。这使得研究人员能够基于最终句子嵌入,仅使用英文标注数据就学习一个分类器,并且在不做任何修改的情况下将该分类器迁移到 93 种语言中的任意一种中。在 XNLI 数据集上的 14 种语言(1 种语言除外)中,该方法在零样本跨语言自然语言推断上的表现取得了当前最佳成绩,并且在跨语言文本分类(MLDoc 数据集)上也取得了颇具竞争力的结果。该研究中的句子嵌入在平行语料库挖掘上的表现也非常强大,在 BUCC 共享任务的共 4 个语言对中的 3 个中都获得了当前最佳表现。最后,研究人员引入了 一个基于 Tatoeba 语料库创建的包含 122 种语言的对齐句子的新测试集,并证明此项研究中的句子嵌入在多语言相似性搜索中取得了非常出色的结果,即使是在低资源的语言中也是如此。论文中提到的 PyTorch 实现、预训练编码器和多语言测试集将免费开放。 雷锋网
。