返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十二、MacBERT [2019]

发布于 2023-07-17 23:38:25 字数 48430 浏览 0 评论 0 收藏 0

  1. BERT 受到广泛的欢迎,并在最近的自然语言处理研究中被证明是有效的。BERT 利用大规模的无标记训练数据并生成丰富的 contextual representation 。在几个流行的机器阅读理解 benchmark 上,如 SQuAD,CoQA,QuAC,NaturalQuestions,RACE,我们可以看到大多数表现最好的模型是基于 BERT 及其变体,表明预训练的语言模型已经成为自然语言处理领域的新的基础部分。

    BERT 开始,社区成员在优化预训练语言模型 pre-trained language model 方面取得了巨大而迅速的进展,如 ERNIE, XLNet, RoBERTa, SpanBERT, ALBERT, ELECTRA 等等。然而,针对 learning representation ,训练 Transformer-based 的预训练语言模型并不像我们用来训练 word-embedding 或其他传统神经网络那样容易:

    • 通常情况下,训练一个强大的 BERT-large 模型(具有 24Transformer3.3 亿个参数)到收敛,需要高内存的计算设备(如 TPUTPU Pod),这些设备非常昂贵。
    • 另一方面,虽然已经发布了各种预训练的语言模型,但大多数都是基于英语的,在其他语言中建立强大的预训练语言模型的努力很少。

    为了尽量减少重复性工作,并为未来的研究建立 baseline ,在论文 《Pre-Training with Whole Word Masking for Chinese BERT》中,作者旨在建立中文预训练语言模型系列 model series ,并向公众发布,以促进科研社区,因为中文和英文是世界上最常用的语言之一。论文重新审视了现有的流行的预训练语言模型,并将其调整为中文,从而了解这些模型是否能在英语以外的语言中得到推广并表现良好。此外,论文还提出了一个新的预训练语言模型,称为MacBERT ,它将原来的 MLM 任务替换为 MLM as correction: Mac 任务。MacBERT 主要是为了缓解原始 BERT 中预训练阶段和微调阶段的差异。论文在十个流行的中文 NLP 数据集上进行了广泛的实验,范围从 sentence-level 任务到 document-level 任务,如机器阅读理解、文本分类等。实验结果表明,与其他预训练的语言模型相比,所提出的 MacBERT 可以在大多数任务中获得显著的收益。论文还给出了详细的消融实验,以更好地检查哪些因素带来改进。论文的贡献如下:

    • 为了进一步加快中文 NLP 的未来研究,论文创建了中文预训练语言模型系列并向社区发布。作者进行了广泛的实证研究,通过仔细分析来重新审视这些预训练语言模型在各种任务上的表现。
    • 论文提出了一个新的预训练语言模型,叫做 MacBERT ,通过用相似的单词来掩码一个单词,从而缓解了预训练阶段和微调阶段的 gap ,这在各种下游任务中被证明是有效的。
    • 论文还创建了一系列小型模型,称为 RBT ,从而展示小型模型与常规预训练语言模型相比的表现,这有助于在现实世界中利用这些小模型。

    本文创新力不足,更像是一篇工程实现的报告。

  2. 相关工作:这里我们重新审视了最近自然语言处理领域中具有代表性的预训练语言模型的技术。这些模型以及所提出的 MacBERT 的整体比较在下表中描述。

    • BERTBidirectional Encoder Representations from Transformers: BERT 已经在广泛的自然语言处理任务中证明了其有效性。BERT 通过在所有 Transformer 层中,同时以左侧上下文和右侧上下文为条件来预训练深度双向 representationBERT 主要由两个预训练任务组成:Masked Language Model: MLMNext Sentence Prediction: NSP

      • MLM:随机掩码输入中的一些 token ,目标是仅根据其上下文来预测原始 token
      • NSP:预测 sentence B 是否是 sentence A 的下一句。

      后来,他们进一步提出了一种叫做全词掩码(whole word masking: wwm)的技术,用于优化 MLM 任务中的原始掩码。在这个 setting 中,我们不是随机选择 WordPiece token 来掩码,而是总是一次性掩码对应于整个单词的所有 token 。这明确地迫使模型在 MLM 预训练任务中恢复整个单词,而不是仅仅恢复 WordPiece token ,而恢复整个单词的挑战性更大。由于全词掩码只影响预训练过程的掩码策略,因此它不会给下游任务带来额外的负担。

      此外,由于训练预训练语言模型的计算成本很高,他们还公布了所有的预训练模型以及源代码,这大大刺激了社区对预训练语言模型进行研究的极大兴趣。

    • ERNIEEnhanced Representation through kNowledge IntEgration: ERNIE 旨在优化 BERT 的掩码过程,其中包括 entity-level maskingphrase-level masking 。与选择输入中的随机单词不同:

      • entity-level masking 是对命名实体的掩蔽,这些实体通常由几个单词组成。
      • phrase-level masking 是掩码连续的词,这与N-gram 掩码策略相似。
    • XLNet《Xlnet: Generalized autoregressive pretraining for language understanding》 认为,现有的基于自编码的预训练语言模型(如 BERT)存在预训练阶段和微调阶段的 gap ,因为masking token (即 [MASK])从未在微调阶段出现。为了缓解这个问题,他们提出了基于 Transformer-XLXLNetXLNet 主要有两处修改:

      • 首先是在输入的分解顺序的所有排列上最大化期望的似然 expected likelihood ,在这里他们称之为排列语言模型 Permutation Language Model 。为了实现这一目标,他们提出了一种新颖的双流自注意力机制 two-stream self-attention mechanism
      • 其次是将自编码语言模型改为自回归语言模型,这与传统的统计语言模型类似。
    • RoBERTaRobustly Optimized BERT Pretraining Approach: RoBERTa 旨在采用原始的 BERT 架构,但做了更精细的修改,以充分释放 BERT 的力量。他们对 BERT 中的各种组件进行了仔细的比较,包括掩码策略、输入格式、训练步数等。经过全面的评估,他们得出了几个有用的结论从而使得 BERT 更加强大,主要包括:

      • 用更大的 batch size 和更长的序列在更多的数据上进行更长时间的训练。
      • 取消 next sentence prediction 任务,以及在 MLM 任务中使用动态掩码 dynamic masking
    • ALBERTA Lite BERT: ALBERT 主要解决了 BERT 的内存消耗较大和训练速度慢的问题。ALBERT 介绍了两种减少参数的技术。

      • 第一个是 factorized embedding parameterization ,它将 embedding 矩阵分解为两个小矩阵。
      • 第二个是跨层参数共享,即在 ALBERT 的每一层共享 Transformer 权重,这大大减少了整体参数。

      此外,他们还提出了 sentence order prediction: SOP 任务,取代传统的 NSP 预训练任务,从而产生更好的性能。

    • ELECTRAEfficiently Learning an Encoder that Classifiers Token Replacements Accurately: ELECTRA 采用了一个新的 generator-discriminator framework ,类似于生成对抗网 generative adversarial net: GAN

      • 生成器通常是一个小型的 MLM ,学习预测 masked token 的原始 token
      • 判别器被训练来判别 input token 是否被生成器所替换,这被称作 Replaced Token Detection: RTD

      注意,为了实现有效的训练,判别器只需要预测一个二元标签来表示 "replacement",而不像 MLM 预测准确的 masked word 。在预训练阶段之后,我们抛弃了生成器,只用判别器来微调下游的任务。

22.1 模型

22.1.1 中文预训练模型

  1. 虽然BERT 及其变体在各种英语任务中取得了显著的改进,但我们想知道这些模型和技术是否能在其他语言中得到很好的泛化。在本节中,我们将说明现有的预训练语言模型是如何适用于中文的。我们采用 BERTRoBERTaELECTRA 以及它们的变体来创建中文预训练模型系列model series ,其有效性在实验部分展示。需要注意的是,由于这些模型都是源于 BERTELECTRA ,没有改变输入的性质,在微调阶段无需修改从而适配这些模型,相互替换非常灵活。

  2. BERT-wwm & RoBERTa-wwm:原始的 BERT 使用 WordPiece tokenizer 将文本拆分成 WordPiece tokens ,其中一些单词被拆分成几个小的片段 small fragment 。全词掩码 whole word masking: wwm 缓解了仅掩码整个单词的一部分的缺点,因为仅掩码整个单词的一部分对模型来说更容易预测。

    根据单词的一部分 token 来预测另一部分 token 相对比较容易,如 player 被拆分为 play##er 两个 token 。如果被掩码的token##er,那么已知 play 来预测 ##er 要相对容易。

    在中文条件下,WordPiece tokenizer 不再将单词分割成小的片段,因为汉字不是由类似字母的符号组成。我们使用中文分词 Chinese Word Segmentation: CWS 工具,将文本分割成若干个词语。通过这种方式,我们可以采用中文的全词掩码,而不是单个汉字的掩码。在实施过程中,我们严格遵循原有的全词掩码代码,不改变其他的组成部分,如 word masking 的百分比等。我们使用 LTP 进行中文分词来识别单词的边界。需要注意的是,全词掩码只影响到预训练阶段的 masking token 的选择。我们仍然使用 WordPiece tokenizer 来拆分文本,这与原始的 BERT 是相同的。

    同样地,全词掩码也可以应用于 RoBERTa ,其中没有采用 NSP 任务。然而,我们仍然使用 paired input 进行预训练,这可能有利于sentence pair 的分类任务和阅读理解任务。

    SpanBERT 表明,single-sequence training 的效果要好于 bi-sequence training,因为单个句子的训练可以获得更长的上下文。

    下表中描述了一个全词掩码的例子。

  3. ELECTRA:除了 BERTRoBERTa 系列,我们还探索了 ELECTRA 模型,它采用了一个新的预训练框架,由生成器和判别器组成。我们严格遵循 ELECTRA 原始论文中的原始实现。

  4. RBT Series:尽管上述的预训练语言模型很强大,但它们不是计算高效的,而且很难在实际应用中采用。为了使社区研究人员更容易获得预训练的模型,除了常规的预训练语言模型,我们还预训练了几个小模型,我们称之为 RBT

    具体而言,我们使用与训练 RoBERTa 完全相同的训练策略,但我们使用较少的 Transformer 层。我们训练 3 层、4 层、6 层的RoBERTa-base ,分别表示为 RBT3RBT4RBT6 。我们还训练了一个 3 层的 RoBERTa-large ,表示为 RBTL3 ,它的参数规模与 RBT6 相似。这样做的目的是在参数规模相当的情况下,比较一个更宽更浅的模型(RBTL3)和一个更窄更深的模型(RBT6),这有助于未来预训练语言模型的设计。

22.1.2 MACBERT

  1. 在上一节中,我们提出了一系列的中文预训练语言模型。在这一节中,我们充分利用这些模型,并提出了一个叫做 MLM as correction BERT: MacBERT 的新型模型。MacBERTBERT 共享相似的预训练任务类型,并做了一些修改。MacBERT 由两个预训练任务组成:MLM as correctionsentence order prediction

    下图描述了 MacBERT 的整体架构。

  2. MLM as correctionMLMBERT 及其变体中最重要的预训练任务,它建模了双向上下文推断 bidirectional contextual inference 的能力。然而,如前所述,MLM 存在预训练阶段和微调阶段的不一致性,即预训练阶段的人工标记(如 [MASK])从未出现在真正的下游微调任务中。

    为了解决这个问题,我们提出了一个新的预训练任务,称为 MLM as correction: Mac 。在这个预训练任务中,我们不采用任何预定义的 token 来进行掩码。相反,我们将原始的 MLM 转化为一个文本纠正 text correction 任务:模型应该将错误的单词纠正为正确的单词,这比 MLM 更自然。具体而言,在 Mac 任务中,我们对原始 MLM 进行了以下修改:

    文本纠正任务要比 MLM 任务更简单。文本纠正任务是:给定 original wordsimilar word,因此需要预测的 original word 一定跟 similar word 非常相似。这大大缩小了候选单词的范围。

    例如:原始句子为 I like play football. ,我们用 basketball 代替了 football,变成 I like play basketball.。我们需要根据这个句子来预测最后一个单词为 football 。事实上,我们知道这个目标单词和 basketball 非常相似,这大大缩小了候选单词的范围。

    • 我们使用全词掩码策略以及 N-gram 掩码策略来选择候选 token 进行掩码,对于 word-levelunigram, 2-gram, 3-gram, 4-gram,其掩码比例分别为 40%, 30%, 20%, 10% 。我们还注意到,最近的一项工作提出了 PMI-masking《{PMI}-masking: Principled maskingof correlated spans》),它优化了掩码策略。在本文中,我们采用的是普通的 N-gram 掩码,并将在未来尝试 PMI 掩码。

    • 在微调阶段,[MASK] token 从未出现过,我们建议使用 similar word 来进行掩码,而不是用 [MASK] token 进行掩码。 similar word 是通过使用同义词工具包 Synonyms toolkithttps://github.com/huyingxi/Synonyms)来获得的,它是基于 word2vec 的相似性来计算。如果选择了一个 N-gram 进行掩码,我们会对每个被掩码的单词寻找 similar word

      在极少数情况下,当没有 similar word 时,我们会退化到使用 random word 来替换。这种random word 替换被限制在不超过所有待掩码的 token10%

      similar wordtoken 数量与原始单词的 token 数量不一致,怎么解决?例如,原始单词为 player,它的 token[play, #er]similar wordparticipant,它的 token['participant']

      这种纠错的方式可以视为对输入加噪音的一种,可以用于 BART 的预训练任务。

    • 遵从以前的工作,我们使用 15% 的输入词进行掩码,其中 80%token 被替换成 similar word10%token 被替换成random word,其余 10%token 保持原词。

      此外,所有这 15% 的输入词中,对于 word-levelunigram, 2-gram, 3-gram, 4-gram 的掩码比例分别为 40%, 30%, 20%, 10%

  3. Sentence Order PredictionBERT 中最初的 next sentence prediction: NSP 任务被认为对模型来说太容易了,人们已经证明它不是那么有效(Roberta 原始论文、ALBERT 原始论文)。在本文中,我们采用了由 ALBERT 引入的 sentence order prediction: SOP 任务,该任务被证明比 NSP 更有效。正样本是通过使用两个连续的文本创建的,而负样本是通过交换它们的原始顺序创建的。我们在实验部分中消融这些修改,以更好地展示每个组成部分的贡献。

  4. 神经架构 Neural Architecture:正式地,给定两个序列A={A1,,An}$ A=\{A_1,\cdots,A_n\} $ 和B={B1,,Bn}$ B=\{B_1,\cdots,B_n\} $ ,

    • 我们首先通过拼接两个序列来构建输入序列X$ X $ 。

    • 然后,MacBERT 通过一个 embedding layer(由 word embedding, positional embedding, token type embedding 组成)和L$ L $ 层的 transformerX$ X $ 转换为 contextualized representationH(L)RN×d$ \mathbf H^{(L)} \in \mathbb R^{N\times d} $ ,其中N$ N $ 为最大序列长度、d$ d $ 是隐层维度:

      (17)X=[CLS]A1An[SEP]B1Bm[SEP]H(0)=Embedding(X)H(i)=Transformer(H(i1)),i{1,,L}

      token type embedding 就是 segment embedding

    • 我们只需要预测被 Mac 任务替代的 position ,在得到 contextual representationH(L)$ \mathbf H^{(L)} $ 之后,我们收集一个与 replaced position 有关的子集,形成 replaced representationH~Rk×d$ \tilde {\mathbf H}\in \mathbb R^{k\times d} $ ,其中k$ k $ 是 replaced token 的数量。根据 Mac 任务的定义,k=N×15%$ k=\lfloor N\times 15\%\rfloor $ 。

    • 然后我们将H~$ \tilde {\mathbf H} $ 投影到 vocabulary space 中,从而预测在整个词表V$ \mathbb V $ 上的概率分布p$ \mathbf p $ 。遵从原始的 BERT 实现,我们也使用 word embedding 矩阵WeR|V|×d$ \mathbf W^e\in \mathbb R^{|\mathbb V|\times d} $ 来进行投影,其中 embedding 维度和隐层维度是相同的:

      (18)pi=softmax(h~i(We)+b)R|V|

      其中:h~iRd$ \tilde{\mathbf {\vec h}}_i\in \mathbb R^d $ 为H~$ \tilde{\mathbf H} $ 中的第i$ i $ 个 replaced representationpi$ \mathbf{\vec p}_i $ 为归一化的概率分布;We,b$ \mathbf W^e,\mathbf{\vec b} $ 为待学习的参数。

    • 然后我们使用标准的交叉熵损失来优化预训练任务:

      (19)Lmac=1ki=1kj=1|V|I(yi=j)logpi,j

      其中:

      • I(yi=j)$ \mathbb I(y_i=j) $ 当且仅当yi=j$ y_i=j $ 时为 1,否则为 0
      • yi$ y_i $ 为第i$ i $ 个 replaced tokenground truth
      • pi,j$ p_{i,j} $ 为模型预估第i$ i $ 个 replaced tokenj$ j $ 的概率。
    • 对于 SOP 任务,我们直接使用[CLS] tokencontextual representation ,也就是H(L)$ \mathbf H^{(L)} $ 的第一行,并将其投影到 label prediction layer

      (20)p=softmax(h0(L)(Ws)+bs)R2

      其中:h0(L)$ \mathbf{\vec h}_0^{(L)} $ 为H(L)$ \mathbf H^{(L)} $ 的第一行;WsRd×2,bsR2$ \mathbf W^s\in \mathbb R^{d\times 2},\mathbf{\vec b}^s\in \mathbb R^2 $ 为待学习的参数;p$ \mathbf{\vec p} $ 为归一化的概率分布。

      我们也使用交叉熵损失来优化 SOP 预训练任务。

    • 最后,整体训练损失是 Mac 损失和 SOP 损失的组合:

      (21)L=Lmac+Lsop

      这里是否需要用超参数α$ \alpha $ 来平衡这两个损失的重要性?

22.2 实验

22.2.1 实验配置

  1. 数据处理:我们使用 Wikipedia dump (截至 2019325 日),并按照 BERT 原始论文的建议用 WikiExtractor.py 进行预处理,结果有 1307extracted files 。我们在这个 dump 中同时使用了简体中文和繁体中文,并没有将繁体中文部分转换成简体中文。我们在实验部分展示了在繁体中文任务中的有效性。在清理原始文本(例如去除 html tag )以及分离文件之后,我们得到了大约 0.4B 单词。

    由于 Chinese Wikipedia 的数据相对较少,除了 Chinese Wikipedia ,我们还使用扩展的训练数据来训练这些预训练语言模型(模型名称中标有 ext )。内部收集的扩展数据包含百科全书 encyclopedia 、新闻、以及问答网络 question answering web,有 5.4B 单词,比 Chinese Wikipedia 大十倍以上。请注意,对于 MacBERT 我们总是使用扩展数据,并省略 ext 标记。

    为了识别全词掩码的中文单词的边界,我们使用 LTP 进行中文分词。我们使用 BERT 原始论文提供的 create_pretraining_data.py 将原始输入文本转换为预训练样本。

  2. 预训练语言模型的配置:为了更好地从现有的预训练好的语言模型中获取知识,我们没有从头开始训练我们的 base-level model ,而是从官方的 Chinese BERT-base 开始,继承其词表 vocabulary 和模型权重。然而,对于 large-level model ,我们必须从头开始训练,但仍然使用 base-level model 提供的相同词表。

    • base-level model 是一个 12 层的 transformer ,隐层维度为768
    • large-level model 是一个 24 层的 transformer ,隐层维度为 1024

    对于训练 BERT series ,我们采用了 BERT 所建议的方案:预训练开始时选择最大序列长度为 128token,然后选择最大序列长度为 512token。然而,我们根据实验发现,这导致对长序列任务(如阅读理解任务)的适应性 adaptation 不足。在这种情况下,对于 BERT 以外的模型,我们直接在整个预训练过程中使用 512 的最大长度,这在 Roberta 中被采用。

    对于较小的 batch size ,我们采用 BERT 中原始的、带权重衰减的 ADAM 优化器进行优化。对于较大的 batch size ,我们采用 LAMB 优化器以获得更好的 scalability 。预训练是在单个 Google Cloud TPU v3-8 (相当于单个TPU )或 TPU Pod v3-32 (相当于 4TPU)上进行的,这取决于模型的规模。具体而言,对于 MacBERT-large ,我们训练了 2M 步,batch size = 512 ,初始学习率为 1e-4

    训练细节如下表所示。为了简洁,我们没有列出 'ext' 模型,其中 'ext' 模型的超参数与没有在扩展数据上训练的模型相同。

  3. 微调任务的配置:为了彻底测试这些预训练语言模型,我们对各种自然语言处理任务进行了广泛的实验,涵盖了广泛的文本长度,即从 sentence-leveldocument-level 。任务细节如下表所示。具体而言,我们选择了如下十个流行的中文数据集:

    • 机器阅读理解 Machine Reading Comprehension: MRCCMRC 2018, DRCD, CJRC
    • 单句分类 Single Sentence Classification: SSCChnSentiCorp, THUCNews, TNEWS
    • 句子对分类 Sentence Pair Classification: SPCXNLI, LCQMC, BQ Corpus, OCNLI

    为了进行公平的比较,对于每个数据集,我们保持相同的超参数(如最大序列长度、warm-up 步数等),只对每个任务的初始学习率调优 (从 1e-55e-5 )。请注意,初始学习率是在原始的 Chinese BERT上调优的,通过对每个任务独立地调优学习率,有可能实现另一种增益。我们将相同的实验运行十次,以确保结果的可靠性。最佳的初始学习率是通过选择最佳的平均验证集性能来确定的。我们报告最高分和平均分,从而同时评估峰值性能和平均性能。除了 TNEWSOCNLI 的测试集没有公开,我们同时报告验证集和测试集的结果。

    注意,这里是用于微调任务的超参数,与预训练任务的超参数有所差异。

    对于除 ELECTRA 以外的所有模型,我们对每个任务使用相同的初始学习率设置,如下表所示。对于 ELECTRA 模型,我们按照 ELECTRA 原始论文的建议,对 base-level model 使用 1e-4 的通用初始学习率,对 large-level model 使用 5e-5 的通用初始学习率。

    由于现有的各种中文预训练语言模型,如ERNIE, ERNIE 2.0, NEZHA 的预训练数据有很大的不同,我们只对 BERT, BERT-wwm, BERT-wwm-ext, RoBERTa-wwm-ext, RoBERTa-wwm-ext-large, ELECTRA 以及我们的 MacBERT 进行比较,从而保证不同模型之间相对公平的比较。其中,除了原始的 Chinese BERT ,所有模型都由我们自己训练。我们在 TensorFlow 框架下进行了实验,并对 BERT 原始论文提供的微调脚本进行了轻微改动,以更好地适配中文任务。

22.2.2 实验结果

  1. 机器阅读理解:机器阅读理解是一项有代表性的 document-level 建模任务,要求根据给定的段落回答问题。我们主要在三个数据集上测试这些模型:CMRC 2018, DRCD, CJRC

    • CMRC 2018:一个 span-extraction 的机器阅读理解数据集,与 SQuAD 类似,为给定的问题抽取一个 passage span
    • DRCD:这也是一个 span-extraction 的机器阅读理解数据集,但是是繁体中文。
    • CJRC:类似于CoQA,它有yes/no question、没有答案的问题、以及 span-extraction question 。该数据收集自中国的法律判决文件。注意,我们只使用 small-train-data.json 进行训练。

    结果如下表所示。可以看到:

    • 使用额外的预训练数据会带来进一步的改进,如 BERT-wwmBERT-wwm-ext 之间的比较所示。这就是为什么我们对RoBERTaELECTRAMacBERT 使用扩展数据。

      注意,MacBERT 默认就使用了扩展数据。

    • 此外,所提出的 MacBERT 在所有阅读理解数据集上都产生了显著的改进。值得一提的是,我们的 MacBERT-large 可以在 CMRC 2018Challenge 集合上实现 SOTAF1 ,即60% ,这需要更深入的文本理解。

    • 此外,应该注意的是,虽然 DRCD 是一个繁体中文数据集,但用额外的大规模简体中文进行训练也会有很大的积极作用。由于简体中文和繁体中文有许多相同的字符,使用带有少量繁体中文数据的一个强大的预训练语言模型也可以带来改进,而不需要将繁体中文字符转换为简体字符。

    • 关于 CJRC ,其中文本是以关于中国法律的专业方式写成的,BERT-wwmBERT 显示出适度的改进,但不是那么突出,表明在非通用领域的微调任务中需要进一步的领域适应 domain adaptation 。然而,增加通用的预训练数据会导致改善,这表明当没有足够的领域数据 domain data 时,我们也可以使用大规模的通用数据作为补救措施。

    这里没有 BERT-large 的数据,因为 BERT 官方未提供。根据论文的说明,MacBERT-base 是用预训练好的 BERT-base 来初始化的,这相当于 MacBERT-baseBERT-base 训练更长的时间,因此它的效果更好,也就不足为奇。

  2. 单句分类:对于单句分类任务,我们选择 ChnSentiCorp, THUCNews, TNEWS数据集:

    • ChnSentiCorp 用于评估情感分类,其中文本应该被划分为正面或负面的 label
    • THUCNews 是一个包含不同类型的新闻的数据集,其中的文本通常很长。在本文中,我们使用了一个包含 10 个领域(均匀分布)的 50K 个新闻的版本,包括体育、金融、技术等等领域。
    • TNEWS 是一个由新闻标题和关键词组成的短文本分类任务,要求分类到 15 个类别中的一个。

    结果如下表所示。可以看到:

    • MacBERT 可以在 ChnSentiCorpTHUCNews 中比 baseline 有适度的改进,即使这些数据集已经达到了很高的准确率。
    • TNEWS 中,MacBERTbase-levellarge-level 预训练语言模型中产生了一致的改进。

  3. 句子对分类:对于句对分类任务,我们使用了 XNLI 数据(中文部分)、Large-scale Chinese Question Matching Corpus : LCQMCBQ Corpus 、以及 OCNLI,这些数据需要输入两个序列并预测它们之间的关系。结果如下表所示。可以看到:

    • XNLIOCNLI 中,MacBERTbaseline 产生了相对稳定和显著的改进。然而,MacBERTLCQMCBQ Corpus 上仅仅显示了适度的改进,平均得分略有提高,但峰值性能不如 RoBERTa-wwm-ext-large

      我们怀疑这些任务对输入的细微差别的敏感性不如阅读理解任务。由于 sentence pair classification 只需要生成整个输入的 unified representation ,因此导致了适度的改进。

    • 机器阅读理解任务的改进比分类任务更大,这可能归因于掩码策略。在机器阅读理解任务中,模型应该识别段落中的 exact answer span 。在 MacBERT 中, 每个 N-gram单词都被其同义词或一个随机词所取代,因此每个词都可以很容易地被识别,这迫使模型学习 word boundary

      这里的解释比较苍白,原因没有讲清楚。

    • MacBERT-base 通常比 MacBERT-large 产生更大的改进。这可能是由两个原因造成的。

      • 首先,MacBERT-base 是由 BERT-base 初始化的,它可以从 BERT-base 的知识中受益,并避免冷启动的问题。
      • 其次,large-level 预训练语言模型的结果通常高于 base-level 预训练语言模型的结果,因此获得更高的分数要比 base-level 预训练语言模型困难得多。

  4. 小模型的结果:我们还建立了一系列的小模型,即 RBT ,建立在 RoBERTa-baseRoBERTa-large 模型上。实验结果如下表所示。可以看到:

    • 小模型的表现比一般模型(base-level, large-level)更差,因为它们使用的参数较少。
    • 分类任务的性能下降比阅读理解任务要小,说明可以牺牲微小的性能来获得更快、更小的模型,这对现实生活中的应用是有益的。
    • 通过比较参数大小相似的 RBTL3RBT6 ,我们可以看到 RBT6 的性能大大优于 RBTL3 ,这表明窄而深的模型通常优于宽而浅的模型。

    这些观察结果对未来实际应用中的模型设计是有帮助的。

22.3 讨论

  1. 根据实验结果,我们可以看到:这些预训练的语言模型在中文任务中也比传统的 BERT 有明显的改进,这表明它们的有效性和通用性。虽然我们的模型在各种中文任务中取得了显著的改进,但我们想知道这些改进的基本组件 essential component 来自哪里。为此,我们在 MacBERT 上进行了详细的消融研究从而证明其有效性。此外,我们还比较了现有的预训练语言模型在英语中的声明 claim ,看看它们的修改在另一种语言中是否仍然成立。

22.3.1 MacBERT 的有效性

  1. 我们进行了详细的消融研究,以检查 MacBERT 中每个组件的贡献。结果如下表所示。总的平均分数是通过平均每个任务的测试分数得到的。 w/o 表示 without 。可以看到:

    • 总体而言,删除 MacBERT 中的任何组件都会导致平均性能的下降,这表明所有的修改都有助于整体改进。

    • 具体而言,最有效的修改是 N-gram maskingsimilar word 替换,这是对 masked language model: MLM 任务的修改。当我们比较 N-gram maskingsimilar word 替换时,我们可以看到明显的优点和缺点,其中:N-gram masking 似乎在文本分类任务中更有效(以 ACC 为指标的任务),而阅读理解任务的表现似乎更受益于similar word 替换任务。将这两个任务结合起来可以相互弥补,在两种任务上都有更好的表现。

      数据不支持这里的结论。N-gram masking: NMsimilar word 替换、以及 SOP 的贡献都相差无几(缺少它们,导致平均准确性都在 86.89 附近)。此外,不同组件对于不同任务,也没有看出特别突出的贡献。

    • next sentence prediction: NSP 任务没有显示出像 MLM 任务那样的重要性,这表明设计一个更好的 MLM 任务来充分释放文本建模的能力更为重要。

    • 此外,我们还比较了 next sentence prediction 任务和 sentence order prediction 任务,以更好地判断哪一个任务更强大。结果显示,sentence order prediction 任务确实比原来的 next sentence prediction 任务表现得更好,尽管它不是那么突出。

    • sentence order prediction 任务要求识别两个句子的正确顺序,而不是使用一个随机的句子,这对机器来说更容易识别。与文本分类任务相比,在阅读理解任务中去掉 sentence order prediction 任务会导致性能明显下降,这表明有必要设计一个类似 next sentence prediction 的任务来学习两个 segment 之间的关系(例如,阅读理解任务中的段落和问题)。

    点评:本文创新力不足,感觉更像是一个工程实现的报告而已。

22.3.2 MLM 任务上的调研

  1. 如上一节所示,最主要的预训练任务是 masked language model 及其变体。masked language model 任务依赖于两个方面:选择要被掩码的 token 、替换被选中的 token

    在上一节中,我们已经证明了选择 masking token 的有效性,如全词掩码或 N-gram masking等。现在我们要研究的是:所选中 token 的替换对预训练语言模型的性能有何影响。

    为了研究这个问题,我们绘制了不同预训练步数下 CMRC 2018DRCD 的性能。具体而言,我们遵从对输入序列的 15% 的原始掩码比例,其中 10% masked token 保持不变。对于剩下的 90% masked token ,我们将其分为四类:

    • MacBERT80% masked token 被替换为它们的 similar word10% masked token 被替换为随机的单词。
    • Random Replace90% masked token 被替换为随机的单词。
    • Partial Mask:原始的 BERT 实现,80% masked token 被替换为 [MASK]10% masked token 被替换为随机的单词。
    • All Mask90% masked token 被替换为 [MASK]

    我们仅绘制了从 1M 步到 2M 步的结果,如下表所示。可以看到:

    • 主要依靠使用 [MASK] 进行掩码的预训练模型(即 partial maskall mask)导致了更差的性能,表明预训练和微调的差异是一个实际问题,该问题影响整体性能。

      partial maskall mask 中,我们还注意到,如果不保留 10%original token (即恒等映射),也会出现一致的下降。这表明完全使用 [MASK] token 的掩码的鲁棒性更差。

    • 令我们惊讶的是,完全放弃 [MASK] token ,而是将所有 90% masked token 替换成随机的单词,产生了比[MASK]-dependent 的掩码策略更一致的改进。这也强化了这样的说法:依靠 [MASK] token 的原始掩码方法导致了更差的性能,因为 [MASK] token 在微调任务中从未出现过。

      另外,使用随机单词而不是人工的 [MASK] token 可以提高预训练模型的降噪能力,这可能也是一个原因。

    • 为了使这个问题更加精细,在本文中,我们提出使用 similar word 来进行掩码,而不是一个随机的单词。因为随机的单词不符合上下文,可能会破坏语言模型学习的自然性naturalness ,因为传统的 N-gram 语言模型是基于自然的句子,而不是一个被操纵的句子。然而,如果我们使用 similar word 来进行掩码,句子的流畅性就比使用随机单词要好得多,整个任务就转化为一个语法纠正任务 grammar correction task ,这就更自然了,而且没有预训练阶段和微调阶段的差异。

      从下图中中我们可以看出,MacBERT 在四个变体中产生了最好的性能,这验证了我们的假设。

      如果要追求自然性,那么自回归语言模型要比带噪音的双向语言模型更有利。

22.3.3 中文拼写检查上的分析

  1. MacBERT 引入了 'MLM as correction' 任务,这与实际的语法或拼写错误校正任务相似。我们对中文拼写检查 Chinese Spell Check 任务进行了额外的实验。我们使用 SIGHAN-15 数据集来探索使用不同比例的训练数据时不同预训练语言模型的效果。

    SIGHAN-15 包括一个训练集( 3.1K 实例)和一个测试集 (1.1K 实例)。我们在这个实验中比较了 BERT-wwm-ext, RoBERTa-wwm-ext, ELECTRA-base, MacBERT-base ,因为它们共享相同的预训练数据。我们对每个模型进行了五次微调,并绘制了平均 F1sentence-level)。我们使用 5e-5 的通用学习率,训练 5epochbatch size = 64 。结果如下图所示,其中包括 detection-level 分、correction-level 分。可以看到:

    • 当使用不同比例的训练数据时,MacBERT 比其他模型产生了一致的改进,这表明 MacBERT 是有效的和 scalable 的。

    • 我们注意到 ELECTRA 在这项任务上表现不佳。具体而言,ELECTRA 和其他模型的结果,在 correction-level 的差距相对于detection-level 的差距更大。

      ELECTRA 使用 replaced token detection: RTD 任务来训练判别器(判别器将用于微调)。然而,RTD 任务只需要识别输入 token 是否被改变,而不需要预测 original token ,我们认为这很简单。相反,MLM 任务和 Mac 任务的目标需要同时 identify-and-correction

    • 通过比较 MLMMac ,我们的 MacBERT 缓解了预训练和微调之间差异的问题,这产生了另一个重要的收益。

    • 虽然 Mac 任务与拼写检查任务相似,但我们只使用同义词进行替换,这在真正的拼写检查任务中仅占很小的比例。这可以解释为什么当可用的训练数据较少时,我们的模型没有产生比其他模型更大的改进。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文