预训练模型BERT, ERNIE, BERT-wwm在公开数据集的对比

火山方舟向量数据库大模型

自从2018年Bert发布之后,刷新了很多NLP任务,取得了SOTA的结果,然而预训练模型远没有结束,近期有一些bert的变种模型推出,比如bert-wwm,bert-wwm-ext,albert,roberta等等,还包括百度的ernie1.0,ernie2.0,这些模型都对bert进行了改进。

本文主要讲述一下论文《Pre-Training with Whole Word Masking for Chinese BERT 》在BERT, ERNIE, BERT-wwm模型的实验结果。

论文地址https://arxiv.org/abs/1906.08101

github地址https://github.com/ymcui/Chinese-BERT-wwm

picture.image

关于bert的基本理解,可以参考博客https://www.cnblogs.com/rucwxb/p/10277217.html

目前很多NLP工程师都已经使用bert在自己的数据集上做过很多任务了,并且取得了不错的效果,最基本bert预训练模型的结构如下:

picture.image

   其他bert模型的变种也基本都是这种结构,这样我们在做实验对比的时候就会很方便,只需要选择对应模型的这5个文件即可,区别在于他们训练的语料或者任务不一样。  



   最原始的bert是masked WordPiece token而不是a whole word,这在处理中文的时候会有限制,在google推出bert-wwm(Whole Word Masking)之前,百度已经推出ERNIE模型,率先采用了这种策略。  

Figure1是wwm的实例

picture.image

例如“模型”是一个词,如果其中一个字被mask掉,那么另一部分也将被mask,也就是说一个词的部分被mask,那么这个词将全部被mask,这样会保证汉语分词的语义。

下面正式介绍论文内容:

  1. Chinese BERT with Whole Word Masking

2.1)Data Processing

首先下载wiki数据,地址如下https://dumps.wikimedia.org/zhwiki/latest/

使用https://www.aclweb.org/anthology/N19-1423/提供的WikiExtractor.py进行数据预处理,包括去除html标签,划分文档。采用LTP分词工具分词,并且使用bert官方代码create\_pretraining\_data.py把原始数据处理成预训练需要的数据格式,为了对比实验,生成了最大长度为128和512的预训练数据,其他参数均保持和bert一致。

2.2)Pre-Training

使用官方的BERT-base(Chinese)分两个stage训练,第一个stage:最大长度为128的语料上训练了100k步,batch_size大小为2560,初始学习率为1e-4(warm-up率为10%);第二个stage:最大长度为512的语料上训练了100k步,batch_size大小为384,都采用LAMB优化器,这个优化器可以满足比较大的batch。

LAMB优化器:https://github.com/ymcui/LAMB\_Optimizer\_TF

2.3)Fine-Tuning on Downstream Tasks
在fine-tuning下游任务的时候,除了bert_config.json和vocab.txt这两个不替换外,只需要替换其他的三个文件即可。

  1. Experiments
    实验涉及到的NLP任务以及对应的数据源有:1)机器阅读理解:CMRC 2018,DRCD,CJRC(http://cail.cipsc.org.cn);2)命名实体识别:People Daily(https://github.com/ProHiryu/bert-chinese-ner/tree/master/data),MSRA\_NER;3)自然语言推理:XNLI;4)语义分类:ChnSentiCorp(https://github.com/pengming617/bert\_classification),Sina Weibo(https://github.com/SophonPlus/ChineseNlpCorpus/);5)句子对匹配:LCQMC,BQ Corpus;6)文档分类:THUCNews。每个实验运行10次,指标取平均值和最大值

实验结果如下:

picture.image

picture.image

实验平台为tensorflow,由于ERNIE官方只提供PaddlePaddle版本,因此需要把ERNIE的权重转换为tensorflow版本。

3.1)Machine Reading Comprehension: CMRC 2018, DRCD, CJRC

机器阅读理解是根据给定文档回答问题的document-level的建模任务。

CMRC 2018 :是span-extraction机器阅读理解数据集,是根据问题从原文中抽取一部分作为答案的数据集,类似SQuAD

DRCD :也是span-extraction数据集,只不过是传统的中文。

CJRC :类似CoQA数据集,有yes/no问题,无答案问题和span-extraction问题,数据来自中国法律文档

实验结果如下:

picture.image

picture.image picture.image

从实验结果来看,ERNIE在DRCD上表现比较差,原因是ERNIE删除了传统的中文字符,在比较专业的文档上BERT-wwm上表现的比BERT和ERNIE好。中文分词可能会影响性能,继而影响基于分词的ERNIE和BERT-wwm。

3.2) Named Entity Recognition: People Daily, MSRA-NER
People Daily: 来自人民日报的数据,包括正式的新闻。

MSRA-NER:微软亚洲研究院数据,来自SIGHAN Bakeoff 2006(http://sighan.cs.uchicago.edu/bakeoff2006/)

实验结果如下:

picture.image

实验表明:ERNIE在两个数据集的表现好,尤其在peak preformance,BERT-wwm有一个好的平均值,由此说明中文分词可以提升NER的性能

3.3) Natural Language Inference: XNLI

picture.image

ERNIE表现最优

3.4) Sentiment Classification: ChnSentiCorp, Sina Weibo

ChnSentiCorp: 中文情感分析数据集

Sina Weibo : 是正负二分类数据,train/dev/test数据大小为100k/10k/10k

picture.image

ERNIE表现比较好,原因是采用了论坛等非正式数据进行预训练,所以在微博数据表现比较好

3.5) Sentence Pair Matching: LCQMC, BQ Corpus

picture.image

3.6) Document Classification: THUCNews

picture.image

4 Useful Tips
1.)初始化学习率非常重要,最好进行tune

2.)BERT和BERT-wwm有相同的最好初始学习率,使用ERNIE的时候最好tune初始学习率

3.)BERT和BERT-wwm是在wikipedia上训练的,所以对正式的文档支持好,ERNIE对像微博一样的非正式文档表现好。

4.)在机器阅读理解和文档分类等长序列任务上建议使用BERT或BERT-wwm

5.)如果任务数据与预训练使用的数据差别比较大的时候,建议在任务数据上使用另一个预训练步骤

6.)处理传统的中文文档,建议使用BERT或BERT-wwm

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生环境下的日志采集存储分析实践
云原生场景下,日志数据的规模和种类剧增,日志采集、加工、分析的多样性也大大增加。面对这些挑战,火山引擎基于超大规模下的 Kubernetes 日志实践孵化出了一套完整的日志采集、加工、查询、分析、消费的平台。本次主要分享了火山引擎云原生日志平台的相关实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论