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

4ec9d29fa358b8fd9263fa4c5345cf0a.png

文 | rumor
源 | 李rumor

卷友们好,我是rumor。

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

d4cc4330e1b513949b6fb23d3b0dff56.png

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

论文:
Data Augmentation Approaches in Natural Language Processing: A Survey

地址:
https://arxiv.org/abs/2110.01852

7a342a7af5b217381d68c85c01eeaf25.png数据增强方法aa56d0770781942479500e5370ceb5d4.png

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

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

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

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

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

181a812bc2335729ab35a16dbde33a3d.png

Paraphrasing

ef85765b5368f4a3fd465183a1a60075.png

这类方法根据替换的成分不同,又可以分为词、短语、句子级别。作者共总结了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」就不合适了。

5be63f9684d3c171899441dc16883de6.png

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

Noising

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

eb8afbc4ae739666c02a9e99dc9c790e.png

作者给出了以上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

232065044f1d9bf367f3b09773c386a8.png

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中方法的优点和局限:

a00640df3d1e4cd7de0d73037b5c9a9c.png

42e4887170c7b77babbc0695ccb58c06.png使用技巧a09cdf8f221cd7a19f09987fe13242f0.png

方法选择

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

417e36c970fb165cdefb90762b3ef24b.png

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,之后再用有标注数据训练。如果要一起训练,在增强数据量过大的情况下,可以对原始训练数据过采样

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

7376495efda7cd7c6a478b1bf276e5dc.png

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

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

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

7196b6bc228f55ba5f9b693be1bc4414.png

d8a67d5aa1d3d4af859ab10370942b3c.png总结dc4ed841544705bcebd82029bcee1efc.png

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

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

948b6a42946491c37fcdd0697ebd6993.png后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

256601bbd5cdafa427b207b1c97d923d.gif

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

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

相关文章

论文浅尝 | Wordly Wise(WoW) - 用于语音视觉知识问答的跨语言知识融合模型

笔记整理: 谭亦鸣,东南大学博士生来源:NAACL’21链接:https://aclanthology.org/2021.naacl-main.153.pdf论文提出了一种新的知识图谱问答数据集命名为FVSQA,这是一种语音视觉知识问答类型的任务,即问题形式为音频&…

美团Android DEX自动拆包及动态加载简介

概述 作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能、添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误&a…

LeetCode 83. 删除排序链表中的重复元素(链表)

1. 题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2示例 2: 输入: 1->1->2->3->3 输出: 1->2->3来源:力扣(LeetCode) 链接&#…

用多模态信息做 prompt,解锁 GPT 新玩法

文 | 子龙编 | 小轶自多模态大火以来,井喷式地出现了许多工作,通过改造预训练语言模型,用图像信息来增强语义信息,但主要集中在几个 NLU 任务上,在 NLG 上的研究比较少。今天要介绍的这篇 paper Multimodal Conditiona…

论文浅尝 | 基于时序知识图谱的问答

笔记整理:姚云志,浙江大学在读博士,研究方向为自然语言处理。链接:https://arxiv.org/pdf/2106.01515.pdf时序知识图谱是一种多关系的知识图谱,相较于常规的知识图谱,时序知识图谱中的关系中会与时间段相关…

Logistic Regression 模型简介

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。本文作为美团机器学习InAction系列中的一篇,主要关注逻辑回归算法的数学模型和参数求解方法,最后也…

开源开放 | 中国近代历史人物知识图谱

OpenKG地址:http://openkg.cn/dataset/zgjdlsrw项目地址:http://www.zjuwtx.work/project/kg开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:浙江大学(王天笑)1、引言中国近代历史…

LeetCode 1071. 字符串的最大公因子(字符串的最大公约数)

1. 题目 对于字符串 S 和 T,只有在 S T … T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 示例 1: 输入:str1 &q…

大模型炼丹无从下手?谷歌、OpenAI烧了几百万刀,总结出这些方法论…

文 | Yimin_饭煲都1202年了,不会真有深度学习炼丹侠还没有训练/推理过大模型吧“没吃过猪肉,还没见过猪跑吗?”在深度学习算力高度增长的今天,不论是学术界还是工业界的从业者,即使尚未达到从头预训练一个百亿级别参数…

Linux资源管理之cgroups简介

引子 cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控…

会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会

IJCKG 2021: The 10th International Joint Conference on Knowledge GraphsDecember 6-8, 2021 Online国际知识图谱联合会议之前是国际语义技术联合会议(the Joint International Semantic Technology Conference (JIST)),JIST 会议的历史要…

LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)

1. 题目 在歌曲列表中&#xff0c;第 i 首歌曲的持续时间为 time[i] 秒。 返回其总持续时间&#xff08;以秒为单位&#xff09;可被 60 整除的歌曲对的数量。形式上&#xff0c;我们希望索引的数字 i < j 且有 (time[i] time[j]) % 60 0。 示例 1&#xff1a; 输入&am…

深入理解Objective-C:Category

摘要 无论一个类设计的多么完美&#xff0c;在未来的需求演进中&#xff0c;都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢&#xff1f;一般而言&#xff0c;继承和组合是不错的选择。但是在Objective-C 2.0中&#xff0c;又提供了category这个语言特性&#xff0c;…

工作6年,谈谈我对“算法岗”的理解

文 | Severus编 | 小轶写在前面&#xff1a;本文完全基于我个人的工作经验&#xff0c;没有经过任何形式的行业调研&#xff0c;所以我的理解也有相当浓厚的个人印记&#xff0c;可以认作一家之言。如果能对读者朋友们起到任何帮助&#xff0c;都是我的荣幸。如果不赞同我的看法…

会议交流 | IJCKG 2021 日程表(北京时间)

IJCKG 2021 Program(All times Beijing Time)December 6thOpening (19:00–19:15)Chair: Oscar CorchoKeynote I (19:15–20:15)Chair: Oscar CorchoKnowledge Graphs: Theory, Applications and ChallengesIan Horrocks, Professor, University of OxfordBreak (20:15–20:30)…

LeetCode 1128. 等价多米诺骨牌对的数量(哈希)

1. 题目 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌&#xff0c;我们就认为这两张牌是等价的。 形式上&#xff0c;dominoes[i] [a, b] 和 dominoes[j] [c, d] 等价的前提是 ac 且 bd&#…

纵观对话预训练技术演变史:化繁为简的背后,什么在消亡?

文 &#xff5c; 橙橙子最近&#xff0c;百度发布了对话生成预训练模型PLATO-XL&#xff0c;110亿的参数规模&#xff0c;也让它成为了对话领域目前最大的预训练模型。不到两年的时间&#xff0c;PLATO系列已走过三代。作为国内对话预训练技术的头部玩家&#xff0c;它的每一次…

会议交流 | CNCC2021中国计算机大会 —— 知识图谱赋能数字化转型论坛

OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中文为核心的知识图谱数据的开放、互联及众包&#xff0c;并促进知识图谱算法、工具及平台的开源开放。点击阅读原文&#xff0c;进入 OpenKG 网站。

LeetCode 687. 最长同值路径(二叉树,递归)

1. 题目 给定一个二叉树&#xff0c;找到最长的路径&#xff0c;这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。 注意&#xff1a;两个节点之间的路径长度由它们之间的边数表示。 示例 1: 输入:5/ \4 5/ \ \1 1 5 输出: 2示例 2: 输入:1/ …

机器学习中的数据清洗与特征处理综述

随着美团交易规模的逐步增大&#xff0c;积累下来的业务数据和交易数据越来越多&#xff0c;这些数据是美团做为一个团购平台最宝贵的财富。通过对这些数据的分析和挖掘&#xff0c;不仅能给美团业务发展方向提供决策支持&#xff0c;也为业务的迭代指明了方向。目前在美团的团…