返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十七、mT5 [2020]

发布于 2023-07-17 23:38:25 字数 22049 浏览 0 评论 0 收藏 0

  1. 目前的自然语言处理 pipeline 经常使用迁移学习,即在一个数据丰富的任务上对模型进行预训练,然后再对下游感兴趣的任务进行微调。这种模式的成功部分归功于预训练模型的 parameter checkpoints 的发布。这些 checkpoints 使 NLP 社区的成员能够在许多任务上迅速获得强大的性能,而不需要自己进行昂贵的预训练。作为一个例子,《Exploring the limits of transfer learning with a unified text-to-text transformer》 发布的 Text-to-Text Transfer Transformer: T5 模型的 pre-trained checkpoints 已经被用来在许多 benchmarks 上取得 SOTA 的结果。不幸的是,这些语言模型中的许多都是只对英语文本进行预训练的。鉴于世界上大约 80% 的人口不讲英语,这极大地限制了它们的使用。社区解决这种 English-centricity 问题的方式之一是发布了数十种模型,每一种模型是在单一的 non-English 语言上进行预训练的。一个更普遍的解决方案是制作多语言模型 multi-lingual models ,这些模型在多种语言的混合体上进行预训练。这类流行的模型有 mBERTmBARTXLM-R,它们分别是BERTBARTRoBERTa的多语言变体。

    在论文 《mT5: A massively multilingual pre-trained text-to-text transformer》中,作者继续这一传统,发布了 T5 的多语言变体 mT5 。论文对 mT5 的目标是产生一个大规模的多语言模型,并尽可能少地偏离用于创建 T5 的配方。因此,mT5 继承了T5的所有基因,如:通用的 text-to-text 格式、基于大规模经验研究的设计、以及规模。为了训练 mT5,论文引入了C4数据集的一个多语言变体,称为 mC4

    为了验证 mT5的性能,论文包含了在几个 benchmark 数据集上的结果,在许多情况下显示出 SOTA 的性能。论文发布了预训练模型和代码,以便社区可以利用他们的工作。

27.1 T5 和 C4 的背景

  1. T5 是一个预训练的语言模型,其主要区别在于它对所有 text-basedNLP 问题使用了统一的 "text-to-text" 格式。

    这种方法对于生成式任务(如机器翻译或抽象摘要)来说是很自然的,因为任务格式要求模型以某些输入为条件来生成文本。对于分类任务来说,这种方法比较特殊:在分类任务中,T5 被训练来输出标签的文本(例如情感分类中的 "positive""negative" ),而不是一个类别ID

    这种方法的主要优点是:它允许对每个任务使用完全相同的训练目标(最大似然),这实际上意味着一组超参数可以用于任何下游任务的有效微调。

    《Unifying question answering and text classification via span extraction》《The natural language decathlon: Multitask learning as question answering》 提出了类似的统一框架。

    给定这种任务格式的 sequence-to-sequence 的结构,T5 使用 《Attention is all you need》最初提出的 basicencoder-decoder Transformer 架构。

    T5masked language modeling"span-corruption" objective 上进行预训练,其中 input tokensconsecutive spans 被替换为 a mask token ,模型被训练为重建 masked-out tokens (而不是完整的原始序列)。

  2. T5 的另一个区别因素是它的规模,预训练的模型规模从 60M11B 个参数。这些模型是在大约 1Ttoken 的数据上预训练的。未标记数据来自于 C4 数据集,该数据集收集了约 750GB 的英文文本,来源是公共的 Common Crawl 网络爬虫。C4 包括启发式方法,只抽取自然语言(移除了模板和其他乱七八糟的东西),此外还有数据去重、以及语言过滤(仅保留英文文本,当然由于语言检测不是 100% 准确所以可能还有极其少量的非英文文本)。

    T5 的预训练objective 、模型架构、scaling strategy 、以及许多其他设计选择都是根据《Exploring the limits of transfer learning with a unified text-to-text transformer》 详细描述的大规模实验研究来选择的。

27.2 mC4 和 mT5

  1. 我们在本文中的目标是:创建一个大规模的多语言模型,尽可能地遵循 T5的配方。为此,我们开发了一个涵盖 101 种语言的 C4 数据集的扩展版本,并对 T5 进行了调整从而更好地适应这种多语言特性。

27.2.1 mC4

  1. C4 数据集被明确地设计为只有英语:任何没有被 langdetect 赋予至少 99% 的英语概率的网页都被丢弃了。相比之下,对于 mC4 ,我们使用 cld3 来识别超过 100 种语言。由于其中一些语言在互联网上相对稀少,因此我们利用了 Common Crawl 迄今为止发布的所有 71 个月的网络爬虫数据。这比用于 C4 的源数据要多得多,因为仅 20194 月的网络爬虫就足以提供大量的英语数据。

    C4 中一个重要的启发式过滤步骤是:删除那些没有以英语结束标点符号所结束的行。由于这对许多语言来说是不合适的,因此我们采用了一个 "line length filter" ,要求网页至少包含三行共计 200 个或更多的字符的文本。此外,我们将遵循 C4 的过滤方法,在不同的文档中对行文本去重,并过滤含有 bad words 的页面。最后,我们使用 cld3 检测每个页面的主要语言,并移除置信度低于 70% 的页面。

    在应用这些过滤之后,我们将剩余的网页按语言分组,并将所有拥有 10k 个或更多网页的语言纳入语料库。这产生了 107 种由 cld3 定义的 "languages" 的文本。然而,我们注意到,其中六种语言只是同一口语的文字变体(例如,ru 是西里尔文字的俄语、ru-Latn 是拉丁文字的俄语)。

    每种语言的网页计数的柱状图如下图所示。

    详细的数据集统计,包括每种语言的 token 数量,如下表所示。其中,mT5 这一列表示 mT5 训练数据中,来自给定语言的数据的占比。这个占比是经过α=0.3$ \alpha=0.3 $ 的指数平滑的(即,采样策略),所以和 Tokens/Pages 比例差异较大。

    中文语料的规模是英文语料的 1.5% 左右,非常非常少。

27.2.2 mT5

  1. 我们用于 mT5 的模型结构和训练程序与 T5 非常相似。具体而言,我们以 T5.1.1https://github.com/google-research/text-to-text-transfer-transformer/blob/master/released_checkpoints.md#t511) 为基础,该配方通过使用GeGLU 非线性函数、 在较大的模型中缩放dmodel$ d_\text{model} $ 而不是dff$ d_\text{ff} $ 、在未标记数据上不采用 dropout 来预训练,从而改善 T5

    注意,原始的 T5 论文中,在较大的模型中缩放dff$ d_\text{ff} $ ,因为作者说 :“我们选择扩大dff$ d_\text{ff} $ 的规模,是因为现代加速器(如我们训练模型的 TPU )对于像 Transformer 的前馈网络中的大型稠密矩阵乘法是最有效的。”

  2. 预训练多语言模型的一个主要因素是如何对每种语言的数据进行采样。归根结底,这种选择是一种零和游戏:

    • 如果对 low-resource 语言的采样过于频繁,模型可能会过拟合。

    • 如果 high-resource语言采样不足,模型就会欠拟合。

    因此,我们采取了(《Unsupervised cross-lingual representation learning at scale》《Massively multilingual neural machine translation in the wild: Findings and challenges》)中使用的方法,通过按照概率p(L)|L|α$ p(L)\propto |L|^\alpha $ 采样来提高 low-resource 语言,其中:p(L)$ p(L) $ 是在预训练期间从给定语言中采样的概率,|L|$ |L| $ 是该语言中的样本数量。

    超参数α$ \alpha $ (通常0α<1$ 0\le \alpha \lt 1 $ ) 允许我们控制在 low-resource 语言上训练的概率的提升程度。之前的工作所使用的值包括:用于 mBERTα=0.7$ \alpha = 0.7 $ 、用于 XLM-Rα=0.3$ \alpha = 0.3 $ 、用于 MMNMTα=0.2$ \alpha = 0.2 $ 。我们尝试了所有这三个值,发现α=0.3$ \alpha = 0.3 $ 在 high-resource 语言和 low-resource 语言的性能之间给出了一个合理的折中。

  3. 我们的模型涵盖了超过 100 种语言,这就需要一个更大的词表。遵从 XLM-R ,我们将词表规模增加到 250Kwordpieces 。与 T5 一样,我们使用 SentencePiecewordpiece 模型,该 wordpiece 模型在训练期间使用相同的语言采样率进行训练。

    为了适应像中文这样的大字符集的语言,我们使用了 0.99999 的字符覆盖率 character coverage ,但也启用了 SentencePiece"byte-fallback" 功能从而确保任何字符串都可以被唯一编码。

    byte-fallback :将 UNK token 回退到 UTF-8 字节序列。

27.2.3 和相关模型的比较

  1. 为了说明我们的新模型的背景,我们提供了一个与现有的大规模多语言预训练语言模型的简要比较。为了简洁起见,我们把重点放在支持几十种以上语言的模型上。下表给出了 mT5 与最相似模型的 high-level 比较。

    • mBERTBERT 的多语言版本。与我们使用 mT5 的方法类似,mBERT 尽可能地遵循 BERT 的配方(相同的架构、objective 等)。主要的区别是训练集(指的是和 BERT 的区别,而不是和 mT5 的区别)。mBERT 不是在 English WikipediaToronto Books Corpus 上进行训练(这是 BERT 的训练集),而是在 Wikipedia 上训练多达 104 种语言。

      因为 Toronto Books Corpus 是英文的,而不是多语言的。

    • XLM 也是基于BERT,但包括改进的方法来预训练多语种语言模型。许多预训练的 XLM版本已经发布;最大规模的多语言变体是在 Wikipedia100 种语言上训练的。

    • XLM-RXLM 的改进版本,它基于 RoBERTa 模型。XLM-R 是在 Common Crawl100 种语言的数据上用跨语言的 masked language modeling objective 进行训练。

      为了提高预训练数据的质量,首先在 Wikipedia 上训练一个 n-gram 语言模型,只有在 n-gram 模型赋予它高的可能性时,才会保留 Common Crawl 中的一个页面(《Ccnet: Extracting high quality monolingual datasets from web crawl data》)。

    • mBART 是一个基于 BART的多语言 encoder-decoder 模型。mBART 是在与 XLM-R 相同的数据中的 25 种语言子集上,结合 span maskingsentence shufflingobjective 进行训练。

    • MARGE 是一个多语言 encoder-decoder 模型,它被训练为通过检索其他语言的文档来重建一种语言的文档。它使用来自 WikipediaCC-News26 种语言的数据。

27.3 实验

  1. 数据集:为了验证 mT5 的性能,我们在 XTREME 多语言 benchmark6个任务上评估了我们的模型:

    • XNLI entailment task 覆盖 14 种语言。

    • XQuAD/MLQA/TyDi QA 阅读理解 benchmark 分别覆盖 10/7/11 种语言。

    • 来自 XTREMEWikiAnnNamed Entity Recognition: NER 数据集覆盖 40 种语言。

    • PAWS-X paraphrase identification dataset 覆盖 7 种语言。

    我们将所有的任务转化为 text-to-text 的格式,即生成 label textXNLIPAWS-X )、entity tags and labelsWikiAnn NER)、或者直接生成答案(XQuADMLQATyDi QA)。对于 NER ,如果有多个实体,那么它们将按照出现的顺序拼接起来;如果没有实体,那么target 文本就是 "None"

    我们考虑这些任务的变体,即模型只在英语数据上进行微调("zero-shot")、或在每个目标语言的数据(这些数据来自于从英语利用机器翻译而来)上进行微调("translate-train" )。

    由于仅在英语数据上微调,因此模型没有见过除了英语以外的其他语言的数据,因此称为 "zero-shot"

    为简洁起见,关于这些 benchmark 的进一步细节请参考 《Xtreme: A massively multilingual multi-task benchmark for evaluating cross-lingual generalization》

  2. 配置:

    对于预训练:

    • 按照最初的 T5 配方,我们考虑五种模型尺寸:Small300M 参数)、Base600M 参数)、Large1B 参数)、XL4B 参数)、XXL13B 参数)。与相应的 T5模型变体相比,参数数量的增加来自于mT5中使用的较大的词表。

    • batch size = 1024,输入序列长度为 1024token ,预训练步数为 1M (对应于总计大约 1Tinput token )。这与T5 的预训练量相同,约为 XLM-R1/6 。由于时间限制,我们只报告了 mt5-XXL 训练 750K 步的结果。最终结果和进一步的实验将在我们的公共代码库中更新。

    • 我们使用 T5 在预训练时使用的反平方根学习率调度,学习率设置为1/max(n,k)$ 1/\sqrt{\max(n,k)} $ ,其中n$ n $ 是当前的步数,104$ 10^4 $ 是 warm-up 步的数量。

    • 按照 T5.1.1 的配方,我们在预训练期间不应用 dropout

    • 我们使用与 T5 相同的 self-supervised objective15%token 被掩码、平均 noise span length3

    对于微调:

    • 我们对所有任务使用 0.001 的恒定学习率和 0.1dropout

    • zero-shot setting 中,我们对 XNLI 使用 batch size220$ 2^{20} $ 、对 PAWS-X/NER/XQuAD/MLQA/TyDi QA 使用 batch size216$ 2^{16} $ 。

    • 对于 early stopping ,我们每 200 步保存一个 checkpoint ,并选择在验证集上具有最高性能的 checkpoint

  3. Table 2 列出了我们的主要结果,Table 6 ~ 11 列出了每项任务每种语言的结果。我们最大的模型 mT5-XXL 在我们考虑的所有任务中都达到了 SOTA

    请注意,与我们的模型不同,InfoXLM 得益于平行训练数据 parallel training data,而 X-STILT 则利用了与目标任务相似的任务的 labeled data 。总的来说,我们的结果强调了模型容量在跨语言 representation learning 中的重要性,并表明 scaling up 一个简单的预训练配方可以成为更复杂技术的一种可行的替代,其中这些更复杂的技术依赖于语言模型过滤、平行数据、或中间任务。

    "translate-train" setting 中, 我们还在所有 XTREME 分类任务和问答任务上匹配或超过 SOTA 的技术。对于这些任务,我们对 labeled English data 和机器翻译的组合进行了微调。这允许与 Filter 以及 XLM-R 基线进行直接比较。然而,请注意,这个设置不同于XTREME "translate-train"《Xtreme: A massively multilingual multi-task benchmark for evaluating cross-lingual generalization》),它不包括英语数据。

  4. 据观察,与专门为某一语言训练的类似规模的 "专用" 模型相比,大规模多语言模型在该语言上的表现不佳。为了量化这种情况,我们比较了 mT5T5SQuAD 阅读理解 benchmark 上微调后的表现。结果如下表所示,其中 T5 的结果来自原始论文。

    虽然 SmallBasemT5 模型落后于它们对应的英语 T5 模型,但我们发现大型模型缩小了差距。这表明可能存在一个转折点,过了这个转折点,模型就有足够的能力有效地学习 101 种语言。

    T5 仅在英文语料上训练。

  5. 消融研究:我们执行了六种消融研究,以 Large 模型作为 baseline

    • dropout 增加到 0.1 ,希望能减轻对 low-resource 语言的过拟合。

    • 将序列长度减少到 512 ,就像在 T5 中使用的那样。

    • 将预训练 objective 中的平均 noise span length 增加到 10 ,因为我们观察到的每个 token 的字符比 T5 更少。

    • 调整语言采样指数α$ \alpha $ 为 {0.2, 0.7},分别被 MMNMmBERT 所使用。

    • mC4 data pipeline 中关闭 "line length filter"

    • 103 种语言的维基百科数据来补充 mC4

      为什么用更多数据反而效果下降?论文没有解释其中的原因。个人猜测是引入更多数据,但是没有相应地调整语言采样指数α$ \alpha $ ,导致采样策略次优?

    Table 4 显示了这些消融对 XNLI zero-shot 准确性的影响。在每种情况下,XNLI 的平均得分都低于 mT5-Large 基线,证明了我们选择的设置是合理的。

    • line length filter 提供了+2 点的提升,证明了从 Common Crawl 中过滤低质量的页面是有价值的。

    • 将语言采样指数α$ \alpha $ 提高到 0.7 ,预期会提高 high-resource 语言的性能(如俄语 81.5 -> 82.8 ),同时损害 low-resource 语言的性能(如 Swahili 75.4 -> 70.6 ),平均效果为负。

    • 相反,将语言采样指数α$ \alpha $ 降低到 0.2 ,会使一种长尾语言略微提高(Urdu 73.5 -> 73.9 ),但在其他地方则有害。

    Table 12Table 13 分别提供了 XNLI 上每一种语言的详细指标,以及我们在 zero-shot XQuAD 上的消融性能,显示了大致相同的趋势。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文