论文阅读_GLM

论文信息

name_en: GLM: General Language Model Pretraining with Autoregressive Blank Infilling
name_ch: GLM:使用自回归空白填充的通用语言模型预训练
paper_addr: https://aclanthology.org/2022.acl-long.26
doi: 10.18653/v1/2022.acl-long.26
date_read: 2023-03-24
date_publish: 2022-01-01
tags: [‘深度学习’,‘自然语言处理’]
journal: Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)
author: Zhengxiao Du
citation: 21

读后感

通过在结构上的调整,结合了GPT和BERT类模型的优点,且模型规模和复杂度没有提升。将NLU任务转换成生成任务训练模型,使上下游任务训练方式保持一致。

摘要

没有一个预训练框架对自然语言理解 (NLU)、无条件生成和条件生成这三个主要类别的所有任务表现都好。文中提出了通用语言模型:General Language Model (GLM),它基于自回归空白填充来解决这一挑战。
在 NLU 任务上的性能优于 BERT 和 T5。可以通过改变空白的数量(屏蔽几块)和长度(每块有几个token)来针对不同类型的任务对 GLM 进行预训练。且它只有BERT large的 1.25倍参数量。

介绍

GLM基于自回归的空白填充。从输入文本中随机删除连续的token(自编码),并训练模型以顺序重建删除的token(自回归)。使用了二维的位置编码,相对于T5模型有更少的参数,差不多的效果。
在处理 NLU 任务时,将其转换成完形填空问题;通过改变缺失跨度的数量和长度,自回归空白填充目标可以为有条件和无条件生成预训练语言模型。

方法

预测训练目标

自回归的目标填充

输入x由多个 token 组成,采样一些 span(绿色和黄色的块)用 s 表示,每个 span 包含一个或多个 token,用 Mask 遮蔽每个 span,模型以自回归的方式预测损坏文本中缺失的 token,预测时可以使用其它span以及当前span中,当前位置之前的token。
用z表示每个span中的具体位置,假设一共m个token,将目标定义为:
max ⁡ θ E z ∼ Z m [ ∑ i = 1 m log ⁡ p θ ( s z i ∣ x corrupt  , s z < i ) ] \max _{\theta} \mathbb{E}_{\boldsymbol{z} \sim Z_{m}}\left[\sum_{i=1}^{m} \log p_{\theta}\left(\boldsymbol{s}_{z_{i}} \mid \boldsymbol{x}_{\text {corrupt }}, \boldsymbol{s}_{\boldsymbol{z}_{<i}}\right)\right] θmaxEzZm[i=1mlogpθ(szixcorrupt ,sz<i)]
也就是说,使用被损坏的文本x,以及之前预测的Sz<i来预测Szi处的token。

如图2(a)(b),输入的x分为两部分,Part A是遮蔽后的文本,Part B只包含遮蔽的文本,Part A中的数据不能使用Part B中的内容;Part B可以使用Part A中的内容和当前位置之前的内容。另外,在遮蔽文本的前后加START和END标记。从而使模型从Part A中学习双向上下文,以Part B中学习单向上下文。具体训练时保证至少 15% 的原始标记被屏蔽。

图©中展示了两维的位置编码分别标记了token在整体中的位置和在span中的位置,且由S标记开头,生成的结果以E结束。

图(d)中把Part A与Part B连在一起,其中蓝色表示Part A中可用的数据只包含被遮蔽后的x串,黄色和绿色分别表示了Part B中两个span在不同时点可使用的数据范围。

多任务预训练

由于需要用一个模型同时支持NLU和文本生成,所以是多任务的训练,有以下两个目标:

  • 文档级别:为了有效地生成长文本,长度是从原始长度的 50%–100% 的均匀分布中采样的。
  • 句子级别:为了预测seq2seq任务中完整句子和段落,限制屏蔽的跨度是完整的句子,屏蔽的token为原始文本长度的15%。
    两种方式都使用上述公式,只是屏蔽的span数量和长度不同。

模型结构

  • 重新排列了层归一化和残差连接的顺序
  • 使用单个线性层进行输出标记预测
  • 用 GeLU 替换 ReLU 激活函数
  • 两维的位置嵌入:如图-2©所示,这样的位置编码在预测Part B时不会泄漏需要预测的长度,以保证适用于文本生成的下游任务。

精调模型

为了保证预训练和精调任务的一致性,将NLU中的分类任务改成了生成中的空白填充任务,具体类似完型填空,把答案当成文本中的一个token进行屏蔽,形如:{SENTENCE}. It’s really [MASK],候选标签 y ∈ Y 也映射到完形填空的答案,称为 v(y)。
p ( y ∣ x ) = p ( v ( y ) ∣ c ( x ) ) ∑ y ′ ∈ Y p ( v ( y ′ ) ∣ c ( x ) ) p(y \mid \boldsymbol{x})=\frac{p(v(y) \mid c(\boldsymbol{x}))}{\sum_{y^{\prime} \in \mathcal{Y}} p\left(v\left(y^{\prime}\right) \mid c(\boldsymbol{x})\right)} p(yx)=yYp(v(y)c(x))p(v(y)c(x))

相对于GLM,BERT和XLNet的问题在于它不能预测未知长度的序列。

实验

为与 BERT进行公平比较,使用 BooksCorpus和英语维基百科作为预训练数据。并使用 BERT 的 30k 词汇量。与 BERTBase 和 BERTLarge 相同的架构训练 GLM_Base 和 GLM_Large,分别包含 110M 和 340M 参数;并训练GLM_RoBERTa对标RoBERT。

用GLM_Doc表示文档层次的训练,GLM_Sent表示句子层次的训练。GLM_410M和GLM_515M分别代表大模型的参数数量。T5的参数量分别是T5_Base(220M 参数)和 T5_Large(770M 参数)的结果。

主实验结果如下:

猜你喜欢

转载自blog.csdn.net/xieyan0811/article/details/130043226
GLM