预训练模型(X)---- 预训练模型现状及分析


在这里插入图片描述首先通过上图大家可以清楚的了解到预训练模型之间的前世今生。

前面已经介绍了很多预训练模型,本文就前面的内容做一个总结分析。

预训练的方法最初是在图像领域提出的,达到了良好的效果,后来被应用到自然语言处理。预训练一般分为两步,首先用某个较大的数据集训练好模型(这种模型往往比较大,训练需要大量的内存资源),使模型训练到一个良好的状态,然后下一步根据不同的任务,改造预训练模型,用这个任务的数据集在预训练模型上进行微调。

这种做法的好处是训练代价很小,预训练的模型参数可以让新的模型达到更快的收敛速度,并且能够有效地提高模型性能,尤其是对一些训练数据比较稀缺的任务,在神经网络参数十分庞大的情况下,仅仅依靠任务自身的训练数据可能无法训练充分,预训练方法可以认为是让模型基于一个更好的初始状态进行学习,从而能够达到更好的性能。

预训练方法发展

基于词嵌入的预训练方法

2003年,Bengio等人提出了神经语言模型(Neural Network Language Model)神经语言模型在训练过程中,不仅学习到预测下一个词的概率分布,同时也得到了一个副产品:词嵌入表示。相比随机初始化的词嵌入,模型训练完成后的词嵌入已经包含了词汇之间的信息。2013年,Mikolov等人提出了word2vec工具,其中包含了CBOW(Continue Bag of Words)模型和Skip-gram模型,该工具仅仅利用海量的单语数据,通过无监督的方法训练得到词嵌入。

基于语言模型的预训练方法

词嵌入本身具有局限性,最主要的缺点是无法解决一词多义问题,不同的词在不同的上下文中会有不同的意思,而词嵌入对模型中的每个词都分配了一个固定的表示。针对上述问题,Peters等人提出ELMo(Embedding from Language Model),即使用语言模型来获取深层的上下文表示。

ELMo的具体做法是,基于每个词所在的上下文,利用双向LSTM的语言模型来获取这个词的表示。ELMo的方法能够提取丰富的特征给下游任务使用,但是ELMo仅仅进行特征提取而没有预训练整个网络,远远没有发挥预训练的潜力,另外一个不足之处是,自注意力机制的Transformer模型结构,相比LSTM能够更有效地捕获长距离依赖,对句子中信息进行更充分的建模。

针对上述两个问题,Radford等人提出了 GPT Generative Pre-Training),即生成式的预训练。GPT将LSTM换成了Transformer,获得了更高的成绩,但是由于使用的是单向模型,只能通过前面词预测后面的词,可能会遗漏信息。

Devlin等人提出了BERT(Bidirectional Encoder Representations from Transformers),即基于Transformer的双向编码器表示。BERT和GPT的结构和方法十分相似,最主要的不同之处在于GPT模型使用的是单向语言模型,可以认为是基于Transformer的解码器表示,而BERT使用的基于Transformer的编码器能够对来自过去和未来的信息进行建模,能够提取更丰富的信息。三个预训练模型的图如下所示:
在这里插入图片描述BERT提出后大火,也许是因为BERT的效果太好。目前绝大多数的预训练模型都是在BERT上改造而来,比如XLM、XLNet、MASS等。

从BERT的各类变种就可以看出BERT和Transformer的火爆程度,笔者认为目前预训练+下游任务微调有一统自然语言领域的趋势。预训练不仅在低资源任务上有很高的提升作用,甚至在丰富资源的任务上对模型性能也有显著的提高。如果没有超越Transformer的特征提取模型提出的话,相信在BERT上各类的改造会层出不穷,以适应不同类型的下游任务。还有的预训练模型在BERT基础上引入知识图谱等,让BERT变得更加“有知识”,如清华大学的ERNIE。

既然各类不同的任务对预训练模型进行不同的改造,那能不能有一种预训练模型,可以适应全部的NLP任务呢?

近期谷歌刚刚发布了超大规模的T5(NLP Text-to-Text) 预训练模型。它给整个 NLP 预训练模型领域提供了一个通用框架,把所有任务都转化成一种形式,无论什么任务,直接拿来一个超大预训练模型,然后主要工作就变成了怎么把任务转换成合适的文本输入输出,,比如德英翻译,只需将训练数据集的输入部分前加上“translate German to English”。

另外的思路是,不是改造预训练的模型,而是将庞大的预训练模型进行压缩,比如近期的alBERT,通过共享参数、引入单独的词嵌入层维度来减少BERT的参数。最终性能也登上GLUE第一(刚刚被T5超过)。还有通过知识蒸馏技术,训练出的tinyBERT等,都是对BERT模型进行的模型压缩。

上面的工作都是在Bert的基础上做的改进,最近刚出现的ELECTRA可以说为预训练模型提出了新的思路,该模型虽然也用到了Bert,但主要是借鉴了GAN的思想,ELECTRA把生成式的Masked language model(MLM)预训练任务改成了判别式的Replaced token detection(RTD)任务,判断当前token是否被语言模型替换过。作者使用一个MLM的G-BERT来对输入句子进行更改,然后丢给D-BERT去判断哪个字被改过。如下:

在这里插入图片描述
ELECTRA的提出为预训练模型开辟了一条新的道路。

发布了52 篇原创文章 · 获赞 7 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_38937984/article/details/102894927