【问题标题】:Whether Data augmentation really needed in Machine Learning [closed]机器学习中是否真的需要数据增强[关闭]
【发布时间】:2017-11-25 12:31:55
【问题描述】:

我有兴趣了解数据增强的重要性(以不同角度旋转、翻转图像),同时为机器学习问题提供数据集。

是否真的需要?或者无论数据转换有多么不同,使用的 CNN 网络也会处理这个问题?

所以我做了一个2类的分类任务来总结一些结果

  1. 箭头形状
  2. 圆形

这个想法是只用一个方向训练形状(我用箭头指向右边)并检查模型用不同的方向(我用向下的箭头),这在训练阶段根本没有给出。

训练中使用的一些样本

测试中使用的一些样本

这是我用于创建 tensorflow 模型的整个数据集。 https://bitbucket.org/akhileshmalviya/samples/src/bab50b85d826?at=master

我想知道我得到的结果,

(i) 除了几个向下的箭头外,所有其他的都被正确预测为箭头。这是否意味着根本不需要数据增强?

(ii) 或者这是我用来理解数据增强重要性的正确用例?

请分享您的想法,非常感谢任何帮助!

【问题讨论】:

    标签: machine-learning tensorflow conv-neural-network


    【解决方案1】:

    您正在解决的任务可以轻松解决,无需任何神经网络,甚至无需机器学习。

    仅仅因为问题如此简单,是否进行数据增强并不重要。数据增强的需求是特定于任务的,并且取决于很多事情:

    • 通过保留正确标记类的能力来扩充数据是多么容易。对于图像,我们过去看到/听到的声音不是问题(我们知道在声音中添加小噪音不会改变含义,旋转蜥蜴仍然是蜥蜴)。对于其他事情,在不保留类/值的情况下进行增强是很困难的(例如在围棋中,随机添加一块石头可以显着改变位置的值)
    • 增强数据是否来自您关心的同一分布。将随机棋子添加到围棋中不起作用,但旋转翻转棋盘可以并保持分布。但例如在赛车王游戏 (variant of chess) 中它无济于事。你不能翻转位置(左 右),评价保持不变,但它永远不会发生在真实的游戏中,因此从不同的分布中抽取,无用
    • 您拥有多少数据以及您的模型的表现力如何。您建模的参数越多,过度拟合的可能性就越大,您对数据的需求就越大。如果您在n 暗淡中训练线性回归,您将拥有n + 1 参数。你真的不需要增加这个。此外,如果您已经拥有 100 亿个数据点,则增强可能不会有帮助。
    • 增强程序有多昂贵。对于旋转/缩放图像,它非常便宜,但对于其他增强,它的计算成本可能很高
    • 还有一些我忘记了。

    【讨论】:

      【解决方案2】:

      数据扩充是一个依赖数据的过程。

      一般来说,当您的训练数据很复杂且样本较少时,您需要它。

      神经网络可以轻松学会提取简单的模式,如弧线或直线,这些模式足以对您的数据进行分类。

      在您的情况下,数据增强几乎没有帮助,网络将学习提取的特征很容易,并且彼此之间存在很大差异。

      相反,当您必须处理复杂的结构(猫、狗、飞机等)时,您不能依赖边缘、弧线等简单的特征。 相反,您必须向网络表明您尝试分类的实例具有很高的方差,并且提取的特征可以针对同一主题以多种不同方式组合。

      想象一只猫:它可以是任何颜色,可以在不同的光线条件下拍摄照片,它的整个身体可以在任何位置,可以在某个方向上拍摄照片...... 为了正确分类如此不同的实例,网络必须学会提取鲁棒的特征,这些特征只有在看到大量不同的输入后才能学习。

      在您的情况下,相反,简单的功能可以完全区分您的输入,因此任何类型的数据增强都可以提供一点帮助。

      【讨论】:

      • nessuno,我同意你的观点。但是关于右向箭头用例的基本直觉是,向下箭头特征不用于训练网络对吗?但它仍然将向下数组预测为右箭头的一部分。我无法与我的直觉联系起来。有助于将向下箭头预测为向右箭头的特征/特征是什么?还是我缺少任何基本知识?
      • 首先非常感谢@nessuno 的回答。所以在这种情况下,正如您所说的,这两个课程彼此之间存在很大差异,我同意。如果我训练的不是圆形,而是类似于向下箭头的形状(例如,宽度小而高度大的矩形)怎么办?正如@ user3796318 点我无法联系起来。请帮忙
      • 想象一下 CNN 学习提取 local 特征。 CNN 本身对箭头方向或作为一个整体的输入一无所知。卷积过滤器,特别是在第一层,只是学习提取他们在3x3 区域(或任何过滤器大小)中看到的内容。因此,如果第一层学习提取边缘,第二层学习将它们组合成直线和弧(例如)。最后一层将线分类为箭头,将弧分类为圆。 @Karthik 我想如果你降低类间变异性,问题会更难。试试吧!
      • 是的,当我用矩形而不是圆形训练模型时,错误分类的图像(返回为矩形的向下箭头)的数量变得更高!关于你正在解释的卷积层的工作,最后一层将线分类为矩形而不是箭头,当我用圆圈训练时,结果是不同的。
      • 所以从现在的观察来看,我想预测箭头下的向下箭头,我应该在训练集中正确地扩充和给出数据。即使到那时我也不确定是否成功地将矩形和向下箭头分类到单独的类中需要做什么?是增加卷积层还是增加FC层或者你有什么其他的建议吗?感谢您到目前为止的帮助:)
      猜你喜欢
      • 2021-02-17
      • 2016-04-21
      • 1970-01-01
      • 2016-01-31
      • 2011-02-06
      • 2017-10-20
      • 2015-04-11
      • 2017-12-25
      • 2017-06-07
      相关资源
      最近更新 更多