Transformer模型自提出以来,已经在很多地方都取得了不错的成果,尤其是在nlp领域,它取得的成果是令人瞩目的,相比于之前的模型,transformer模型的attention机制更够更好地学习到句子当中单词与单词之间的联系,从而能够结合上下文语境来提高准确度。
更重要的是,transformer的这种attention机制是一种底层的方法,我们基于它可以构造出一些新的模型,而这些模型在nlp中往往有著出色的表现,下面介绍的BERT模型就是其中之一。
如果对Transformer模型还不熟悉的话,可以看我之前的文章:Transformer模型浅析
一、预训练过程
BERT是一种预训练语言模型,因此在介绍它之前,先简单说一下什么是nlp中的预训练过程。顾名思义,预训练就是在拿样本数据对模型进行训练之前做的训练,那么为什么要有预训练呢?其实在nlp的下游任务(比如机器翻译、阅读理解等)中,可以使用的样本数据是比较少的,因为这些任务需要的都是经过专门标注的数据,这样就使得拿这些样本数据直接训练出来的模型效果比较一般,因此就需要对模型进行预训练了。
预训练的目的就是,提前训练好这些下游任务中底层的、共性的部分模型,然后再用下游任务各自的样本数据来训练各自的模型,这样就可以极大地加快收敛速度。在这里举一个cv的例子,对于人脸识别和数字识别两种任务,显然它们有很多的区别,然而在用CNN进行训练的时候,其实比较浅的几层网路学习到的特征是很相似的,都是类似于边角线的这类基础特征(下图红色框部分),因此我们可以认为这几层网路可以共用,如果我们能够预先训练好这部分,那么模型的训练收敛速度将会大大加快。