温故知新,曾经的NLP王者BERT是如何进化的

type
status
date
slug
summary
tags
category
icon
password

模型结构演进

本文以演进方向和目的为线索梳理了一些我常见到但不是很熟悉的预训练语言模型,首先来看看“完全版的BERT”:RoBERTa: A Robustly Optimized BERT Pretraining Approach(2019)可看成是完全体的 BERT,主要3方面改进,首先采用了 Dynamic mask,即每个文本进入训练时动态 mask 掉部分 token,相比原来的 BERT,可以达到同一个文本在不同 epoch 被 mask 掉的 token 不同,相当于做了一个数据增强。其次,不使用 NSP(下一句预测) 任务,效果会有一定提升。最后,RoBERTa 增大了训练时间和训练数据、 batch size 以及对 BPE(输入文本的分词方法)进行了升级。
接下来从不同思路的演进方向介绍一下各种改进的预训练语言模型。

演进方向一:Unified Sequence Modeling

想做大统一的模型可以从两方面着手,第一是任务混合,第二是结构混合。
任务混合指将 NLU 和 NLG 同时进行预训练,比如 XLNet、MPNet 采用的 Permutaioon language modeling,兼顾上下文与自回归;或者是 UniLM, GLM采用的Multi-task training,通过对注意力矩阵的设计使得这两种任务同时训练。
结构混合则更多使用 Seq2seq 去做理解和生成。比如 MASS、T5和BART。但也面临如下挑战:
  1. 编码器-解码器占用更多的参数,参数利用率较低(即使有参数共享)
  1. Seq2seq 的结构在 NLU 任务上表现差(2023回顾:当时还是年轻啊,不敢想现在的模型规模。。。),好于 BERT 但低于 RoBERTa 和 GLM

  • Unified Language Model Pre-training for Natural Language Understanding and Generation(NIPS 2019)提出了UniLM预训练语言模型。本文认为 EMLo 采用 前向+后向LSTM、GPT 采用从左至右的单向 Transformer、BERT 采用双向 Attention 都有优缺点。UniLM 融合了3种语言模型优化目标,通过控制 mask 在一个模型中同时实现了3种语言模型优化任务,在 pretrain 过程交替使用3种优化目标。下图比较形象的描述了 UniLM是如何利用 mask 机制来控制3种不同的优化任务,核心思路是利用 mask 控制生成每个 token 时考虑哪些上下文的信息。
notion image
  • XLNet: Generalized Autoregressive Pretraining for Language Understanding(NIPS 2019)提出了 XLNet 模型,融合了 BERT 和 GPT 这两类预训练语言模型的优点,并且解决了BERT中 pretrain 和 finetune 阶段存在不一致的问题(pretrain 阶段添加 mask 标记,finetune 过程并没有 mask 标记)。XLNet 融合了 AR 模型(类 GPT,ELMo)和 AE 模型各自的优点,既能建模概率密度,适用于文本生成类任务,又能充分使用双向上下文信息。XLNet 实现 AR 和 AE 融合的主要思路为,对输入文本进行排列组合,然后对于每个排列组合使用 AR 的方式训练,不同排列组合使每个 token 都能和其他 token 进行信息交互,同时每次训练又都是 AR 的。
  • BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension(2019)提出了一种新的预训练范式,包括两个阶段:首先原文本使用某种 noise function 进行破坏,然后使用 sequence-to-sequence 模型还原原始的输入文本。下图中左侧为 Bert 的训练方式,中间为 GPT 的训练方式,右侧为 BART 的训练方式。首先,将原始输入文本使用某些 noise function,得到被破坏的文本。这个文本会输入到类似 BERT 的 Encoder 中。在得到被破坏文本的编码后,使用一个类似GPT的结构,采用自回归的方式还原出被破坏之前的文本。
notion image
文中尝试了多种类型的 noise function,如 token masking、sentence permutation、text infilling等,其中 sentence permutation+text infilling 的方式取得了最好的效果。Text infilling 指的是随机 mask 某些 span。下图展示了文中提出的一些 noise function 方法。
notion image

演进方向二:Cognitive-Inspired Architectures

为了模拟决策能力、逻辑推理能力、反实时推理能力(复盘)。需要模型有短时记忆与长期记忆,短时记忆用来决策和推理,长期记忆用来回忆事实和经验。
像 Transformer-XL, CogQA, CogLTX 这类模型,就是增加了 Maintainable Working Memory,通过样本维度的记忆提升长距离理解能力,实现推理;REALM, RAG 这类模型则是对语料、实体或者三元组进行记忆,具有 Sustainable Long-Term Memory,将信息提前编码,在需要的时候检索出来。

演进方向三:提升mask策略

BERT-Chinese-wwm利用中文分词,将组成一个完整词语的所有单字同时掩盖。ERNIE扩展了中文全词掩盖策略,扩展到对于中文分词、短语及命名实体的全词掩盖。SpanBERT采用了几何分布来随机采样被掩盖的短语片段,通过Span边界词向量来预测掩盖词
ERNIE: Enhanced Representation through Knowledge Integration(2019)ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding(2019)同名工作,主要关注用外部知识辅助设计预训练任务,v1 设计了 entity-level 的 MLM 任务,mask 掉的不是单个 token,而是输入文本中某个 entity 对应的连续多个 token;v2 引入了更多 task(如 v1 的 entity-level mask、Capitalization Prediction Task、Token-Document Relation Prediction Task 等),采用 continual multitask learning 的方式不断构造新的任务,并且以增量的方式进行多任务学习,每来一个任务都把历史所有任务放到一起进行多任务学习,避免忘记历史学到的知识。
ELECTRA引入替代词检测,来预测一个由语言模型生成的句子中哪些词是原本句子中的词,哪些词是语言模型生成的且不属于原句子中的词。
notion image
ELECTRA 使用一个小型的 MLM 模型作为生成器(Generator),来对包含 [MASK] 的句子进行预测。另外训练一个基于二分类的判别器(Discriminator)来对生成器生成的句子进行判断。

演进方向四:Knowledge-Enhanced Pre-Training

预训练模型可以从大量语料中进行学习,但知识图谱、领域知识不一定能学到。
对于这个问题可以有两种解决方案,一种是外挂型,把知识通过各种方法和文本一起输入进去,比如 清华ERNIE、K-BERT,另一种是强迫型,在领域数据、结构化文本上精调,让模型记住这些知识,比如 百度ERNIE、WWM。

K-BERT通过嵌入实体关系知识使用外部知识,实体关系三元组是知识图谱的最基本的结构,也是外部知识最直接和结构化的表达。K-BERT从BERT模型输入层入手,将实体关系的三元组显式地嵌入到输入层中。
notion image
SemBERT则使用特征向量拼接的方式融合外部知识,SemBERT使用语义角色标注(Semantic Role Labeling)工具,获取文本中的语义角色向量表示,与原始BERT文本表示融合。
ERNIE: Enhanced Language Representation with Informative Entities(2019)则用训练目标融合知识,以 DAE 的方式在 BERT 中引入了实体对齐训练目标,WKLM 通过随机替换维基百科文本中的实体,让模型预测正误,从而在预训练过程中嵌入知识。引入知识图谱对 BERT 进行优化,模型主要分为 T-Encoder 和 K-Encoder 两个部分。T-Encoder 类似 BERT,K-Encoder 识别输入文本中的实体并获取这些实体的 embedding,然后融合到输入文本的对应 token 位置。每层都会融合上一层的 token embedding 和 entity embedding。此外,ERNIE在预训练阶段增加了 token-entity relation mask 任务,在20%的 entity 上,会 mask 掉 token 和 entity 的对齐关系,让模型来预测当前 token 对应的是哪个 entity。
notion image

演进方向五:模型压缩

参数共享、模型剪枝(可以修剪head或者砍掉层)、知识蒸馏、模型量化(FP16等,低比特模型跟硬件强相关,很难泛化)

ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS(2020)提出了一个轻量级的 BERT 模型,以此降低运行开销,本文主要提出了两个优化:首先是 Factorized embedding parameterization,即对输入的embedding进行分解,原始的 BERT 将 token 输入的 embedding 维度 E 和模型隐藏层维度 H 绑定了,即 E=H,本文提出可以让 E 和 H 解绑,将 E 变成远小于 H 的维度,再用一层全连接将输入 embedding 映射到 H 维。这样模型 embedding 部分参数量从 下降到了 Cross-layer parameter sharing。前者 Cross-layer parameter sharing让Bert每层的参数是共享的,以此来减小模型参数量。除了上述两个降低 BERT 运行开销的优化外,ALBERT 提出了 inter-senetnce loss 这一新的优化目标。原来 Bert 中的 NSP 任务可以理解为 topic prediction 和 coherence prediction 两个任务。其中 topic prediction 是一种特别简单的任务,由于其任务的简单性,导致 coherence prediction 学习程度不足。本文提出将 coherence prediction 单独分离出来,相比 BERT,正样本仍然是一个 document相邻的两个 segment,负样本变成这两个 segment 的顺序交换。
DistilBERT 在预训练阶段蒸馏,其学生模型具有与 BERT 结构,但层数减半。
TinyBERT 为BERT的嵌入层、输出层、Transformer 中的隐藏层、注意力矩阵都设计了损失函数,来学习 BERT 中大量的语言知识。
notion image

演进方向六:Multilingual Pre-Training

BERT之前的跨语言学习主要有两种方法:
  1. 参数共享,比如使用跨语言平行语料让模型可以同时学到不同知识
  1. 学习语言无关的约束,将编码解耦为语言相关的部分和无关的部分
有了预训练方法之后,我们就可以在不同语言进行预训练了。mBERT 在 Wiki 数据上进行多语言的 MLM,之后 XLM-R 用了更好的语料后表现有所提升。但这两个模型都没有利用平行语料,于是 XLM 同时利用了平行语料,在平行语料做 MLM,利用另一个语言的知识预测 mask token。
后续研究还有 Unicoder、ALM、InfoXLM、HICTL、ERNIE-M等,生成任务则有 mBART、XNLG。

参考文献:

LLM 可控性生成探索图图终于能快速访问不担心裂开了:阿里云OSS + PicGo 图床方案