每天给你送来NLP技术干货!


来自:CS的陋室

作者:机智的叉烧

其实自己写过一些数据增强的文章,也谈过自己的一些思考。但是在现实场景中,自己使用的时候多半感觉不太顺手,不过最近的一次经历,让我对数据增强这件事情有了一些新的理解,可能是炒旧饭,自己或多或少有提到过,但是这个旧饭有一些自己更加细化的理解吧,所以重新聊一次。

另外,最后我也把最近遇到的问题和解决手段做一个讲解,让大家更好理解和吸收,我自己总结下来其实觉得收获挺大的。

先出结论和方法论

有关数据增强,希望大家能认清这几个关键点。

首先,数据增强不是数据增多,数量增加本身不会为效果带来正面收益,极端的说,如果增加数据有用,你直接多训几个epoch不就好了对吧。

数据增强更像是一种扩增数据多样性的手段,让模型更加见多识广,理解更多内容,使他更不容易因为“没见过”这种类型的问题而误判或乱判。

但是简单的数据增强是无方向的,如果能够找到并有针对性地进行增强,是否能让效果的提升变得更加高效明确。

数据增强非数据增多

很多在科普数据增强的文章中会聊到,数据不足的可以通过数据增强扩增数据,很容易误导初学者以为数据不够的时候就用数据增强增加一些数据,模型效果就有提升了,但实际上并非如此,我在之前的文章里面或多或少有提到过,数据不足或者样本不均衡导致的效果不足背后,原因很多,片面、粗暴地上数据增强并不一定就能解决数据不足的问题,具体可以看看这几篇:

  • 心法利器[45] | 模型需要的信息提供够了吗

  • 心法利器[44] | 样本不均衡之我见

这依旧是一个结论或者是一个结论的解释,我给大家一个理解的方式。数据扩增后,如果数据本身的分布和信息没有发生很大改变,在训练的视角下,其实就和多训练几次,或者是损失函数对特定类样本的权重产生变化而已,大家都知道,在同等收敛的情况下,增加数据量和多迭代几次其实没有本质差别,所以大家不要简单地以为数据少,所以要多,要具体看这个少是怎么少,缺什么,去补充才是合适的。

数据增强与多样性

NLP场景的数据增强,相信大家都应该知道回译、随机删除、随机增加、同义词替换等基本操作,甚至有一些用生成模型,甚至风格迁移之类的,其本质都是在给数据增添多样性,这种多样性其实很大程度对模型是有益处的,在有限的数据下,增强出一些说法,让模型知道这些新的说法其实也是属于这个类,模型的稳定性也就提升了,这个无可厚非,这也是很多试验下模型效果真的有提升的本质。

然而同样需要知道的是,上面的提升是有条件的,如果数据已经足够丰富,模型其实也能足够学到这些信息的话,或者是数据极度匮乏,或者信息本就不足,数据增强也无法弥补这个问题,那其实增强的效果当然就没有了,甚至可能负向。

定向的增强

如果,我们能知道用当前数据让模型学习,会导致模型出现了特定的问题, 而同时让数据增强能尽可能定向地解决这种问题,那这个效果优化就会变得非常高效了。这里需要的几个条件:

  • 了解模型目前存在的固有问题,即存在某个已知且比较明显的缺陷。

  • 这个缺陷是可以通过数据来解决的,例如增加特定的数据。

  • 这种数据可以通过增强的方式来进行处理而批量增加。

能满足几个条件,这套完整的特定问题解决的方法论也就完成了。

为了让大家更好理解,我给大家举一个最近遇到的问题的例子吧。

例子

最近自己在做的时候就遇到这个问题并且很大程度上就解决了,这里介词给大家分享一下,总结下来个人觉得收获挺大的。

问题场景是文本二分类,经过case发现,模型似乎对口语化的句子分类效果并不好,极端的其实遇到了口语化句子就会分为负类,模型有如此大的把握出错,其实这种问题很可能就是出在数据上,句子中的某些特征让模型坚信这个特征就出现应该是负类,因为模型学的数据其实就是这样的,例如一些词汇,“刚才”、“现在”、“到底”之类的,在负样本里很多,正样本里很少,那模型理解这种词出现在负样本中概率大,那反过来句子里出现这些词汇,大概率就是负类了。

当然,比较简单的方式就是找出这种词,然后直接在数据集里面加上对应的一些数据在正类里,其实就能缓解,这种思路其实就是构造对抗样本了,也非常常用。但是一单问题锁定到口语化这个层面了,这种词汇就会很多那构造起来的成本会很高(如果就一两个,其实这样做更推荐的),所以我们就要考虑更加批量化的方法。

这里我想到的方案是,找一批闲聊风格的句子,这个相信大家要找也不会很难,网上能找得到,也能通过现有的query进行挖掘吧,既然正样本没有口语化,我就用口语化但是意义不太明确的句子拼接上已有的正样本,构造这样的句子,就能让模型知道,即使句子中有口语化说法,也可能是正类,同时,为了让样本更多样性,我用了随机调换词汇顺序的策略再多增加了一些。

结果是,增强后的模型比原来的模型,正类召回率提升显著,而准确率也有小幅提升,很大程度说明这个策略生效了,而且比较稳定。

回头其实可以看到几个操作细节:

  • 这里通篇没有提到少数据的问题,是的,数据量上,训练样本非常多,从数量上我并不需要增加。

  • 但是数据内缺少信息,缺少的是正类口语化的信息,这个缺少让模型预测出现了偏移,有关数据提供信息的问题,这个我写过一篇文章来聊:。

  • 数据增强的方式我没有无差别使用,我只用了拼接和交换,类似删除之类的并没有使用,原因很简单,现在情况并不需要,没病别随便开药。

反思

这里可以看到的是,对模型和数据的缺点能有足够的把握时,能很精准地找到解决问题并能通过数据而非模型的方式快速解决,并且效果显著,回头看这里需要这几种能力:

  • 能找到模型的问题的能力。这里重要的一条是case分析,前面我是花了很多时间来给大家讲这个case分析的,最后一篇文章在这:心法利器[40] | bad case治疗术:解决篇,有着一连4篇的传送门。

  • 能从数据中提炼出问题,知道扩充什么样的数据就能解决,这里其实蕴含了不小的数据操纵能力。

  • 对方案的把控能力,不无脑堆,而是对症下药,前面2条讲的是理解症,这条则对应下药的能力。

最后再次强调,数据增强不是增多,数据少不见得增强就能解决(我在前不久的文章有谈到这个问题,可以看看这篇),数据增强也可以解决数据很多的时候的问题,关键是自己需不需要,需要的时候要有合适的方式来使用,所谓大师,不只是啥招都会,而是会在遇到问题的时候能知道出什么招能解决问题,我也在朝着这个方向努力哈哈,共勉。


下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

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

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

记得备注呦

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

数据增强 | 现实应用思考相关推荐

  1. 数据增强在卷积神经网络中的应用

    这一篇博客主要讨论在用卷积神经网络进行图像识别或者目标检测时的数据增强手段,并讨论其作用. 首先整理两篇比较有代表性的论文里的数据增强,再说说我自己工作中使用的数据增强,最后讨论这些数据增强的意义(我 ...

  2. 心法利器[53] | 数据增强的现实应用思考

    心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴 ...

  3. 【图普科技】边界框的数据增强:对目标检测图像变换的再思考(一)

    [本文由图普科技编译] 当谈到深度学习任务的表现时,毋庸置疑,数据越多越好.然而,我们拥有的数据可能是有限的.数据增强是通过人为扩充数据集来解决数据短缺问题的一种方法.实际上,该技术已被证明非常成功, ...

  4. 《预训练周刊》第21期:FlipDA:有效且稳健的数据增强小样本学习、开放域低资源适应的生成式聊天机器人...

    No.21 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第21期&l ...

  5. lisp 线性标注自动避让_自动化数据增强:实践、理论和新方向

    选自Stanford AI Lab Blog 作者:Sharon Y. Li 机器之心编译 参与:Panda 对当今需要大量数据的机器学习模型而言,数据增强是一种具有显著价值的技术--既可用于缓解数据 ...

  6. 数据增强:数据有限时如何使用深度学习 ?

    转自:https://www.leiphone.com/news/201805/avOH5g1ZX3lAbmjp.html 这篇文章是对深度学习数据增强技术的全面回顾,具体到图像领域.这是<在有 ...

  7. 自动化数据增强:实践、理论和新方向

    本文转载自机器之心. 选自Stanford AI Lab Blog 作者:Sharon Y. Li 机器之心编译 参与:Panda 对当今需要大量数据的机器学习模型而言,数据增强是一种具有显著价值的技 ...

  8. 盘点深度学习中的各种数据增强技巧

    1 什么是数据增强? 数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值. 比如上图,第1列是原图,后面3列是对第1列作一些随机的裁剪.旋转操作得来. 每张 ...

  9. Mix3D:大规模三维场景的数据增强(3DV2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨图灵智库 来源丨 泡泡机器人SLAM 标题: Mix3D: Out-of-Context Dat ...

  10. 让AI精准识别盗版,脸书开源数据增强库:支持图文音视频,提供100多种增强方式...

    月石一 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只要稍微动点手脚,就会给AI模型的鲁棒性带来挑战. 在AI眼里,下面这两张图片可能毫无关联. 现在,Facebook AI开源了用于数据增 ...

最新文章

  1. mysql异步扩展_基于Swoole扩展开发异步高性能的MySQL代理服务器
  2. CentOS6.5 缺少 libstdc++.so.6(GLIBCXX_3.4.15)
  3. 高度固定,行数不固定的文字垂直居中问题
  4. matlab迭代次数,怎么知道程序中的迭代次数呢
  5. java操作redis简单学习3
  6. HttpClient的性能隐患
  7. GBK、GB2312、GB18030
  8. DOM Element对象的offsetXXX方法
  9. jpush java_JPush Java SDK 示例代码与简要注释
  10. VC InitInstance函数
  11. 原创 leetcode[349]两个数组的交集/ Intersection of Two Arrays 哈希策略
  12. Atitit 知识管理的艺术 艾提拉著作 这个实际上涉及到知识的管理(获取 ,存储,索引,查找等方法 目录 1. 记不住的本质 2 1.1. 真的没有记住 2 1.2. 暂时没有搜索到,可能是
  13. GoldWave2020注册激活码版下载音频处理制作教程
  14. ftp用户名 密码输入正确 登陆报530 Login incorrect.331 Please specify the password.
  15. 页面加载出现白页是什么原因造成的
  16. JAVA 解密M3U8 视频TS片断提示:Wrong IV length: must be 16 bytes long 解决方法
  17. photoshop动作怎么安装?PS怎么导入动作?ps动作安装方法详细教程
  18. python xlrd读取excel慢_与xlrd相比,使用openpyxl读取Excel文件要慢很多
  19. php5.2.17 pecl,php pecl的使用
  20. 姜小白的Python日记Day14 系统模块详解1 time模块和random模块

热门文章

  1. 替罪羊树+3369 【模板】普通平衡树
  2. 2018 计蒜之道 初赛 第一场
  3. UVa 11991 一道简单题
  4. HDU2206:IP的计算
  5. 常用的python模块及安装方法
  6. HTTPS重定向到HTTP
  7. 解题报告 noi 2005 智慧珠游戏(BT 搜索)
  8. Linux:程序设计
  9. USACO Sorting a Three-Valued Sequence
  10. 工具开发:勿以善小而不为