随着NLP技术的发展,越来越多的新的预训练架构不断刷榜,包括自回归模型(例如GPT)、自动编码模型(例如 BERT)和编码器-解码器模型(例如 T5)。自然语言处理任务在本质可以分为分类、无条件生成和条件生成。但是,目前没有一个预训练框架能够很好地完成所有任务。而在本文中,提出了一种通用语言模型(General Language Model,GLM)来解决这个问题。GLM模型结构有三个主要优点: (1)用一个模型就能在它分类、无条件生成和条件生成任务上表现良好; (2)改进了预训练-微调一致性,在分类上优于类 bert 模型; (3)可以很好地处理可变长度生成。最后,GLM使用了1.25倍BertLarge参数就在GLU的生成任务上取得sota。
如下图b所示,在GLM模型中,将输入[x1, x2, x3, x4 ,x5, x6]分成了2个部分:
Part A:[x1, x2, M, x4, M] ,和Bert的mask输入一样。只是mask可能是一个token,也可能是一个span。
Part B:[x5, x6, x3],注意,Part B并不一定是x3,x5,x6这样按原文顺序来的。论文每个句子采用了随机打乱的策略,然后选择了一种组合。
模型输入:Part A部分开始会添加[CLS],而对于提取的mask部分,会在每个的开始和结束添加一个特殊标记,比如[START], [END]。
位置:Part A -> 0,Part B -> 1 ~ len(Part B)
组合之后的输入格式如下:
句子: [CLS] x1 x2 [M] x4 [M] [S] x5 x6 [S] x3
位置1: 0 1 2 3 4 5 5 5 5 3 3
位置2: 0 0 0 0 0 0 1 2 3 1 2
输出:
x5 x6 [E] x3 [E]
mask注意力矩阵如上图d所示,从矩阵可以很明显看到,在Part A部分,采用的是自编码注意力,而在Part B部分,采用的是自回归注意力。GLM的注意力就是这样将2部分矩阵进行拼接,形成了即有单向,又有双向的注意力的模型。
与BERT相似,主要做了两个修改:
1、改变了归一化和残差的顺序,在largeBERT模型中有效;
2、替换前馈网络为线性网络。
1、span mask的长度服从泊松分布(λ=3),
2、span mask部分覆盖50%-100%的原始token,长度使用均匀分布采样。
采样方式与BART一样。重复采样,直到15%的token被mask。
即最大化Part B部分的span生成。
Finetune主要分为分类和生成任务,其具体的流程如下图所示。
It’s a beautiful day, I’m in a great mood. it is [MASK]. [S] good
I failed in the exam today. I was very depressed. it is [MASK] [S] bad
Bert属于自编码模型。
XLNet属于自回归的模型。
XLNet属于自编码的模型。
GLMbase/large : 采用和Bert相同的数据和超参数,训练任务也一样,只是预测mask。
GLMbase/large (multi-task) : 在GLMbase/large 的基础上加了变长span,即生成任务
GLMbase/large (multi-task) : 在GLMbase/large (multi-task)的基础上增加了层数,隐层维度和注意力头。 410M (layers=30, hidden=1024, headers=16 ) 和 515M(layers=30, hidden=1152, headers=18 ) ,410M、515M分别是Bert large参数的1.25、1.5倍
GLMRoBERTa:采用和RoBerta large相同的类似数据和超参数,采用GLM训练方式。
- 消融实验
之后,本文继续对比了下游任务finetune方式的影响。主要有两种:
1)句子分类的方式。就是直接将句子的输出向量做分类。
2)mask填充方式。就是在输入句子的结尾加上mask,然后采用生成的方式输出分类的词,这种方式和预训练的任务一致。
从表5可以看到,base模型采用cloze方式finetune在NLU的任务上大部分的任务相比classifier有10个点以上的提升。large模型性能损失会相对小一些,但仍没有采用cloze方式的效果好。
此外,shuffle spans也有一定的提升,sentinel token会降低模型效果,在上面的Table4中可以得出二维的位置表示对模型效果也有一定提升。
sentinel token:指的是在mask位置上用不同的符号表示不同的span
GLM 是一个用于自然语言理解、生成和分类的通用预训练框架。研究表明,自然语言理解任务可以表示为条件生成任务,因此可以用自回归模型处理,GLM 将不同任务的预训练目标统一为自回归Blank填充,采用混合注意掩码和新的2D 位置编码。实验结果表明,对于 NLU 任务,GLM 方法优于以前的方法,能够有效地共享不同任务的参数。希望将 GLM 扩展到更大的Transformer模型和更多的预训练数据,验证其性能。
论文地址:https://arxiv.org/abs/2103.10360