【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

  • 2020-07-01
  • 本文字数:6220 字

    阅读完需:约 20 分钟

基于深度迁移学习的多语种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


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-07-01 14:051751

评论

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

数据库每日一题---第14天:用户推荐人

知心宝贝

数据库 云计算 前端 后端 6月月更

归并排序

工程师日月

6月月更

V1签名校验

北洋

Andriod 6月月更

元宇宙来袭的五个趋势

CECBC

JVM调优简要思想及简单案例-JVM的内存区域大致划分

zarmnosaj

6月月更

Flutter macOS 模板 – Flutter macOS Drawer Widget 示例

坚果

6月月更

正式上架!TDengine 插件入驻 Grafana 官网

TDengine

数据库 tdengine Grafana

一款可以实现内网脱机分享文档的接口测试软件

Xd

Java 数据库 后端 API 接口测试软件

DAO模式的发展现状,M-DAO如何用技术实现领先

股市老人

通过DAO的现状,看Web3最具影响力的基础设施M-DAO

EOSdreamer111

如何分析排序算法

乌龟哥哥

6月月更

flutter系列之:查询设备信息的利器:MediaQuery

程序那些事

flutter 程序那些事 6月月更

Android 自定义View之随机数验证码

yechaoa

android 自定义view 6月月更

Java Core 「9」J.U.C 同步工具类-1

Samson

学习笔记 Java core 6月月更

重磅升级,FinClip 2.0正式发布!

FinClip

时序数据库在卷烟厂中的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

居家办公必备神器之视频会议|社区征文

liuzhen007

视频会议 初夏征文

linux之我常用的系统重要文件备份命令

入门小站

Linux

模块四作业

Elvis FAN

【愚公系列】2022年06月 通用职责分配原则(四)-高内聚原则

愚公搬代码

6月月更

用Python手动实现LRU算法

IT蜗壳-Tango

6月月更

字符串的常用方法

Jason199

js 字符串处理 6月月更

远程办公三部曲 - 如何合理安排时间| 社区征文

耳东@Erdong

远程办公 6月月更 初夏征文 时间安排

spring4.1.8扩展实战之六:注册bean到spring容器(BeanDefinitionRegistryPostProcessor接口)

程序员欣宸

Java spring 6月月更

如何防止NFT行业被污名化?

CECBC

微服务如何拆分

阿泽🧸

微服务 6月月更

Java的面试技术点

卢卡多多

Java 面试官 6月月更

在线文本列表空行过滤工具

入门小站

工具

在线JSON转YAML工具

入门小站

工具

Docker 实用技巧一

Nick

Docker 容器 实用技巧 6月月更 实操

HDFS用了这个优化后,性能直接翻倍

hncscwc

大数据 hadoop hdfs 6月月更

基于深度迁移学习的多语种NLP技术原理和实践_开源_百分点认知智能实验室_InfoQ精选文章