屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。_AMBERT模型:一个多粒度Tokenization的预训练语言模型...

2f2cb0d714b08c0568d83caeedda2b0b.png

本次分享的论文AMBERT来自于字节跳动AI Lab,论文全名为AMBERT: A Pre-trained Language Model With Multi-Grained Tokenization,即一个多粒度语言单元切分的预训练语言模型

论文地址:Paper

代码地址:无无无无无(咱也不知道啥时候开源呀,咱也不敢说呀,咱也不敢问呀~~~~~)


预训练的语言模型已经在自然语言理解(NLU)的许多任务中表现出色。而目前已有的预训练模型(如:BERT)中使用的token表达通常都是细粒度的,在英文中通常使用单词或子单词,在中文中通常使用字符。但是,在英文中有一些词组或短语,比如“NewYork”和“ice cream”,在中文中词语才是句子的基本单元,因此使用粗粒度的token表达似乎也是合理的。实际上,所有现有的预训练语言模型都使用了单粒度(通常是细粒度)的Tokenization。

以前的工作表明,细粒度方法和粗粒度方法各有优缺点。

(1)细粒度方法中的token作为词法单元是不太完整,但是它们的表征更容易学习(在训练数据中有更少的token类型和更多的token)。

(2)粗粒度方法中的token作为词法单元是更完整,但是它们的表征更难学习(因为在训练数据中有更多的token类型和更少的token)。

(3)粗粒度方法无法保证token切分是完全正确。相比之下,细粒度方法的token切分是在原始级别执行的,不存在“不正确”的风险。

其中,论文【1】指出细粒度模型在用于中文的深度学习中的效果始终比粗粒度模型要好。原因主要是粗粒度模型中的低频率的词法单元往往没有足够的训练数据,并且未登录词过多,学习到的表征不够充分。

但是,论文【2】【3】也证明了在预训练语言模型中Mask粗粒度词法单元是有帮助的。也就是说,尽管模型本身是采用细粒度的token切分,但是在连续的token上进行Mask可以提高模型的准确率。

该论文还分别构建了英文和中文的粗细粒度的BERT模型,并使用BertViz工具观察模型的注意力分布。

图1显示了细粒度模型的第一层的注意力分布。可以看到,在句子中,有一些字不正确地关注了其他字。例如,句子中“拍”,“北”,“长”分别高度注意“卖”,“京”,“市”,这是不合理的。

为什么观察模型的第一层的注意力分布?
论文【4】表明,BERT模型底层主要关注词汇信息,中间层主要关注句法信息,顶层主要关注语义信息。

0fd5cbcfe6113629ef190f9dfd4c3c6a.png
图1

图2显示了粗粒度模型的第一层的注意力分布。句子中“球拍”,“京城”具有高度关注度是合理的,但是“市长”具有高度关注度是不合理的。但是不正确的token切分是不可避免的。

4a5587e70dcf86082e5a16835667d4b1.png
图2

在该论文中为了集成细粒度和粗粒度的Tokenization的优点,提出了一种新的基于细粒度和粗粒度语言单元切分的预训练语言模型,称AMBERT(A Multigrained BERT)。

说实话,名字起的挺奇怪的。为啥加A,MBERT或者MGBERT,它不香吗?

对于中文来说,AMBERT模型分别将一句话切分成细粒度的字序列和粗粒度的词序列,并将两个序列输入到两个Encode编码器(12层的Transformer)中,进行预训练操作预测被Mask的位置,学习每个位置上字的上下文表征和词的上下文表征。注意,由于两个Encode编码器参数是共享的,AMBERT模型中的参数量仅比BERT模型中的参数量多了可训练词典的参数。

OUR METHOD: AMBERT

MODEL

6d984928057292c6bddb88cb05b20216.png
图3

AMBERT模型框架,如图3所示。

AMBERT模型将一段文本(该文本要么是来自单个文档的长序列,要么是来自两个不同文档的两个短序列的串联)作为输入。

首先对输入文本进行token切分,以获得一组细粒度token序列和一组粗粒度token序列。然后使用两个编码器(参数共享)分别处理细粒度token序列和粗粒度token序列。最后细粒度编码器生成细粒度token的上下文表征向量,粗粒度编码器生成token的上下文表征向量。

AMBERT模型保留了词法单元的所有可能性,并自动学习了多粒度token表示的注意权重。通过在两个编码器之间共享参数,也实现了高效性。

PRE-TRAINING

AMBERT模型的预训练任务主要在mask language modeling(MLM)任务的基础上进行,包含细粒度和粗粒度。而BERT之后的许多研究表明,下一句预测任务(NSP任务)其实并不重要。具体如下:

表示具有mask token的细粒度token序列,
表示被mask的细粒度token。让
表示具有mask token的粗粒度token序列,
表示被mask的粗粒度token。损失函数定义如下:

其中,

取值为1和0,1表示细粒度token
被mask,
表示细粒度token的总数;
取值为1和0,1表示细粒度token
被mask,
表示细粒度token的总数。

FINE-TUNING

AMBERT模型进行分类任务微调时,将细粒度编码器的[CLS]表示和粗粒度编码器的[CLS]表示共同用于分类。优化函数定义如下:

其中,

为输入文本;
为分类标签;
分别为细粒度和粗粒度编码器的[CLS]表示,
表示向量a和向量b的拼接;
为系数,
为L2范数。最后一项是将两种[CLS]表示进行归一化,尽量保持一致。

而AMBERT模型进行Span任务微调时,将细粒度token的表征与对应的粗粒度token的表征连接起来。然后在任务中使用其拼接的表征进行优化。

这里我能理解将词级别的表征拼接到字级别上,但是由于维度不一致,如何去拼接呢?感觉有点困难,code不是很好写。有点子的同学可以留言一波。

ALTERNATIVES

该论文做了AMBERT模型的两个替代方案,分别是AMBERT-Combo模型和AMBERT-Hybrid模型,可以算是模型的消融实验吧,在实验中将其与AMBERT模型进行比较。

AMBERT-Combo有两个独立的编码器,一个编码器处理细粒度的token序列,另一个编码器处理粗粒度的token序列,它们之间没有参数共享。

AMBERT-Hybrid只有一个编码器处理细粒度的token序列和粗粒度的token序列。它在输入端是将两种粒度的序列拼接之后,再进入模型中,并让两个序列中的token在每一层中都相互作用。损失函数如下:

EXPERIMENTS

DATA FOR PRE-TRAINING

在中文预训练任务中,该论文使用一个包含2500万文档(57G未压缩文本))的今日头条语料库进行预训练。在英文预训练任务中,该论文使用来自Wikipedia和OpenWebText 的1390万文档(47G未压缩文本)的语料库进行预训练。

中文文本中的字被视为细粒度token。该论文对文本进行分词,并将这些词视为粒度token。分词工具使用字节跳动开发的分词工具。这两种token都利用了WordPiece技术,分别包含21128个字72635个词

老实说,感觉分词工具挺重要的。如果分词精度过于低,感觉模型精度不会好。担心AMBERT效果好,完全因为分词工具。

英语文本中的单词被视为细粒度token。该论文构建一个短语级别的字典,其中包含频率足够高的短语,并且这些短语的最后一个单词高度依赖于它们之前的单词。然后采用贪婪算法对文本进行短语级标记,分别包含30522个单词和77645个短语。

EXPERIMENTAL SETUP

AMBERT模型和BERT模型使用相同的参数设置,如图4所示。

中文和英文的训练batch_size大小分别为512和1024。中文预训练模型训练了一百万步,英文预训练模型训练了五十万步。优化器为Adam,学习率为1e−4。为了提高效率,还对所有的模型使用混合精度。

在AMBERT模型的预训练中,总共有15%的粗粒度标记被屏蔽,这与BERT模型的比例相同。为了保持一致性,屏蔽的粗粒度令牌也被屏蔽为细粒度的令牌。

这一应该是个trick,保持mask一致,模型应该会好学一些。

c3fa52b0e0f63dac6b152eb4df9cc9d2.png
图4

CHINESE TASKS

中文任务在CLUE数据集上进行测试,具体训练参数如图5所示。

c00e373df352ebcef660926656a1ca55.png
图5

图6显示AMBERT模型在CLUE数据集上与其他几个主流预训练模型的比较结果。可以看出,AMBERT模型在整体效果均值上比最好的RoBERTa模型好0.9%。但是在CMRC阅读理解数据上低的离谱。

f3a275e2b50d26d4a04b0fbb1983b3f4.png
图6

ENGLISH TASKS

英文文任务在GLUE数据集上进行测试,具体训练参数如图7所示。

3f690af210a743e3fd3e4ced1a45c938.png
图7

图8显示AMBERT模型在GLUE数据集上与其他几个主流预训练模型的比较结果。可以看出,AMBERT模型在整体效果均值上没有最好的RoBERTa模型好。

5048c10a18294465e00ea53abbd1a448.png
图8

DISCUSSIONS

从图9-图12,我们可以看出,AMBERT模型效果要优于AMBERT-Combo模型、AMBERT-Hybrid模型、BERT-Char(BERT-Word)模型和BERT-Word(BERT-Phrase)模型。

优于BERT-Char(BERT-Word)模型和BERT-Word(BERT-Phrase)模型,是因为混合粒度表征优于单粒度表征。

6e89fd25c4b1e38715f92e9d0d60299c.png
图9

207a8f51cde14e0e4e0261b90b478c53.png
图10

77ce076be317661cd10c463bdd20ebfd.png
图11

fa3dc9b6feab497bab6affeaf0c392d9.png
图12

该论文还进一步分析AMBERT模型与AMBERT-Combo模型和AMBERT-Hybrid模型的差异。

AMBERT模型和AMBERT-Combo模型的对比图,如图13所示。图13显示了每个模型中两种粒度编码器的[CLS]表征的余弦距离和欧式距离。从图中可以看到,AMBERT-Combo模型的距离值远大于AMBERT模型,表示独立的编码器造成不同粒度的表征具有很大的差异性,AMBERT模型使用了更少的参数学习和表示了相似的组合方式。

b2a51bff9242772df977240161f6f08e.png
图13

AMBERT模型和AMBERT-Hybrid模型的对比图,如图14所示。图14显示了模型的注意力分布,可以看出AMBERT模型细粒度token重点关注了它自己,粗粒度token也是;而AMBERT-Hybrid模型的细粒度token更多地关注对应的粗粒度token,从而削弱了细粒度token之间的关注程度。

ebfbb2da0283f08c57de5197fb3d7a74.png
图14

总结

也不知道啥时候开源,等着试一波。

在中文上,该论文的思路就是将字和词都进行表征学习,让模型学到更多的词语级别信息。但是感觉这个与分词精度密切相关,如果在领域数据上fine-tuning时,分词器对领域词分的很差,感觉会导致模型效果很差(个人观点,不喜勿喷)。

而这种加入词信息的思想,本人之前也尝试过,不过是将词性的信息加入到BERT模型的Embedding中,进行训练。在个别任务上效果是有提升的,感觉不稳定,可能是由于开源工具词性不十分准确造成的。

参考文献

【1】Is word segmentation necessary for deep learning of chinese representations?

【2】Span-bert: Improving pre-training by representing and predicting spans.

【3】Pre-training with whole word masking for chinese bert.

【4】What does BERT learn about the structure of language?


推荐几篇文章:

刘聪NLP:SIGIR 2020之DC-BERT模型:解耦问题-文档编码,提速QA-Rerank模块

刘聪NLP:开源啦!开源啦!UNILM中文模型开源啦!

刘聪NLP:ACL2020论文整理之问题生成、自然语言推理、预训练语言模型及部分应用、QA问答系统及机器阅读理解

刘聪NLP:智能扩充机器人的“标准问”库之Query生成

刘聪NLP:短文本相似度算法研究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值