深入理解深度学习——BERT派生模型:T5(Text to Text Transfer Transformer)

分类目录:《深入理解深度学习》总目录


T5的全称为Text to Text Transfer Transformer,是谷歌提出的预训练语言模型领域的通用模型,该模型将所有自然语言问题都转化成文本到文本的形式,并用一个统一的模型解决。为了得到大一统的高质量预训练语言模型,T5不可避免地走上了“大力出奇迹”的道路,使用了更大的模型和更多的数据,但是模型和数据规模只是T5通往最强模型的手段之一,T5最核心的理念是:使用前缀任务声明及文本答案生成,统一所有自然语言处理任务的输入和输出。在此之前的几乎所有预训练语言模型,在下游任务微调过程中都需要添加非线性层,将模型的输出转化为任务指定的输出格式。T5不需要对模型做任何改动,只需要提供下游任务的微调数据;不需要添加任何非线性层,唯一需要做的就是在输入数据前加上任务声明前缀,下图所示为T5的输入格式和输出格式。绿色部分表示翻译任务,红色和黄色部分分别表示CoLA任务和STS-B任务,蓝色部分表示摘要生成任务,左侧的框表示T5的输入样例,右侧的框则是对应的输出结果。
T5的输入格式和输出格式片描述
T5将自然语言处理任务都转化成几乎一致的格式,即输入是带有任务前缀声明的文本序列,输出的文本序列是相应任务的结果。其输入格式和输出格式类似于GPT-3在Few-shot Learning设置下的格式,与GPT-3不同的是,T5适用于所有自然语言处理任务,而GPT-3受限于模型结构,只在文本生成任务上有独特的优势。由于T5的论文细节和对比实验很丰富,本文挑选关键算法和模型细节进行介绍。

算法细节

模型结构

T5在结构选型时考虑了3种模型结构,如下图所示,分别是Encoder-Decoder结构(传统的Transformer结构)、Decoder结构(GPT的结构)和Prefix LM结构(UniLM的结构)。
T5的结构选型图
T5对这3种模型结构均做了测试,发现Transformer Encoder-Decoder结构效果最佳,于是遵循实践出真知的法则,T5的模型结构采用了传统的Transformer结构。

训练数据

T5训练的文本均来自Common Crawl数据集,该数据集中的数据是从互联网上爬取的(大约每个月抓取20TB的文本数据)。T5选取了2019年4月的数据,经过清洗,得到750GB的满足训练要求的数据,将其作为训练数据,并取名为C4数据集(Colossal Clean Crawled Corpus),具体的清洗要求如下:

  • 只保留结尾是正常符号的句子,如句号、感叹号、问号和引号。
  • 删除所有内容少于5句且句子长度小于3个词的页面数据。
  • 删除所有包含黄暴词的页面数据。
  • 删除包含“.JavaScript”的词(针对网页数据)。
  • 删除包含占位符“lorem ipsum”(排版测试中经常出现)的页面数据。
  • 删除编程语言中经常出现的大括号对“{}”所在的页面数据。
  • 删除连续重复3次以上的句子,只保留一句。
  • 利用语种检测工具langdetect,只保留语种检测为英语,且置信度超过0.99的数据(训练针对英语任务的模型)。
输入和输出的格式化

T5与其他模型最大的区别在于,对下游任务微调训练更友好。不需要做任何模型侧的改动,只需要对下游任务的训练数据做简单改写,就可以用T5完成相应的任务。具体而言,在输入数据之前,添加任务的前缀声明,并将输出数据转化为文本表示,分类任务使用类别名即可。尤其针对输出结果是连续值的任务,根据训练数据的标签分布,采用模糊化的方式,将数值格式转化为文本格式,如1~5分的连续分值,以0.2为间隔将其分桶量化,则可得到一系列字符串标签类别,如“1”“1.2”“4.8”“5”等。下面介绍两个经典任务的改写方法。

  • CoLA(The Corpus of Linguistic Acceptability,判断句子的语法是否可接受,属于二分类任务,输出0表示不可接受,输出1表示可接受):

原始输入:John made Bill master of himself
原始标签:1
T5输入:cola sentence:John made Bill master of himself.
T5标签:acceptable

  • STS-B(Semantic Textual Similarity Benchmark)为语义相似度检测任务,输出1~5分内的连续值:

原始输入1:Representatives for Puretunes could not immediately be reached for comment Wednesday.
原始输入2:Puretunes representatives could not be located Thursday to comment on the suit.
原始标签(数值类型):3.25
T5输入:

  • stsb sentence1:Representatives for Puretunes could not immediately be reached for comment Wednesday.
  • sentence2: Puretunes represen-tatives could not be located Thursday to comment on the suit.

T5标签(字符串类型):3.2

训练过程

T5进行了很多对比实验,来挑选最合适的训练方法,具体而言,有如下3种(用“|”分割T5的输入和输出):

  • 标准语言模型式:已知上半句,预测下半句。例如:Thank you for inviting|me to your party last week.
  • BERT式:掩盖一部分词,还原被掩盖的词。例如:Thank you<MASK>``<MASK>me to your party<MASK>week|Thank you for inviting me to your party last week.
  • 乱序还原式:将文本顺序打乱,还原正确的语序。例如:party me for your to.last you inviting week Thank|Thank you for inviting me to your party last week.

实验表明,采用BERT式的训练方法效果最好,其实这也是BART所用的训练方法之一(BART还使用了其他噪声方法)。BERT式的训练方法依然有不少细节需要推敲,如掩码范围和替换词挑选策略等,因此T5又做了3组实验,挑选最佳的替换词方式,具体而言,有如下3种(用“|”分割T5的输入和输出):

  • 单个词用<MASK>替换,与BERT一样。例如:Thank you<MASK>``<MASK>me to your party<MASK>week|Thank you for inviting me to your party last week.
  • 若干个连续词一起替换,只预测被替换的词。例如:Thank you<X>me to your party<Y>week.|<X>for inviting<Y>last<Z>
  • 随机丢弃若干词,只预测被丢弃的词。例如:Thank you me to your party week.|for inviting last

实验表明,采用若干个连续词一起替换的方式效果最好,虽然其思想与BART的Text Infilling噪声训练方法一致,但形式上更简洁,BART以原文作为Decoder的标签,而T5只需要预测被掩盖的部分词即可。与此同时,T5还做了更为细致的实验,测试在不同掩码范围下模型的表现,以找出最合适的掩码长度。实验结果表明,长度为3是最合适的,而替换概率遵循BERT的15%是最佳的原则。

综上所述,T5利用了近年来在预训练语言模型上使用的技巧,做了大量的对比实验。虽然T5并没有提出新的模型结构或新的训练模式,但它通过巧妙地改写输入和输出,让T5不需要改动模型结构,就能在下游任务数据集上进行微调训练,本身就算一个跨越式进步。借助超大的模型规模和训练数据,具有110亿参数规模的T5在几乎所有任务上都达到了SOTA效果,再一次证明了预训练语言模型领域“大力出奇迹”的法则。从Transformer被提出到T5的出现,历史的车轮向前滚动,基于Transformer的预训练语言模型还是回归了最初的样子,也奠定了Transformer作为特征提取器在自然语言处理领域不可撼动的地位。

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.
[3] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[4] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[5] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[6] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[7] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
《Huggingface自然语言处理详解——基于BERT中文模型的任务实战》源码是一份用于展示如何使用Huggingface库进行自然语言处理任务的示例代码。该代码基于BERT中文模型,旨在帮助读者理解如何使用该模型进行文本分类、情感分析等任务。 该源码由以下几个部分组成: 1. 导入必要的库:代码开始部分导入了需要使用的Huggingface库,包括`transformers`和`tokenizers`。这些库提供了BERT模型以及相关的处理函数和工具。 2. 数据预处理:接下来,源码介绍了如何进行数据预处理。这包括读取数据集、分词、编码等步骤。具体来说,使用`BertTokenizer`类对文本进行分词,并使用`BertTokenizer.from_pretrained`加载预训练的BERT中文模型。 3. 构建模型:源码构建了一个简单的BERT分类模型,使用`BertForSequenceClassification`类来实现。这个模型有一个BERT编码器和一个用于分类的线性层。 4. 训练模型:通过`Trainer`类,源码进行了模型的训练。在训练过程中,使用了一个训练集和一个验证集,并定义了相应的训练参数,如学习率、批大小等。训练过程中,模型参数逐渐更新,直到达到设定的最大训练轮数。 5. 模型评估:训练完成后,源码进行模型评估。通过计算准确率、查全率、查准率等指标,评估模型在验证集上的性能。 总的来说,《Huggingface自然语言处理详解——基于BERT中文模型的任务实战》源码提供了一个完整的BERT模型应用示例,通过该源码,读者能够了解如何使用Huggingface库中的BERT模型进行中文文本分类任务,并学会了如何进行数据预处理、构建模型、训练和评估模型等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

von Neumann

您的赞赏是我创作最大的动力~

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

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

打赏作者

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

抵扣说明:

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

余额充值