【arxiv】Few-Shot Text Generation with Pattern-Exploiting Training

2023-10-31

原文链接:https://arxiv.org/pdf/2012.11926.pdf


Abstract

为预先训练好的语言模型提供简单的任务描述或自然语言提示,可以在文本分类任务产生令人印象深刻的few shot结果。
在本文中,我们表明了这个潜在的想法也可以应用于文本生成任务:我们采用Pattern Exploiting Training(PET)范式,这是一种最近提出的few shot方法,用于微调文本生成任务上的生成语言模型。在几个文本摘要和标题生成数据集上,我们提出的PET的变体模型均优于强基线模型。
作者贡献如下:
1.我们描述了如何修改PET,用于微调序列生成任务的生成语言模型。
2.我们证明,使用PET训练PEGASES(飞马)模型(google的一篇PET的工作)在大量任务和训练集大小上优于常规微调。
3.我们分析了影响PET强大性能的因素。


Intro & method

首先对本文结合前人工作,飞马模型与PET做一个简要的介绍:

1.PEGASES(飞马)模型:

引用一篇解读模型的文章:https://blog.csdn.net/Airstudy/article/details/107599128
在这里插入图片描述

谷歌的研究人员提出了一个自监督的预训练来生成文本摘要, 重点在于预训练的时候的目标是把生成间隙句子(GSG), 所以在提取文本摘要的时候,简单的finetuning有很大的提升。其步骤如下:

  1. 随机mask掉一部分句子,然后将这些Gap sentence直接拼接,作为一个“伪摘要”。 mask调的句子则被[Mask] token 替换掉,为了更接近我们的下游任务,我们选择在文章中比较重要的句子。然后使用transformer模型进行训练,以生成这个被mask部分句子文档的伪摘要。
  2. GSR(gap sentence ratio)是GSG(Gap Sentences Generation)的超参, 指的是文档中选择间隔句子的个数除以句子总数,相当于其他研究中的mask比例。
  3. 句子选取,论文中采用3种策略来选取gap sentence
    1.Randam:均匀的随机选出m个句子
    2.Lead:选取前m个句子
    3.Principal:根据重要性选择top-m最重要的句子。使用句子A和除该句子A外的剩余文档的RANGE-F1来作为重要性的计算指标。公式如下,
    在这里插入图片描述

2.PET

我们首先讨论用于文本分类任务的模式利用训练(PET),即,对于某些文本输入x∈X必须从有限集合Y映射到单个输出y的问题。设M是一个掩码模型(MLM),T是它的标记集合和__∈T为掩码标记;我们将所有标记序列的集合表示为T∗。PET要求:
一个模式Pattern:P(x),它将原本的输入映射到一个包含1个mask token的问题;
一个表达器verbalizer:v(y),它将每个输出映射到代表其含义的单个token上。
所以原本的问题也得到了转换,给定x后获得y的概率,也变成了掩码模型M在P(x)的mask位置预测为v(y)的概率。
之后将P与V进行配对训练,并遵循:

  1. 在训练时,对于每一对(P,v)设置,都有一个单独的MLM。
  2. 训练好的MLM用伪标签标注一组未标记的示例。
  3. MLM在得到的伪标签数据集上被finetune,并结合一个分类头,作为最终的分类器。

3.PET for Text Generation(作者方法)

作者在设计一种适合文本生成的PET时,有几个差异需要考虑:

  1. 首先,文本生成不需要表达器,因为输出的摘要已经由自然语言句子组成。
  2. 其次,大多数生成语言模型的编码器-解码器架构支持对模式应用的一些微妙的调整。最后,我们需要一种新的策略来组合多个模式,因为我们不能简单地以一种有意义的方式平均由不同模型产生的文本序列。

在本节中,让P作为一个模式,对于x∈X,y∈Y和P(x)=z。我们考虑了一个使用掩码语言建模目标预先训练的编码器-解码器模型M。该模型必须能够计算一个概率PM(y|z),以测量y在多大程度上是z中mask位置的合理替代。我们进一步假设这是通过将y的联合概率分解如下来实现的:
在这里插入图片描述
其中z代表x转化成mask掉1个token的模板,y1-i为在生成模型生成 yi 时,之前的输出序列,yi为当前输出的token。生成的序列长度为n所以进行n次连乘。如果我们碰巧已经知道y的一些前缀y1:k−1(之前已经训练过的),那么剩余序列y k:n的概率可以表示为:
在这里插入图片描述
作者在初步实验中,我们发现属于部分生成的输出序列的token(即使用解码器处理的tokens)比常规输入的token对模型的预测有更大的影响。这更适用于飞马模型,因为是经过预先训练才能生成完整的句子,如果使用的Pattern的某些部分是要生成句子的前缀(例如,短摘要这种提示),飞马在使用编码器处理时往往会简单地忽略这部分。
基于这一观察结果,我们用一个解码器前缀d来帮助每个模式P,该模型作为生成序列的一部分,而不是观察到的输入。因此,我们将y给定x的概率定义为
在这里插入图片描述
用一个实例说明,最开始的想法作者希望输入P(x)以及一个空解码前缀d。
在这里插入图片描述
之后作者经过调整,P(x)与d如下,且d在解码层作为提示输入:
在这里插入图片描述 在这里插入图片描述
如果我们有多对(P1,d1),…,(Pk,dk)的patterns和解码器前缀,我们首先为每个(Pi,di)fintune一个单独的模型Mi,就像在常规PET中一样。为了将他们的知识结合起来并将其提炼成一个单一的模型M^,我们再次需要一组未标记的示例U。然而,我们需要一个不同于文本分类的模型结合方法,因为我们不能简单地对单个模型生成的所有序列取平均值。
相反,我们采用以下方法:对于每个x∈U,我们首先使用贪婪解码生成一个输出序列y(Pi,di),从而产生一组候选摘要输出Cx={y(Pi,di)|1≤i≤k}。然后我们给每个候选的y∈Cx分配一个分数。为此,我们首先计算对于每个(Pi,di),y的归一化对数似然值为:
在这里插入图片描述
其中我们除以长度y来纠正长度偏差。最终每个(pi,di)候选摘要的分数进行平均
在这里插入图片描述
最后对最终的模型M^进行成对(x,y)的训练,其中x∈U和y从Cx={y(Pi,di)|1≤i≤k}中抽取,且概率与s(y|x)成正比。
作者认为这样我们可以训练最终的模型来简单地最大化pM^(y|x),但我们注意到这在预训练和微调之间造成了强烈的差异:y因为在预训练中,飞马模型处理的都是包含至少一个mask token的序列。本着我们意图使预训练和微调尽可能相似的精神,因此我们使用一个基础的Pattern P(x)=__x来训练M ^。

Exp

set up

PEGASUS:常规的finetune程序。
PEGASUS-M:用一个最简单的Pattern进行训练与fintune,例如P(x)=__x,且不引入解码器前缀。
PEGASUS-PET:使用PET对上述所有pattern进行微调,且作者为每种数据集均设计了两个前缀:
在这里插入图片描述

1.主实验
在这里插入图片描述

考虑到所有任务的R1/R2/RL分数和训练集的大小;所有的结果都在三个不同设置的训练集(zeroshot,10shots,100shots)上取平均值。最后一列显示了所有数据集上的平均性能。

在这里插入图片描述
作者使用训练中最好的与最差的Pattern进行训练,发现结果还是优于基线,说明前缀(prefix)的重要性。且作者简单组合训练效果最佳。


作者讨论了前缀是否会随着输出长度变短而减弱,结果发现前缀对长摘要也有着不错的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【arxiv】Few-Shot Text Generation with Pattern-Exploiting Training 的相关文章

  • 【HJ72】百钱买百鸡问题

    题目描述 公元前五世纪 我国古代数学家张丘建在 算经 一书中提出了 百鸡问题 鸡翁一值钱五 鸡母一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 现要求你打印出所有花一百元买一百只鸡的方式 输入描述 输入任何一个整数 即可运行程
  • 从浏览器地址栏输入url到显示页面的步骤

    浏览器输入URL到渲染过程解析 从浏览器地址栏输入url到显示页面的步骤 从浏览器地址栏输入url到显示页面的步骤 目录 1 概述 2 DNS域名解析 3 三次握手与四次挥手 4 DOM CSSOM 渲染树的构建 渲染与绘制 1 概述 浏览
  • Mac里的airdrop传输文件

    01 两方打开 02 设置对所有人可以发现 03 右键需要传输的文件 04 选择共享 airdrop 05 点击页面上的名称 开始传输 note 可以传输 app文件 这样可以大大节省下载安装所要耗费的时间 word只要一分钟就能从从无到有

随机推荐

  • 机器学习_深度学习毕设题目汇总——图像生成

    下面是该类的一些题目 题目 基于生成式对抗网络的无监督图像生成研究 用于图像生成的机器学习算法在人像合成中的研究与应用 可抵抗相机抖动的高动态图像生成算法研究 图像生成诗歌的端到端模型研究 基于GANs的脑部MRI图像生成方法研究 基于GA
  • 问二十四:分类说明JUC包常用类有哪些?

    JUC中常用类汇总 JUC的atomic包下运用了CAS的AtomicBoolean AtomicInteger AtomicReference等原子变量类 JUC的locks包下的AbstractQueuedSynchronizer AQ
  • 【Ensemble Learning】第 3 章:混合模型

    在第2章中 您学习了如何以不同方式划分和混合训练数据以构建集成模型 其性能优于在未划分数据集上训练的模型 在本章中 您将学习不同的组装方法 与混合训练数据方法不同 混合模型方法在不同的机器学习模型中使用相同的数据集 然后以不同的方式组合结果
  • pads win10显示不全

    打开注册表 WIN R 1 路径 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Fonts 将原来的 Microsoft YaHei TrueType Mic
  • C++ Vector容器的push_back( )与pop_back( )函数

    C Vector容器的push back 与pop back 函数 push back pop back 参考链接 push back 函数将一个新的元素加到vector的最后面 位置为当前最后一个元素的下一个元素 push back 在V
  • java IDEA加密/解密 源码

    package tool import org apache commons codec binary Base64 import org bouncycastle jce provider BouncyCastleProvider imp
  • Git如何Check Out出指定文件或者文件夹

    原文 http www handaoliang com a 20140506 195406 html 在进行项目开发的时候 有时候会有这样的需求那就是 我们只希望从Git仓库里取指定的文件或者文件夹出来 在SVN里面 这非常容易实现 因为S
  • 实训9——门磁报警

    实验九 门磁报警 一 实验目的 通过门磁传感器 判断三种开门方式 1 正常开门 就是有正常开门方式 例指纹开门 蓝牙开门后 主人打开门 触发门磁 2 门未关好 在正常开门后 主人没有即使关门 会引发门未关好报警 3 有人撬门 非正常开门 即
  • [Python人工智能] 十五.无监督学习Autoencoder原理及聚类可视化案例详解

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了循环神经网络LSTM RNN如何实现回归预测 通过sin曲线拟合实现如下图所示效果 本篇文章将分享无监督学习Autoencoder的原理知识 然
  • 用户增长漫谈二

    除了功能迭代 增量开发配套敏捷理念 这里重要谈一个概念 宏观 微观上都有可取之处 品牌架构 反应企业意愿 个性 未来可能性留存 兼容不同利益群体方式进程商业活动 主品牌 标识性弱 但是个性强烈 业务 产品特性底的处理方式 以资金 实力彰显
  • MyBatis 学习笔记(八)---源码分析篇--SQL 执行过程详细分析

    前言 在面试中我们经常会被到MyBatis中 占位符与 占位符的区别 大多数的小伙伴都可以脱口而出 会对值进行转义 防止SQL注入 而 则会原样输出传入值 不会对传入值做任何处理 本文将通过源码层面分析为啥 可以防止SQL注入 源码解析 首
  • JS逆向爬虫案例分享

    某域网站数据爬取之反爬策略JS逆向分析 本次分享解析某域网站数据的反爬机制 此次只做技术分享 如有侵权 请联系删除 1 分析网 首先打开网站发送请求 点击F12 发送请求发现电脑端并没有接口返回数据 即返回切换手机端观察 点解F12观察找到
  • Mplayer 1.0pre5 安装纪实

    一开始装了个realone gold 版 但是怎么弄都没有声音 没有办法 只能硬着头皮装mplayer 了 刚刚接触linux 真的是什么也不懂 连看个电影也得费这么大的事 搞了一天 终于算是能看到图像和声音来 现在是只其然 但不怎么知所以
  • 【医学图像分割】读论文系列 1

    医学图像分割 读论文系列 1 文章目录 医学图像分割 读论文系列 1 Title Introduction Abstract Keyword Method Experiment Conclusion Title 标题 Noisy Label
  • JS - 手写节流、防抖

    目录 节流 解释 手写实现 全部计时器实现 Date now 时间戳实现 混合 防抖 解释 手写实现 节流 解释 节流 throttle 是指让某一个函数的触发次数在一定时间内限定在一定范围内 最常的情况是一定时间内只触发最初的一次 常用在
  • 01_Numpy的图片处理(读取,变换,保存)

    Numpy的图片处理 读取 变换 保存 使用Numpy的ndarray可以读取图片文件 并且可以对图片进行各种各样的处理 例如 图片像素值的读取 替换 随机剪裁 拼接等等都可以使用ndarray 对于已经习惯使用Numpy的人们来说 已经可
  • Springboot集成华为云OBS

    Springboot实现华为云对象存储OBS文件上传下载 文章目录 Springboot实现华为云对象存储OBS文件上传下载 前言 一 OBS是什么 二 使用步骤 1 引入依赖 2 HuaweiyunOss工具类 3 上传下载测试 总结 前
  • lua快速入门

    Lua语言简介 1993 年在巴西里约热内卢天主教大学 Pontifical Catholic University of Rio de Janeiro in Brazil 诞生了一门编程语言 发明者是该校的三位研究人员 他们给这门语言取了
  • pytorch dataset自定义_目标检测:SSD模型——pytorch数据载入及增广

    进行模型训练的第一步是载入数据 使用pytorch框架载入数据需要两个步骤 构建Dataset数据集和创建Dataloader数据迭代器 pytorch要载入数据训练SSD 可以直接调用 torchvision datasets VOCDe
  • 【arxiv】Few-Shot Text Generation with Pattern-Exploiting Training

    原文链接 https arxiv org pdf 2012 11926 pdf Abstract 为预先训练好的语言模型提供简单的任务描述或自然语言提示 可以在文本分类任务产生令人印象深刻的few shot结果 在本文中 我们表明了这个潜在