#1024程序员节|征文#
3. BERT模型的预训练任务
BERT是具有里程碑一样的预训练模型,其主要采用预训练+微调的策略进行使用,预训练主要是帮助BERT模型学习语言知识,在预训练完成后,可基于预训练后的模型,对下游任务进行微调训练,往往能够在下游任务中获得比较好的效果。
在预训练阶段,BERT模型使用了两个预训练任务:掩码语言 模型(Masked Language Model)和下一个句子预测 (Next Sentence Prediction),在大规模无标注文本语料 上进行预训练(pre-train),从而得到融合了双向内容的通用语义表示模型。下面我们进一步介绍这两个预训练任务。
3.1 掩码语言模型
掩码语言模型(Masked Language Model,一般简记为MLM)是指在语句中屏蔽部分token ,让模型去自主地预测这些token。
具体来讲,在训练语料中,会选择一批token替换为Mask token,MLM任务旨在利用语句的上下文双向信息,恢复语句中被Mask的token,以帮助模型学习语言知识,比较像一个完形填空的任务。图3.1给出了关于MLM任务一个示例,其中在预测单词model的时候,模型将会利用单词model前后的序列信息进行推断被Masking的单词,特别是在看到pre-training和natural language processing等信息时,比较容易能够推断出这个单词就是model。
图 3.1 MLM任务示例
在BERT模型的预训练阶段,总共Masking掉语料中15%的token。但是这里存在一个问题:在fine-tune阶段以及预测时 的输入文本中并不包含Mask token,这样就造成了预训练阶段和fine-tune/预测阶段的GAP。所以BERT在这批被Mask的token中采用了不同的策略,具体如下:
- 80%的token被替换为Mask token
- 10%的token被随机替换为其他词
- 10%的token保持不变
3.2 下一个句子预测
下一个句子预测(Next Sentence Prediction,一般简记为NSP),是指判断输入的两句话 在原始文档中是否是前后相邻的关系。
具体来讲,在BERT的训练语料中,部分 输入文本是由无关的两段语句进行拼接 而成,部分 输入文本是由本来就前后相邻的两段 语句拼接 而成。NSP任务旨在去识别一个输入文本是否是相邻的两句话拼接而成。图3.2 给出了关于NSP的一个语料文本示例。
图 3.2 NSP任务示例
可以看到,The pre-training model is a milestone
和It gets a lot of breakthroughts in natural language processing
显然具有紧密的邻接关系,因此其是相邻的;但其和We had a unforgettable weekend.
语义完全不同,因此不是相邻的。
以上两个预训练任务MLM和NSP任务能够帮助BERT模型学习语言相关的知识,比如语法、句法等。基于预训练后的BERT模型进行下游任务微调,能够帮助下游任务获得更好的效果。
4. 预训练模型拓展
前边提到BERT模型是基于Transformer Encoder结构的预训练模型,其推动着NLP领域在很多任务上有了新的突破,同时引领出了预训练+微调的NLP模型新范式,具有里程碑式的意义。
但不止于此,随着相关研究人员在预训练方向的研究,NLP领域涌现了更多优秀的Transformer类预训练模型,多次刷新了不同NLP任务的SOTA(State of the Art),极大地推动了自然语言处理的进展。
4.1 预训练方向
通过以上对预训练模型的讲解,可以看到,预训练任务对模型的预训练是至关重要的,因此可以通过设计或改善不同的预训练任务 来帮助更好地模型学习语言知识。例如,
相比BERT,RoBERTa模型采用了更多训练数据,更大的训练批次 ,更长 的训练时间 ,同时采用了动态掩码策略,并去除了NSP任务等策略,获得进一步的提升。
Ernie是由百度提出,其通过引入token、短语和实体这三种级别的Knowledge Masking预训练任务帮助模型学习语言知识,在多项任务上超越了BERT。
ELECTRA模型基于对抗生成网络 的思路,使用生成器对Mask后的token进行预测,并让判别器预测该序列的token是否被替换(RTD任务),取代了BERT中的MLM任务进行训练,并获得进一步的提高。
同时还有更多地优化模型被提出,包括SpanBERT、XLNet、MacBERT等等,感兴趣的同学可以深入阅读。
4.2 长序列处理方向
BERT模型在进行数据处理时,会按照固定的长度(比如512),直接将该文本串进行划分成若干段(Segment)。这个处理方式不会关注文本串中语句本身的边界 (比如标点或段落),这样"粗暴"的划分通常会将一句完整的话切分到两个Segment里面,导致上下文碎片化。另外,BERT能够捕获的最大依赖长度不超过这个划分长度,从而达不到更好的性能。
Transformer-XL通过引入段循环机制 从而帮助模型建模更长地依赖关系,同时在建模过程中引入相对位置编码,从而保证了不同段之间的token位置关系的正确性,更好地建模长期依赖。
Reformer通过引入局部敏感哈希注意力 和可逆Transformer 技术,有效地减少了模型占用的内存 ,从而提升了模型对长序列处理的能力。
Longformer考虑到类似于BERT内部的传统Self-Attention机制的时空复杂度 与文本的序列长度呈平方的关系,这在很大程度上限制了模型的输入不能太长 ,因此提出了基于稀疏注意力机制的Attention计算方式 ,其时空复杂度同文本序列长度呈线性关系,用以保证模型使用更低的时空复杂度建模长文档。
4.3 模型蒸馏方向
一般来讲,预训练模型通过叠加多层网络,能够较好地提高模型在下游任务的表现,但是这样也增加了模型的参数量,导致模型计算效率不高。因此模型蒸馏方向的模型或技术被提出来,其主要通过将性能好的大模型作为Teacher模型,将运行效率高的小模型作为Student模型,通过知识蒸馏的方式,将Teacher模型的知识逐步迁移至Student模型中。
DistilBERT通过设置有监督MLM、无监督MLM和词向量余弦损失三类损失进行模型蒸馏,其模型参数在缩小至40%的情况下同时提升了60%的推理速度,并在多项下游任务中达到BERT模型效果的97%。
TinyBERT引入了预训练+微调两个阶段的蒸馏,同时其引入了在词向量层、中间层和预测层的损失,保证Student模型学习充分学习Teacher模型的知识。4层的TinyBERT参数量缩减至Teacher模型的13.3%,但提升了90%的推理速度,并在下游任务中能够达到base版BERT模型的96.8%。
4.4 生成方向
BERT模型通过掩码语言模型MLM和下句预测任务NSP进行学习语言知识,其本质上是获取能够充分理解语言知识并具有更强表达能力的编码器,这类模型在语言理解任务上具有非常好的效果,例如文本分类、文本匹配、命名实体识别等等。但是其不太适合应用于文本生成方面的任务,因此相关研究人员借鉴传统语言模型的思路提出了相应的生成式预训练模型。
GPT与BERT不同,其主要参考Transformer Decoder的工作原理进行建模,通过估计一串文本序列的生成概率分布进行预训练,从而得到生成式的预训练模型。
BART模型采用原始Transformer 端到端的网络结构进行建模,同时结合Transformer Encoder和Decoder部分,对含有噪声的输入文本去噪重构进行预训练,从而训练生成式预训练模型。