GLM论文阅读

        GLM: General Language Model Pretraining with Autoregressive Blank Infilling

GLM:具有自回归空白填充的通用语言模型预训练

0. 引言 

自编码模型-bert, 自回归模型-gpt,encoder-decoder模型-t5,这些预训练框架在自然语言理解(NLU),无条件生成和有条件生成任务上都差点意思。

GLM,通过添加2D position-encoding和允许任意顺序预测跨度(predict spans)来改进空白填充预训练,使得NLU任务上优于Bert与T5。

通过改变空白的数量和长度,可以针对不同下游任务进行预训练。

1. 概况

自回归模型自编码模型en-de模型
优势生成长文本MLM产生适合NLU的上下文表示条件生成任务(文本摘要,响应生成),统一了NLU与条件生成
劣势单向注意力不能直接应用于文本生成需要更多的参数来匹配性能

 这些模型各有优缺,先人有想法去一统这些框架,去做一个集大成任务模型,但是结构实在不同。

GLM横空出世:以自编码模型为思想,输入文本中随机提出连续跨度(spans)的token,并按照自回归预训练的思想顺序重建spans,2D位置编码和跨度混洗为创新。

 受别人的启发,我们将NLU任务重新表述为完形填空任务,GLM可以通过自回归自然的处理完形填空的muti-token 答案。同时,通过改变spans的数量和长度,自回归填空可以预训练模型进行条件和无条件生成。

总结:自编码去mask一个跨度,然后自回归去预测。

2. GLM预训练框架

2.1.1 自回归空白填充

GLM是通过优化自回归空白填充目标来训练的

公式解读:

x_corrupt 代表随机剔除几个spans(用一个[mask]代替)

s(z<i) 表明在位置i之前的所有spans,s(zi)表示第i个spans

第一个公式表明:结合前i-1个spans和经过剔除后的x,来综合去预测第i个spans

第二个公式表明:预测第i个spans需要对该spans的n个tokens的概率连乘。

预训练步骤:

  1. 原文为[x1,x2,x3,x4,x5,x6],对两个跨度进行采样B = [x3], [x5,x6]。(从参数为3的柏松分布中随机抽取长度跨度,直到15%的tokens被mask掉)(为什么:经验发现15%对下游NLU任务性能很重要)
  2. 将采样部分替换为[MASK].  --->A = [x1,x2,[MASK], x4,[MASK]],并对B进行shuffle排列
  3. GLM自回归生成B部分,每个span输入以[S] 作为开头 [E]作为输出结尾,并使用2D位置编码(position 1 表示跨度间的位置,position 2 表示跨度内的位置)
  4. 自回归生成过程中,A可以实现自我的全注意力,但是不能关注B,B可以关注A以及在B中前面的spans。

2.1.2 多任务预训练

为了处理NLU任务和文本生成的任务,我们从两个目标进行考虑

  1. 文档级别:我们采样一个单独的跨度, 其长度是从原始长度的50%-100%的均匀分布中采样的,目标是长文本生成
  2. 句子水平:限制mask的spans必须是完整的句子,覆盖15%的tokens,目标是针对seq2seq的句子或者段落生成。
  3. 上述两个目标的目标函数与2.1.1相同,区别是跨度的数量和长度。 

2.2 模型结构

整体基于单个transformer,为避免数字错误重新安排了LN和residual,单个线性层进行输出token预测,使用gelu取代relu

2D位置编码,用一个[MASK]取代长跨度的spans,与用n个mask替换spans的spanbert不同

2.3 微调,分析和讨论

微调,使用prompt,将下游任务公式化为:c(x) = 「sentence」,it is really [mask], 给定x预测y。概率为                     # v(y)为真实标签映射对应的token position-》good, negative-〉bad。

得到预测结果后,用交叉墒计算得到loss进行微调即可。

GLM对于生成任务可以直接在A后面添加[MASK]进行生成。这个属于无条件生成。

也可以跟上述说的构建prompt进行有条件生成

2.3.1 与其他模型的比较 

  1. bert:由于MLM中mask的独立性假设,bert无法捕捉到mask-token的之间的关系,而且不能正确的填充多个mask,对于没有具体长度的mask,bert预测麻烦且效果不好。
  2. xlnet:位置编码比较落后,无法知道spans的长度。xlnet中的双流注意力机制导致其预训练成本增加
  3. t5: 位置编码独立,且下游任务中只使用一个sentinel-token, 导致pretrain与finetune之间的不一致,而且总是以固定的从左到右的顺序去预测,而GLM可以打乱。 
  4. unilm:unilm直接用[mask]进行mask-spans的替换,而不是像GLM一样进行一定的拼接,从而限制了其对上下文的依赖能力以及建模能力。unilm-v2对生成任务进行自回归,NLU任务进行自编码,而GLM实现了自回归与自编码的统一。

3. 实验

 

总结得出的结论,GLM在自然语言理解和生成任务中有效的共享了模型参数,实现了更好的性能。

4. 结语 

GLM 是一个用于自然语言理解和生成的通用预训练框架,NLU任务可以公式化为条件生成任务,因此可以通过自回归求解。

GLM将不同任务预训练统一为自回归空白填充,使用混合注意力掩码和2D位置编码,优于以前的方法,同时可以有效的共享不同任务的参数 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值