《Revisiting Pre-trained Models for Chinese Natural Language Processing》(MacBERT)阅读记录
《Revisiting Pre-trained Models for Chinese Natural Language Processin》
to appear at Findings of EMNLP 2020
链接:https://arxiv.org/abs/2004.13922
EMNLP,是自然语言处理经验方法会议(Conference on Empirical Methods in Natural Language Processing),是由国际语言学会(ACL)下属的SIGDAT小组主办的自然语言处理领域的顶级国际会议,也是自然语言算法的A类会议。
郭达森 https://zhuanlan.zhihu.com/p/296324423
摘要
BERT在很多NLP任务中都表现出了惊人的提升效果,很多BERT变体的提出,更进一步地提升了预训练模型的性能。
本文主要针对中文预训练模型,检验在非英语语言中的有效性。
提出了MacBERT,在多个方面提升了RoBERTa。采用MLM as correction(Mac)的策略。
在8个NLP任务上进行了实验,重新审视之前的一些预训练模型和本文提出的MacBERT。实验结果表明,MacBERT在很多NLP任务上能够达到SOTA。
结论
在本篇文章中:
- 重新审视了中文预训练模型,查看这些模型能否推广到除英语外的其它不同语言当中。
- 提出新模型MacBERT,使用MLM任务作为语言纠错方式,缓解预训练和微调阶段的差异。
- 在中文NLP任务上进行了广泛实验,MacBERT在很多任务上,效果都有提升。
- 消融实验显示:应该关注MLM任务,而非NSP任务及其变体。
未来工作
研究一种有效的方法来确定掩码的比率,而非启发式方法,以进一步提高预训练语言模型的性能。
启发式算法一段很好的解释
Dr.h https://www.zhihu.com/question/27666809/answer/826889734
介绍
BERT(Bidirectional Encoder Representaitions from Transformers)非常流行,且在最近的NLP研究中证明是有效的。其利用了大规模的未标记训练数据,生成了丰富的上下文表示。
机器阅读理解基线中(SQuAD (Rajpurkar et al., 2018), CoQA (Reddy et al., 2019), QuAC (Choi et al., 2018), NaturalQuestions (Kwiatkowski et al.,2019), RACE (Lai et al.,2017)),性能最高的模型仍是基于BERT和BERT变体的 (Dai et al., 2019; Zhang et al., 2019; Ran et al., 2019)。
预训练语言模型已成为自然语言处理新的基础组件。
从BERT开始,社区在优化预处理语言模型方面取得了巨大而快速的进步。例如:
ERNIE (Sun et al., 2019a), XLNet (Y ang et al., 2019), RoBERTa (Liu et al., 2019), SpanBERT (Joshi et al., 2019), AL-BERT (Lan et al., 2019), ELECTRA (Clark et al., 2020)
然而,训练基于Transformer的预训练语言模型,不像过去训练单词嵌入或其它传统NN一样容易。如:训练BERT-Large模型,含有24层Transformer和3.3亿个参数,想要瘦脸需要高内存计算设备,比如TPU(贵)。
虽然很多预训练语言模型已发布,但很少有人致力于在其他语言上构建强大的预训练语言模型。
这篇论文,会重新审视现有的流行预训练语言模型,将其调整为中文,构建中文预训练语言模型,看模型能否在英语以外的语言被很好地推广。
提出了新的预训练语言模型MacBERT,将原来的MLM任务替换为MLM as Correction(Mac)任务,减少了预训练和微调阶段的差异。
在八个流行的中文自然语言处理数据集上进行了广泛的实验,从句子级到文档级,如机器阅读理解、文本分类等。
结果表明,与其它预训练语言模型相比,MacBERT在大多数任务中可以获得更显著的提升。
本文贡献:
- 进行大量实证研究,通过仔细分析重新审视中文预训练模型在各任务中的表现。
- 提出一个新的预训练语言模型MacBERT,通过用相似的词对选中词进行掩码,缓解预训练和微调阶段的差距,证明对下游任务有效。
- 为进一步加快中文NLP未来研究,创建并向社区发布了中文预训练语言模型系列。
相关工作
阐述具有代表性的预训练语言模型。
BERT
Bidirectional Encoder Representations from Transformers (Devlin et al.,2019) (根据Transformer的双向编码器表示)
旨在通过在所有Transformer层中联合调节左右上下文,预训练深度双向表示。
两个预训练任务:MLM(随机对输入中的一些token进行掩码,仅根据上下文预测原始单词)、NSP(预测句子B是否是A的下一句话)
后来,进一步提出了全词掩码(whole word masking ,wwm),用于优化MLM任务中的原始掩码策略。每次都屏蔽掉一个完整单词所对应的所有token,而非随机选择WordPiece的token进行掩码。迫使模型在预训练任务中恢复整个单词,而非恢复WordPiece,增强挑战性。但这一策略只会影响预训练过程中的掩码策略,不会给下游任务带来额外负担。
ERINE
Enhanced Representation through kNowldge IntEgration (Sun et al., 2019a) (通过知识整合增强表示性)
优化BERT的掩码过程,包括entity-level masking 和 phrase-level masking (实体级别和短语级别)
实体级mask会mask掉命名实体(命名实体通常由几个单词组成),而非在输入中随机选择单词。
短语级mask是mask掉连续的单词,类似N-gram mask策略。
XLNET
Yang et al. (2019) 认为,现有的基于自动编码的预训练语言模型,如BERT,存在预训练和微调阶段的差异,因为掩码符号[MASK]在微调阶段不会出现。
为了缓解这个问题,提出了基于Transformer-XL (Dai et al., 2019)的XLNet。
通过两种方式进行修改:
- 第一种方法是最大化输入因子分解顺序的所有排列的期望可能性,称之为排列语言模型Permutation Language Model (PLM)。
- 将自编码语言模型更改为一个自回归语言模型(类似于之前的统计语言模型)
RoBERTa
Robustly Optimized BERT Pretraining Approach (Liu et al., 2019) (健壮优化bert预训练方法)
采用BERT原始架构,但做了更加精确的修改。
对BERT中的各种成分进行了仔细比较,包括掩码策略、训练步骤等。
在深入评估后,得出结论:
- 在更多数据上,用更大的batch和更长的序列训练更长时间。
- 移除NSP任务,使用动态掩码。
ALBERT
A Lite BERT (Lan et al., 2019)(简化BERT)
主要解决了BERT需要更高内存假设和训练速度慢的问题。
介绍了两种参数缩减技术:
- 分解嵌入参数:将嵌入矩阵分解为两个小矩阵。
- 跨层数据共享:在ALBERT每一层间共享Transformer的权值,极大减少参数。
提出sentence-order prediction(SOP) 句子顺序预测任务,替代之前的NSP任务。
ELECTRA
Efficiently Learning an Encoder that Classifiers Token Replacements Accurately (Clark
et al., 2020) 有效学习可精确替换分类器Token的编码器
采用了一种新的生成器-鉴别器(generator-discriminator)框架,类似于GAN (Goodfellow
et al., 2014)
生成器通常是一个小的MLM,学习去预测被mask token的原始词。
鉴别器经过训练,鉴别输入token是否被替换。为了实现有效训练,鉴别器只需要预测一个二进制标签表示“替换”,不像MLM的方式,去预测确切的被掩码的词汇。
微调阶段,只使用鉴别器。
中文预训练语言模型
之前的大多数结论在英语环境下正确,但想知道这些技巧是否在其他语言中适用。
本节:现有的预训练语言模型如何适应中文、MacBERT。
注意:这些模型都源自BERT,而没有改变输入性质,所以在微调阶段不需要修改,替换灵活。
BERT-wwm & RoBERTa-wwm
原始BERT中,WordPiece tokenizer (Wu et al., 2016)将文本且分为多个小的片段,
whole word masking(wwm)减轻了只mask某词一部分(word piece)的缺点,让模型更加易于预测。
使用繁体中文词汇分割(CWS)工具将文本分割为多个词,然后采用全词掩码而非单字掩码。实现过程中严格遵循全词掩码,且并没有改变其它组件,如掩码比率等。
使用LTP (Che et al., 2010)进行中文分词,以识别词的边界。
wwm只会影响预训练阶段,掩码token的选择。BERT输入仍然使用 WordPiece tokenizer来分割文本,等同于原始bert。
类似地,wwm也能应用于RoBERTa,其中,不采用NSP任务。
MacBERT
利用了以前的模型,只做了一些简单的改动,但对微调任务有显著提升——MacBERT(MLM
as correction BERT),预训练任务与BERT相同,但做了一些修改。
对于MLM任务,做了如下修改:
- 使用了WWM和N-Gram掩码策略选择候选token进行掩码。
- 词级unigram到4-gram的比例是40%,30%,20%,10%
- 在微调阶段,使用相似词做mask,而非用标记[MASK]。
- 使用基于word2vec相似度计算的Synonyms toolkit (Wang and Hu, 2017)获取相似词
- 如果一个N-gram被选做掩码,将单独寻找相似词。
- 对15%的输入词进行Mask,其中80%被替换为相似词,10%替换为随机词,剩下10%不做替换。
对于NSP-like任务,使用了自ALBERT(Lan et al., 2019)引入的sentence-order prediction(SOP)任务,其中,负样本是通过改变两个连续句子的原始顺序而产生的。
实验设置
预训练语言模型设置
数据集:Wikipedia dump,同时使用简体中文、繁体中文
脚本:WikiExtractor.py (Devlin et al. (2019) )
生成1307个提取文件。
对原始文本进行数据清洗后(如移除HTML标签)、分离文档后,获得了大约0.4B的词汇。
由于中文维基百科数据相对较小,故除了维基百科外,还使用了额外的扩展数据,训练这些预训练过的语言模型(ext标签)
内部收集的扩展数据包括百科全书、新闻、问答网,有5.4个单词,是中文维基百科的10倍以上。
为了识别汉语词的边界,使用LTP (Che et al., 2010)进行汉语分词。我们使用官方的create pre-training data.py将原始输入文本转换为pre-training样本。
为了更好从现有预训练模型中获取知识,没有从头开始训练base级别模型,而是使用了Chinese BERT-base,继承其词汇表和权重。
然而,对于large级别模型,从头开始训练,但是仍然使用了base级别的词汇表。
训练BERT系列:
Devlin et al. (2019):先在最大长度128 tokens训练,然后在最大长度512 tokens训练。但是这会造成对长序列任务,如阅读理解任务,适应不足。
故对于RoBERTa和MacBERT,在整个预训练过程中直接使用最大长度512。
batch size<1024时,采用带有权重衰减优化的原始的ADAM进行优化,并且使用LAMB优化器在更大的batch中获取更好的可扩展性。
预训练在单个谷歌Cloud TPU5v3-8(相当于一个TPU)或TPU Pod v3-32(相当于4个TPU)上进行的,具体取决于模型的大小。
对于MacBERT-large:
- 训练2M步
- batch size:512
- 初始学习率:1e-4
微调任务设置
任务包含从句子级到文档级的广泛文本长度范围。
为公平比较,对于每个数据集,采用相同的超参数,并且只对每个任务的初始学习率从1e-5调整到5e-5。初始学习率是根据原始中文BERT调整的,如果针对具体任务调整,效果会更好。
通过选择最佳的平均开发集性能来确定最佳的初始学习率。
报告最大值和平均值来评估峰值和平均性能。
对于除ELECTRA之外的所有模型,对每个任务使用相同的初始学习率设置,如表2所示。
对于ELECTRA模型,我们按照Clark等人(2020)的建议,对base-level模型使用1e-4的通用初始学习率,对large-level模型使用5e-5的通用初始学习率。
如ERNIE、ERNIE 2.0、NEZHA的中文预训练模型,预训练数据有所不同,故只比较BERT (Devlin et al., 2019), BERT-wwm, BERT-wwm-ext, RoBERTawwm-ext, RoBERTa-wwm-ext-large, ELECTRA,以及MacBERT
除了Chinese BERT之外,都自己做了训练。在TensorFlow框架下完成了实验,并使用BERT的微调脚本做了轻微改动,以适应中文。
结果
机器阅读理解(Machine Reading Comprehension, MRC)
具有代表性的文档级建模任务,根据给定的文章回答问题。
测试数据集:CMRC 2018, DRCD,CJRC (介绍见论文)
使用额外的与训练数据会让结果有进一步改善。
MacBERT算法在所有阅读理解数据集上都有显著的改进
尽管DRCD是一个繁体中文数据集,使用额外的大规模简体中文进行训练也可以产生很大的积极效果。因为二者有很多相同字符。强大的预训练语言模型,只需要少量的繁体中文数据,也可以带来改进,而无需将繁体中文转换为简体中文。
单句分类(Single Sentence Classification)
数据集:ChnSentiCorp、THUCNews
ChnSentiCorp 评估情感分类,文本被分为积极或消极标签。
THUCNews 包含不同类型新闻的数据集,文本很长。
MacBERT可以对基线进行适度的提升,因为这些数据集已经达到了非常高的精度。
句子对分类(Sentence Pair Classification)
数据: XNLI data (Chinese portion), Large-scale Chinese Question Matching Corpus (LCQMC), and BQ Corpus
输入两个序列,预测二者关系
MacBERT的表现优于其他模型,但提升是中等的,在平均分数上有轻微的提升,但峰值性能不如RoBERTa-wwm-ext-large。
怀疑这些任务对输入的细微差异的敏感度低于阅读理解任务。因为句子对的分类只需要对整个输入产生统一的表示,因此提升中等。
讨论
MacBERT的有效性
总体平均分数是通过对每个任务的测试分数进行平均得到的(EM和F1指标在总体平均之前进行平均)。
从总体上看,删除MacBERT中的任何组件都会导致平均性能的下降,这表明所有的修改都有助于整体的改进。
最有效的修改是N-gram掩码和相似词替换,这是对MLM任务的修改。
- N-gram在文本分类任务中更加有效
- 相似词替换在阅读理解任务中更加有效
两种任务结合可以相互弥补。
NSP任务没有MLM任务重要,故设计一个更好地MLM任务来充分发挥文本建模的能力是非常重要的。
比较了NSP和SOD:
- SOP比NSP效果好,但不够显著。
- SOP任务需要识别两个句子的正确顺序,而不是使用随机句子,机器更容易识别。去除SOP任务会导致阅读理解任务相对于文本分类任务有明显的下降,这表明有必要设计一个类似nsp的任务来学习两个部分。(NSP主要提供这种文章连贯性上的知识)
MLM任务的调查研究
MLM依赖的两个方面:
- 选择要被屏蔽的tokens
- 替换所选tokens
替换将如何影响预训练语言模型的性能:
遵循原始掩码比率,输入句15%mask,其中10%不变,90%分为四类
- MacBERT:80%替换为相似词,10%替换为随机词
- Random Replace:90%替换为随机词
- Partial Mask:原始BERT实现,80%替换为[MASK],10%替换为随机词
- All Mask: 90%被替换为[MASK]
绘制从1M到2M的步骤,以显示比前1M步骤更稳定的结果。
大部分使用[MASK]进行掩码(即部分掩码和全部掩码)的预训练模型性能较差,说明预训练和微调的差异是影响整体性能的实际问题。
如果不留下10%作为原始token(identity project),也会有下降,这说明用[MASK] token掩码的健壮性较差,容易受到负样本训练中identity project缺失的影响。
90%替换为随机词,对[mask]依赖的屏蔽策略形成了改进。
依赖[MASK] token的原始掩码方法(微调任务中没有出现过这个token),会导致差异和更差的性能。
故使用相似词掩码,而非随机词掩码,防止破坏语境。
传统的N-gram语言模型是基于自然句而不是经过操纵的影响句。如果使用相似词,句子流畅性会更好,更加自然。
减小差异后,MacBERT获得了最好的性能,验证了假设。
《Revisiting Pre-trained Models for Chinese Natural Language Processing》(MacBERT)阅读记录相关推荐
- 【论文笔记】MacBert:Revisiting Pre-trained Models for Chinese Natural Language Processing
文章目录 相关信息 摘要(Abstract) 1. 介绍(Introduction) 2. 相关工作(Related Work) 3. 中文预训练模型(Chinese Pre-trained Lang ...
- Mac BERT 论文解读 Revisiting Pre-trained Models for Chinese Natural Language Processing
这里是对 EMNLP 2020 的 Mac BERT 的分享 作者是哈工大刘挺老师的团队 个人看法 欢迎指正 文章对近几年的预训练模型做了对比总结,并在此基础上提出了MacBERT 首先是 Mac B ...
- Introduction to Chinese natural language processing
这本书,徐老师出的,可惜市场上买不到,其他地方也下载不到..只有这个链接还要XX币的 http://www.docin.com/p-105157806.html 转载于:https://www.cnb ...
- 论文阅读:Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型
Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型 目录 Pre-trained Models f ...
- [论文解读] Adversarial Attacks on Deep Learning Models in Natural Language Processing: A Survey
Adversarial Attacks on Deep Learning Models in Natural Language Processing: A Survey 文章目录 Adversaria ...
- 论文阅读:A Primer on Neural Network Models for Natural Language Processing(1)
前言 2017.10.2博客园的第一篇文章,Mark. 由于实验室做的是NLP和医疗相关的内容,因此开始啃NLP这个硬骨头,希望能学有所成.后续将关注知识图谱,深度强化学习等内容. 进入正题,该文章是 ...
- [C5W2] Sequence Models - Natural Language Processing and Word Embeddings
第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 词汇表征(Word Representation) 上周我们学习了RNN ...
- Tensorflow in partice (lesson three) Course 3 Natural Language Processing in TensorFlow
Course 3 .Natural Language Processing in TensorFlow 对文本信息进行分词,编码,建立语料库,Embdaing,情感分析,文本生成 week 1 编码和 ...
- 自然语言处理NLP 2022年最新综述:An introduction to Deep Learning in Natural Language Processing
论文题目:An introduction to Deep Learning in Natural Language Processing: Models, techniques, and tools ...
- 【Gaze】A Survey on Using Gaze Behaviour for Natural Language Processing
A Survey on Using Gaze Behaviour for Natural Language Processing 1. Abstract 摘要中主要介绍本文的工作,整篇主要讨论了在NL ...
最新文章
- Docker核心技术之网络管理
- Nanopore测序
- 如何上手深度学习中的图像处理?有这个代码资源库就够了
- 字符串中斜杠换行注意事项之-多余空格
- grub修复与grub.conf
- java(eclipse)和数据库(mysql)的连接
- wxpython制作表格界面_wxpython入门第二步(布局)
- Linux系统文件属性,什么是Linux系统的文件属性?
- linux下编程epoll实现将GPS定位信息上报到服务器
- STM32工作笔记0048---Systick滴答定时器---延时函数讲解
- DataTable数据导出到Excel
- require和include的区别(PHP)
- Python3-环境篇-01-Python3安装
- 苹果怎么应用分身_苹果ios/安卓微信双开技巧
- 微信外卖点餐系统开发教程
- Easy AR Unity开发
- 噪音分贝测试软件在线,分贝测试(在线分贝测试仪)
- React项目实现导出PDF的功能
- 程序员有哪些类型,分别薪资是多少,带你一起走进程序员的大门
- 大数据开发和java的前景_大数据开发和javaEE后端开发哪个就业前景好?
热门文章
- 相位误差对SAR图像的影响
- 硬改TP-WR886N v5 路由器刷入源码编译的openWRT/LEDE系统
- 身份证校验(JAVA、JS)
- Linux系统常用测试工具
- matlab j计算丰水期的值,科学计算与MATLAB语言超星2020期末考试查题公众号答案
- 前端学习之路Electron——全局注册、注销快捷键
- linux中的sg工具,sg3_utils工具windows系统下的使用
- 不精确微分/不完整微分(Inexact differential/Imperfect differential)
- 土方回填施工方案范本_土方回填施工方案范本
- 使用element插件中Descriptions遇到的坑