GLM: General Language Model Pretraining with Autoregressive Blank Infifilling
以自回归式空白填充任务预训练的通用语言模型
论文地址 arXiv: https://arxiv.org/abs/2103.10360
2022年11月,斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测2,GLM-130B 是亚洲唯一入选的大模型。在与 OpenAI、谷歌大脑、微软、英伟达、脸书的各大模型对比中,评测报告显示 GLM-130B 在准确性和恶意性指标上与 GPT-3 175B (davinci) 接近或持平,鲁棒性和校准误差在所有千亿规模的基座大模型(作为公平对比,只对比无指令提示微调模型)中表现不错。
GLM-可能是当前开源ChatGPT复现中中文效果最好的基础模型
官网:https://chatglm.cn/blog
内测官网:https://chatglm.cn/chat
1. 背景领域、研究问题
1.1 NLP任务
自然语言理解(NLU):这类任务主要关注从给定文本中提取信息和理解其含义。
- 情感分析
- 文本分类
- 命名实体识别(NER)
- 关系抽取
- 词性标注
- 句法分析
- 语义角色标注
- 核心引用消解
无条件生成(Cond. Gen.):这类任务关注从头开始生成文本,而不需要特定的输入条件。
- 语言建模
有条件生成(Uncond. Gen.):这类任务根据给定的输入或上下文生成文本。
- 文本摘要
- 问答系统
- 机器翻译
- 对话系统中的响应生成
此外,还可以根据不同的输入、输出和目标对 NLP 任务进行其他分类,例如:
信息抽取:从文本中抽取结构化信息的任务,如命名实体识别(NER)、关系抽取等。
信息检索:根据用户查询从大量文本或知识库中检索相关信息的任务,如问答系统。
文本生成:这是一个更广泛的类别,包括从给定输入生成文本的所有任务,如文本摘要、机器翻译和对话系统。
这些分类有助于更好地了解 NLP 任务的目标和方法。但随着研究的深入和新技术的发展,任务之间的界限变得模糊。例如,预训练语言模型(如 GPT)已经证明可以在多种 NLP 任务中实现高性能,包括自然语言理解和生成任务。
1.2 预训练和微调
1.2.1 预训练介绍
预训练是一种在深度学习领域广泛使用的技术,它涉及在大量未标记或标记数据上训练一个模型,以学习通用特征和表示。在该过程完成后,模型可以微调到特定任务,这通常涉及较小的标记数据集。预训练的目的是利用大量数据来学习有关数据结构和模式的信息,从而在特定任务中提高模型性能。
预训练技术已经应用于各种领域,包括自然语言处理、语音识别和强化学习。在计算机视觉领域,预训练模型通常在大型图像数据集(如 ImageNet)上进行训练,然后用于各种视觉任务,如图像分类、目标检测和语义分割。
在自然语言处理领域,预训练语言模型(如 BERT 和 GPT)在大型文本语料库上进行训练,然后用于诸如情感分析、命名实体识别和机器翻译等任务。
1.2.2 主流预训练模型
- autoencoding自编码模型
通过去噪目标学习双向上下文编码器,例如掩码语言模型 (MLM) 。 擅长自然语言理解NLU任务,常用于生成句子的上下文表示,但是不能直接用于文本生成。如情感分类、抽取式问答
代表模型如Bert、RoBERTa、ALBERT
- autoregressive自回归模型
学习从左到右的语言模型,常用于无条件生成任务(unconditional generation),如语言建模,具体形如给定一段context,让生成其下文
代表模型如:GPT、GPT-2、GPT-3
- encoder-decoder模型
常用于条件生成任务(conditional generation),比如生成摘要、生成式问答、机器翻译
代表模型MASS、BART、PALM
1.2.3 微调
预训练模型在下游任务上的微调通常涉及在特定任务的有标签数据集上对预训练模型进行训练和调整。微调过程的主要目的是使预训练模型适应特定任务,从而提高模型在该任务上的性能。在微调过程中,模型会修改预训练模型中的参数。
以下是对预训练模型进行微调的一般步骤:
-
加载预训练模型:首先,加载预训练模型,该模型已在大量文本数据上进行过预训练,学习了通用的语言表示。
-
添加任务特定层:为适应特定任务,可能需要在预训练模型的基础上添加额外的任务特定层。例如,在文本分类任务中,可以在模型顶部添加一个全连接层,用于从预训练模型学到的表示中预测类别标签。
-
微调参数:使用特定任务的有标签数据集对模型进行训练,以便在保留预训练阶段学到的通用知识的同时,调整模型参数以适应任务。在微调过程中,通常会对整个模型进行训练,包括预训练部分和任务特定层。根据具体任务和数据集,可能需要使用不同的学习率、优化器和训练策略。
-
评估性能:在微调完成后,使用验证集或测试集评估模型在特定任务上的性能。如果需要进一步优化,可以调整微调过程中的超参数,如学习率、批次大小等。
通过这种预训练和微调的方法,模型可以利用预训练阶段学到的通用知识,在特定任务上实现更好的性能。请注意,微调策略可能因任务、数据集和模型而异,因此可能需要根据具体情况进行调整。
1.3 Bert、GPT、T5的区别对比
注:✅表示擅长,x表示无法直接应用,—表示可以做
BERT(facebook)的注意力是双向的,可以同时感知上文和下文,因此在自然语言理解任务上表现很好,但是不适合生成任务。训练目标上,BERT的训练目标是对文本进行随机掩码,然后预测被掩码的词。编码器生成适用于自然语言理解任务的上下文化表示,但不能直接应用于文本生成。
GPT (openai)(Radford 等人,2018a)的注意力是单向的,所以无法利用到下文的信息。训练目标上,GPT的训练目标是从左到右的文本生成。虽然它们在长文本生成中取得成功,并在参数规模达到数十亿时展示出少量样本学习能力(Radford 等人,2018b;Brown 等人,2020),但固有的不足是单向注意力机制,它无法充分捕捉 NLU 任务中上下文词之间的依赖关系。
T5 (Google) 的编码器中的注意力是双向,解码器中的注意力是单向的,因此可同时应用于自然语言理解任务和生成任务。但T5为了达到和RoBERTa和DeBERTa相似的性能,往往需要更多的参数量。训练目标上,T5则是接受一段文本,从左到右的生成另一段文本。
1.4 GLM的目标
上述预训练框架都不够灵活,无法在所有 NLP 任务中表现出竞争力。以前的工作尝试通过多任务学习(Dong 等人,2019;Bao 等人,2020)结合它们的目标来统一不同的框架。然而,由于自编码和自回归目标在本质上是不同的,简单的统一不能充分继承两个框架的优势。
作者提出了一种基于自回归空白填充的预训练框架,名为 GLM(通用语言模型)。我们随机将输入文本中的连续标记范围留空,遵循自编码的思想,并训练模型按照自回归预训练的思想顺序地重构范围(参见图 1)。虽然在 T5(Raffel 等人,2020)中已经使用空白填充进行文本到文本预训练,但我们提出了两种改进,即范围洗牌和二维位置编码。实验证明,在相同的参数和计算成本下,GLM 在 SuperGLUE 基准测试中显著优于 BERT,优势较大,达到 4.6% - 5.0%,并在类似规模的语料库(158GB)上优于 RoBERTa 和 BART。在参数和数据更少的情况下,GLM 还显著优于 T5 在 NLU 和生成任务。
受 Pattern-Exploiting Training(PET)(Schick 和 Schütze,2020a)启发,我们将 NLU 任务重构为模仿人类语言的手工编制的填空题。与 PET 使用的基于 BERT 的模型不同,GLM 可以通过自回归空白填充自然地处理填空问题的多标记答案。
此外,我们表明,通过改变缺失跨度的数量和长度,自回归空白填充目标可以为有条件和无条件生成任务预训练语言模型。通过多任务学习不同的预训练目标,单个 GLM 可以在 NLU 和(有条件和无条件)文本生成任务中表现出色。实证上,与独立基线相比,具有多任务预训练的 GLM 可以在 NLU、有条件文本生成和语言建模任务中共享参数并取得改进。
总之,本文提出了一种名为 GLM(通用语言模型)的预训练框架,它基于自回归空白填充。GLM 结合了自编码和自回归预训练的优点,能够在自然语言理解、有条件生成和无条件生成任务中取得显著的性能提升。GLM 通过多任务学习和参数共享,在各种 NLP 任务中表现出竞争力。
2. 模型和算法
2.1 预训练目标——自回归空白填充
glm提出了一个基于新颖的自回归空白填充的目标, 将 NLU 任务构建为包含任务描述的填空题,这些问题通过自回归生成来回答。
图 2:GLM 预训练
(a) 原始文本为 [x1, x2, x3, x4, x5, x6]。两个范围 [x3] 和 [x5, x6] 被采样。
(b) 用 [M] 替换 Part A 中的采样范围,并在 Part B 中打乱这些范围。
© GLM 自回归地生成 Part B。每个范围前面都加上 [S] 作为输入,后面加上 [E] 作为输出。二维位置编码表示跨范围和范围内的位置。
(d) 自注意力掩码。灰色区域被屏蔽。Part A 的 tokens 可以关注自己(蓝色框),但不能关注 B。Part B 的 tokens 可以关注 A 和 B 中的前代(黄色和绿色框分别对应两个范围)。
[M] := [MASK], [S] := [START], and [E] := [END]
2.1.1 不同参数多目标预训练
针对三类下游任务设计了三种基于自回归填空的预训练目标,交替进行
-
token-level objective 单词级
从一个均值为3的泊松分布中采样片段的长度,直到原始文本中15%的字符被掩盖,然后在文本中随机排布填空片段的位置。这一目标针对的是自然语言理解任务
-
sentence-level objective 句子级
从文档中随机掩码若干文本片段,每个文本片段必须为完整的句子,被掩码的词数量为整个文档长度的15%。这一目标是能针对seq2seq任务,其预测往往是完整的整个句子或者段落。
-
document-level objective 文档级
采样一个长度从原始文本长度的50%到100%的均匀分布中采样的片段。这预训练目标针对的是无条件的长文本生成
三类预训练目标的区别只是跨度(片段)的数量和长度的区别。
2.1.2 三类预训练目标和掩码语言的对比联系
自回归填充有些类似掩码语言模型,首先采样输入文本中部分片段,将其替换为[MASK]标记,然后预测[MASK]所对应的文本片段。与掩码语言模型不同的是,预测的过程是采用自回归的方式。
-
当被掩码的片段(跨度span)长度为1的时候,空格填充任务等价于掩码语言建模;
-
当将文本1和文本2拼接在一起,然后将文本2整体掩码掉,空格填充任务就等价于条件语言生成任务。
-
当全部的文本都被掩码时,空格填充任务就等价于无条件语言生成任务。
2.1.3 预训练目标数学表达
GLM 通过优化自回归填充目标进行训练。给定一个输入文本 x =[x1,· · ·,xn],多个文本跨度 {s1,· · ·,sm} 被抽样,其中每个跨度 si 对应于 x 中的一系列连续标记 [si,1,· · ·,si,li]。每个跨度用一个 [MASK] 标记替换,形成一个损坏的文本 xcorrupt。模型以自回归的方式从损坏的文本中预测跨度中缺失的标记,这意味着当预测跨度中缺失的标记时,模型可以访问损坏的文本和先前预测的跨度。为了充分捕捉不同跨度之间的相互依赖关系,我们随机排列跨度的顺序,类似于置换语言模型(Yang 等人,2019)。 形式上,设 Zm 是长度为 m 的索引序列 [1,2,· · ·,m] 的所有可能排列的集合,sz<i 是 [sz1,· · ·,szi−1],我们将预训练目标定义为
glm通常以从左到右的方向生成空白处的单词,表明跨度si的概率可分解为
2.2 模型结构
2.2.1 Attention mask matrix
PartA部分内的各token可以互相注意到
PartB部分内的tokens可以注意到PartA和PartB中已经生成的token
2.2.2 编码器
使用transformer的编码器,并有所改进
-
重新调整了LN和残差连接的顺序
-
对于token的预测输出用的是单个的线性层
-
将激活函数由ReLU调整为了GeLUs
2.2.3 2d位置编码
自回归空白填充任务的挑战之一是如何编码位置信息。Transformer 依赖于位置编码来注入标记的绝对和相对位置。我们提出了二维位置编码来解决这个挑战。具体来说,每个标记都用两个位置 id 编码。第一个位置 id 表示在损坏的文本 Xcorrupt 中的位置。对于被掩盖的跨度,它是相应 [MASK] 标记的位置。第二个位置 id 表示跨度内的位置。对于部分 A 中的标记,它们的第二个位置 id 为 0。对于部分 B 中的标记,它们的范围从 1 到跨度的长度。通过可学习的嵌入表将两个位置 id 投影到两个向量上,这两个向量都添加到输入标记嵌入中。
我们的编码方法确保模型在重构它们时不知道被掩盖跨度的长度。与其他模型相比,这是一个重要的区别。例如,XLNet(Yang 等人,2019)对原始位置进行编码,因此可以感知缺失标记的数量,而 SpanBERT(Joshi 等人,2020)用多个 [MASK] 标记替换跨度并保持长度不变。我们的设计适用于下游任务,因为通常生成的文本长度事先未知。
2.3 模型微调/下游任务
-
(a) 分类任务
给定一个标注样本(x,y),我们将输入文本x通过模板转化为有一个[MASK]字符填空问题c(x)。标签y也映射到了填空问题的答案v(y) 。模型预测不同答案的概率对应了预测不同类别的概率
-
(b) 文本生成任务
针对文本生成任务,直接将GLM作为一个自回归模型的应用。比如: 给定的上下文构成输入的部分的A,在结尾附上一个[MASK]字符,模型用自回归的方式去生成B部分的文本
3. 实验效果对比
3.1 特性对比
BERT | XLNET | Encoder-Decoder | UniLM |
---|---|---|---|
BERT中不能很好处理连续的多个token; mask token是独立的,不能捕捉mask token之间的依赖关系。 | xlnet使用了双流的注意力机制,改变了transformer的结构,增加了耗时。 | 使用了两个transformer模型实现了单向和双向注意力,加入token来识别mask span,浪费模型能力;训练和微调不一致。 | 在自编码框架下使用了mask来统一单双向的注意力。对于生成任务来说,还是不够高效。 |
-
与bert对比
bert是自编码模型。来预测mask的字符。因为模型中的mask token是独立的,bert不能捕捉mask token之间的依赖性。bert的另一个缺点是不能处理多个连续的mask token。
-
与xlnet的对比
都是自回归的模型。xlnet需要知道预测token的长度;使用双流注意力机制解决了信息泄漏的问题,改变了transfomer的结构,增加了耗时;xlnet决定一个token是否被独立预测。
-
与编码解码模型对比
T5也是处理的空白填充的任务目标,但是GLM使用了单个的transformer编码器学习单向和双向的注意力。通过共享参数使参数比编码解码模型更有效。T5在编码和解码阶段使用不同的位置编码,使用哨兵标记来识别不同的mask跨度,哨兵标记造成了模型能力的浪费和预训练微调的不一致性。
-
与UniLM对比
UniLM是通过在自编码框架下改变在双向,单向,互相之间的attention mask来统一预训练目标;由于自编码模型的独立假设,自回归模型不能完全捕捉当前token对于前面token的依赖。对于微调下游任务来说,自编码会比自回归更加低效。
3.2 训练结果Score
NLU实验
有条件生成
无条件生成
消融实验
根据Table5可以看出GLM训练范式上对于结果的提升是最有效,另外shuffle spans也有一定的提升,sentinel token会降低模型效果,而上面的Table4中可以得出二维的位置表示对模型效果也有一定提升。
3.3 千亿级参数大模型结果对比(2022.11)
2022年11月,斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测2,GLM-130B 是亚洲唯一入选的大模型。在与 OpenAI、谷歌大脑、微软、英伟达、脸书的各大模型对比中,评测报告显示 GLM-130B 在准确性和恶意性指标上与 GPT-3 175B (davinci) 接近或持平,鲁棒性和校准误差在所有千亿规模的基座大模型(作为公平对比,只对比无指令提示微调模型)中表现不错(下图)。
图1. 斯坦福大学基础模型中心对全球 30 个大模型的评测结果(2022年11月)
关于 GLM-130B 的学术文章已被国际深度学习会议 ICLR’23 接收。自2022年8月开放以来,收到53个国家369个研究机构(截至2023年2月1日)的下载使用需求,包括谷歌、微软、脸书、AI2、华为、阿里巴巴、百度、腾讯、头条、小冰、小度、小米以及斯坦福、麻省理工、伯克利、卡耐基梅隆、哈佛、剑桥、牛津、北大、浙大、上交、复旦、中科大、国科大等国内外人工智能研究机构和高校。
自2022年8月发布以来,收到53个国家369个研究机构(截至2023年2月1日)的下载使用需求,包括谷歌、微软、脸书、AI2、华为、阿里巴巴、百度、腾讯、头条、小冰、小度、小米以及斯坦福、麻省理工、伯克利、卡耐基梅隆、哈佛、剑桥、牛津、北大、浙大、上交、复旦、中科大、国科大等国内外人工智能研究机构和高校。
4. 概述性结论
GLM 是一个用于自然语言理解和生成的通用预训练框架。我们证明了 NLU 任务可以被构建为条件生成任务,因此可以通过自回归模型来解决。GLM 将不同任务的预训练目标统一为自回归的空白填充,采用混合注意力掩码和新颖的二维位置编码。实证研究表明,GLM 在 NLU 任务上超越了先前的方法,并且可以有效地为不同任务共享参数。