seq2seq 预训练语言模型 BART 和T5


***************************原文     https://zhuanlan.zhihu.com/p/420090646     ********************************

 

自回归 auturegression 语言模型,例如GPT,采用自左向右解码的方式,适用于自然语言生成NLG任务

自编码 autoencoder 语言模型,如BERT,每个时刻的输出都可以充分利用双向信息,适用于自然语言理解任务。但是在NLG表现不佳。

 

 

 如上图右三,UniLM将通过修改attention mask,将Encoder和Decoder结合,这种方式称作Prefix LM。结构上还是只是使用了encoder

Bart和T5的结构又回到了最原始的Transformers结构。

图中方块代表序列中的元素,线代表attention,深色的线代表全可见attention,浅色的线代表因果掩码 causal masking,即当前时刻只能看见之前的元素。不能看见未来的元素。

Attention的掩码矩阵如下图所示:

 

 

左图:完全可见矩阵,模型输出可以看见任意时刻的输入,Transformer的Encoder Bert用的就是这种掩码

中图:因果掩码矩阵,模型输出只能看见当前时刻之前的输入,黑色部分,这样可以防止未来的输入干扰当前输入的结果。TRM的Decoder  GPT等单向语言模型使用的就是这种掩码

右图:带有前缀的因果掩码矩阵,前缀部分和完全可见矩阵一样,输出能够看见前缀任意时刻的输入,超过前缀范围使用的因果掩码UniLM采用这种掩码。

 

Bart和T5模型

Bart是FaceBook提出

T5是Google提出。都是在19年10月份提出。

动机

  • BART想要统一BERT和GPT,从一开始就确定了使用Transformers的原始结构。BART探究了各种目标函数的有效性,即对输入加各种类型的噪声,在输出时将其还原。BART在NLU任务上保持了和RoBerta差不多的前提下,在多个NLG任务中取得了SOTA成绩。论文算上参考文献总共长度10页。
  • T5其实是一篇关于语言模型的Survey,其思路是从头开始,找出语言模型的最优结构,在尝试了多种结构之后发现Seq2Seq结构是最好的,然后从模型的目标函数,数据集,训练时间,模型大小,多任务学习,等角度做了大量的实验,确定方向之后扩大模型规模,最终在多个NLU和NLG任务中达到了SOTA水平。此外,这个工作还产出了一个干净的大规模英文预料:C4。论文算上参考文献长达67页。

预训练任务

     BART的预训练任务是将带有噪音的输入还原,。最终采用的是   Text Infilling+Sentence permutation

其中Text Infilling起到了最主要的作用。其实就是Span级别的mask,只不过这里允许span的长度为0,span的长度服从泊松分布,总共mask 30%的字符。

T5使用两种任务,分为无监督和有监督。无监督也是span级别的mask。只不过输出不需要还原整句。只需要输出mask掉的tokens就可以。总共mask 15%字符。

 

微调

BART的微调方式如下图:

1 左边是分类任务的微调方式,输入将会同时送入encoder和decoder,最终使用最后一个输出为文本分类表示

2  右边是翻译任务的微调方式,由于翻译任务的词表可能和模型词表不同,所以这里使用给一个新的小型encoder 替换bart中的embedding

 

 

T5的微调方式如下图

无论是分类任务还是生成任务,全都视为生成式任务

 

 

 

一些其他的细节

位置编码:

Transformer使用position encoding。使用的是sinusoidal函数

BERT和Bart使用的是可学习的绝对位置嵌入

T5改成了相对位置嵌入  relative  position embeddings

激活函数:

Transformer最开始使用的是Relu,Bert和GPT使用的是Gelu,Bart使用的是  GElu,不过T5还是使用当初的ReLU。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM