【mT5模型】mT5: A Massively Multilingual Pre-trained Text-to-Text Transformer

【mT5模型】mT5: A Massively Multilingual Pre-trained Text-to-Text Transformer

  • 论文信息
      • 阅读评价
  • Abstract
  • Introduction
  • Background on T5 and C4
  • mC4 and mT5
    • mC4
    • mT5
    • Comparison to related models
  • Experiments
  • Zero-shot generation
    • Illegal predictions
    • Preventing accidental translation
  • Conclusion

论文信息

名称内容
论文标题mT5: A Massively Multilingual Pre-trained Text-to-Text Transformer
论文地址https://aclanthology.org/2021.naacl-main.41/
发表时间2021-03-11
研究领域NLP, mT5, LLM, multi-language
提出模型mT5

阅读评价

  mT5是在T5基础上的多语言版本,现在终于可以炼自己的翻译模型了!并且从这篇论文中也能学到一些多语言数据集采样的tirck!


  以下是对论文每个部分的简单介绍。

Abstract

  本文介绍了mT5模型是如何在T5的基础上训练的。还着重介绍了mT5模型输出不合法的现象与解决方案。

Introduction

  回顾T5模型在迁移学习领域卓越效果,提出T5的缺点是数据集几乎全是英文,没法支持多语言。

  于是论文介绍了2种解决多语言的思路:

  1、一种方法是同时发布数种不同语言的模型。如BERT模型,有英文版(bert-base)、中文版(bert-chinese)、日文版(bert-japanese)等等。

  2、另一种方法是直接训练多语言模型。如mBERT模型,直接在不同语言数据集上训练,这样词表会比较大。

  mT5模型选择的是第2种方法。mT5在T5模型的结构基础上,使用了C4数据集的多语言变体mC4。

Background on T5 and C4

  对T5模型和C4数据集的简单回顾。

【注】这里篇幅较少,建议去看原论文。
——————————————————
T5原论文:https://dl.acm.org/doi/10.5555/3455716.3455856
——————————————————
T5论文阅读博客:【T5模型】Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

mC4 and mT5

  mT5的目标是创建一个尽可能遵循T5结构的大型多语言模型。为此开发了一个涵盖101种语言的C4预训练数据集的扩展版本mC4,并对T5进行了更改以更好地适应多语言环境。

mC4

  只有英语的C4数据集将会丢弃任何langdetect判定为至少99%可能性的非英语页面。

【注】Langdetect是用来识别文本语种的库,通常使用 n-gram 模型来识别文本的语言。

  在处理mC4数据集时,作者采用了cld3工具来识别100多种语言,并利用了Common Crawl至今发布的所有71个月度网络抓取数据。

【注】CLD 是另一种语言检测工具,它也是由 Google 开发的。CLD 可以快速地识别文本的语言,并且通常比其他语言检测工具更准确。它可以检测多种语言,包括一些稀有语言。

  最后,作者使用cld3检测每个页面的主要语言,并删除置信度低于70%的页面。然后按语言对剩余的页面进行分组,并在语料库中收集所有具有10000或更多页面的语言,之后产生cld3定义的107种“语言”的文本。但是,其中六个只是同一种口语的文字变体。

在这里插入图片描述

图1 mC4语言构成

  如图1所示,mC4的多语言构成相当复杂, α \alpha α是介于0-1之间的采样超参数,下面会介绍。

mT5

  首先,mT5在T5模型的架构不变的基础上,做出了如下改进:

  1、使用了GeGLU代替Transformer前馈网络部分里面的ReLU或者GELU激活函数。

【注】他们还专门放出了一篇补充论文,介绍GEGLU:GLU Variants Improve Transformer。

  2、缩放dmodel和dff,而不仅仅是dff。
  3、在无监督预训练时,不用dropout。
  4、预训练多语言模型的一个主要因素是如何从每种语言中采样数据。最终,这种选择是一个零和游戏:如果低资源语言的采样过于频繁,模型可能会过度拟合;如果高资源语言没有得到足够的训练,模型就会不适应。因此通过一个采样公式来确定预训练时对每种语言的采用概率:

p ( L ) ∝ ∣ L ∣ α p(L) ∝ |L|^\alpha p(L)Lα

  其中, α \alpha α是介于0-1之间的超参数, ∣ L ∣ |L| L是每种语言的样本数,这个公式就相对于开根号,大的样本数会变得更小,小的样本数变小的幅度会稍微好一些。

  mBERT的α = 0.7、XLM-R的α = 0.3和MMNMT的α = 0.2。最终mT5取α = 0.3。

Comparison to related models

  论文简单介绍了一些对比模型:mBERT、XLM、XLM-R、mBART、MAGRE。

Experiments

在这里插入图片描述

图2 对比模型实验结果

  如图2所示,论文采用了三种训练方式:zero-shot;translate-train;inlanguage multitask。结果证明都是mT5-XXL更胜一筹。

在这里插入图片描述

图3 模型大小不同对不同训练方式的影响

  如图3所示,对于最小的模型,目标数据集(inlanguage multitask)上的训练比使用弱监督数据(translate-train)或纯英语数据(zero-shot)获得了更好的性能,而对于最大的模型,这三种设置之间的差距要小得多。

  对于两个最大的模型,zero-shot和translatetrain的性能几乎相同,表明随着模型容量的增加,单语数据集的机器翻译带来的回报越来越少。

在这里插入图片描述

图4 消融实验结果

  如图4所示,六项消融实验分别是:

  (1)将dropout增加到0.1。baseline为0。
  (2)将序列长度减少到512,baseline为1024。
  (3)将预训练目标中的平均噪声跨度长度增加到10,baseline为3。
  (4)将语言采样指数α调整为{0.2,0.7},baseline为0.3。
  (5)关闭mC4数据管道中的“线长过滤器”。
  (6)用来自103种语言的维基百科数据补充mC4。

  最终的效果当然是baseline最好。

Zero-shot generation

  由于mT5是一个生成模型,它可以以自由形式输出任意文本预测。作者发现,预测过程中缺乏约束导致mT5有时难以用微调期间看不到的语言生成格式良好的预测。发现其中许多错误是由于“意外翻译”成微调语言(英语)造成的。本节描述了这种行为的特征,并证明可以通过在微调阶段混合少量多语言预训练任务来抵消这种行为。

在这里插入图片描述

图5 错误示例

Illegal predictions

  mT5错误的重要部分实际上是非法跨度。通过检查,我们发现这些非法预测主要分为三类:(一)归一化,(二)语法调整,(三)意外翻译。

  (一)归一化,表示预测是合法的,但“等效”Unicode字符已被替换,因此可以通过Unicode NFKC正常化恢复合法范围。这在泰语、汉语和印地语中尤为常见,在这些语言中,大多数mT5-XXL非法预测都是通过归一化来解决的,如图6所示。

在这里插入图片描述

图6 使用归一化解决不合法输出

  (二)语法调整,包括对原文的细微形态变化。经常观察到这些调整在当目标跨度本身不能作为一个格式良好的答案时出现。例如,mT5-XXL在阿拉伯语和俄语预测被母语人士判断为对所提出的XQuAD问题的正确和合乎语法的答案,而任务目标被判断为不合语法的答案。这种类型的非法预测在具有大量语法大小写标记的语言中最常见,如俄语、土耳其语和德语。

  (三)意外翻译,涉及将部分或全部上下文跨度翻译成英语(所有微调数据的语言)的模型。值得注意的是,尽管从未看到并行训练数据,但mT5执行了“自发”翻译。

Preventing accidental translation

  避免意外翻译最简单的做法是设计一种特定于任务的微调机制,限制模型在合法范围内进行排名,从而完全消除非法预测的可能性。但是这样就和T5模型的“大一统”初衷违背了!

  作者认为出现疑问翻译的原因是:当给定非英语测试输入时,模型输出英语的原因是它在微调期间从未观察到非英语目标。随着纯英语微调的进行,该模型分配到非英语单词的可能性可能会降低,最终达到英语成为任何问题最有可能的答案的程度。

  作者提出的解决方案是:在微调过程中混合无监督多语言预训练任务,将语言采样参数α从0.3减少到0.1,产生近乎均匀的语言分布,鼓励模型同等对待所有语言。结果证明能够高效降低意外翻译现象。

Conclusion

  本文介绍了mT5和mC4:T5模型和C4数据集的大型多语言变体。证明了T5结构直接适用于多语言环境,并在各种基准测试中取得了优异的性能。还描述了在多语言预训练生成模型的zero-shot评估中可能出现的非法预测,并描述了一种避免此问题的简单技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/516051.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Pyhton中requests库、re库、文件读写的了解】

1、requests库:第三方库,主要用于Python发送HTTP请求 response1 requests.get(https://www.qq.com/) # 发送get请求 # requestdata {User-Agen: KWHJJKLK, Accept: text/html, Cookie: sjdshkwje213} # 请求数据 # response2 requests.post(https:…

C++(13): 智能指针shared_ptr

1. 概述 shared_ptr智能指针,本质是“离开作用域会自动调整(减小)引用计数,如果引用计数为0,则会调用析构函数”。这样一来,就进化成类似于int、float等的一种会被自动释放的类型。 2. 初始化智能指针 初始化一个智能指针的方式比…

基于springboot实现房屋租赁管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现房屋租赁系统演示 摘要 房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于Spring Boot的房屋租赁系统。 …

python怎么存储数据

在Python开发中,数据存储、读取是必不可少的环节,而且可以采用的存储方式也很多,常用的方法有json文件、csv文件、MySQL数据库、Redis数据库以及Mongdb数据库等。 1. json文件存储数据 json是一种轻量级的数据交换格式,采用完全…

FreeRTOS第四天

1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。 进制信号量:信号量的数值只有0和1。(用于共享资源的访问) 计数型信号量: 计数型信号量的值一般是大于或者等于2 (生产者和消费者模型) 2.使用技术型信号量完成生产者和消费者模…

掌握 Go 语言的 defer 关键字

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 在 Go 语言编程中,文件的输入/输出是一个常见的操作。我们知道,每次打开文件后,都需要在操作…

在Linux系统上搭建Android、Linux和Chrome性能监控和Trace分析的系统

perfetto是知名的Android系统性能分析平台。我们还可以用它去分析Linux系统和Chrome(需要装扩展)。本文我们只介绍如何安装的验证。 部署 我们使用Docker部署perfetto ui系统。 FROM ubuntu:20.04 WORKDIR /perfetto-ui RUN apt-get update -y RUN ap…

蓝桥集训之阶乘分解

蓝桥集训之阶乘分解 核心思想&#xff1a;线性筛质数 筛出每一个质数后 只要将所有质数的1 2 3 … 次方个数都加上即可 #include <iostream>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int N 1e610;int …

MySQL 数据学习笔记速查表(视图、存储过程、事务)

文章目录 十三、视图1、视图是什么&#xff1f;2、视图的特性&#xff1f;3、视图的作用&#xff1f;4、视图的用途&#xff1f;5、视图的使用&#xff1f;1、基本语法2、创建视图3、调用视图4、视图练习(1) 利用试图简化复杂的联结(2) 利用视图重新格式化检索出的数据(3) 利用…

本地Windows打包启动前端后台

本地Windows打包启动前端后台 1、安装jdk Windows JDK安装 2、Nginx 2.1、将 nginx-1.16.1文件夹复制到D:\home\jisapp目录下 2.2、域名证书配置&#xff1a; 将域名证书放到D:\home\jisapp\ssl\2023目录下->配置nginx.conf文件&#xff08;D:\home\jisapp\nginx-1.22.0…

vconsole助力实现在线代码编辑调试

概述 前面有文章monaco-editor做自己的代码测试工具 &#xff0c;本文书接前文&#xff0c;在代码中加入vconsole工具&#xff0c;可以进行代码调试、查看网络、查看元素等。 效果 vconsole简介 vconsole是一个轻量、可拓展、针对手机网页的前端开发者调试面板。跟框架无关的…

轮播图实现

基于html、js实现网页中常见的轮播图 html: <div id"box"><img src"./images/1.jpg" alt""><img src"./images/2.jpg" alt""><img src"./images/3.jpg" alt""><img src&q…

Minikube本地搭建单节点Kubernetes集群

1、什么是 Minikube Minikube 是一个开源工具&#xff0c;旨在为开发者提供一种便捷的方式在本地环境中搭建单节点的 Kubernetes 集群。它主要用于开发、测试和学习 Kubernetes 应用程序&#xff0c;无需依赖大型的硬件资源或复杂的多节点集群配置。minikube 使用轻量级虚拟化技…

CountDownTimer 倒计时不准确问题解决

前言 最近笔者在实现一共和倒计时有关的功能&#xff0c;使用CountDownTimer实现。然而&#xff0c;在测试的时候发现&#xff0c;倒计时经常发现跳秒、不出现1的情况&#xff0c;因此对这方面进行了一些了解。本文准备介绍一下CountDownTimer倒计时不准确的原因&#xff0c;以…

【进阶六】Python实现SDVRPTW常见求解算法——遗传算法(GA)

基于python语言&#xff0c;采用经典遗传算法&#xff08;GA&#xff09;对 带硬时间窗的需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整2.1 需求拆分2.2 需求拆分后的服务时长取值问题 3. 求解结果4. 代码片段参…

【哈希表专题】(1. 两数之和 面试题 01.02. 判定是否互为字符重排 217. 存在重复元素 219. 存在重复元素 II 49. 字母异位词分组)

文章目录 哈希表1. 两数之和面试题 01.02. 判定是否互为字符重排217. 存在重复元素219. 存在重复元素 II49. 字母异位词分组 哈希表 哈希表是什么&#xff1a;存储数据的容器 作用&#xff1a;快速查找某个元素。O(1) 当我们需要频繁的查找某一个数的时候&#xff0c;可以使…

YOLO火灾烟雾检测数据集:20000多张,yolo标注完整

YOLO火灾烟雾检测数据集&#xff1a;一共20859张图像&#xff0c;yolo标注完整&#xff0c;部分图像应用增强 适用于CV项目&#xff0c;毕设&#xff0c;科研&#xff0c;实验等 需要此数据集或其他任何数据集请私信

蓝桥杯备考2

P8839 [传智杯 #4 初赛] 组原成绩 题目描述 花栗鼠科技大学&#xff08;Hualishu University of Science and Technology, HUST&#xff09;的计算机组成原理快要出分了。你现在需要计算你的组原成绩如何构成。 具体来说&#xff0c;组原成绩分为三部分&#xff0c;分别是平…

算法学习系列(四十六):迭代加深、双向DFS

目录 引言概念一、加成序列二、送礼物 引言 本文主要讲了&#xff0c; D F S DFS DFS 的另外两种优化&#xff0c;分别是迭代加深和双向 D F S DFS DFS &#xff0c;思路还是非常清晰明了的&#xff0c;只要会写 D F S DFS DFS 那么这些剪枝和优化其实还是非常的容易的&…

多线程学习-线程安全

目录 1.多线程可能会造成的安全问题 2. static共享变量 3.同步代码块 4.同步方法 5.使用Lock手动加锁和解锁 6.死锁 1.多线程可能会造成的安全问题 场景&#xff1a;三个窗口同时售卖100张电影票&#xff0c;使用线程模拟。 public class MyThread extends Thread{//tic…