论文解读之T5——Exploring the Limits of Transfer Learning with a UnifiedText-to-Text Transformer

一、简介

T5是基于Encoder-Decoder结构的Transformer的模型,对经典的Transformer做了三个带动。其核心将NLP任务看作一个序列到序列的统一框架,做大规模的预训练,主打通用。

最大将模型做到11B,基本上是Encoder-Decoder模型能够承受其训练成本的最大化,后文会引用另一位博主的分析为什么这种架构很难做得更大(区别于Decoder-only)

区分任务的方式在于将输入的开头加入任务的描述,比如翻译、总结:

2020年年初投稿

二、模型

结构和transformer一致,除了做出了以下的三点改变:

1.移除layer normalization中的偏置

2.将layer normalization放在残差结构之外

3.使用相对位置编码,区别于经典transformer的正余弦编码

三、数据清洗

数据主要源于Common Crawl这个定期爬取网络数据的爬虫项目

清洗方法:

1.仅保留以终端标点符号(即句号、感叹号、问号或结束引号)结尾的行。

2.丢弃少于5句的段、少于3个词的行

3.不合适关键词的数据去除

4.去除三句重复出现过的段

5.去除包含‘{’的类似代码非自然语言的数据

6.去除占位符出现的段

7.去除大概率不是英语的数据

预训练的数据大约34B tokens;微调时微调了26w步

四、可执行任务

句子分类、情感分析、段落句子相似性、自然语言推理、问答等

五、训练

5.1 训练目标

在输入前添加任务类型的前缀

训练目标是使用teach-forcing的方式的最大似然目标,使用交叉熵损失。也就是说,模型在训练时解码器能看到之前位置的token(未被mask)的是真实的token而不是模型之前的推理结果;在测试时,则使用贪心解码,也就是每一个token的生成时选择概率最大的那个,最为生成结果和decoder中的query输入。

5.2 预训练

在训练T5 base时用的类似于BERT的

探索不同的训练方式/目标(随机加噪声/自回归),加噪声,和encoder-decoder的层是否共享参数。

5.3 微调方法

encoder模型在下游任务上的加一个线性层冻结原来编码器的方式在encoder-decoder的结构下不适用,因为decoder必须不能被冻结来对给定的任务输出目标序列

尝试了两种方法

1.适配器层,在transformer的每一个块的前馈神经网络后加由线性层+激活函数(RELU)

+线性层组成的适配器层,这种层能够很好地适用于微调的场景,冻结原来预训练过的参数,还能够使得模型的输出维度匹配其输入维度

2.逐步解冻

从最后一层逐步放开每一层的参数更新,对于encoder-decoder的模型来说,逐步同时解冻encoder和decoder相应的层;对于输入的线性层和输出的线性层,二者是共享参数的,微调时都解冻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值