【NLP】NLP提效,除了选择合适的模型,就是数据增强了

如何用有限的数据做出最佳的效果?除了一个优秀的模型以外,最有效的方法就是做数据增强了。自然语言处理(NLP)不同于图像,可以做裁剪,反转,缩放等操作来增强,而是有文本特别的处理方式。这篇论文《CODA: CONTRAST-ENHANCED AND DIVERSITYPROMOTING DATA AUGMENTATION FOR NATURAL LANGUAGE UNDERSTANDING》提出的CoDA方案号称能在Roberta-large上平均提升2.2%的效果,那我们就来看看这篇到底提出了哪些方法吧。

数据增强

这篇论文主要探讨如何在文本分类做数据增强,当然这些数据增强的方法一样可以用在其他NLP任务中。

一句话概括数据增强,就是把原有训练集合:

通过某种变换,转变成新的训练集合:

我们用这两个集合的数据,去学习参数:

参考以往论文给出的数据增强的方法,可以概括为下图:

back-translate(回译)很容易理解,如上图,英语翻译成德语又翻译回英语,作为训练样本。

Adversarial Training(对抗训练):对抗训练方法被用于文本数据提升模型的鲁棒性。对抗训练不需要任何额外的领域知识,只需要模型本身产出样本,这些样本都是模型最容易预测错的样本。下面是两个最常用的对抗训练的loss。

其实就是要找到模型认为相似的样本加入到模型中训练,但是在实际使用时,我们很难获得准确的对抗样本,因此可以用模型梯度构建相似的对抗样本,如下公式所示:

提升多样性

上述数据增强方法思路其实都很一致,找到已有样本的相似样本,训练目标也较为一致。这时候思考一个问题,不同的数据增强方法是等同的,还是互补的呢?是否可以混合所有数据增强方法提升模型泛化能力呢?CV上已经证明是有效的,应用到文本就难多了,对文本轻微的可能会带来语意上的巨大差异。

本文提出了多种混合数据增强的方法,如下图所示:

 这3种其实没啥好说的,字面意思。(a)就是在一个mini-batch中,采用一个随机的数据增强方法把x变为x',(c)就是把x用一系列的数据增强方法变成x'。(b)是混合插值,是对两个样本的embedding ei和ej做操作,其中a是符合beta分布。

值得注意的是sequential stacking的方式,牵涉到各个增强方法的顺序,并不是所有顺序都是合理的,比如我们不可能在生成对抗训练样本后,去做回译,正确的融合方式如下:

这种融合方式,可以简单的用下面的公式表示:

先用xi做回译得到xi',然后找到模型最难分辨的对抗样本,最后计算原样本和对抗样本的loss。我们可以看到loss有3项,第一项就是正常的交叉熵,第二项是对抗loss,第三项是一致性的loss,即样本和对抗样本理应相似度较高,这里RCS定义如下:

对抗正则化

我们看上述loss的3项,反应了我们对抗样本xi要和xi'预估结果要一致,然而却没反应xi'要和xj不一致。为了充分利用数据增强后的数据,论文又提出了对抗学习目标。考虑到xi'是由xi生成的,因此模型应该学到每个数据增强样本的“爸爸”是谁。如下图所示:

memory是用来存储历史embeding的,作为大量的负样本。为了避免encoder更新过快(会导致embeding不一致),因此提出momentum key encoder,该 encoder不是通过梯度更新参数的,而是通过下式:

当有一个样本xi,增强样本xi',我们会得到3个embedding:

新的对抗学习目标如下式:

其中t是温度,M就是memory bank,该式表达的意思也很简单,就是样本xi和增强样本xi'和momentum key encoder产出的ki的相似度,要高于memory bank的负样本。和之前的loss一整合,就成了我们最终的学习目标:

实验

多种增强方式混搭的效果比较好,采用回译+对抗训练stack方式取得了最佳效果。关于调参的细节可以看原文。我们着重看下采用数据增强带来的模型提效增益,从下图可以看到,用CoDA的效果,还是很显著的:

参考文献

  1. CODA: CONTRAST-ENHANCED AND DIVERSITYPROMOTING DATA AUGMENTATION FOR NATURAL LANGUAGE UNDERSTANDING

    https://openreview.net/pdf?id=Ozk9MrX1hvA

往期精彩回顾



适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
本站qq群704220115,加入微信群请扫码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值