论文解读:《数据增强:通过强化学习引导的条件生成进行文本数据扩充》

Title:<Data Boost: Text Data Augmentation Through Reinforcement Learning Guided Conditional Generation>

期刊:EMNLP (顶级国际会议

作者 Ruibo Liu; Guangxuan Xu; Chenyan Jia; Weicheng Ma; Lili Wang; et al

出版日期 2020-11-01

网址 https://doi.org/10.18653/v1/2020.emnlp-main.726

摘要

数据扩充在许多NLU任务中被证明是有效的,特别是对于那些遭受数据稀缺的任务。在本文中,我们提出了一个强大且易于部署的文本增强框架Data Boost,它通过强化学习指导的条件生成来增强数据。我们在五种不同的分类器架构下,在三种不同的文本分类任务上评估数据提升。结果表明,数据增强可以提高分类器的性能,尤其是在低资源数据的情况下。例如,当只给定全部数据的10%用于训练时,数据增强将三个任务的F1平均提高了8.7%。我们还比较了数据增强与六种现有的文本增强方法。通过人工评估(N=178),我们确认数据增强增强在可读性和类一致性方面具有与原始数据相当的质量。

1.介绍

数据扩充是分类任务中广泛使用的技术。在计算机视觉(CV)领域,通过翻转、裁剪、倾斜和改变原始图像的RGB通道来扩充数据(Krizhevsky等人,2012;Chatfield等人,2014年;Szegedy等人,2015);然而,类似的直观和简单的策略在NLP任务中并没有获得同样的成功。现有方法倾向于产生可读性低或语义一致性不令人满意的增强(Yang et al,2020)。

表1给出了一些流行的文本增强方法的输出样本。朴素方法模仿CV中的像素操作,通过添加拼写错误( Xie et al . , 2017)或随机删除和交换令牌( Wei和Zou , 2019)来扩充句子。由于语序被打乱(例如, "宝宝很好! "),这类增强方法的输出结果往往难以辨认;更糟糕的是,关键特征词(例如,可爱这个词,它是情感检测的信号携带词)可能会通过随机删除的方式被误删。

一种更高级的方法是同义词插入或替换(张杰等, 2015 ;王永进、杨志刚, 2015),它使用Word2Vec (米科洛夫等, 2013)将单词替换为其同义词。这种方法尊重原文的句子结构,但没有考虑语境。它有时用同义词来代替在句子的整个语境中显得笨拙的词。例如,用寓言代替可爱,得到"宝贝是寓言! "这句话。最近的工作倾向于基于翻译的( Fadaee et al , 2017 ;西尔弗贝里et al , 2017)增强方法。

特别地,Yu等人( 2018 )提出了一种先将文本翻译成法语再翻译成英语的回译方法,使用带噪声的输出作为增强数据。虽然回译具有直观性和有效性,但其生成偏向于高频词( e.g . , cute , lovely都回译为可爱),不仅会造成重复,而且会导致增广数据的词汇收缩。总之,现有的技术还很不完善,部分原因是文本数据中的句法和语义特征具有很强的相互依赖关系。

增强样本应该表现出目标类的特征。现成的LM(langue model)不能直接用于数据增强;由于它们不是针对特定的语境进行训练的,因此它们的生成是无向的和随机的。条件LM可以根据一定的条件(例如,目标类)生成文本,但它需要从头开始训练一个LM,并且数据覆盖所有的条件。例如,Keskar等人( 2019 )训练了一个16亿参数的LM,该LM条件为各种控制代码。培训成本较高;然而,收集足够的数据用于训练也是繁琐的,尤其是在低资源任务( Waseem , 2016)中。

优点

Data Boost的优势有三点:第一,Data Boost功能强大。与6个相关工作相比,我们在5个不同分类器的3个任务上取得了显著的进步。第二,Data Boost生成句子级增强。与先前的方法进行单词级别或短语级别的替换(小林, 2018 ; Wei and Zou , 2019)不同,我们的增强数据在词汇和句子结构方面具有更多的多样性。人的评价也验证了我们的增强具有较高的可读性和标签一致性。第三,Data Boost易于部署。它不需要外部数据集,也不需要单独训练系统(像机器翻译模型中的回译方法)。取而代之的是现成的GPT2语言模型,在不改变其架构的前提下,对其解码阶段进行修改.

2.数据增强

2.1条件生成器

给定符号x<_{t} = { x_{0},x_{1},...,x_{t-1}}和在时间步长t之前的累积隐状态h^{\Theta }^{}< t^{1},训练一个普通的自回归语言模型( LM )来最大化下一步符号( xt )的概率.通常情况下,模型会选择具有最高概率x_{t}的符号作为t步解码的输出:

2.2强化学习优化

Reward

PPO (近端政策优化)

Salience Score:

其中| x∈c |是指类标号为c的样本中词x的个数,| V |是总词汇量,GM是这两个词的几何平均。这两个分数都试图保证一个词被标记为显著的概率P ( c | x )和P ( x | c )都很高。我们计算每个单词的显著性得分,并选择前N个最高的单词2作为类别标签c (记为wc)的显著性词典。与其他方法如训练鉴别器(达特赫里等, 2020)或导出控制代码( Keskar et al , 2019)相比,我们发现基于频率的方法相对简单但有效,特别是在数据饥饿的情况下,由于训练数据很少,鉴别器的性能可能受到限制。

Salience Gain:

对于以目标类c为条件的第t步令牌xtc,我们将显著性增益计算为与显著词库wc中每个词的余弦相似度的对数求和:

优化:策略梯度进行优化

式中:η为学习率,θ c为条件隐状态的参数。总的来说,我们遵循经典的SGD更新规则,但做了两个主要的改变:( 1 )在令牌解码( Keskar et al , 2019)的过程中,我们使用温度参数T来控制随机采样。T→0近似一种贪婪解码策略,放大了vocab分布中的峰值,而T→∞使得分布更加均匀。( 2 )我们对k步奖励的归一化梯度进行求和。k可以作为条件生成的控制强度。结合以上所有定义,在算法1中总结了Data Boost的策略梯度。

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

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

相关文章

基于Springboot的墙绘产品展示交易平台(有报告),Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的墙绘产品展示交易平台&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff0…

嵌入式设备摄像头基础知识

工作原理 摄像头的工作原理是&#xff0c;当光线通过镜头聚焦到图像传感器上时&#xff0c;传感器会将光信号转换为电信号&#xff0c;并将其传输给处理器进行处理。处理器通过算法对图像信号进行增强、去噪、压缩等操作&#xff0c;并将其转换为数字信号输出给计算机或其他设…

手势监听类GestureDetector Listener源码解析

手势监听类GestureDetector 前言一、GestureDetector是什么&#xff1f;二、Listener源码解析1.OnGestureListener2.OnDoubleTapListener3.OnContextClickListener4.SimpleOnGestureListener 总结 前言 在写自定义view的时候&#xff0c;涉及到了手势监听这块的知识&#xff0…

Leetcode 2948. Make Lexicographically Smallest Array by Swapping Elements

Leetcode 2948. Make Lexicographically Smallest Array by Swapping Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;2948. Make Lexicographically Smallest Array by Swapping Elements 1. 解题思路 这一题其实思路上就是分组排序&#xff0c;显然&#xff0c;对于…

C语言中#ifndef的头文件保护用法和宏定义用法

文章目录 头文件保护宏定义 #ifndef MY_HEADER_H #define MY_HEADER_H// 这里放置头文件的内容#endif // MY_HEADER_H#ifndef _error#define _error (-1) #endif这两个代码块分别用于不同的目的。 头文件保护 #ifndef MY_HEADER_H #define MY_HEADER_H// 这里放置头文件的内…

FLV 文件格式分析

前言 flv 是 flash video 的缩写&#xff0c;是 Adobe Flash payler 支持的一种流媒体播放格式。flv 是一种层级格式&#xff0c;除了一个 flv header 外&#xff0c;剩下全是由 一个个 tag 组成。tag 是由 tag 头和 tag 数据组成。tag 类型分为音频、视频、脚本&#xff0c;一…

WEB渗透—反序列化(七)

Web渗透—反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩哔_…

交换机的VRRP主备配置例子

拓朴如下&#xff1a; 主要配置如下&#xff1a; [S1] vlan batch 10 20 # interface Vlanif10ip address 10.1.1.1 255.255.255.0vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface Vlanif20ip address 13.1.1…

2-Python与设计模式--工厂类相关模式

2-Python与设计模式–工厂类相关模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上&#xff0c; 有三类可以选择的上餐品&#xff1a;汉堡等主餐、小食、饮料。当我们选择好自己需要的食物&#xff0c;支付完成后&…

@RequestMapping,@GetMapping,@PostMapping 的区别(详解)

HTTP请求方法 HTTP请求方法一共有9种&#xff0c;为 GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT。 GET 【获取资源】本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据&#xff08;如HTML文本&#xff0c;或者图片或者视频等…

我们为什么要进行敏捷开发培训

敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因&#xff0c;我整理了一些&#xff0c;可以作为参考&#xff1a; 理解敏捷原则和实践&#xff1a; 敏捷开发不仅是一种方法论&#xff0c;更是一…

IDEA的安装与删除插件

不小心安装了一个英文转中文的插件&#xff0c;看不习惯&#xff0c;决定重新变回英文 先点击这个settings的安装 然后就看到这个下面这张图了 如果是安装就点install&#xff0c;不用了就和我一样把这个勾给去掉

MUI框架从新手入门【webapp开发教程】

文章目录 MUI -最接近原生APP体验的高性能前端框架APP开发3.25 开发记录miu框架介绍头部/搜索框&#xff1a;身体>轮播图轮播图设置数据自动跳转&#xff1a;九宫格图片九宫格图文列表底部选项卡按钮选择器手机模拟器 心得与总结&#xff1a;MUI框架在移动应用开发中的应用M…

openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项

文章目录 openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项133.1 检查openGauss状态133.2 检查锁信息133.3 统计事件数据133.4 对象检查133.5 SQL报告检查133.6 备份133.7 基本信息检查 openGauss学习笔记-133 openGauss 数据库运维-例行维护-日维护检查项 …

数据结构——利用堆进行对数组的排序

今天文章的内容是关于我们如何利用堆的特性对我们的数组进行排序&#xff0c;还有就是我们的TopK的问题&#xff0c;这次我们放在的是文件种&#xff0c;我们放入一亿个数字&#xff0c;然后我们取出一亿个数字中最大的十个数&#xff0c;利用上章堆的问题进行解决。 首先就是我…

计算机基础知识详细讲解

目录 一、计算机硬件 CPU&#xff08;中央处理器&#xff09;&#xff1a;负责执行计算机指令和处理数据。 内存&#xff08;RAM&#xff09;&#xff1a;用于临时存储程序和数据。 硬盘&#xff1a;用于永久性存储数据和文件。 显示器&#xff1a;用于显示图形界面和输出信…

【SQL Server2019SSMS】安装 | 卸载手册

目录 &#x1f4cb;前言 ⛳️【SQL Serverssms】安装 1. SQL Server自定义安装 2. SSMS安装 ⛳️【SQL Server】卸载 &#x1f4cb;前言 &#x1f308;个人主页&#xff1a;Sarapines Programmer &#x1f525; 系列专栏&#xff1a;本期文章收录在《宝藏工具使用手册》&am…

git日历坐标系? 手动实现github活跃/贡献图

git日历坐标系? 手动实现github活跃/贡献图 前言 在使用github或gitlab时&#xff0c;我们总能发现&#xff0c;我们一年内的活跃度能够通过一张图直观地展现出来&#xff0c;那么你是否好奇它是如何实现的&#xff0c;最近工作中也遇到这样类似的需求&#xff0c;刚开始打算…

区块链介绍

区块链提供了比特币的公共账本&#xff0c;这是一个有序的、带有时间戳的交易记录。这个系统用于防止重复消费和修改之前的交易记录。 Introduction 比特币网络中的每个完全节点都独立存储只包含该节点验证的块的区块链。当多个节点在他们的区块链中都有相同的块时&#xff0…

uboot环境变量配置

uboot默认环境变量配置启动 进入uboot/include/configs目录下面 打开 xxxxconfig.h&#xff08;自定义uboot头文件名&#xff09;&#xff0c;配置文件中有很多的定义&#xff0c;根据具体的情况定义 根据配置&#xff0c;编译uboot uboot的自定义配置 在uboot下面的board.c…