点击上方,选择星标,每天给你送干货!


来自:炼丹笔记

如何用有限的数据做出最佳的效果?除了一个优秀的模型以外,最有效的方法就是做数据增强了。自然语言处理(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

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!

NLP提效,除了选择合适的模型,就是数据增强了相关推荐

  1. 模型提效的另一条路:数据增强

    NLP提效,除了选择合适的模型,就是数据增强了 作者:十方,公众号:炼丹笔记 如何用有限的数据做出最佳的效果?除了一个优秀的模型以外,最有效的方法就是做数据增强了.自然语言处理(NLP)不同于图像,可 ...

  2. 垃圾分类、EfficientNet模型、数据增强(ImageDataGenerator)、混合训练Mixup、Random Erasing随机擦除、标签平滑正则化、tf.keras.Sequence

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 垃圾分类.EfficientNet模型.数据增强(ImageD ...

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

    如何用有限的数据做出最佳的效果?除了一个优秀的模型以外,最有效的方法就是做数据增强了.自然语言处理(NLP)不同于图像,可以做裁剪,反转,缩放等操作来增强,而是有文本特别的处理方式.这篇论文<C ...

  4. G.2 NLP领域任务如何选择合适预训练模型以及选择合适的方案【规范建议】【ERNIE模型首选】

    NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强.智能标注.意图识别算法|多分 ...

  5. AI-数据与模型匹配(面对数据该怎么选择合适的模型?)

    文章目录 1.机器学习 1.1 通过内容进行年龄和性别预测 1.2 垃圾邮件分类 1.3 金融反欺诈二分类 1.4 音乐推荐系统 1.5 手写数字识别 2.深度学习 2.1 图像多分类104 2.2 ...

  6. NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

    NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...

  7. 数据分析报告中如何选择合适的统计图表

    由于不同的数据分析工具收集到的数据千差万别,基于这些数据生成展示的统计图表也不尽相同:而且数据分析师制作各种报告时,也常常纠结于如何选择合适的图表表达数据诉求,因此我们有必要去理解一些常用数据分析统计 ...

  8. NLP数据增强方法总结:EDA、BT、MixMatch、UDA

    1. 数据增强的背景和应用场景 随着AI技术的逐步发展,更好的神经网络模型对数据规模的要求也逐步提升.而在分类任务中,若不同类别数据量相差很大,模型则会出现过拟合现象,严重影响预测的正确性. 从广义上 ...

  9. 人机交互系统(3.1)——NLP文本数据增强方法

    一.数据增强的背景和应用场景 随着AI技术的逐步发展,更好的神经网络模型对数据规模的要求也逐步提升.而在分类任务中,若不同类别数据量相差很大,模型则会出现过拟合现象,严重影响预测的正确性. 从广义上来 ...

  10. gan 总结 数据增强_[NLP]聊一聊,预处理和数据增强技术

    在基于margin-loss的句子相似度这个项目中,为了验证想法,找不到开放数据集,因此自己从新浪爱问爬取了数据.自己爬的数据和学界开放的数据对比,数据显得非常脏.这里有三个含义:第一:数据不规范,比 ...

最新文章

  1. OpenCV中OpenCL模块函数
  2. 随机生成十六进制颜色
  3. 23种设计模式之外观模式(Facade)
  4. 类型与通用语言运行时
  5. PHP经典算法 (转载)
  6. P7443-加边【博弈论】
  7. MFC创建模式对话框与非模式对话框
  8. 12款程序员专用chrome插件神器推荐
  9. 图解 hexo + github 从零快速 搭建个人博客 windowss
  10. Opencv之以图像直方图可视化
  11. maven使用openjdk_openjdk8指定版本安装(maven指定版本安装)
  12. php微信公众号项目域名,微信公众号里“JS接口域名”实现分享功能
  13. 机器学习【系列】之第六章随机森林模型
  14. html 收藏网站 功能实现,网站常用的收藏网站实现代码
  15. PHP实现倒计时插件代码
  16. mysql数据库配置步骤,MySQL数据库安装配置步骤详解
  17. WordPress使用腾讯云CDN配置如何实现https访问?
  18. 关于网站项目计划书的写法
  19. 2020-2021读书记录
  20. [转]Cloudera Manager和CDH5.8离线安装

热门文章

  1. python模块-logging和collections以及random模块
  2. C# 把ABCD转换成数字
  3. 网站禁止复制类型的属性
  4. IntelliJ IDEA 12.0.3 更新版发布
  5. 任正非“2012实验室”讲话全文曝光
  6. VC 获取Windows所有用户的用户名
  7. 生态功能区划方法之一:生态敏感性分析法
  8. c++操作mysql
  9. js进阶 14-9 ajax事件有哪些
  10. 简单十步python使用django框架建立博客网站