【问题标题】:Some simple questions regarding the training of CNNs关于CNNs训练的一些简单问题
【发布时间】:2016-07-05 03:04:39
【问题描述】:

我读到,在使用 CNN 时,每个类的样本数量应该大致相等。我正在做二进制分类,从背景中检测行人,所以这两个类别是行人和背景(实际上不是行人)。

如果我在训练中加入硬负样本挖掘​​,如果我得到很多误报,我最终会得到比正样本更多的负样本。

1) 这样可以吗?

2) 如果不是,我该如何解决这个问题?

3) 用负样本多于正样本来训练 CNN 的后果是什么?

4) 如果负样本多于正样本是可以的,是否有我不应该超过的最大限制?就像例如。我的负样本不应该是正样本的 3 倍。

5) 我可以通过抖动来增加我的正样本,但是我应该为每张图像创建多少额外的样本?有“过分”吗?就像我从 2000 个阳性样本开始,有多少额外的样本太多了?通过jittering从2k个样本中生成总共100k个样本是不是太多了?

【问题讨论】:

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


    【解决方案1】:

    这取决于您使用的成本函数,但如果您将其设置为 log_loss,那么我可以直观地向您展示不平衡的数据集可能会如何损害您的训练以及该问题的可能解决方案是什么:

    一个。如果你不改变你的类的分布并让它们不平衡 - 如果你的模型能够实现相对较小的损失函数值,那么它不仅是图像上行人的良好检测器,而且它会了解行人检测是一个相对罕见的事件,它可以防止你出现很多误报。所以如果你能够花更多的时间来训练一个更大的模型——它可能会给你带来非常好的结果。

    b.如果你改变你的类的分布——那么你可能会在更短的时间内用更小的模型获得相对好的结果——但另一方面——因为你的分类器会学习不同的分布——你可能会获得很多 False积极的。

    但是 - 如果您的分类器的训练阶段不会持续太久 - 您可能会在这两种方法之间找到一个很好的折衷方案。您可以设置一个乘法因子(例如,如果您将样本数量增加 2、3 或 n 倍)作为元参数并优化它的值,例如使用网格搜索架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多