T5谷歌19年发布一个的一个模型,它也一度刷了榜,最主要的贡献是提出一个通用框架,接着进行了各种比对实验,获得一套建议参数,最后得到一个很强的 baseline。而我们之后做这方面实验就能参考它的一套参数。它最重要作用是给整个 NLP 预训练模型领域提供了一个通用框架,把所有任务都转化成一种形式。他让我们思考要怎么去构建一个输入的形式。
首先为什么叫 T5 模型,因为是 Transfer Text-to-Text Transformer 的简写。什么是text to text,那就是作者在这提出的一个统一框架,靠着大力出奇迹,将所有 NLP 任务都转化成 Text-to-Text (文本到文本)任务。
通过这样的方式就能将 NLP 任务都转换成 Text-to-Text 形式,也就可以用同样的模型,同样的损失函数,同样的训练过程,同样的解码过程来完成所有 NLP 任务。后面的GPT2 GPT3也都是用的这种模式。
他有一个自己清理的数据集,也是用这个数据集去训练的,叫C4
作者从 Common Crawl(一个公开的网页存档数据集,每个月大概抓取 20TB 文本数据) 里清出了 750 GB 的训练数据,然后取名为 ” Colossal Clean Crawled Corpus (超大型干净爬取数据)“,简称 C4。
他的模型架构和参数突出一个大力出奇迹,就是一个遍历搜索,把各种模型各种组合都试一遍看哪个效果好就用哪个,非常暴力。
首先结构,论文对transformer encoder decoder都做了实验,最后发现第一个效果最好,所以T5 模型其实就是个 Transformer 的 Encoder-Decoder 模型。
然后是训练目标,反正也是所有都试了一遍最后决定效果最好的,最终的结构是:
高层次方法(自监督的预训练方法):
BERT-style 式,就是像 BERT 一样将一部分给破坏掉,然后还原
第二方面,对文本一部分进行破坏时的策略:
replace span(小段替换)法,可以把它当作是把上面 Mask 法中相邻 [M] 都合成了一个特殊符,每一小段替换一个特殊符,提高计算效率;
第三方面,到底该对文本百分之多少进行破坏:15%
第四方面,span宽度是多少:2,<mask><mask>两个然后替换成<X>进行预测的效果是最好的。
最后就是结合上面所有实验结果,训练了不同规模几个模型,由小到大:
- Small,Encoder 和 Decoder 都只有 6 层,隐维度 512,8 头;
- Base,相当于 Encoder 和 Decoder 都用 BERT-base;
- Large,Encoder 和 Decoder 都用 BERT-large 设置,除了层数只用 12 层;
- 3B(Billion)和11B,层数都用 24 层,不同的是其中头数量和前向层的维度
最后是位置嵌入:Transformer的position embedding使用了sinusoidal函数,BERT换成了可学习的绝对位置嵌入,现在改成了相对位置嵌入(relative position embeddings)。
总之,大力出奇迹。T5在各种语义提取,生成任务上都取得了不错的效果。