- 原始论文: GLM: General Language Model Pretraining
- 官方代码:GLM
文章idea
- 基于
unlabeled text
训练的LM
提高了很多NLP任务的sota
。 - 一般来讲,存在的预训练框架有三种:(1)
autoregressive
: 比如GPT[left-to-right language models]
,在长文本生成和few-shot
能力方面非常成功;其不足是单向的attention
机制,不能够完全获取内容之间的依赖关系。(2)autoencoding
: 比如BERT
,双向的encoder
,其不足是此方案只适用于NLU
任务,不适合做文本生成。(3)encoder-decoder
:比如transformer
,其encoder
部分是双向,decoder
是单向attention
和cross attention
,其适合做一些conditional generation
任务,text summarization
和response generation
。 - 作者认为没有一个统一的框架,适合所有的
NLP任务
。所以本文提出了一个基于blank infilling
的GLM(General language Model)
。
文章主旨
- 提出了新的语言模型:
GLM(General language Model)
模型架构
GLM
被训练基于autoregressive blank infilling
损失。- 针对一条输入 ,随机采样多个
span
,将其都替换成[MASK]
,这样就得到了新的输入,模型以autoregressive
的方式预测每条span
中缺失的tokens
。 - 针对
spans
的顺序进行shuffle
,为了获取其相互之间的独立性。 - 定义 是长度是
m
序列[1, 2, …, m]的所有可能的排列。则定义预训练目标则是: - 输入
x
被分成两部分,Part A
是,Part B
包含了masked spans
,由于此处使用了mask attention
,所以:Part A tokens can attend to each other, but cannot attend to any tokens in B
.Part B tokens can attend to Part A and antecedents in B, but cannot attend to any subsequent tokens in B
使用了多任务损失:
Document-level
:span
的长度采样是原始句子长度的50%–100%
。此举目的是长文本生成。Sentence-level
:span
被限制在所有的句子中,而且采样覆盖15%
的原始token
,此举的目的是seq2seq
任务。
GLM
针对Transformer
做了一些调整:- 针对
LN
与residual connection
的顺序进行了交换。 - 最终输出只使用了一个
linear layer
预测token
- 使用了
GeLUs
代替ReLU
.
- 针对
- 由于使用了
blank infilling
任务,所以对使用了2D positional encodings
,每个token
编码两个position id
,详情见上图。- 第一个
position id
是表示的位置。 - 第二个
position id
是表示intra-span
的position
。
- 第一个
Finetuning GLM
- 由于
GLM
属于生成式的预训练任务,所以其Finetune
方式也采用了blank infilling
。具体来讲:we convert the input text x to a cloze question c(x) via a pattern containing a single mask token
;举例来讲,输入:{SENTENCE}. It’s really [MASK]
。输出:good
orbad
. conditional generation
:partA
是context
+[MASK]
; 自回归的方式生成partB
。- 有可以使用
GLM
进行unconditional generation
。
模型实验
略