All NLP Tasks Are Generation Tasks:A General Pretraining Framework

基本信息

标题、时间、会议、领域、code、paper 链接

GLM 于 2021 年发表于 arxiv / code 上,论文提出了一种新的通用语言模型 GLM(General Language Model)。 GLM,使用自回归填空目标进行预训练,可以针对各种自然语言理解和生成任务进行微调。

创新点

概述

这篇论文中是解决了一个新问题,还是用一个新的方法解决了一个传统问题;创新点在哪里,有什么贡献。

现有的预训练任务大致可以分为三类:

  • 自回归模型(augoregressive models),比如 GPT 这种从左向右的语言模型。
    • GPT 在长文本生成方面有非常好的效果,并且参数在扩大到十亿级别后,依然保持了很强的小样本学习能力。
    • 由于 gpt 使用单向注意力机制,其不能捕捉到内容上下文之间的内部联系。
  • 自编码任务(autoencoding models), 比如 BERT 这种只有 encode 的任务。
    • 由于多层 encode 中双向信息的流通,BERT 在内容理解方面表现优秀。
    • 但不能直接应用于生成任务。
  • 编码器解码器任务(Encoder-decoder) 模型在 encoder 阶段使用双向 attention 机制,在 decoder 阶段使用单向的 attention,并使用 cross-attention 将两者联系起来。
    • 在有条件生成任务,如文本摘要和回复生成方面有较大优势。
    • 不太好用于 内容理解方面 和 无条件生成(我理解比如长文本生成)

没有一种模型可以同时在所有 NLP 表现的好。

基于以上原因,论文提出了一个自回归空格填空的预训练任务,将其称作 GLM(General Language Model)。通过从输入文本中随机抹去连续的字符,设计自回归预训练任务。 让其可以通过学习其他的字符,进而恢复出抹去连续字符。

这个任务其实和 MLM 非常像,都是进行 token mask,但 MLM 每个字符 mask 后 对应一个 [mask] 的标志。 而 GLM 相当于所有连续字符 mask 后,只留下一个 [mask] 位置,模型其实不知道这个位置究竟有多长,从而完成一个较短的生成任务。

解决方法

具体如何实现的

预训练任务

image-20210610210042419

1、对于原始文本 [x1,x2,x3,x4,x5,x6] 随机进行连续 mask,我们这里 mask 掉 x3 和 [x5,x6]。

2、将 x3 和 [x5,x6] 替换为 [MASK] 标志,并打乱 part B 的顺序。

3、GLM 尝试自回归生成 part B ,即 GLM 的输入是 part A,产出是 part B。 每个 span 以 start 开始, end 结束。

4、attention mask, part A 只能看到 part A,看不到 part B 部分。 part B 可以看到 part A,也可以看到自己的部分。

下游任务

image-20210610211423271

对于分类任务,可以使用 QA 的形式,判断概率,从而实现分类。

对于生成任务,partB 部分直接换成 mask 即可。

应用场景

论文中工作的意义,可以应用于什么场景。

因为模型的 part B 部分是一个生成任务,可以用于分类任务,和生成任务中。

我理解 对于文本理解类任务来说,可以直接不管 part B, 直接用 part A 部分产出的 embedding 进行类似 bert 的任务。

总结

作者总结

作者对自己成果的总结

GLM 是用于自然语言理解、生成和 seq2seq 的通用预训练框架。 我们表明 NLU 任务可以制定为条件生成任务,因此可以通过自回归模型解决。 GLM 将不同任务的预训练目标统一为自回归空白填充,混合注意掩码和新颖的 2D 位置编码。

根据经验,我们表明 GLM 在 NLU 任务方面优于以前的方法,并且可以有效地共享不同任务的参数。 未来,我们希望将 GLM 扩展到更大的 Transformer 模型和更多的预训练数据,并在更多设置(例如知识探测和小样本学习)中检查其性能。

亮点

1、将 span token 进行 mask ,将多个位置替换为 mask 标志。 然后将原句内容作为 part A,mask 掉的内容作为 part B 。从而迫使模型学到更深层次的内容, 与原始的 MLM 任务比,直觉上的确觉得有道理。

2、论文给出了代码 和 模型,相关实验也很充分,从数据上看比常见的 BERT、 T5、BART 等效果要好。

不足

1、从代码上看预训练任务的 model ,似乎就是一个 transformer 结构,但只有 train 部分,没有预测的代码。

2、这里怎么就出现了论文内的 mask 形状了呢,我似乎没算出来… 找到了,似乎在这个位置

参考

一些参考文献或者链接

All NLP Tasks Are Generation Tasks:A General Pretraining Framework

https://iii.run/archives/b2b43b92b98a.html

作者

mmmwhy

发布于

2021-06-09

更新于

2021-06-11

许可协议