T5 和 mT5

18 篇文章 7 订阅
14 篇文章 4 订阅

T5https://arxiv.org/pdf/1910.10683.pdf
T5 blog: https://ai.googleblog.com/2020/02/exploring-transfer-learning-with-t5.html
mT5: https://arxiv.org/pdf/2010.11934.pdf
mT5 code: https://github.com/google-research/multilingual-t5

T5

T5 (Transfer Text-to-Text Transformer),Transfer 来自 Transfer Learning,预训练模型大体在这范畴,Transformer 也不必多说,那么 Text-to-Text 是什么呢。那就是作者在这提出的一个统一框架,靠着大力出奇迹,将所有 NLP 任务都转化成 Text-to-Text (文本到文本)任务

在这里插入图片描述

举几个例子就明白了,比如英德翻译,只需将训练数据集的输入部分前加上“translate English to German(给我从英语翻译成德语)” 就行。假设需要翻译"That is good",那么先转换成 “translate English to German:That is good.” 输入模型,之后就可以直接输出德语翻译 “Das ist gut.”

再比如情感分类任务,输入"sentiment:This movie is terrible!",前面直接加上 “sentiment:”,然后就能输出结果“negative(负面)”。

最神奇的是,对于需要输出连续值的 STS-B(文本语义相似度任务),居然也是直接输出文本,而不是加个连续值输出头。以每 0.2 为间隔,从 1 到 5 分之间分成 21 个值作为输出分类任务。比如上图中,输出 3.8 其实不是数值,而是一串文本,之所以能进行这样的操作,应该完全赖于 T5 模型强大的容量。

T5将任务指令设定在输入文本中,就不需要针对每类任务单独设置特定的FC输出层,所有任务都输出text。对于生成任务(例如机器翻译或文本摘要)很自然,因为任务格式要求模型生成以某些输入为条件的文本。对于分类任务,这是很不寻常的,其中训练T5输出 文本label (例如,用于情感分析的“正”或“负”)而不是类别索引。

通过这样的方式就能将 NLP 任务都转换成 Text-to-Text 形式,也就可以用同样的模型,同样的损失函数,同样的训练过程,同样的解码过程来完成所有 NLP 任务。其实这个思想之前 GPT2 论文里有提,上斯坦福 cs224n 时 Socher 讲的 The Natural Language Decathlon 也有提。

在这里插入图片描述

Architecture:The Best One

一句话总结:T5就是对大型的seq2seq的Transformer结构上做微小改动,进行多任务预训练+微调,把所有NLP任务(翻译、分类、摘要、相似度)转化为text-to-text任务(加入prompt embedding)。

在这里插入图片描述
通过大量实验探索最佳的结构与训练方案:
在这里插入图片描述

  • 不同模型结构比较,LM,BERT-style,Deshuffling,BERT-style的encoder-decoder模型一般比decoder-only(LM)好;
  • 不同目标函数比较,BERT-style denoising objective最好;
  • 不同corruption rate(MLM)比较,10%,15%,25%,50%,15%最好;
  • 不同corrupted span length比较,2,3,5,10,长度为3最好;
  • 训练集数据重复比较;
  • 训练策略比较:先pretrain再fine-tune的multitask learning非常有竞争力,但是需要谨慎选择不同任务训练频次;
  • 模型规模比较:比较了不同size的模型(base,small,large,3B和11B),训练时间,以及融合模型,来决定如何充分利用计算性能。
1. Main Body

首先作者们先对预训练模型中的多种模型架构(Transformer)进行了比对,最主要的模型架构可以分成下面三种。

在这里插入图片描述
三种self-attention:

  • fully-visible attention mask:输出序列的每个元素可以看见输入序列的每个元素,如BERT的Encoder结构。
  • causal attention mask:输出序列的每个元素只能看对应位置及之前的输入序列的元素,无法看见未来的元素。
  • causal with prefix attention mask:输入序列的一部分前缀采用fully-visible attention mask,其余部分采用 causal attention mask。

三种NLP模型结构:
在这里插入图片描述

  • BERT(NLU):是一个Transformer Encoder结构(双向attention)。把input从文本空间映射到向量空间,Input经过BERT得到每个token对应的hidden vector。通常我们会把第一个特殊token(CLS)的hidden作为整个input的表示(如图上左), 或者把所有tokens’ hidden的avg pooling作为整个input的表示(如上图右)。此时得到我们假设这个vector(图中黄色方块)包含了input的所有信息, 也就是把input从文本空间映射到向量空间。之后我们可以利用这个vector做分类或者生成等下游任务。
  • GPT(NLG):是一个Transformer decoder结构(单向attention,从左到右),给定一个向量空间的向量,GPT将会把这个向量映射到文本空间。GPT的主要功能是做生成比如对话生成,给定对话历史在向量空间的vector,GPT可以相应生成文本回复。所以可以理解成我们给定一个向量空间的向量,GPT将会把这个向量映射到文本空间。
  • T5(NLU+NLG):不仅仅是BERT+GPT模型,Encoder: 将文本映射到向量空间; Decoder: 将向量映射到文本空间。T5 encoder和decoder间的关联除了上面提到的hidden vector,还有cross attention。并且T5再做NLU任务时也不是仅仅依靠encoder,而是整个模型都参与进来,由decoder直接生成结果。这样一来,T5淡化了中间的hidden vector(通过encoder得到),把encoder和decoder连为一体,这就使得T5的文本表示功能会存疑。

三种语言模型结构:

  • 第一种,Encoder-Decoder 型(Transformer),即 Seq2Seq 常用模型,分成 Encoder 和 Decoder 两部分,对于 Encoder 部分,输入可以看到全体,之后结果输给 Decoder,而 Decoder 因为输出方式只能看到之前的。(Encoder-Decoder结构中,Encoder部分采用fully-visible attention mask,而Decoder部分采用causal attention mask)

  • 第二种,Language Model型(GPT), 相当于上面的 Transformer Decoder 部分,当前时间步只能看到之前时间步信息。典型代表是 GPT2 还有最近 CTRL 这样的(Language model结构中,采用causal attention mask)

  • 第三种,前缀双向可见 Prefix LM 型,可看作是上面 Encoder 和 Decoder 的融合体,一部分如 Encoder 一样能看到全体信息,一部分如 Decoder 一样只能看到过去信息。最近开源的 UniLM 便是此结构。(最右侧的Prefix LM结构中,采用causal with prefix attention mask)

上面这些模型架构都是 Transformer 构成,之所以有这些变换,主要是对其中注意力机制的 Mask 操作。

通过实验作者们发现,在提出的这个 Text-to-Text 架构中,Encoder-Decoder 模型效果最好。于是乎,就把它定为 T5 模型,因此所谓的 T5 模型其实就是个 Transformer 的 Encoder-Decoder 模型(12层Encoder、12层Decoder)。

T5模型和原始的Transformer结构基本一致,除了做了如下几点改动:

  • remove the Layer Norm bias
  • place the Layer Normalization outside the residual path
  • use a different position embedding
2. Embedding

分词:

在这里插入图片描述

位置编码:相对位置编码

在这里插入图片描述
朴素思想解决位置远距离位置编码:为了防止输入序列过长导致位置编码无限增大,设置阈值k限制位置编码增长(类似梯度裁剪)
在这里插入图片描述
T5位置编码:
在这里插入图片描述

T5的 Position Embedding 在 self-attention 的 QK 乘积之后进行:
在这里插入图片描述

相对位置编码 和 绝对位置编码:

在这里插入图片描述

3. Pertrain and Finetune

在这里插入图片描述

Pertrain dataset:C4

在这里插入图片描述
Pertrain

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Finetune: T5采用2种微调方法。

在这里插入图片描述

不冻结模型训练效果最佳,但缺点是慢!Adapter layers效果比Gradual unfreezing效果更好。

在这里插入图片描述

4. Multi-Task Pertrain and Finetune

仅仅多任务训练不微调,效果不如单任务

在这里插入图片描述

有监督预训练:针对不同的任务设定不同的label进行训练

在这里插入图片描述

多任务有监督预训练+微调:

在这里插入图片描述

模型规模
在这里插入图片描述

5. T5总结
  • 预训练策略:无监督预训练(破坏原sequence的15%,然后进行预测Maks的token)+ 有监督multi-task预训练(针对不同任务数据集分别进行训练)
  • 5种模型大小:S、B、L、3B、11B。

在这里插入图片描述
最后就是结合上面所有实验结果,训练了不同规模几个模型,由小到大:

  • Small,Encoder 和 Decoder 都只有 6 层,隐维度 512,8 头;
  • Base,相当于 Encoder 和 Decoder 都用 BERT-base;
  • Large,Encoder 和 Decoder 都用 BERT-large 设置,除了层数只用 12 层;
  • 3B(Billion)和11B,层数都用 24 层,不同的是其中头数量和前向层的维度。
  • 11B,最后在 GLUE,SuperGLUE,SQuAD,还有 CNN/DM 上取得了 SOTA,而 WMT 则没有。看了性能表之后,我猜想之所以会有 3B 和 11B 模型出现,主要是为了刷榜。看表就能发现

比如说 GLUE,到 3B 时效果还并不是 SOTA,大概和 RoBERTa 评分差不多都是 88.5,而把模型加到 11B 才打破 ALBERT 的记录。然后其他实验结果也都差不多,3B 时还都不是 SOTA,而是靠 11B 硬拉上去的。除了 WMT 翻译任务,可能感觉差距太大,要拿 SOTA 代价过大,所以就没有再往上提。根据这几个模型的对比,可以发现即使是容量提到 11B,性能提升的间隔还是没有变缓,因此我认为再往上加容量还是有提升空间。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

mT5

不幸的是,许多这样的语言模型仅在英语文本上进行过预训练。鉴于世界上大约80%的人口不会说英语,这极大地限制了它们的使用(Crystal,2008年)。 社区解决这种以英语为中心的方法之一就是发布数十种模型,这些模型已经在一种非英语语言上进行了预训练(Carmo等人,2020; de Vries等人,2019; Le等人 ; 2019; Martin等人,2019; Delobelle等人,2020; Malmsten等人,2020; Nguyen和Nguyen,2020; Polignano等人,2019等)。 一个更通用的解决方案是生成,已经在多种语言的混合中进行了预训练的多语言模型。 这种类型的流行模型是mBERT(Devlin,2018),mBART(Liu等,2020)和XLM-R(Conneau等,2019),它们是BERT的多语言变体(Devlin等,2018)。 ,BART(Lewis等人,2019a)和RoBERTa(Liu等人,2019)。

在本文中,我们通过发布mT5(T5的多语言变体)来延续这一传统。 我们使用mT5的目标是生成一个大规模的多语言模型,该模型尽可能少地偏离用于创建T5的方法。 因此,mT5继承了T5的所有优点,例如其通用的文本到文本格式,基于大规模实证研究得出的观点的设计及其规模。 为了训练mT5,我们引入了称为mC4的C4数据集的多语言变体。 mC4包含从公共“Common Crawl”网络抓取中提取的101种语言的自然文本。

具体来说,我们基于“T5.1.1”方法建立了mT5,对mT5进行了改进,使用GeGLU非线性(Shazeer,2020年)激活函数,在更大模型中缩放dmodel而不是改变dff, 对无标签数据进行预训练而没有dropout等措施。 为简洁起见,更多详细信息请参考Raffel et al. (2019)。

预训练多语言模型的主要因素是如何从每种语言中采样数据。最终,这种选择是零和博弈:如果对低资源语言的采样过于频繁,则该模型可能过拟合;反之亦然。如果高资源语言没有经过足够的训练,则该模型将欠拟合。因此,我们采用(Devlin,2018; Conneau et al.,2019; Arivazhagan et al.,2019)中使用的方法,并根据p(L)∝ |L|α的概率通过采样样本来增强资源较少的语言,其中p(L)是在预训练期间从给定语言采样文本的概率和|L|是该语言中样本的数量。超参数α(通常α<1)使我们可以控制在低资源语言上“boost”训练概率的程度。先前工作使用的值,mBERT(Devlin,2018)是α= 0.7,XLM-R(Conneau等人,2019)的α= 0.3,MMNMT(Arivazhagan等人,2019)的α= 0.2。我们尝试了所有这三个值,发现α= 0.3可以在高资源语言和低资源语言的性能之间做出合理的折衷。

我们的模型涵盖了100多种语言,这需要更大的单词表量。 遵循XLM-R(Conneau et al.,2018)之后,我们将单词表量增加到250,000个单词。 与T5一样,我们使用SentencePiece(Kudo and Richardson,2018; Kudo,2018)单词模型,这些单词模型以与训练期间,使用的相同语言采样率进行训练。 为了适应具有大字符集(例如中文)的语言,我们使用0.99999的字符覆盖率,但还启用了SentencePiece的“byte-fallback”特征,以确保可以唯一编码任何字符串。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,这是比较流行的 20 个 NLU 深度学习模型: 1. BERT 2. GPT 3. Transformer 4. RoBERTa 5. XLNet 6. ERNIE 7. Albert 8. T5 9. Pegasus 10. XLM 11. DeBERTa 12. Text-GPT 13. MT-DNN 14. ELECTRA 15. FlauBERT 16. Text-XLNet 17. CTRL 18. Funnel-Transformer 19. UniLM 20. BART 希望这些模型能够帮助你。如果你想了解这些模型的更多信息,我可以为你提供一些资源。 ### 回答2: 以下是20个比较流行的NLU深度学习模型: 1. BERT (Bidirectional Encoder Representations from Transformers) 2. GPT (Generative Pre-trained Transformer) 3. XLNet (eXtreme Multi-task Learning) 4. RoBERTa (Robustly Optimized BERT Approach) 5. ALBERT (A Lite BERT) 6. ELECTRA (Efficiently Learning an Encoder that Classifies Token Replacements Accurately) 7. DistilBERT (Distilled BERT) 8. TinyBERT (Smaller BERT for Fine-tuning) 9. CamemBERT (BERT for French Language) 10. Multilingual BERT (BERT for Multiple Languages) 11. SpanBERT (BERT for Span-based Question Answering) 12. MT-DNN (Multi-Task Dual Encoder with Transformers) 13. T5 (Text-to-Text Transfer Transformer) 14. GPT-3 (Generative Pre-trained Transformer 3) 15. BART (Bidirectional and Auto-Regressive Transformers) 16. XLM (Cross-lingual Language Model) 17. Transformer-XL (Transformer with Long-term Dependency) 18. ULMFiT (Universal Language Model Fine-tuning) 19. ELMo (Embeddings from Language Models) 20. LASER (Language-Agnostic SEntence Representations) 这些深度学习模型在NLU领域中得到广泛应用和研究,并结合自然语言处理任务,如文本分类、命名实体识别、情感分析等,能够帮助处理和理解自然语言文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuezero_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值