击败GPT3,刷新50个SOTA!谷歌全面统一NLP范式

f2e1aedb180456d96bc8ebb0aa002282.png

文 | ZenMoore
编 | 小轶

写在前面

一觉醒来,迷糊之中看到一条推特:

2d27c0721a2541d32994f2418f394c1f.png8d7ef85ae68c7865fa982a14829ec602.png

瞬间清醒!

Google 的 Yi Tay (and Mostafa) 团队提出了一个新的策略 Mixture-of-Denoisers, 统一了各大预训练范式

重新思考现在的预训练精调,我们有各种各样的预训练范式:decoder-only or encoder-decoder, span corruption or language model, 等等,不同的范式建模了不同的上下文关系,也正是因为如此,不同的预训练范式适配不同类型的下游任务。例如,基于双向上下文的预训练(span corruption,如T5)更加适用于 fact completion,基于单向上文(PrefixLM/LM,如GPT等)更加适用于 open ended. 也就是说,具体的下游任务类型需要选用特定的预训练策略...

准确地说,常见有三套范式:单向文本建模的CausalLM(i.e. LM),双向文本建模的 span corruption, 前缀文本建模的 PrefixLM.

这是大一统吗?感觉只能是小一统,总感觉还缺少一味菜!

今天,Google 把这道菜补上了!那就是:Mixture-of-Denoisers

先来感受一下效果:

5aae3beb1892773ba54d3a78e3b9533c.png

论文标题:Unifying Language Learning Paradigms
论文作者:Yi Tay, Mostafa Dehghani, etc. (Google)
论文链接:https://arxiv.org/pdf/2205.05131.pdf

方法 (UL2)

先说一下本文方法的目的:构建一种独立于模型架构以及下游任务类型的预训练策略,可以灵活地适配不同类型的下游任务。

整个方法的框架和 UniLM[1] 是很相似的,但是引入了稀疏化。

Mixture-of-Denoisers

首先回顾上文所说的三个预训练范式:CausalLM, PrefixLM, span corruption,其实都可以统一到 span corruption

定义函数 , 这里 为平均 span 长度, 为 corruption rate, 为 corrupted span 的数量.定义输入序列长度为 ,经过正态分布或者均匀分布采样 corrputed span 后,训练模型学习恢复这些 span.

可见,对于 CausalLM,只需要设置 ; 对于 PrefixLM, 只需要设置 (为前缀长度)。

基于此,作者提出了 Mixture-of-Denoisers :

05209bfec6b0c099a363b1e4978cc67a.png
  • R-Denoiser : regular denoising. corrupted span 的长度为 2-5 个 tokens, 大约是 15% 的掩码率。通常用于获得知识而不是生成流畅文本的能力。

  • S-Denoiser : sequential denoising. 保留严格的序列顺序,通常用于 inputs-to-targets 任务,如 PrefixLM. 需要注意的是,可见的 Prefix 仍然是上下文建模方式,但是被掩码掉的长 span 是不可见的。

  • X-Denoiser : extreme denoising. 可以看作 R-denoiser 和 S-denoiser 的中间体,是一种极端的情况,也就是 span length 非常长,或者 masking rate 非常大。一般用于长文本生成任务,因为这类任务一般只有非常有限的上下文记忆信息。

最后,本文使用的七个 denoiser 设定如下:

e5142a387b90d8b70df86d16300a3853.png

Mode Switching

本文提出通过 mode-switching 来进行 paradigm-shifting. 首先在预训练的时候,新增三个 special tokens : ,分别指代三个 paradigms (i.e... denoiser). 然后在下游任务精调或者小样本学习时,也为特定任务的设定和需要,新增一个 paradigm token, 以触发模型学习更优的方案。

然后在主体模型架构上,使用 encoder-decoder 还是 decoder-only 是不重要的,因为本文方法的初衷就在于 architecture-agnostic (架构无关). 因此,作者基于 T5,对两种设定都进行了相关实验。

实验

消融实验

任务设定:

  • SuperGLUE (SG) :8 NLU sub-tasks

  • GEM benchmark :  XSUM (summarization), ToTTo (table-to-text generation), Schema Guided Dialog (SGD)

  • C4 validation set

场景设定:

  • 精调(fine-tuning)

  • 基于提示的单样本学习

Baselines :

  • Causal Language Model (CLM) : GPT-style

  • Prefix LM (PLM)

  • Span Corruption (SC) : T5-style

  • Span Corruption + LM (SCLM)

  • UniLM (ULM)

  1. Decoder v.s. Encoder-Decoder

f3495ec805065b7eb5fa7233d54ca8e9.png589f78f790ed12d69a53b02329098b6a.png

结论:当不考虑存储时,encoder-decoder 比 decoder-only 更优;比起 backbone 架构,自监督目标更加重要。

  1. Paradigm Prompt (mode switching)

8f256d500d055dc787f1191e7f6b0d63.png

结论:在 one-shot 场景下,使用范式提示几乎总是更好,但是,选对 paradigm prompt 非常关键。

  1. Mixture-of-Denoisers

135dfd98e9ad067aac77da4f0c1202e6.png
▲SD% 表示 S-Denoisers 的占比

结论:X-denoising 有补充性效果,但不能单用;只用一小部分 S-Denoisers () 更好。

  1. 小幅增加模型尺寸以及预训练数据量

5c255c45a5d3cdf2b3034eee656b591e.png

结论:本文方法在 SuperGLUE 上比 T5 差了一点,但是其他任务仍然领先。

200亿参数!

好了,现在开始壕起来:Scaling to 20B Parameters!

虽然这个方法是 architecture agnostic (架构无关)的,但基于上面的消融实验,我们 prefer Encoder-Decoder 架构,更重要的是:Encoder-Decoder 具备固有的稀疏特性(intrinsic sparsity)

任务设定:

  • 文本生成:摘要和 data-to-text 生成。数据集:CNN/Dailymail,XSUM,MultiNews,SAMSum,WebNLG,E2E,CommonGen

  • 人工评测的文本生成:aNLG, ARC-DA, WMT19, XSUM

  • 理解、分类、问答:RACE, QASC, OpenBookQA, TweetQA, QuAIL, IMDB, Agnews, DocNLI, Adversarial NLI, VitaminC, Civil Comments and Wikipedia Toxicity detection

  • 常识推理:HellaSwag, SocialIQA/SIQA,  PhysicalIQA/PIQA, CosmosQA, AbductiveNLI, CommonsenseQA, CommonsenseQA2

  • 长程推理:Scrolls benchmark (GovReport, SumScr, QMSUm, QASPER, NarrativeQA, QuaLITY, ContractNLI )

  • 结构化知识 (Structured Knowledge Grounding): UnifiedSKG (WikiTQ, CompWQ, FetaQA, HybridQA, WikiSQL, TabFat, Feverous, SQA, MTOP, DART)

  • 信息检索:Natural Questions

有意思的是:对于信息检索,作者使用的是 DSI[2] 进行的实验,简单说就是 text-to-docid 进行检索。

评测结果:

  1. Tradeoffs between Finetuning and Prompt-based Zero-shot Learning (SuperGLUE)

a04e9c4b6a16a9a38ec6301d2b7052b4.png73eb0e0ddc2be19ce7c61bab92284557.png

  1. Generative Few-shot: XSUM Summarization

9d0e8fdab583e930ba88d5bc508b732e.png
  1. Summary of UL20B results compared to state-of-the-art

1cdbb6dded1c1f3ba35f1383dad63a98.png85ea81e20e6a77a8d00d9ff0ad14eb05.png

写在最后

看完这篇之后,总的感觉并没有第一眼看到推特时那样激动,或者说,也没有当初学习 UniLM[1] 时的感觉强烈。

我在之前的文章也提到过,Prompt 主要适用于三个场景:低资源、低算力、统一场景。也曾在知乎上发表过想法:Prompt 在某种程度上可以进行模型的专家化(expertization)或者模块化(modularization),需要和 Mixture-of-Experts 进行沟通。这篇文章使用 paradigm prompt 进行 denoiser 的 mode switching,有进一步的启发意义。脱离 denoiser 的 mixture,可能会有更加宏大的 picture.

另外,一直来说,为不同的下游任务部署特定的模型,是一个很消耗资源的方式,因此,一个统一的 black box 是必然的。虽然 GPT-3/T0[3] 等通过 instruction/prompt 或 in-context learning 等方式,为解决这个问题提供了思路,但是要真正 beat task-specific finetuning, 仍然有一段路要走。希望从这篇文章出发,能够彻底解决这个关键的部署问题。

b50dbdaeabd37bc3d07ba966a5367e2a.png萌屋作者:ZenMoore

北航本科生🧐,爱数学爱物理爱 AI🌸 想从 NLP 出发探索人工认知人工情感的奥秘🧠🤖!个人主页🌎 zenmoore.github.io 知乎🤔 ZenMoore, 微信📩 zen1057398161 嘤其鸣矣,求其友声✨!

作品推荐

  1. 一文跟进Prompt进展!综述+15篇最新论文逐一梳理

  2. 图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!

  3. 以4%参数量比肩GPT-3!Deepmind 发布检索型 LM,或将成为 LM 发展新趋势!?

bedac128a2d88b8210ff5749ddf75c02.png后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

91760ef591e4fa73839479ce98f23bc9.gif 88e524c38338e0143e3e9dec0216ce1e.png

[1] UniLM : https://arxiv.org/pdf/1905.03197.pdf

[2] DSI : https://arxiv.org/pdf/2202.06991.pdf

[3] T0 : https://arxiv.org/pdf/2110.08207.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指Offer - 面试题3. 数组中重复的数字(哈希)

1. 题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输…

击败GPT3,刷新50个SOTA,谷歌全面统一NLP范式?

声明:本文原创首发于公众号夕小瑶的卖萌屋。作者:ZenMoore,编辑:小轶--->【我是传送门】写在前面一觉醒来,迷糊之中看到一条推特:瞬间清醒!Google 的 Yi Tay (and Mostafa) 团队提出了一个新…

Spring Boot 2.3.0 发布

Spring Boot 2.3.0 已经发布,此版本主要更新内容包括: 依赖升级 新版本核心组件依赖升级 Spring Data NeumannSpring HATEOAS 1.1Spring Integration 5.3Spring Kafka 2.5Spring Security 5.3Spring Session Dragonfruit 三方组件依赖 Cassandra Dri…

剑指Offer - 面试题4. 二维数组中的查找(双指针)

1. 题目 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下&…

涵盖1600+任务的巨型Benchmark来了!跑个测试花一周??

文 | 兔子酱最近,benchmanking又卷出了新高度,allen AI 前段时间发布了史上最强基准测试——NATURAL-INSTRUCTIONSv2,涵盖了1600个任务、70个不同任务类型、50种不同语言,用来测试生成模型的泛化性。论文标题:Benchmar…

Spring Boot 2.x基础教程:使用MyBatis访问MySQL

之前我们已经介绍了两种在Spring Boot中访问关系型数据库的方式: 使用spring-boot-starter-jdbc使用spring-boot-starter-data-jpa 虽然Spring Data JPA在国外广泛流行,但是在国内还是MyBatis的天下。所以,今天这篇我们将具体说说如何在Spri…

剑指Offer - 面试题5. 替换空格(字符串)

1. 题目 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 示例 1&#xff1a; 输入&#xff1a;s "We are happy." 输出&#xff1a;"We%20are%20happy."限制&#xff1a; 0 < s 的长度 < 10000来源&#xff1a;力扣&…

信息抽取里程碑式突破!终于要大规模落地了??

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。AI领域常见的工作突破有三类&#xff1a;屠爆了学术界榜单&#xff0c;成为该领域学术层面的新SOTA实现了大一统&#xff0c;用一个架构实现对该领域诸多子任务的统一建模&#xff0c;刷新建模认知将NB的学术界新SOTA变成一件人人可傻…

Spring Boot 2.x基础教程:使用 Thymeleaf开发Web页面

通过本系列教程的前几章内容&#xff08;API开发、数据访问&#xff09;。我们已经具备完成一个涵盖数据存储、提供HTTP接口的完整后端服务了。依托这些技能&#xff0c;我们已经可以配合前端开发人员&#xff0c;一起来完成一些前后端分离的Web项目&#xff0c;或是一些小程序…

《剑指Offer》解题目录(更新完毕)

题目来源于LeetCode上的《剑指Offer》&#xff0c;这里做一个目录方便大家查找。另外有本人的LeetCode解题目录、《程序员面试金典》解题目录、LintCode解题目录 可点击链接查看。updated on 2020.3.18 不懂的概念可以参考《数据结构与算法之美》学习汇总 已解决 75/75 - 简单…

信息抽取里程碑式突破!要大规模落地了?

声明&#xff1a;本文原创首发于公众号夕小瑶的卖萌屋。作者&#xff1a;卖萌酱大家好&#xff0c;我是卖萌酱。AI领域常见的工作突破有三类&#xff1a;屠爆了学术界榜单&#xff0c;成为该领域学术层面的新SOTA实现了大一统&#xff0c;用一个架构实现对该领域诸多子任务的统…

Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL

在数据访问这章的第一篇文章《Spring中使用JdbcTemplate访问数据库》 中&#xff0c;我们已经介绍了如何使用Spring Boot中最基本的jdbc模块来实现关系型数据库的数据读写操作。那么结合Web开发一章的内容&#xff0c;我们就可以利用JDBC模块与Web模块的功能&#xff0c;综合着…

剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)

文章目录1. 题目2. 解题2.1 stack解题2.2 递归2.3 反转链表1. 题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2] 输出&#xff1a;[2,3,1]限制&#xff1a; 0 &…

CV未来,路在何方?李飞飞指路!

编 | LRS源 | 新智元【导读】ImageNet见证了计算机视觉发展的辉煌历程&#xff0c;在部分任务性能已超越人类的情况下&#xff0c;计算机视觉的未来又该如何发展&#xff1f;李飞飞最近发文指了三个方向&#xff1a;具身智能&#xff0c;视觉推理和场景理解。在深度学习革命进程…

Spring Boot 2.x基础教程:找回启动日志中的请求路径列表

如果您看过之前的Spring Boot 1.x教程&#xff0c;或者自己原本就对Spring Boot有一些经验&#xff0c;或者对Spring MVC很熟悉。那么对于Spring构建的Web应用在启动的时候&#xff0c;都会输出当前应用创建的HTTP接口列表。 比如下面的这段日志&#xff1a; 2020-02-11 15:32…

剑指Offer - 面试题9. 用两个栈实现队列

1. 题目 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 类似题目&#xff1a;LeetCode 232. …

被深度学习框架逼疯的N大瞬间!何解?

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。对一个深度学习从业者来说&#xff0c;无论你的场景是CV、NLP、Speech还是搜广推现金牛&#xff0c;手头使用最高频的工具莫过于深度学习框架&#xff0c;涵盖了模型训练、模型部署&#xff0c;乃至数据标注、数据清洗等环节。站在20…

Spring Boot 2.x基础教程:使用国产数据库连接池Druid

上一节&#xff0c;我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP。接下来这一节&#xff0c;我们将介绍另外一个被广泛应用的开源数据源&#xff1a;Druid。 Druid是由阿里巴巴数据库事业部出品的开源项目。它除了是一个高性能数据库连接池之外&…

剑指Offer - 面试题10- I. 斐波那契数列

文章目录1. 题目2. DP解题3. 面试题 08.01. 三步问题4. LeetCode 509. 斐波那契数1. 题目 写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F…

关于深度学习框架的忆苦思甜

声明&#xff1a;本文原创首发于公众号夕小瑶的卖萌屋。作者&#xff1a;卖萌酱大家好&#xff0c;我是卖萌酱。对一个深度学习从业者来说&#xff0c;无论你的场景是CV、NLP、Speech还是搜广推现金牛&#xff0c;手头使用最高频的工具莫过于深度学习框架&#xff0c;涵盖了模型…