大模型T5

2024-05-05 01:52
文章标签 模型 t5

本文主要是介绍大模型T5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近年来,在大规模预训练语言模型上,各大公司的军备竞赛卷得十分激烈!

本文我们介绍Google推出的大一统模型——T5,同样是数据和实验多得让你瞠目结舌的论文,没错,就是在炫富,你有钱你也可以烧啊!(不过相比后来出现的GPT-3还是小巫见大巫)

T5论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

1. 简介

T5 由谷歌的 Raffel 等人于 2020年7月提出,相关论文为“Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer”。

迁移学习技术在NLP领域的兴起,带来了一系列方法、模型和实践的创新。作者们提出了一种将所有的机遇文本的语言任务建模为文本到文本(text-to-text)的统一框架。作者系统研究了预训练目标、模型架构、未标注的数据集、迁移学习方法和其他因素在语言理解任务上的对比效果。通过一系列提升(规模和语料),T5在一系列摘要生成、问答、文本分类等任务中取得了SOTA的效果。

论文:https://arxiv.org/abs/1910.10683

代码:https://github.com/google-research/text-to-text-transfer-transformer

2. 概述

预训练可以让模型学习到可以被迁移到下游任务重的通用能力和知识。NLP中迁移学习通常通过未标注数据和非监督学习的方式实现,网络上每日数以TB级别的文本数据正好适用于训练更大的神经网络模型,达到更好的模型效果,因此近期涌现了很多种不同的NLP迁移学习方法,这些方法使用不同的预训练目标、不同的数据集、不同的benckmark和不同的fine-tuning方法。层出不穷的新模型、新方法,使得难以剖析新的贡献的效果,并了解现有转移学习方法的提升空间。为了更严格地分析,作者提出使用一种统一的迁移学习框架,从而能够系统地分析不同策略的效果和提升方向。

新框架的基本思想是把每一个文本相关的问题都建模为“文本到文本”问题。这样做的好处在于可以使用同一个模型、目标函数、训练和解码过程来对待每一个NLP任务,灵活性非常高;并且可以对比不同的迁移学习目标、标注数据和其他因素的影响,同时通过放大模型和数据的规模来探索NLP迁移学习的极限。

作者提出,他们并非想要提出一种新的方法,而是提出一种处理NLP任务的综合视角。因此,文章重点在综述现有方法和实证对比分析,为此将模型放大道极限(11B参数),为此他们构造了一个新的数据集(Colossal Clean Crawled Corpus, 简称C4),该数据集包含几百GB的从网上采集的干净的英文文本。

3. 模型架构

目前NLP领域的主流模式是先在大量无标签的数据上预训练一个语言模型,然后再在下游具体任务上进行有监督的fine-tune,以此取得还不错的效果。在这个模式下,各大公司争奇斗艳,各个机构奋起直追,今天A提出了一种预训练目标函数,明天B提出了另一种预训练目标函数,并且收集了更多的训练语料,后天C提出了参数更庞大的模型,采用了不同的优化策略......各家都声称自己是state-of-the-art,很难分析比较这些工作的有效贡献量。

因此,T5希望提出一个统一的模型框架,将各种NLP任务都视为Text-to-Text任务,也就是输入为Text,输出也为Text的任务。由此可以方便地评估在阅读理解、摘要生成、文本分类等一系列NLP任务上,不同的模型结构,预训练目标函数,无标签数据集等的影响。

T5:Text-to-Text Transfer Transformer


如图所示,T5(Text-to-Text Transfer Transformer)模型将翻译、分类、回归、摘要生成等任务都统一转成Text-to-Text任务,从而使得这些任务在训练(pre-train和fine-tune)时能够使用相同的目标函数,在测试时也能使用相同的解码过程。
注意这里回归任务对应的浮点数会被转成字符串看待,从而可以token by token的预测出来。虽然感觉奇怪,but anyway, it works。

T5模型结构

T5模型采用Transformer的encoder-decoder结构,之前介绍过GPT采用的是Transformer的decoder结构。

Transformer

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

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

T5与原生的Transformer结构非常类似,区别在于:

  1. 作者采用了一种简化版的Layer Normalization,去除了Layer Norm 的bias;将Layer Norm放在残差连接外面。
  2. 位置编码:T5使用了一种简化版的相对位置编码,即每个位置编码都是一个标量,被加到 logits 上用于计算注意力权重。各层共享位置编码,但是在同一层内,不同的注意力头的位置编码都是独立学习的。一定数量的位置Embedding,每一个对应一个可能的 key-query 位置差。作者学习了32个Embedding,至多适用于长度为128的位置差,超过位置差的位置编码都使用相同的Embedding。

T5(Text-to-Text Transfer Transformer)模型结构仍然是一个由Transformer层堆叠而成的Encoder-Decoder结构。Decoder 与Encoder很相似,但是Decoder中在自注意力层后还有一个标准的注意力层,这个标准的注意力层会将Encoder的输出参与到注意力的计算当中。Decoder的自注意力机制采用了自回归的通用注意力,即每个元素在计算注意力时只能考虑其前面位置的输出。Decoder 的最后一层,通过 Softmax 分类器输出每个元素属于每个词的概率,Softmax 分类器的权重与模型最前面的 Token Embedding 矩阵共享权重。

数据集C4

作者对公开爬取的网页数据集Common Crawl进行了过滤,去掉一些重复的、低质量的,看着像代码的文本等,并且最后只保留英文文本,得到数据集C4: the Colossal Clean Crawled Corpus

作者基于Common Crawl ,通过删除 html 文件中的 markup 标和非文本内容,构造了大量文本数据。这些文本中包含大量的无效文本(非自然语言,例如菜单栏、错误信息、重复文本;无用文本,例如侮辱性语言、占位符文本、源代码等),作者利用以下启发式规则来清洗采集后的文本数据:

  1. 只保留以结束标点符号结束的行(即句号、感叹号、问号或末尾的引号)。
  2. 删除了少于5个句子的页面,只保留了至少包含3个单词的行。
  3. 删除了含有 "肮脏、顽皮、淫秽或其他不良词语清单"中的任何词语的页面。
  4. 删除了带有Javascript字样的行。
  5. 删除了带有 "lorem ipsum "的页面。
  6. 删除了任何包含大括号"{"的页面,由于大括号"{"出现在许多编程语言中,而不是在自然文本中。
  7. 为了消除数据集的重复性,以3个句子作为一个span单元,对于数据集中至少出现了一次的这样的片段,仅保留一份,删除其余的。
  8. 采用 langdetect 语种识别,过滤掉非英文且概率不低于0.99 的页面。

作者收集了2019年4月以来的网络文本数据,并按上述规则清洗,生产了包括750GB的干净的英文语料。

输入输出格式

我们来看如何将各种下游NLP任务都统一转化成Text-to-Text格式。

在下游任务上fine-tune模型时,为了告诉模型当前要做何种任务,我们会给每条输入样本加一个与具体任务相关的前缀。

  • 翻译前缀translate English to German:
  • 分类前缀cola sentence:
  • 摘要前缀summarize:

等等。注意这里每个任务前缀的选择可以认为是一种超参,即人为设计前缀样式。作者发现不同的前缀对模型的影响有限,因此没有做大量实验比较选择不同前缀的结果。

一些特殊数据的处理:

  • 评分任务(1-5分)被重分类为21类,每隔0.2分为一类。
  • 指代消解(生成式):待判定的词左右两侧都加上*符号,模型需要输出这个词代表什么。
  • 指代消解(判断是否匹配):将训练集中标记为True的样本构造数据集,False的不考虑,因为False的具体指代何物我们也不清楚。
  • WNLI数据集不参与训练和评估。

4. 实验

4.1 baseline

模型架构:

经典的Encoder-Decoder结构,模型配置与BERT-base相当,编解码器各由12个Transformer Block构成,隐层维度为768,12个注意力头,参数量约为220M(BERT-base的2倍)。Dropout比例为0.1。

训练方式:

预训练:

  • AdaFactor优化器,解码时采用贪心解码。
  • 在C4上预训练524k(2的19次方)步,序列最长为512,batch size为128,训练时模型总共处理了约34B个token,这比BERT和RoBERTa少了很多。
  • 学习率策略采用均方根的倒数: , 𝑘 为warmup步数,取值为10000, 𝑛 为当前步数。初始学习率为0.01。使用这种学习率策略的背景是,作者后面要对比不同的训练步数,这种方式可以在不确定训练步数的情况下自适应调整学习率。

微调:

  • 在所有任务上都是微调262k(2的18次方),使用常数学习率0.001,每5k步保存一次权重,并保存验证集最高的模型。

词典:

采用SentencePiece将文本切词为WordPiece词元,词典大小为32000。考虑到下游有翻译任务,作者按照英语:德语:法语:罗马尼亚语=10:1:1:1的比例构造语料库,重新训练SentencePiece模型。

非监督目标:

参考MLM,T5的解噪语言模型目标区别在于:

  • mask的是连续的span,而非某一个token
  • 多个连续被mask的片段,会被分配一个唯一的哨兵token,每个不同的哨兵token的id不一致
  • 模型输出各个被mask的片段的哨兵token以及其原始文本,后面接一个终止符。

模型性能:

如下图所示,除了英语到法语的翻译任务,绝大部分任务在经过预训练后都能显著地涨点。

以下作者将从各个层面对比探讨更优的模型、数据和训练策略。

4.2 模型架构

不同模型的区别主要在于Transformer中自注意力中的mask设计,mask的设计策略决定了在计算自注意力时,哪些上下文信息会参与进来。下图展示了最常见的三类mask策略:

  • 左侧:不加mask,左右两侧的上下文信息都参与注意力的计算,适用于BERT等双向的语言模型
  • 中间:常规的斜对角 mask,仅前面的 token 会作为上下文信息参与注意力计算,适用于GPT等单向语言模型
  • 右侧:部分不加mask,部分为斜对角的mask,适用于encoder-decoder等seq2seq的语言模型,Encoder中的输出序列及Decoder中前面的token会参与后面token的注意力计算

假设BERT-base的层数为 𝐿 ,参数量为 𝑃 ,FLOPs 为 𝑀

,作者设计一下不同的模型用于对比:

编码器层数解码器层数总参数量FLOPs备注
LLPM
LLPM编解码器参数共享
L/2L/2PM/2
0LPM只有解码器
0LPM解码器为前缀,即包括输入和输出,输入序列无MASK

训练时,除了 denoising 目标函数,还包含了常规的语言模型目标。对于Prefix LM,在句子中随机找一个切分点,切分点前的为输入序列,后面的为输出序列;对于只有Decoder的模型,从头开始预测。

对比结果:

  • 采用Denosing 目标函数的 Encoder-Decoder 性能最好,Encoder与Decoder共享权重的模型也能取得很好的性能,因此可以考虑通过共享权重的方式减少模型参数量,但是仍然不降低模型精度;但是将模型层数减少一半会极大地损害模型性能
  • 相比于只有Decoder的模型,共享参数的Encoder-Decoder模型精度提高很多,说明引入Encoder-Decoder之间的注意力是有增益的
  • 采用Denoising目标函数比自回归LM目标函数的效果更好

4.3 非监督学习目标

不同的目标函数:

  1. Seq2Seq:给定输入文本,生成输出文本
  2. BERT式:输入添加掩码的文本,输出被mask的文本
  3. Deshuffle:打乱输入文本片段后恢复顺序
  4. MASS式:输入添加掩码的文本,输出恢复后的原文
  5. 随机替换片段:随机mask掉连续的片段,恢复被mask的片段。
  6. 随机删除输入片段,输出被删除的片段
  7. 随机Mask 片段:随机mask掉连续的片段,然后逐个输出被mask的片段原文(即T5采用的方法)

对比结果:

  • BERT式的MLM目标函数比Prefix LM的目标函数效果更好
  • MLM的策略当中,随机替换片段的效果最好
  • MLM的mask比例对模型的影响不是很大,最好的结果是采用15%的mask比例
  • mask文本片段时,采用平均长度为3的片段时,相对性能最好

4.4 预训练数据集

对比不同的数据集:

  • C4数据集
  • Unfiltered C4数据集:未做过滤清洗的C4数据集(但是做了语种过滤)
  • RealNews-like数据集:仅保留C4中新闻领域的内容
  • WebText-like数据集:仅保留 Reddit的评分不低于3分的内容
  • Wikipedia数据集:英文Wikipedia数据集
  • Wikipedia + Toronto Books语料:英文Wikipedia数据集和TBC(电子书)数据集

对比结果:

4.5 训练策略

微调策略:

  • 全部参数都微调
  • 插入Adapter层:在FFN后面再加上全连接层变换,主要参数为全连接层采用不同的维度
  • 逐层解冻:首先只更新最后一层的参数,然后更新倒数两层的参数,直到所有参数都被微调

结果:微调所有参数仍然是效果最好的。

多任务学习:

主要体现在训练数据集中包含不同类型任务的样本。

  • 按照每个任务的样本比例混合采样
  • 对样本比例加温度变换,重新构造混合样本
  • 对每个任务采样相同数目的样本

组合多任务学习和微调:

  • 非监督预训练+微调仍然是最优的策略
  • 多任务预训练+微调也能取得不错的结果

4.6 更大模型、训练更久

  • 模型放大2-4倍,训练步数增大1-2倍,性能有所提升,但无法明确两者的重要性
  • 在默写任务上集成4个独立训练的模型也能显著增益

4.7 各方面集成

综上所述,作者发现,一个最优的预训练T5模型应该是这样的:

  • 目标函数:Span-corruption,span的平均长度为3,corruption的概率为15%
  • 更长的训练步数:采用C4数据集继续训练1M步(bs=2^11),总计约训练了1 万亿个token
  • 模型大小:
    • base版本:24层,隐层768维,12个注意力头,参数量为220M
    • small版本:12层,隐层 512维,8个注意力头,参数量约为60M
    • Large版本:48层,隐层1024维,16个注意力头,参数量约为770M
    • 3B和11B版本:48层,隐层1024维,分别为32/128个注意力头,参数量达到了 2.8B和11B
    • 多任务预训练:在非监督预训练时,混合有监督任务可以涨点。
    • 微调:在每个任务上微调
    • Beam Search:Beam size为4,长度惩罚为0.6

这篇关于大模型T5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960574

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号