字节跳动 | AMBERT:一种多粒度Tokenization的预训练语言模型

2020 年 9 月 25 日 学术头条

论文标题:AMBERT: A Pre-trained Language Model with Multi-Grained Tokenization(多粒度分词的预训练语言模型AMBERT)

作者:Xinsong Zhang, Hang Li

机构:字节跳动

论文地址:https://www.aminer.cn/pub/5f48cdef91e011096f956039

摘要

以BERT为代表的预训练语言模型在自然语言理解(NLU)中的霸主地位毋庸置疑。这些模型中的token通常是细粒度的,对于英文,token是单词或子词;对于中文这类语言,token则是单个汉字。在英语中也存在多个单词组成的自然词汇单元,例如New York,因此使用粗粒度的tokenization也是合理的。事实上,细粒度和粗粒度tokenization对于预训练语言模型的学习各有利弊。据此,字节跳动提出联合使用细粒度和粗粒度的预训练语言模型:AMBERT。对于英文,将tokenization之后得到的细粒度(一串的单词)信息和粗粒度(一串的短语)信息输入到AMBERT,细粒度和粗粒度分别使用一个encoder,这2个encoder仅仅是嵌入层参数不同,其他参数共享,从而获取词级别的上下文表征和短语级别的上下文表征。在中文上的细粒度和粗粒度分别对应字和词。在中英文benchmark(包括CLUE, GLUE, SQuAD and RACE)上分别进行实验。结果表明,AMBERT模型在几乎所有情况下都优于现有性能最好的模型,特别是对中文的性能改善显著。

模型

AMBERT的整体框架如Figure 3所示。先对输入文本上进行tokenization,以获得细、粗粒度的token序列。细、粗粒度token序列再分别输入到两个encoder。这里的encoder与BERT或Transformer的encoder的架构完全相同。此外,两个encoder在每个对应层共享相同的参数,但二者的嵌入层参数不同。最后分别得到细粒度token序列和粗粒度token序列的的上下文表征。


模型结构简单到爆,有木有啊?

预训练

预训练的目标还是MLM,由于NSP已经是树倒猢狲散,墙倒众人推,AMBERT当然站在巨人的肩膀上(踩上一脚),在需要的时候拿过来比(数)较(落)一番。


其中$\overline{\mathbf{x}}$表示被mask掉的细粒度token(即需要重建出来的token),$\hat{\mathbf{x}}$表示原文被mask的细粒度token序列。$\overline{\mathbf{z}}$表示被mask掉的粗粒度token(即需要重建出来的token),$\hat{\mathbf{z}}$表示原文被mask的粗粒度token序列。

微调

以分类任务上微调为例,将细、粗粒度encoder中 [CLS]的表征,用于下游分类任务。微调过程的优化函数如下:


其中,$\mathbf{x}$为输入的文本,$\boldsymbol{y}$表示待预测的文本类别,$\boldsymbol{r}_{x 0}$和$\boldsymbol{r}_{z 0}$分别是细粒度和粗粒度encoder中特殊token [CLS]的表征。而最后一项则是通过归一化让两个粒度得到的[CLS]表征尽量保持一致。此外,文章还对AMBERT稍作修改,就得到了下述2种变体:

AMBERT-Combo:

用两个非参数共享的encoder分别编码两种粒度的句子;

AMBERT-Hybrid:

用单个encoder而不是两个encoder去同时编码两种粒度的句子,也就是把粗细粒度的句子先拼接起来再送到BERT里,这就会让自注意力在不同粒度的句子中进行交互。

实验

数据说明

中文预训练数据集使用一个包含2500万文档(57G未压缩文本))的今日头条语料库(估计不会公开的,sad+1)。英文预训练数据集则来自Wikipedia和OpenWebText的1390万文档(47G未压缩文本)的语料库。对于中文,粗细粒度分别是词和字,在CLUE上进行评测。分词工具则是字节跳动内部开发的分词工具(估计也不会开源了sad+10086)。这两种token的生成过程都利用了WordPiece技术,最终产生的中文词典分别包含21128个字和72635个词。对于英文,粗细粒度分别短语和词。英文单词是天然的细粒度token,至于粗粒度是先利用KenLM构建n-gram,用频率足够高的短语构建短语级别的字典,这些短语的最后一个单词高度依赖于其前置单词。最后利用贪心算法对文本进行短语级切分,得到30522个单词和77645个短语。英文评测任务是在GLUE上进行的,此外还在英文阅读理解数据集SQuAD和RACE进行进一步实验。

实验结果:中文数据集

中文CLUE上的实验结果如Table 1和Table 2所示。从实验结果看,AMBERT在CLUE上确实一枝独秀,在其中4个任务上取得最优结果,但在WSC和CMRC数据集上与最优结果存在较大差距,特别是CMRC数据集上堪称大型翻车现场(3个百分点的差距)。



实验结果:英文数据集

Table 4和Table 6是AMBERT在GLUE上的实验结果。在多数数据集上AMBERT要优于其他baseline模型,且多粒度的效果确实好于单粒度。但是如果放到更大范围的模型比较,AMBERT整体上逊色于RoBERTa,但是优于其他模型。另外,从机器阅读理解数据集的对比结果Table 5可以看出,在SQuAD上AMBERT大大优于Google官方的BERT,而在检测span任务中,单词级的BERT通常表现良好,短语级BERT较差。另外,在RACE的dev set 和 test set上,AMBERT发挥稳定,全场最佳。



总结

文章提出多粒度的预训练模型AMBERT,联合使用粗细粒度的语言单元对句子进行切分,从而充分利用二者各自的优势。在中文和英文的自然语言理解任务上证明该模型的有效性,尤其是对中文而言提升效果更加显著。但是,在中文数据集上的比较上有几个不足:

(1) 中文的分词工具属于字节跳动内部,尚未开源。

(2) 更重要的是,预训练的数据集也是字节跳动内部的数据集,而不是通常中文预训练使用的中文维基百科语料。作者自己也一再强调,只能作为参考。

(3) 预训练模型包含代码和模型均没有发布。

基于现况,如此就在CLUE上其他模型比较,似乎有失公允。到底是分词、数据、还是模型优势?虽然作者也一直在强调,对比仅仅作为参考,仅作为参考,作为参考,为参考,参考。。。但是,作为一个既没有开放源码也没有发布预训练模型的预训练语言模型,应该是第一个吧,所以各相关从业人员于此颇有微词。未来或许可期,先让子弹飞一会,让我们拭目以待。


点击 阅读原文 ,查看更多精彩!
喜欢本篇内容,请 分享、点赞、在看
登录查看更多
0

相关内容

专知会员服务
35+阅读 · 2020年11月29日
【NeurIPS 2020】融入BERT到并行序列模型
专知会员服务
25+阅读 · 2020年10月15日
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
BERT技术体系综述论文:40项分析探究BERT如何work
专知会员服务
139+阅读 · 2020年3月1日
BERT进展2019四篇必读论文
专知会员服务
67+阅读 · 2020年1月2日
多项NLP任务新SOTA,Facebook提出预训练模型BART
机器之心
22+阅读 · 2019年11月4日
一文读懂最强中文NLP预训练模型ERNIE
AINLP
25+阅读 · 2019年10月22日
进一步改进GPT和BERT:使用Transformer的语言模型
机器之心
16+阅读 · 2019年5月1日
3分钟看懂史上最强NLP模型BERT
新智元
23+阅读 · 2019年2月27日
跨语言版BERT:Facebook提出跨语言预训练模型XLM
机器之心
4+阅读 · 2019年2月6日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
Arxiv
15+阅读 · 2019年9月11日
Arxiv
4+阅读 · 2019年9月5日
Arxiv
11+阅读 · 2019年6月19日
How to Fine-Tune BERT for Text Classification?
Arxiv
13+阅读 · 2019年5月14日
Arxiv
5+阅读 · 2019年4月21日
Arxiv
14+阅读 · 2018年5月15日
VIP会员
相关VIP内容
专知会员服务
35+阅读 · 2020年11月29日
【NeurIPS 2020】融入BERT到并行序列模型
专知会员服务
25+阅读 · 2020年10月15日
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
BERT技术体系综述论文:40项分析探究BERT如何work
专知会员服务
139+阅读 · 2020年3月1日
BERT进展2019四篇必读论文
专知会员服务
67+阅读 · 2020年1月2日
相关论文
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
Arxiv
15+阅读 · 2019年9月11日
Arxiv
4+阅读 · 2019年9月5日
Arxiv
11+阅读 · 2019年6月19日
How to Fine-Tune BERT for Text Classification?
Arxiv
13+阅读 · 2019年5月14日
Arxiv
5+阅读 · 2019年4月21日
Arxiv
14+阅读 · 2018年5月15日
Top
微信扫码咨询专知VIP会员