赞
踩
复旦大学邱锡鹏教授发表了一篇NLP预训练模型综述,“Pre-trained Models for Natural Language Processing: A Survey”,从多个角度分析了当前预训练语言模型。本文基于这篇文章来分析。邱老师认为预训练模型有三大优势:
预训练语言模型到目前分为两个阶段
目前大部分都是基于自监督学习来构建的,又分为基于上下文学习和对比学习两类。
语言模型一般指的是自回归语言模型,由上文利用最大似然估计,来预测下文。典型代表就是GPT
类似于完形填空,先在原始语句中mask一部分token,然后predict他们。BERT中采用的就是这种方式。这种方法有两个比较大的问题
在seq2seq结构中,也有人尝试使用了MLM,也就是Seq2Seq MLM。在该结构中,encoder中的语句加入了mask,而在decoder中则需要生成这些mask。Seq2Seq MLM特别适合在生成任务中使用,比如摘要、翻译、问答等。MASS和T5中就是用了这种方法。
针对MLM预训练任务,很多文章进行了不同角度的优化,主要包括:
针对于BERT预训练和精调两阶段不一致的问题,XLNet提出了排列语言模型,从而将auto-encoder转变为了auto-regression。利用attention-mask和双流自注意力来实现。
MLM就是一种DAE。向原始语料中添加噪声,利用这些包含噪声的语料,来重构不含噪声的输入。添加噪声的方法主要有:mask token、删除token、填充文本、句子排列、文本换位。
CTL的思想是 “learning by comparison”, 它假定观测文本比随机采样的文本,语义更加相似。一般CTL任务比MLM简单一些,需要的算力也更少。
ELECTRA提出了这个任务,判断sequence中每个token是否和原始token一致。它是一个二分类任务,label为replaced和original。通过这种方式,使得每个token都可以参与到prediction中,大大加快了模型收敛速度。
BERT提出了这个任务,正样本为来自同一文档的两个连续语句,负样本为不同文档的两个语句。NSP的初衷是让模型学习到sentence level的信息,对NLI等句子关系判断的任务有帮助。但目前基本认为NSP反而会有副作用,主要原因为:
ALBERT提出了这个任务,语句顺序预测。一个pair的两个文本,不论正负样本,都来自同一文档。正样本为AB,负样本为BA。模型需要预测语句顺序。这个方法克服了MLM噪声引入问题,也使得模型从基于NSP的主题预测变为了基于SOP的语句关系预测,大大增加了任务难度,从而使模型参数训练更充分。
根据是否基于上下文、模型架构、预训练任务、扩展方法分为四大类。如上所示。
比较有代表性的一些模型如下表
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
openai-gpt | 12 | 768 | 12 | 110M | 英文语料 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
gpt2 | 12 | 768 | 12 | 117M | GPT-2英文语料 |
gpt2-xl | 48 | 1600 | 25 | 1558M | GPT-2英文语料 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
bert-base-uncased | 12 | 768 | 12 | 110M | 小写英文文本 |
bert-large-uncased | 24 | 1024 | 16 | 340M | 小写英文文本 |
bert-base-cased | 12 | 768 | 12 | 110M | 不区分大小写的英文文本 |
bert-large-cased | 24 | 1024 | 16 | 340M | 不区分大小写的英文文本 |
bert-base-multilingual-uncased | 12 | 768 | 12 | 110M | 小写的102种语言文本 |
bert-large-multilingual-uncased | 24 | 1024 | 16 | 340M | 小写的102种语言文本 |
bert-base-chinese | 12 | 768 | 12 | 110M | 简体和繁体中文文本 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
distilbert-base-uncased6 | 6 | 768 | 12 | 66M | / |
distilbert-base-multilingual-cased | 6 | 768 | 12 | 66M | / |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
albert-base-v1 | 12 | 768 | 12 | 125M | 英文文本 |
albert-base-v2 | 12 | 768 | 12 | 125M | 英文文本 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
roberta-base | 12 | 768 | 12 | 125M | 英文文本 |
roberta-large | 24 | 1024 | 16 | 355M | 英文文本 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
transfo-xl-wt103 | 18 | 1024 | 16 | 257M | wikitext-103英文语料 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
xlnet-base-cased | 12 | 768 | 12 | 110M | 英文语料 |
xlnet-large-cased | 24 | 1024 | 16 | 240M | 英文语料 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
xlm-mlm-en-2048 | 12 | 2048 | 16 | / | 英文语料 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
xlm-roberta-base | 12 | 768 | 8 | 125M | 2.5TB的100种语言文本 |
xlm-roberta-large | 24 | 1027 | 16 | 355M | 2.5TB的100种语言文本 |
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
t5-small | 6 | 512 | 8 | 60M | C4语料 |
t5-base | 12 | 768 | 12 | 220M | C4语料 |
t5-large | 24 | 1024 | 16 | 770M | C4语料 |
所有上述预训练模型及其变体都是以transformer为基础,只是在模型结构如神经元连接方式,编码器隐层数,多头注意力的头数等发生改变,这些改变方式的大部分依据都是由在标准数据集上的表现而定,因此,对于我们使用者而言,不需要从理论上深度探究这些预训练模型的结构设计的优劣,只需要在自己处理的目标数据上,尽量遍历所有可用的模型对比得到最优效果即可.
参考资料:
NLP之常用预训练模型详解
NLP预训练模型1 – 综述
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。