十一假期过的太快了,不知道你们缓过来没有,没有的话今天我们就来一起读一篇综述缓缓,弥补假期没学习的遗憾。

这篇40多页的综述出自哈工大车万翔老师的团队,一共总结了15种NLP可以用到的数据增强方法、优缺点,还有一些使用技巧,十分良心。下面就速读一下,如果要使用的话还是建议参考原文以及其他文献的应用细节。

论文:Data Augmentation Approaches in Natural Language Processing: A Survey
地址:https://arxiv.org/abs/2110.01852

数据增强方法

数据增强(Data Augmentation,简称DA),是指根据现有数据,合成新数据的一类方法。毕竟数据才是真正的效果天花板,有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP任务天生的难度,类似CV的裁剪方法可能会改变语义,既要保证数据质量又要保证多样性,使得大家在做数据增强时十分谨慎。

作者根据生成样本的多样性程度,将DA方法分为了以下三种:

  1. Paraphrasing:对句子中的词、短语、句子结构做一些更改,保留原始的语义

  2. Noising:在保证label不变的同时,增加一些离散或连续的噪声,对语义的影响不大

  3. Sampling:旨在根据目前的数据分布选取新的样本,会生成更多样的数据

Paraphrasing

这类方法根据替换的成分不同,又可以分为词、短语、句子级别。作者共总结了6种方法:

  1. Thesaurus:利用词典、知识图谱等外部数据,随机将非停用词替换成同义词或上位词,如果增加多样性的话还可以替换成相同词性的其他词

  2. Semantic Embeddings:利用语义向量,将词或短语替换成相近的(不一定是同义词)。由于每个词都有语义表示,可替换的范围更大。而上一种方法只能替换图谱里的

  3. MLMs:利用BERT等模型,随机mask掉一些成分后生成新的

  4. Rules:利用一些规则,例如缩写、动词变位、否定等,对句子一些成分进行改写,比如把 is not 变成 isn't

  5. Machine Translation:分为两种,Back-translation指把句子翻译成其他语言再翻译回来,Unidirectional Translation指在跨语言任务中,把句子翻译成其他语言

  6. Model Generation:利用Seq2Seq模型生成语义一致的句子

作者还贴心地整理了上述方法的优缺点。其中「歧义」主要是指有些多义词在不同场景下意思不一样,比如「我每天吃一个苹果」,替换成「我每天吃一个iphone」就不合适了。

P.S. 作者写的Strong application我没有太懂,个人觉得可以理解为应用效果好,如果有不同解读可以留言哈。

Noising

人在读文本时对噪声是免疫的,比如单词乱序、错别字等。基于这个思想,可以给数据增加些噪声来提升模型鲁棒性。

作者给出了以上5种增加噪声的方法:

  1. Swapping:除了交换词之外,在分类任务中也可以交换instance或者sentence

  2. Deletion:可以根据tf-idf等词的重要程度进行删除

  3. Insertion:可以把同义词随机插入句子中

  4. Substitution:把一些词随机替换成其他词(非同义),模拟misspelling的场景。为了避免改变label,可以使用label-independent的词,或者利用训练数据中的其他句子

  5. Mixup:这个方法最近两年比较火,把句子表示和标签分别以一定权重融合,引入连续噪声,可以生成不同label之间的数据,但可解释性较差

总的来说,引入噪声的DA方法使用简单,但会对句子结构和语义造成影响,多样性有限,主要还是提升鲁棒性

这里我私下多加几个没提到的,也是我们在做ConSERT

  1. 对抗样本

  2. Dropout:也是SimCSE用到的,还有R-drop,都是通过dropout来加入连续噪声

  3. Feature Cut-off:比如BERT的向量都是768维,可以随机把一些维度置为0,这个效果也不错

Sampling

Sampling是指从数据分布中采样出新的样本,不同于较通用的paraphrasing,采样更依赖任务,需要在保证数据可靠性的同时增加更多多样性,比前两个数据增强方法更难。作者整理了4种方法:

  1. Rules:用规则定义新的样本和label,比如把句子中的主谓进行变换

  2. Seq2Seq Models:根据输入和label生成新的句子,比如在NLI任务中,有研究者先为每个label(entailment,contradiction,neutral)训一个生成模型,再给定新的句子,生成对应label的。对比之下,paraphrasing主要是根据当前训练样本进行复述

  3. Language Models:给定label,利用语言模型生成样本,有点像前阵子看的谷歌UDG。有些研究会加个判别模型过滤

  4. Self-training:先有监督训练一个模型,再给无监督数据打一些标签,有点蒸馏的感觉

作者依旧贴心地给出了4中方法的优点和局限:

使用技巧

方法选择

作者给出了这些方法在6个维度的对比,大家可以更好地体会他们的区别和适用场景。其中Level表示DA方法会增强的部分:t=text, e=embedding, l=label,Granularity表示增强的粒度:w=word, p=phrase, s=sentence

Method Stacking

实际应用时可以应用多种方法、或者一种方法的不同粒度。

作者推荐了两款工具:

Easy DA: https://github.com/jasonwei20/eda_nlp
Unsupervised DA:https://github.com/google-research/uda

同时我搜索了一下github又发现了两个宝藏:

英文:https://github.com/makcedward/nlpaug
中文:https://github.com/zhanlaoban/eda_nlp_for_Chinese

Optimization

第一,在使用增强的数据时,如果数据质量不高,可以先让模型在增强后的数据上pre-train,之后再用有标注数据训练。如果要一起训练,在增强数据量过大的情况下,可以对原始训练数据过采样

第二,在进行数据增强时注意这些超参数的调整:

第三,其实增强很多简单数据的提升有限,可以注重困难样本的生成。比如有研究加入对抗训练、强化学习、在loss上下文章等。如果用生成方法做数据增强,也可以在生成模型上做功夫,提升数据多样性。

第四,如果生成错数据可能引入更多噪声,可以增加其他模型对准确性进行过滤。

最后,作者列举了其他研究的数据增强应用场景,大家在落地时可以借鉴:

总结

数据增强算是很接地气的研究了,少样本、领域迁移是每个NLPer都会遇到的问题,而在数据上做文章可能比其他模型改动的方法更为有效。同时从这篇综述也可以看到,数据增强其实可以做得很fancy,还不影响线上速度,比如我之前就用T5和ELECTRA做过数据增强,都有一些效果,可谓低调而不失奢华,典雅而不失大气,深度拿捏得稳稳的。

那今天就这样,祝大家早日从假期综合症缓过来,高歌猛进冲刺完2021。

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群554839127,加入微信群请扫码:

【NLP】哈工大|NLP数据增强方法?我有15种相关推荐

  1. NLP中的数据增强方法综述

    论文链接:A Survey of Data Augmentation Approaches for NLP 摘要 由于越来越多的研究在低资源领域.新任务和需要大量训练数据的大规模神经网络中,NLP中的 ...

  2. NLP中的数据增强方法

    目录 1 概述 2. 方法 2.1 随机drop和shuffle 2.2 同义词替换 2.3 回译 2.4 文档裁剪 2.5 生成对抗网络 2.6 预训练的语言模型 1 概述 NLP中的数据是离散的. ...

  3. NLP 中的数据增强

    前言 数据增强(Data augmentation,DA)是指利用 现有 的数据生成额外的 合成的 数据的技术.在训练样本匮乏,标注成本较高时,尝试数据增强方法是很有必要的. Figure 1. 数据 ...

  4. NLP 英文文本数据增强

    数据增强是一种有效的防止过拟合并且可以加大训练集的有效方式,NLP中的数据增强方法有回译,同义词替换,随机插入,随机交换,随机删除,对抗训练这几种方式,本篇文章简单介绍一下这几种方式. 1.回译 #经 ...

  5. 没有足够多的数据怎么办?计算机视觉数据增强方法总结

    ©PaperWeekly 原创 · 作者|燕皖 单位|渊亭科技 研究方向|计算机视觉.CNN 当没有足够多的数据量时该怎么办?学者们针对这一问题已经研发看各种巧妙的解决方案,以避在深度学习模型中数据少 ...

  6. 一篇就够!数据增强方法综述

    作者 | 太子长琴 整理 | NewBeeNLP 数据增强(Data Augmentation, DA)缓解了深度学习中数据不足的场景,在图像领域首先得到广泛使用,进而延伸到 NLP 领域,并在许多任 ...

  7. 哈工大|NLP数据增强方法?我有15种

    文 | rumor 源 | 李rumor 卷友们好,我是rumor. 十一假期过的太快了,不知道你们缓过来没有,没有的话今天我们就来一起读一篇综述缓缓,弥补假期没学习的遗憾. 这篇40多页的综述出自哈 ...

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

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

  9. NLP常见语言模型及数据增强方法总结

    文章目录 一.NLP常见语言模型 1.词的离散表示 1.One-hot编码(独热编码) 2.Bag of Words(BOW,词袋模型) 3.N-gram语言模型 2.词的分布式表示 1.共现矩阵(C ...

最新文章

  1. 第二十二回  基础才是重中之重~ThreadStatic静态字段在每个线程里的唯一性
  2. 《应用时间序列分析:R软件陪同》——导读
  3. Jw-alipay 1.0.0版本发布,开源支付窗管理平台
  4. 教老年人计算机心得体会,老年人教育工作心得体会
  5. jdk Queue抽象接口
  6. eclipse 史上最舒服(且护眼) 字体+大小+配色 教程(强推!!)
  7. Python 脚本 pyautogui——实现键盘鼠标的自动操作
  8. IEEE1588工业以太网交换机
  9. 静态HTML网页设计作品 DIV布局 HTML5+CSS大作业——个人网页(6页) 网页制作期末大作业成品
  10. 时钟指针角度。【问题描述】普通时钟都有时针和分针。在任意时刻,时针和分针都有一个夹角,并且假设时针和分针都是连续移动的。现已知当前的时刻,试求出在该时刻时针和分针的夹角A(0≤A≤180)。
  11. JavaScript画中画API
  12. 杭电2015‘11校赛 1007油菜花王国
  13. Java画图程序设计
  14. 晒晒我的书单:看过的书里,感觉比较好的,值得读的
  15. 学习汇编前你应该知道的知识
  16. Open-Falcon学习笔记(一)Open-Falcon v0.3.0环境搭建
  17. 无线路由器及 Wi-Fi 组网指南
  18. UML类图-六种关系详解
  19. ElGamal体制和Diffie-Hellman问题
  20. Excel 宏的自动 Copy实现方法

热门文章

  1. Httpster –世界各地最潮的网页设计案例聚合网站
  2. hdu 5188 dfs+二分
  3. T-SQL管理数据库对象
  4. 《幸福就在你身边》第七课、工作着,快乐着【哈佛大学幸福课精华】
  5. 用80386汇编来编写asp.net页面。
  6. 在Java中动态传参调用Python脚本
  7. tkinter窗口居中方法
  8. hdu2133: What day is it
  9. 智能搜索引擎---命题的确定
  10. 一文攻破枚举类型-C语言