资源算法Chinese-BERT-wwm

Chinese-BERT-wwm

2019-12-25 | |  38 |   0 |   0

中文预训练BERT-wwm(Pre-Trained Chinese BERT with Whole Word Masking)

在自然语言处理领域中,预训练模型(Pre-trained Models)已成为非常重要的基础技术。 为了进一步促进中文信息处理的研究发展,我们发布了基于全词遮罩(Whole Word Masking)技术的中文预训练模型BERT-wwm,以及与此技术密切相关的模型:BERT-wwm-ext,RoBERTa-wwm-ext,RoBERTa-wwm-ext-large。

更多细节请参考我们的技术报告:https://arxiv.org/abs/1906.08101

./pics/header.png

微信公众号文章介绍

本项目基于谷歌官方的BERT:https://github.com/google-research/bert

新闻

2019/12/19 本目录发布的模型已接入Huggingface-Transformers,查看快速加载

2019/10/14 发布萝卜塔RoBERTa-wwm-ext-large模型,查看中文模型下载

2019/9/10 发布萝卜塔RoBERTa-wwm-ext模型,查看中文模型下载

2019/7/30 提供了在更大通用语料(5.4B词数)上训练的中文BERT-wwm-ext模型,查看中文模型下载

2019/6/20 初始版本,模型已可通过谷歌下载,国内云盘也已上传完毕,查看中文模型下载

内容导引

章节描述
简介介绍BERT-wwm基本原理
中文模型下载提供了BERT-wwm的下载地址
模型对比提供了本目录中模型的参数对比
中文基线系统效果列举了部分中文基线系统效果
使用建议提供了若干使用中文预训练模型的建议
英文模型下载谷歌官方的英文BERT-wwm下载地址
FAQ常见问题答疑
引用本目录的技术报告

简介

Whole Word Masking (wwm),暂翻译为全词Mask整词Mask,是谷歌在2019年5月31日发布的一项BERT的升级版本,主要更改了原预训练阶段的训练样本生成策略。 简单来说,原有基于WordPiece的分词方式会把一个完整的词切分成若干个子词,在生成训练样本时,这些被分开的子词会随机被mask。 在全词Mask中,如果一个完整的词的部分WordPiece子词被mask,则同属该词的其他部分也会被mask,即全词Mask

需要注意的是,这里的mask指的是广义的mask(替换成[MASK];保持原词汇;随机替换成另外一个词),并非只局限于单词替换成[MASK]标签的情况。 更详细的说明及样例请参考:#4

同理,由于谷歌官方发布的BERT-base, Chinese中,中文是以为粒度进行切分,没有考虑到传统NLP中的中文分词(CWS)。 我们将全词Mask的方法应用在了中文中,使用了中文维基百科(包括简体和繁体)进行训练,并且使用了哈工大LTP作为分词工具,即对组成同一个的汉字全部进行Mask。

下述文本展示了全词Mask的生成样例。注意:为了方便理解,下述例子中只考虑替换成[MASK]标签的情况。

说明样例
原始文本使用语言模型来预测下一个词的probability。
分词文本使用 语言 模型 来 预测 下 一个 词 的 probability 。
原始Mask输入使 用 语 言 [MASK] 型 来 [MASK] 测 下 一 个 词 的 pro [MASK] ##lity 。
全词Mask输入使 用 语 言 [MASK] [MASK] 来 [MASK] [MASK] 下 一 个 词 的 [MASK] [MASK] [MASK] 。

中文模型下载

本目录中主要包含base模型,故我们不在模型简称中标注base字样。对于其他大小的模型会标注对应的标记(例如large)。

  • BERT-large模型:24-layer, 1024-hidden, 16-heads, 330M parameters

  • BERT-base模型:12-layer, 768-hidden, 12-heads, 110M parameters

模型简称语料Google下载讯飞云下载
RoBERTa-wwm-ext-large, Chinese中文维基+
通用数据[1]
TensorFlow
PyTorch
TensorFlow(密码u6gC)
PyTorch(密码43eH)
RoBERTa-wwm-ext, Chinese中文维基+
通用数据[1]
TensorFlow
PyTorch
TensorFlow(密码peMe)
PyTorch(密码6kpJ)
BERT-wwm-ext, Chinese中文维基+
通用数据[1]
TensorFlow
PyTorch
TensorFlow(密码thGd)
PyTorch(密码bJns)
BERT-wwm, Chinese中文维基TensorFlow
PyTorch
TensorFlow(密码mva8)
PyTorch(密码8fX5)
BERT-base, ChineseGoogle中文维基Google Cloud-
BERT-base, Multilingual CasedGoogle多语种维基Google Cloud-
BERT-base, Multilingual UncasedGoogle多语种维基Google Cloud-

[1] 通用数据包括:百科、新闻、问答等数据,总词数达5.4B,处理后的文本大小约10G

以上预训练模型以TensorFlow版本的权重为准。 对于PyTorch版本,我们使用的是由Huggingface出品的PyTorch-Transformers 1.0提供的转换脚本。 如果使用的是其他版本,请自行进行权重转换。 中国大陆境内建议使用讯飞云下载点,境外用户建议使用谷歌下载点,base模型文件大小约400M。 以TensorFlow版BERT-wwm, Chinese为例,下载完毕后对zip文件进行解压得到:

chinese_wwm_L-12_H-768_A-12.zip
    |- bert_model.ckpt      # 模型权重
    |- bert_model.meta      # 模型meta信息
    |- bert_model.index     # 模型index信息
    |- bert_config.json     # 模型参数
    |- vocab.txt            # 词表

其中bert_config.jsonvocab.txt与谷歌原版BERT-base, Chinese完全一致。 PyTorch版本则包含pytorch_model.bin, bert_config.json, vocab.txt文件。

快速加载

依托于Huggingface-Transformers 2.2.2,可轻松调用以上模型。

tokenizer = BertTokenizer.from_pretrained("MODEL_NAME")
model = BertModel.from_pretrained("MODEL_NAME")

注意:本目录中的所有模型均使用BertTokenizer以及BertModel加载,请勿使用RobertaTokenizer/RobertaModel!

其中MODEL_NAME对应列表如下:

模型名MODEL_NAME
RoBERTa-wwm-ext-largehfl/chinese-roberta-wwm-ext-large
RoBERTa-wwm-exthfl/chinese-roberta-wwm-ext
BERT-wwm-exthfl/chinese-bert-wwm-ext
BERT-wwmhfl/chinese-bert-wwm

测试任务数据

我们提供部分任务数据,请查看data目录了解。 压缩包内包含训练和测试数据,同一目录下的README.md标明数据来源。 由于一部分数据需要原作者授权,故我们无法提供下载链接,敬请谅解。

模型对比

针对大家比较关心的一些模型细节进行汇总如下。

-BERTGoogleBERT-wwmBERT-wwm-extRoBERTa-wwm-extRoBERTa-wwm-ext-large
MaskingWordPieceWWM[1]WWMWWMWWM
Typebasebasebasebaselarge
Data Sourcewikiwikiwiki+ext[2]wiki+extwiki+ext
Training Tokens #0.4B0.4B5.4B5.4B5.4B
DeviceTPU Pod v2TPU v3TPU v3TPU v3TPU Pod v3-32[3]
Training Steps?100KMAX128
+100KMAX512
1MMAX128
+400KMAX512
1MMAX5122MMAX512
Batch Size?2,560 / 3842,560 / 384384512
OptimizerAdamWLAMBLAMBAdamWAdamW
Vocabulary21,128~BERT[4]~BERT~BERT~BERT
Init CheckpointRandom Init~BERT~BERT~BERTRandom Init

[1] WWM = Whole Word Masking
[2] ext = extended data
[3] TPU Pod v3-32 (512G HBM)等价于4个TPU v3 (128G HBM)
[4] ~BERT表示继承谷歌原版中文BERT的属性

中文基线系统效果

为了对比基线效果,我们在以下几个中文数据集上进行了测试,包括句子级篇章级任务。 对于BERT-wwm-extRoBERTa-wwm-extRoBERTa-wwm-ext-large,我们没有进一步调整最佳学习率,而是直接使用了BERT-wwm的最佳学习率。

最佳学习率:

模型BERTERNIEBERT-wwm*
CMRC 20183e-58e-53e-5
DRCD3e-58e-53e-5
CJRC4e-58e-54e-5
XNLI3e-55e-53e-5
ChnSentiCorp2e-55e-52e-5
LCQMC2e-53e-52e-5
BQ Corpus3e-55e-53e-5
THUCNews2e-55e-52e-5

*代表所有wwm系列模型 (BERT-wwm, BERT-wwm-ext, RoBERTa-wwm-ext, RoBERTa-wwm-ext-large)

下面仅列举部分结果,完整结果请查看我们的技术报告

注意:为了保证结果的可靠性,对于同一模型,我们运行10遍(不同随机种子),汇报模型性能的最大值和平均值(括号内为平均值)。不出意外,你运行的结果应该很大概率落在这个区间内。

评测指标中,括号内表示平均值,括号外表示最大值。

简体中文阅读理解:CMRC 2018

CMRC 2018数据集是哈工大讯飞联合实验室发布的中文机器阅读理解数据。 根据给定问题,系统需要从篇章中抽取出片段作为答案,形式与SQuAD相同。 评测指标为:EM / F1

模型开发集测试集挑战集
BERT65.5 (64.4) / 84.5 (84.0)70.0 (68.7) / 87.0 (86.3)18.6 (17.0) / 43.3 (41.3)
ERNIE65.4 (64.3) / 84.7 (84.2)69.4 (68.2) / 86.6 (86.1)19.6 (17.0) / 44.3 (42.8)
BERT-wwm66.3 (65.0) / 85.6 (84.7)70.5 (69.1) / 87.4 (86.7)21.0 (19.3) / 47.0 (43.9)
BERT-wwm-ext67.1 (65.6) / 85.7 (85.0)71.4 (70.0) / 87.7 (87.0)24.0 (20.0) / 47.3 (44.6)
RoBERTa-wwm-ext67.4 (66.5) / 87.2 (86.5)72.6 (71.4) / 89.4 (88.8)26.2 (24.6) / 51.0 (49.1)
RoBERTa-wwm-ext-large68.5 (67.6) / 88.4 (87.9)74.2 (72.4) / 90.6 (90.0)31.5 (30.1) / 60.1 (57.5)

繁体中文阅读理解:DRCD

DRCD数据集由中国台湾台达研究院发布,其形式与SQuAD相同,是基于繁体中文的抽取式阅读理解数据集。由于ERNIE中去除了繁体中文字符,故不建议在繁体中文数据上使用ERNIE(或转换成简体中文后再处理)。评测指标为:EM / F1

模型开发集测试集
BERT83.1 (82.7) / 89.9 (89.6)82.2 (81.6) / 89.2 (88.8)
ERNIE73.2 (73.0) / 83.9 (83.8)71.9 (71.4) / 82.5 (82.3)
BERT-wwm84.3 (83.4) / 90.5 (90.2)82.8 (81.8) / 89.7 (89.0)
BERT-wwm-ext85.0 (84.5) / 91.2 (90.9)83.6 (83.0) / 90.4 (89.9)
RoBERTa-wwm-ext86.6 (85.9) / 92.5 (92.2)85.6 (85.2) / 92.0 (91.7)
RoBERTa-wwm-ext-large89.6 (89.1) / 94.8 (94.4)89.6 (88.9) / 94.5 (94.1)

司法阅读理解:CJRC

CJRC数据集是哈工大讯飞联合实验室发布的面向司法领域的中文机器阅读理解数据。 需要注意的是实验中使用的数据并非官方发布的最终数据,结果仅供参考。 评测指标为:EM / F1

模型开发集测试集
BERT54.6 (54.0) / 75.4 (74.5)55.1 (54.1) / 75.2 (74.3)
ERNIE54.3 (53.9) / 75.3 (74.6)55.0 (53.9) / 75.0 (73.9)
BERT-wwm54.7 (54.0) / 75.2 (74.8)55.1 (54.1) / 75.4 (74.4)
BERT-wwm-ext55.6 (54.8) / 76.0 (75.3)55.6 (54.9) / 75.8 (75.0)
RoBERTa-wwm-ext58.7 (57.6) / 79.1 (78.3)59.0 (57.8) / 79.0 (78.0)
RoBERTa-wwm-ext-large62.1 (61.1) / 82.4 (81.6)62.4 (61.4) / 82.2 (81.0)

自然语言推断:XNLI

在自然语言推断任务中,我们采用了XNLI数据,需要将文本分成三个类别:entailmentneutralcontradictory。 评测指标为:Accuracy

模型开发集测试集
BERT77.8 (77.4)77.8 (77.5)
ERNIE79.7 (79.4)78.6 (78.2)
BERT-wwm79.0 (78.4)78.2 (78.0)
BERT-wwm-ext79.4 (78.6)78.7 (78.3)
RoBERTa-wwm-ext80.0 (79.2)78.8 (78.3)
RoBERTa-wwm-ext-large82.1 (81.3)81.2 (80.6)

情感分析:ChnSentiCorp

在情感分析任务中,二分类的情感分类数据集ChnSentiCorp。 评测指标为:Accuracy

模型开发集测试集
BERT94.7 (94.3)95.0 (94.7)
ERNIE95.4 (94.8)95.4 (95.3)
BERT-wwm95.1 (94.5)95.4 (95.0)
BERT-wwm-ext95.4 (94.6)95.3 (94.7)
RoBERTa-wwm-ext95.0 (94.6)95.6 (94.8)
RoBERTa-wwm-ext-large95.8 (94.9)95.8 (94.9)

句对分类:LCQMC, BQ Corpus

以下两个数据集均需要将一个句对进行分类,判断两个句子的语义是否相同(二分类任务)。

LCQMC

LCQMC由哈工大深圳研究生院智能计算研究中心发布。 评测指标为:Accuracy

模型开发集测试集
BERT89.4 (88.4)86.9 (86.4)
ERNIE89.8 (89.6)87.2 (87.0)
BERT-wwm89.4 (89.2)87.0 (86.8)
BERT-wwm-ext89.6 (89.2)87.1 (86.6)
RoBERTa-wwm-ext89.0 (88.7)86.4 (86.1)
RoBERTa-wwm-ext-large90.4 (90.0)87.0 (86.8)

BQ Corpus

BQ Corpus由哈工大深圳研究生院智能计算研究中心发布,是面向银行领域的数据集。 评测指标为:Accuracy

模型开发集测试集
BERT86.0 (85.5)84.8 (84.6)
ERNIE86.3 (85.5)85.0 (84.6)
BERT-wwm86.1 (85.6)85.2 (84.9)
BERT-wwm-ext86.4 (85.5)85.3 (84.8)
RoBERTa-wwm-ext86.0 (85.4)85.0 (84.6)
RoBERTa-wwm-ext-large86.3 (85.7)85.8 (84.9)

篇章级文本分类:THUCNews

篇章级文本分类任务我们选用了由清华大学自然语言处理实验室发布的新闻数据集THUCNews。 我们采用的是其中一个子集,需要将新闻分成10个类别中的一个。 评测指标为:Accuracy

模型开发集测试集
BERT97.7 (97.4)97.8 (97.6)
ERNIE97.6 (97.3)97.5 (97.3)
BERT-wwm98.0 (97.6)97.8 (97.6)
BERT-wwm-ext97.7 (97.5)97.7 (97.5)
RoBERTa-wwm-ext98.3 (97.9)97.7 (97.5)
RoBERTa-wwm-ext-large98.3 (97.7)97.8 (97.6)

使用建议

  • 初始学习率是非常重要的一个参数(不论是BERT还是其他模型),需要根据目标任务进行调整。

  • ERNIE的最佳学习率和BERT/BERT-wwm相差较大,所以使用ERNIE时请务必调整学习率(基于以上实验结果,ERNIE需要的初始学习率较高)。

  • 由于BERT/BERT-wwm使用了维基百科数据进行训练,故它们对正式文本建模较好;而ERNIE使用了额外的百度贴吧、知道等网络数据,它对非正式文本(例如微博等)建模有优势。

  • 在长文本建模任务上,例如阅读理解、文档分类,BERTBERT-wwm的效果较好。

  • 如果目标任务的数据和预训练模型的领域相差较大,请在自己的数据集上进一步做预训练。

  • 如果要处理繁体中文数据,请使用BERT或者BERT-wwm。因为我们发现ERNIE的词表中几乎没有繁体中文。

英文模型下载

为了方便大家下载,顺便带上谷歌官方发布的英文BERT-large (wwm)模型:

FAQ

Q: 这个模型怎么用?
A: 谷歌发布的中文BERT怎么用,这个就怎么用。文本不需要经过分词,wwm只影响预训练过程,不影响下游任务的输入。

Q: 请问有预训练代码提供吗?
A: 很遗憾,我不能提供相关代码,实现可以参考 #10#13

Q: 某某数据集在哪里下载?
A: 请查看data目录。对于有版权的内容,请自行搜索或与原作者联系获取数据。

Q: 会有计划发布更大模型吗?比如BERT-large-wwm版本?
A: 如果我们从实验中得到更好效果,会考虑发布更大的版本。

Q: 你骗人!无法复现结果

上一篇:CapsNet-Tensorflow

下一篇:SRCNN-Chainer

用户评价
全部评价

    还没有评论,说两句吧!

热门资源

  • seetafaceJNI

    项目介绍 基于中科院seetaface2进行封装的JAVA...

  • spark-corenlp

    This package wraps Stanford CoreNLP annotators ...

  • Keras-ResNeXt

    Keras ResNeXt Implementation of ResNeXt models...

  • capsnet-with-caps...

    CapsNet with capsule-wise convolution Project ...

  • shih-styletransfer

    shih-styletransfer Code from Style Transfer ...

  • 智能在线

    400-630-6780

  • 聆听.建议反馈

    E-mail: support@tusaishared.com