T5论文总结

2023-11-11 23:21
文章标签 总结 论文 t5

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

前言

最近一个项目中用到了Google的T5模型,之前只是有被“文本生成干所有”的理念小小惊艳到,但没有阅读过论文,趁此机会对这篇更像是大规模实验报告的论文进行总结。当然必备基础一定是对Transformer有足够的了解。

《Text-to-Text Transfer Transformer》https://arxiv.org/pdf/1910.10683.pdf

这是一篇实验报告而非创新性论文

这篇论文页数有60+,如果埋头读的话很容易在读完后迷茫这篇文章到底是讲了什么,其实这篇论文就是一系列与NLP Transfer Learning相关的方法的实验报告,有可能你会觉得在NLP领域提Transfer Learning还是挺别扭的(反正我对于这个短语第一印象是CV),但实际上这个NLP中的Transfer指的就是现在流行的预训练模型,所以说首先要了解,这是一篇对当下最流行的NLP预训练技术各个环节方法(模型架构、无监督预训练目标等)的对比实验报告

“文本生成干所有”不是邀功,而是源点

“With this unified approach, we can compare the effectiveness of different transfer learning objectives, unlabeled data sets, and other factors, while exploring the limits of transfer learning for NLP by scaling up models and data sets beyond what has previously been considered.”

虽然口号很霸气,但当你阅读论文时就会发现,其实它并非这篇论文的主要目标,而是:为了能够在实验中比较在各环节方法(哪个训练目标效果最好?哪种mask方式最好?如何fine-tune最好?等等)的效果,需要一个统一的任务,在这统一的任务上对各个方法进行对比实验评判。说白了就是控制变量,连任务都不同的话谈什么环节方法对比?所以先放到同一个任务上来,再在此任务上开展对比实验。

"We systematically study these contributions by taking a reasonable baseline (described in Section 3.1) and altering one aspect of the setup at a time. For example, in Section 3.3 we measure the performance of different unsupervised objectives while keeping the rest of our experimental pipeline fixed."

当然,通过将不同的NLP任务都统一成相同的任务使得模型可以直接用各种任务数据进行统一训练,这看上去似乎确实是一个优点,但是个人认为并不尽然:多任务学习带来提升有两种情况:①多个任务之间的共通关联有益于各任务自身,但这种情形在实际遇到的任务中少之又少;②某个任务数据太少,通过多任务中的其它任务进行“知识”的补充,那么又回到了第①种情况,“知识”的补充需要任务之间具有一定程度的“相关性”。并且,从直觉上讲,统一则需要个体的牺牲,所以一个什么任务都能干的方法比不过在某任务上进行精心优化的方法。

在谈了一大堆对“文本生成干所有”的认识后,就轮到介绍是怎么“干”的部分了,其实就是简单的输入处理(将任务以前缀prefix的方式加入到文本中),下面贴一张论文原图很清晰不赘述了。

 Data & Base Model

在开始实验之前还差model和data两个部分

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



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

相关文章

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的