GMTC 全球大前端技术大会(北京站)门票 9 折特惠中,点击立减 ¥480 了解详情
写点什么

基于深度迁移学习的多语种 NLP 技术原理和实践

2020 年 7 月 01 日

基于深度迁移学习的多语种NLP技术原理和实践

编者按

百分点是国内最早布局国际市场、并成功探索出一条海外之路的数据智能技术企业,目前百分点已服务海外多个国家,向亚洲、非洲、拉美等多个国家和地区提供国家级数据智能解决方案,帮助当地政府实现数字化和智能化转型,对当地产生深远影响。全球存在着几千种语言,这是自然语言处理研究者们的巨大噩梦,因为大多数语言都是数据稀疏的,研究者找不到足够多的数据来单独训练成熟模型。不同于国内认知智能产品以中文为主,百分点为海外国家提供服务就必须解决多语种 NLP 的难题。本文中我们将会详细介绍目前多语种 NLP 常用的工具、前沿的算法以及百分点在实际业务中的实验结果等。


目录

1. Polyglot 介绍

2. 基于 BERT 的方法

  • Transformer

  • MLM

  • NSP

  • 3. Multilingual BERT

  • 4. XLM

  • 5. XLMR

  • 6. 百分点在实际业务数据上的实验结果

  • 主题分类任务上效果

  • 情感分类任务上的效果

  • NER 任务上的效果

  • 7. 内容总结


全球存在着几千种语言,这就对 NLP 研究者带来了巨大的难题,因为在一个语种上训练的模型往往在另外一个语种上完全无效,而且目前的 NLP 研究以英语为主,很多其他语种上面临着标注语料严重不足的困境。在跨语种 NLP 研究方面,业界已经做了不少研究,比较有代表性的有 polyglot、以及近年来比较火的基于深度迁移学习的 Multilingual BERT、XLM、XLMR 等。


一、Polyglot 介绍

Polyglot 最早是由 AboSamoor 在 2015 年 3 月 16 日在 GitHub 上开源的项目,支持众多语种的分词、实体识别、词性标注、情感分析等任务。


以 NER 任务为例,Polyglot 在实现某个语种的 NER 任务时,其实现方式大致为:首先基于该语种的 Wikipedia 数据训练该语种的分布式词向量;然后根据 Wikipedia 链接结构和 Freebase 属性自动生成 NER 的标注数据;最后把 NER 当做一个 word 级别的分类任务,通过一个浅层的神经网络进行学习。


Polyglot 虽然能实现多语种的多个 NLP 任务,但是在实际应用中的效果并不理想,原因可能有以下几个方面:


a. Polyglot 是通过对多个单语种的数据分别进行对应任务的学习,并不支持跨语种的 NLP 任务;


b. Polyglot 是通过 Wikipedia 链接结构和 Freebase 属性来生成一些 NLP 任务的标注数据,可能存在生成的标注数据质量不高的问题;


c. Polyglot 在一些 NLP 任务中使用的模型是浅层的神经网络,有进一步的提升空间。


二、基于 BERT 的方法

BERT 抛弃了传统的 LSTM,采用特征抽取能力更强的 Transformer 作为编码器,并通过 MLM(Masked Language Model, 遮掩语言模型)和 NSP(Next-Sentence Predict)两个预训练任务,在海量数据上进行学习,相较于普通的语言模型,能够学习到更好的文本表示。BERT 采用 pre-train+fine-tuning 的方式,对于一个具体 NLP 任务,只需对 BERT 预训练阶段学习到的文本表示进行 fine-tuning 就能达 state-of-the-art 的效果。


2.1 Transformer

Transformer 模型是 2018 年 5 月提出的一种新的架构,可以替代传统 RNN 和 CNN,用来实现机器翻译。无论是 RNN 还是 CNN,在处理 NLP 任务时都有缺陷。CNN 是其先天的卷积操作不太适合处理序列化的文本,RNN 是不支持并行化计算,很容易超出内存限制。下图是 transformer 模型的结构,分成左边 encoder 和右边的 decoder,相较于常见的基于 RNN+attention 的 encoder-decoder 之间的 attention,还多出 encoder 和 decoder 内部的 self-attention。每个 attention 都有 multi-head 特征,multi-head attention 将一个词的 vector 切分成 h 个维度,可以从不同的维度学到不同的特征,相较于全体空间放到一起更加合理。最后,通过 position encoding 加入没考虑过的位置信息。



图 1.transformer 结构


BERT 中使用 transformer 的 encoder 部分作为编码器,base 版和 large 版分别使用了 12 层和 24 层的 transformer encoder。



图 2.BERT 结构


2.2 MLM

在 BERT 中,提出了一种叫做 MLM 的真正的双向语言模型。不像传统语言模型那样给定已经出现过的词,去预测下一个词,只能学习单向特征,MLM 是直接把整个句子的一部分词(随机选择)遮掩住(masked),然后让模型利用这些被遮住的词的上下文信息去预测这些被遮住的词。遮掩方法为:有 80%的概率用“[mask]”标记来替换,有 10%的概率用随机采样的一个单词来替换,有 10%的概率不做替换。


2.3 NSP

BERT 另外一个创新是在双向语言模型的基础上增加了一个句子级别的连续性预测任务。这个任务的目标是预测两个句子是否是连续的文本,在训练的时候,输入模型的第二个片段会以 50%的概率从全部文本中随机选取,剩下 50%的概率选取第一个片段的后续的文本。考虑到很多 NLP 任务是句子关系判断任务,单词预测粒度的训练到不了句子关系这个层级,增加这个任务有助于下游句子关系判断任务。


三、Multilingual BERT

Multilingual BERT 即多语言版本的 BERT,其训练数据选择的语言是维基百科数量最多的前 100 种语言。每种语言(不包括用户和 talk 页面)的整个 Wikipedia 转储都用作每种语言的训练数据。但是不同语言的数据量大小变化很大,经过上千个 epoch 的迭代后模型可能会在低资源语种上出现过拟合。为了解决这个问题,采取在创建预训练数据时对数据进行了指数平滑加权的方式,对高资源语言(如英语)将进行欠采样,而低资源语言(如冰岛语)进行过采样。


Multilingual BERT 采取 wordpiece 的分词方式,共形成了 110k 的多语种词汇表,不同语种的词语数量同样采取了类似于训练数据的采样方式。对于中文、日文这样的字符之间没有空格的数据,采取在字符之间添加空格的方式之后进行 wordpiece 分词。


在 XNLI 数据集(MultiNLI 的一个版本,在该版本中,开发集和测试集由翻译人员翻译成 15 种语言,而训练集的翻译由机器翻译进行)上 Multilingual BERT 达到了 SOTA 的效果。



图 3.Multilingual BERT 在 XNLI 上的效果


上面实验结果的前两行是来自 XNLI 论文的基线,后面四行是使用 Multilingual BERT 得到的结果。mBERT-Translate Train 是指将训练集从英语翻译成其它语种,所以训练和测试都是用其它语种上进行的。mBERT-Translate Test 是指 XNLI 测试集从其它语种翻译成英语,所以训练和测试都是用英语进行的。Zero Shot 是指对 mBERT 通过英语数据集进行微调,然后在其它语种的数据集中进行测试,整个过程中不涉及到翻译。


四、XLM

XLM 是 Facebook 提出的基于 BERT 进行优化的跨语言模型。尽管 Multilingual BERT 在超过 100 种语言上进行预训练,但它的模型本身并没有针对多语种进行过多优化,大多数词汇没有在不同语种间共享,因此能学到的跨语种知识比较有限。XLM 在以下几点对 Multilingual BERT 进行了优化:


a. XLM 的每个训练样本包含了来源于不同语种但意思相同的两个句子,而 BERT 中一条样本仅来自同一语言。BERT 的目标是预测被 masked 的 token,而 XLM 模型中可以用一个语言的上下文信息去预测另一个语言被 masked 的 token。


b. 模型也接受语言 ID 和不同语言 token 的顺序信息,也就是位置编码。这些新的元数据能帮模型学习到不同语言的 token 间关系。


XLM 中这种升级版的 MLM 模型被称作 TLM(Translation Language Model, 翻译语言模型)。XLM 在预训练时同时训练了 MLM 和 TLM,并且在两者之间进行交替训练,这种训练方式能够更好的学习到不同语种的 token 之间的关联关系。在跨语种分类任务(XNLI)上 XLM 比其他模型取得了更好的效果,并且显著提升了有监督和无监督的机器翻译效果。


五、XLMR

XLMR(XLM-RoBERTa)同是 Facebook 的研究成果,它融合了更多的语种更大的数据量(包括缺乏标签的的低资源语言和未标记的数据集),改进了以前的多语言方法 Multilingual BERT,进一步提升了跨语言理解的性能。同 BERT 一样,XLMR 使用 transformer 作为编码器,预训练任务为 MLM。XLMR 主要的优化点有三个:


a. 在 XLM 和 RoBERTa 中使用的跨语言方法的基础上,增加了语言数量和训练集的规模,用超过 2TB 的已经过处理的 CommonCrawl 数据以自我监督的方式训练跨语言表示。这包括为低资源语言生成新的未标记语料库,并将用于这些语言的训练数据量扩大两个数量级。下图是用于 XLM 的 Wiki 语料库和用于 XLMR 的 CommonCrawl 语料库中出现的 88 种语言的数据量,可以看到 CommonCrawl 数据量更大,尤其是对于低资源语种。



图 4.XLMR 和 XLM 的训练数据对比


b. 在 fine-tuning 阶段,利用多语言模型的能力来使用多种语言的标记数据,以改进下游任务的性能。使得模型能够在跨语言基准测试中获得 state-of-the-art 的结果。


c. 使用跨语言迁移来将模型扩展到更多的语言时限制了模型理解每种语言的能力,XLMR 调整了模型的参数以抵消这种缺陷。XLMR 的参数更改包括在训练和词汇构建过程中对低资源语言进行上采样,生成更大的共享词汇表,以及将整体模型容量增加到 5.5 亿参数。


XLMR 在多个跨语言理解基准测试中取得了 SOTA 的效果,相较于 Multilingual BERT,在 XNLI 数据集上的平均准确率提高了 13.8%,在 MLQA 数据集上的平均 F1 得分提高了 12.3%,在 NER 数据集上的平均 F1 得分提高了 2.1%。XLMR 在低资源语种上的提升更为明显,相对于 XLM,在 XNLI 数据集上,斯瓦希里语提升了 11.8%,乌尔都语提升了 9.2%。


六、百分点在实际业务数据上的实验结果

先明确两个概念,单语种任务:训练集和测试集为相同语种,跨语种任务:训练集和测试集为不同语种。


6.1 主题分类任务上效果

模型训练集(数据量)测试集(数据量)指标(F1)
XLMR-base英语(1w)英语(1w)0.716
法语(1w)0.674
泰语(1w)0.648
mBERT-base英语(1w)英语(1w)0.700
法语(1w)0.627
泰语(1w)0.465


主题分类是判断一段文本是属于政治、军事等 10 个类别中哪一个。实验中分别使用 XLMR 和 Multilingual BERT 在 1w 的英语数据上进行训练,然后在英语、法语、泰语各 1 万的数据上进行测试。可以看到无论是单语种任务还是跨语种任务上,XLMR 的效果都优于 Multilingual BERT,跨语种任务上的优势更明显。


6.2 情感分类任务上的效果

模型训练集(数据量)测试集(数据量)效果(F1)
XLMR-base法语(9k)法语(1.5k)0.738
阿语(586)0.591
阿语(2.5k)阿语(586)0.726
法语(1.5k)0.425
mBERT-base法语(9k)法语(1.5k)0.758
阿语(586)0.496
阿语(2.5k)阿语(586)0.716
法语(1.5k)0.364


情感分类任务是判断一段文本所表达的情感是正面、负面或中立。实验中分别对 XLMR 和 BERT 做了单语种任务的对比和跨语种任务的对比,可以看到在单语种任务中 BERT 和 XLMR 的效果差别不明显,而在跨语种任务中 XLMR 明显优于 Multilingual BERT。


6.3 NER 任务上的效果

模型训练集(数据量)测试集(数据量)指标(F1)
XLMR-base法语(5w)法语(3.4w)0.897
阿语(4k)0.525
mBERT-base法语(5w)法语(3.4w)0.916
阿语(4k)0.568


NER 任务是抽取一段文本中实体,实体包括人名、地名、机构名。在该实验中,XLMR 表现一般,不管是单语种任务还是跨语种任务上,效果比 Multilingual BERT 要略差一些。


七、内容总结

Multilingual BERT 使用特征抽取能力更强的 transformer 作为编码器,通过 MLM 和 NSP 在超过 100 种语言上进行预训练,但它的模型本身并没有针对多语种进行过多优化。而 XLM 对 Multilingual BERT 进行了优化,主要是增加了 TML 预训练任务,使模型能学习到多语种 token 之间的关联关系。XLMR 结合了 XLM 和 RoBERTa 的优势,采用了更大的训练集,并且对低资源语种进行了优化,在 XNLI、NER CoNLL-2003、跨语种问答 MLQA 等任务上,效果均优于 Multilingual BERT,尤其是在 Swahili、Urdu 等低资源语种上效果提升显著。


在百分点实际业务数据的测试中,目前已经在英语、法语、阿语等常规语种上进行测试,无论是单语种任务还是跨语种任务,整体来看 XLMR 的效果要优于 Multilingual BERT。想要实现在一种语种上进行模型训练,然后直接在另外一种语种上进行预测这样的跨语种迁移,仍需要相关领域进一步深入的探索。


Google 近期发布了一个用于测试模型跨语种性能的基准测试 Xtreme,包括了对 12 种语言家族的 40 种语言进行句子分类、句子检索、问答等 9 项任务。在 Xtreme 的实验中,先进的多语言模型如 XLMR 在大多数现有的英语任务中已达到或接近人类的水平,但在其它语言尤其是非拉丁语言的表现上仍然存在巨大差距。这也表明,跨语言迁移的研究潜力很大。不过随着 Xtreme 的发布,跨语种 NLP 的研究肯定也会加速,一些激动人心的模型也会不断出现,让我们共同期待。


参考资料


[1] https://github.com/google-research/bert/blob/master/multilingual.md


[2] https://static.aminer.cn/misc/pdf/1911.02116.pdf


[3] https://www.lyrn.ai/2019/02/11/xlm-cross-lingual-language-model/


[4] https://arxiv.org/pdf/1410.3791v1


[5] https://github.com/google-research/xtreme


本文转载自公众号百分点(ID:baifendian_com)。


原文链接


https://mp.weixin.qq.com/s/ekXCHAvo1PiOerhNBWUQrg


2020 年 7 月 01 日 14:05984

评论

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

淘宝的商品中心和类目体系是怎么设计的

邴越

阿里 模型 电商 架构· 业务

面试加分项!零基础如何成为高级Android开发,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

阿里大佬手码的SpringCloud+Alibaba笔记开源了,堪称保姆式教学

Crud的程序员

spring 程序员 架构

2021全新iOS学习方向

ios 逆向

GrowingIO SaaS 产品 CI/CD 实践 (一)

GrowingIO技术专栏

ci SaaS CD

面试加分项!我在美团Android研发岗工作的那5年,系列篇

欢喜学安卓

android 程序员 面试 移动开发

PM必备自我管理工具整理

做人没有梦想和咸鱼有什么区别

项目管理 PM

一周信创舆情观察(1.25~1.31)

统小信uos

🌏 超详细 DNS 协议解析

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

图扑物联助力打造现代化智能港口

一只数据鲸鱼

物联网 工业4.0 组态软件 智慧港口

OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践

阿里巴巴云原生

人工智能 容器 运维 云原生 k8s

原来这就是大厂的MySQL主从复制、读写分离及高可用方案!

云流

MySQL 数据库 架构

开放下载!解锁 Serverless 从入门到实战大“橙”就

阿里巴巴云原生

云计算 Linux Serverless 开发者 云原生

基于SpringBoot的微服务架构与K8S容器部署实践

云流

Java 架构 微服务

徒手撸一个Spring Boot中的starter

田维常

springboot

16张图带你吃透Redis架构演进

Kaito

redis 架构 高性能

“新内容 新交互” 阿里云全球视频云创新挑战赛正式开启!

阿里云视频云

阿里云 音视频 应用

源中瑞智慧社区解决方案---助推平安小区建设

135深圳3055源中瑞8032

区块链知识产权保护解决方案,区块链存证解决方案

135深圳3055源中瑞8032

太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己

Crud的程序员

Java 程序员 架构

LeetCode题解:529. 扫雷游戏,DFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

28天总结

张老蔫

28天写作

互助系统软件开发,互助app开发

luluhulian

您的《操作系统线程模型总结》请查收。

后台技术汇

28天写作 2月春节不断更

《iOS面试简历技巧解析》

ios 面试

【春节不远行,云上过大年】来华为云社区,接任务领新年红包啦···

华为云开发者社区

华为云

一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群

刘悦的技术博客

flask k8s kubectl Docker Desktop gunicorn

2021年 区块链最火的app爱打卡

v16629866266

今年我读了四个开源项目的源码,来分享下心得

yes的练级攻略

源码 面试 后端

腾讯云TcaplusDB获新加坡MTCS最高等级安全认证

TcaplusDB

数据库 nosql 数据安全 数据管理 tencentdb

以终为始:28天打卡输出复盘

熊斌

个人成长 写作平台 28天写作

DIY 的 Kubernetes 集群的稳定性保障实践

DIY 的 Kubernetes 集群的稳定性保障实践

基于深度迁移学习的多语种NLP技术原理和实践-InfoQ