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


来自:SimpleAI

在特征空间增强数据集

  • 论文标题:DATASET AUGMENTATION IN FEATURE SPACE

  • 发表会议:ICLR workshop 2017

  • 组织机构:University of Guelph

一句话评价

一篇简单的workshop文章,但是有一些启发性的实验结论。

简介

最常用的数据增强方法,无论是CV还是NLP中,都是直接对原始数据进行各种处理。比如对图像的剪切、旋转、变色等,对文本数据的单词替换、删除等等。对于原始数据进行处理,往往是高度领域/任务相关的,即我们需要针对数据的形式、任务的形式,来设计增强的方法,这样就不具有通用性。比如对于图像的增强方法,就没法用在文本上。因此,本文提出了一种“领域无关的”数据增强方法——特征空间的增强。具体的话就是对可学习的样本特征进行 1) adding noise, 2) interpolating, 3) extrapolating 来得到新的样本特征。

文本提到的一个想法很有意思:

When traversing along the manifold it is more likely to encounter realistic samples in feature space than compared to input space. 在样本所在的流形上移动,在特征空间上会比在原始输入空间上移动,更容易遇到真实的样本点。

我们知道,对原始的数据进行数据增强,很多时候就根本不是真实可能存在的样本了,比如我们在NLP中常用的对文本进行单词随机删除,这样得到的样本,虽然也能够提高对模型学习的鲁棒性,但这种样本实际上很难在真实样本空间存在。本文提到的这句话则提示我们,如果我们把各种操作,放在高维的特征空间进行,则更可能碰到真实的样本点。文章指出,这种思想,Bengio等人也提过:“higher level representations expand the relative volume of plausible data points within the feature space, conversely shrinking the space allocated for unlikely data points.” 这里我们暂且不讨论这个说法背后的原理,先不妨承认其事实,这样的话就启示我们,在特征空间进行数据增强,我们有更大的探索空间。

具体方法

其实这个文章具体方法很简单,它使用的是encoder-decoder的框架,在(预训练好的)encoder之后的样本特征上进行增强,然后进行下游任务。所以是先有了一个表示模型来得到样本的特征,再进行增强,而不是边训练边增强。框架结构如下:


下面我们来看作者具体是怎么增强的:

1. Adding Noise(加噪音)

直接在encoder得到的特征上添加高斯噪声:

2. Interpolation(内插值)

同类别点中,寻找K个最近邻,然后任意两个邻居间,进行内插值:

3. Extrapolating(外插值)

跟内插的唯一区别在于插值的位置:

下图表示了内插跟外插的区别:


在文本中,内插和外插都选择.

论文作者为了更加形象地展示这三种增强方式,使用正弦曲线(上的点)作为样本,来进行上述操作,得到新样本:


作者还借用一个手写字母识别的数据集进行了可视化,进一步揭示interpolation和extrapolation的区别:


作者没有具体说可视化的方法,猜测是通过autoencoder来生成的。可以看到,extrapolation得到的样本,更加多样化,而interpolation则跟原来的样本对更加接近。

实验

下面我们来看看使用这三种方式的增强效果。本文的实验部分十分混乱,看得人头大,所以我只挑一些稍微清楚一些的实验来讲解。

实验1:一个阿拉伯数字语音识别任务

实验1

实验2:另一个序列数据集


注:interpolation和extrapolation都是在同类别间进行的。

实验结果:

  • Adding Noise,效果一般般。

  • Interpolation,降低性能!

  • Extrapolation,效果最好!

实验3:跟在input space进行增强对比


实验结果:

  • 在特征空间进行extrapolation效果更好

  • 特征空间的增强跟input空间的增强可以互补

实验4:把增强的特征重构回去,得到的新样本有用吗


这个实验还是有一点意思的,一个重要的结论就是,在特征空间这么增强得到的特征,重构回去,屁用没有。可以看到,都比最基础的baseline要差,但是如果把测试集都换成重构图,那么效果就不错。这其实不能怪特征增强的不好,而是重构的不好,因为重构得到的样本,跟特征真实代表的样本,肯定是有差距的,因此效果不好时可以理解的。

重要结论&讨论

综上所有的实验,最重要的实验结论就是:在特征空间中,添加噪音,或是进行同类别的样本的interpolation,是没什么增益的,甚至interpolation还会带来泛化性能的降低。相反,extrapolation往往可以带来较为明显的效果提升。这个结论还是很有启发意义的。

究其原因,interpolation实际上制造了更加同质化的样本,而extrapolation得到的样本则更加有个性,却还保留了核心的特征,更大的多样性有利于提高模型的泛化能力。

作者在结尾还提到他们做过一些进一步的探究,发现了一个有意思的现象:对于类别边界非常简单的任务(例如线性边界、环状边界),interpolation是有帮助的,而extrapolation则可能有害。这也是可以理解的,因为在这种场景下,extrapolation很容易“越界”,导致增强的样本有错误的标签。但是现实场景中任务多数都有着复杂的类别边界,因此extrapolation一般都会更好一些。作者认为,interpolation会让模型学习到一个更加“紧密”、“严格”的分类边界,从而让模型表现地过于自信,从而泛化性能不佳

总之,虽然这仅仅是一篇workshop的论文,实验也做的比较混乱,可读性较差,但是揭示的一些现象以及背后原理的探讨还是十分有意义的。经典的数据增强方法mixup也部分收到了这篇文章的启发,因此还是值得品味的。


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

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

记得备注呦

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

ICLR'17 | 在特征空间增强数据集相关推荐

  1. 数据增强 数据集扩充_数据扩充的抽象总结

    数据增强 数据集扩充 班级分配不均衡的创新解决方案 (A Creative Solution to Imbalanced Class Distribution) Imbalanced class di ...

  2. 从菜鸟到老司机,数据科学的17个必用数据集推荐

    数据集可谓是数据科学的练兵场,不管是对菜鸟入门还是老司机上路,能找到一个好用的数据集无异于如虎添翼.以下是雷锋网整理编译的 17 个常用数据集,并列举了适用的典型问题,从菜鸟到老司机,总有一款适合你. ...

  3. Win10能更逆天?17款系统增强小工具推荐

    1让Win10变得更逆天的增强工具合集(一)回顶部 10月1日微软发布了新一代操作系统Win10的技术预览版,里面展出了很多项与桌面用户有关的改进.应该说到目前为止,网友们的评价还是比较正面的.但笔者 ...

  4. 干货 | 从菜鸟到老司机,数据科学的 17 个必用数据集推荐

    编者按:数据集可谓是数据科学的练兵场,不管是对菜鸟入门还是老司机上路,能找到一个好用的数据集无异于如虎添翼.以下是雷锋网(公众号:雷锋网)整理编译的 17 个常用数据集,并列举了适用的典型问题,从菜鸟 ...

  5. 【GAN】《ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS》 ICLR‘17

    <ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS> 先介绍EBGAN,再详细解读为什么这样做. Auto-encoder Discriminato ...

  6. python制作图像数据集_详细图像数据集增强原理的python代码

    导读 在深度学习时代,数据的规模越大.质量越高,模型就能够拥有更好的泛化能力,数据直接决定了模型学习的上限.然而在实际工程中,采集的数据很难覆盖全部的场景,比如图像的光照条件,同一场景拍摄的图片可能由 ...

  7. PASCAL VOC 2012数据集及其增强版介绍

    PASCAL VOC 2012数据集及其增强版介绍 Pascal voc 2012数据集可以用于分类.检测和分割.这篇文章主要介绍其在语义分割任务上的使用.原始的Pascal voc 2012数据集仅 ...

  8. voc数据集和标签同时增强,增加下雪、下雨、加雾天气状况扩充数据集,附其他博主yolo和voc格式互相转换

    效果 下雪.下雨和雾化可以根据参数自行调整   在博主原有的基础上,考虑自身数据集实际情况,对其添加了天气状况,增强数据集鲁棒性 核心已注释 voc和yolo转换直接抄某博主的,找不到链接,见谅 数据 ...

  9. 从 CV 到 NLP,深度学习领域的数据增强有哪些?

    2019-12-09 04:31:10 作者 | 张宁(哈工大SCIR) 编辑 | 唐里 本文转载自公众号 哈工大SCIR 数据增强(Data Augmentation)是一种通过让有限的数据产生更多 ...

  10. 多模态最新Benchmark!aiMotive DataSet:远距离感知数据集

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[多传感器融合]技术交流群 后台回复[aiMotive]获取更多论文和数据集等更多信息! ...

最新文章

  1. hbase 读写调优_hbase优化操作与建议
  2. mysql root 无法建立数据库_MySQL - 在root用户下你跟我说无法建表!?
  3. Python OS和shutil模块的常见方法
  4. SAP Commerce的Content Page,Content Slot和Component在Spartacus里的应用
  5. java 配置参数_给你的JAVA程序配置参数(Properties的使用)
  6. 正则表达式中的分组的匹配次数的理解
  7. centos编译mysql5.6_centos7上编译安装mysql5.6
  8. Confluence 6 Windows 中以服务方式自动重启修改运行服务的用户
  9. 计算机同S7-300PLC通讯,西门子S7-300 PLC与Intouch的通讯连接方法
  10. python爬取酷狗音乐歌词_Python爬虫:爬取酷狗音乐
  11. c++病毒代码(附源码)
  12. 程序员眼中的中国传统文化-王阳明《传习录》3
  13. rpm包的卸载与安装
  14. echarts饼状图
  15. 轻流入选|国际权威研究机构「2021年低代码平台中国市场现状分析报告」发布
  16. php设计模式番外篇--超人的诞生
  17. RHCE-RHEL 7 系统简介
  18. 分享到QQ、QZone方法,无需登录
  19. python opengl 教程_OpenGL新手和弃用
  20. test\fmw\gtest\include\gtest/gtest-printers.h(714) : error C2977: “std::tuple”: 模板 参数太多

热门文章

  1. Cannot start process,the working directory 'F:\hello\hello'does not exit 问题解决
  2. Codeforces Round #439 (Div. 2)
  3. centos7安装eclipse
  4. Xcode 6 免证书真机调试
  5. 【排序算法】快速排序-迭代方法
  6. 云锵基金 2019 年 02 月简报
  7. 20.QT-Qpixmap实现图片鼠标缩放,鼠标拖动示例(详解)
  8. LeetCode(221) Maximal Square
  9. ZipArchive是一个开源的zip开发包工具。
  10. iOS设计模式 - 单例