NLP学习

Bert系列:Bert、Transformer、预训练模型、微调

2023-08-14  本文已影响0人  xiaogp

摘要:BertTransformer预训练模型

内容摘要


Bert起源背景简介

Bert是2018年10月由Google AI研究院提出的一种预训练模型。BERT的全称是Bidirectional Encoder Representation from Transformers,即基于Transformer的双向编码表征算法,Bert在提出之初在各大NLP任务中刷新了性能表现记录,被认为是自然语言处理领域的一个里程碑。


Bert、Transformer、预训练模型、微调的关系

Bert通常与Transformer预训练模型微调一起被提及,简单而言Bert基于Transformer结构,提出了预训练模型这种新的方式思想,通过这种预训练模型方式,给定一个下游NLP任务进行微调,即可很好地完成则个任务。
具体而言,Bert是在Transformer的Encoder层网络结构的基础之上,通过海量数据的无监督学习训练得到的一组网络参数(如下图所示),该网络参数学习到了类似人类理解的通用的语义信息,下一步就是将这组网络参数迁移到下游具体的任务,比如文本分类,通过具体任务的样本再对Bert的参数做微调即可,可想而知如果在预训练阶段就已经掌握了语义知识,那下游任务的训练将变得更加容易。

Bert基于Transformer在海量样本无监督训练得到

Bert和Transformer的区别联系

两者的联系前文有提到Bert基于Transformer,实际上Bert网络结构完全套用了Transformer的Encoder层作为模型主干,Bert整体上就是由多层的Transformer Encoder堆叠所形成,Bert命名中的双向Bidirectional也就是Transformer中的self-attention机制的体现。
两者的区别首先完成任务的方式不同,Bert是预训练模型,期望在海量数据上学习理解字词的通用语义,再灌给下游各种个性化任务应用,而Transformer更多是类似于CNN,RNN的网络模型,直接端到端学习各种任务和样本,每个任务从头到尾建模。
再者Bert在处理输入层时对原始的Transformer论文方法做了改进,Bert支持输入一对句子,通过预测下一句是否是前一句的下一句来让模型参数学习语义(NSP任务),由此Bert加入了Segment Embedding专门用来辅助模型学习语义顺序,辅助的Bert在原始输入句子上做了标记,其中[SEP]代表句子结尾或者两个上下句的间隔,[CLS]在句子开头代表一个分类任务的占位符,用于判断后句是否是上句的下句的表征依据。另外Bert改进了Transformer的sin-cos位置编码,采用可学习式代替sin-cos这种固定式编码。

Bert的输入层和Transformer的差异

预训练模型简介

前文提到Bert的一大贡献是提出了预训练思想,在此之前NLP任务都是基于某个特定的中小规模的数据集样本,使用特定的模型比如LSTM,Transformer进行拟合训练,都是特定任务的独立建模,而预训练模型的思想是不需要网络模型能够拟合样本降低该样本在验证测试集上的loss损失,而是从底层源头出发,在其他海量数据集上类似人类一样真正能够理解语义,让机器能够读懂字词而不是一味的为了loss最低,在掌握了通过的语言理解能力之后,再根据特定样本进行参数微调,相当于再局部学习一次。
Bert是如何进行预训练的?Bert采用NSP,MLM两个任务让模型在海量数据中学到知识

NSP和MLM任务

NSP和MLM任务如上图所示,两个任务都不需要人工标记,原始的语料句子就是标记样本,如果Bert能够正确预测出被遮蔽的子词,能够正确推理出是否是上下句关系,那代表Bert确实学到了通用的语义信息,类似人类一样理解了语义。


微调简介

前文有提到微调就是在模型了解通用语义之后在一个特定数据集上再局部学习一次,具体而言微调是基于模型参数迁移的迁移学习,新的模型任务网络直接使用之前在其他数据集上训练保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据新样本不断进行一些修改。这个过程就是微调fine-tuning。而Bert在实际应用中解决各种NLP问题,就是就是在海量自然语言上进行预训练得到各种不同的模型和参数,在特定的任务选取指定模型参数进行迁移,再在业务数据上微调的过程,这就是预训练微调的意义。

上一篇下一篇

猜你喜欢

热点阅读