【问题标题】:Good approach for training a neural network训练神经网络的好方法
【发布时间】:2018-06-09 09:29:57
【问题描述】:

我正在训练一个神经网络模型来区分橙子和石榴。 在训练数据集中,对象的背景(橙色和石榴)是相同且恒定的。但在测试时,物体的背景与我训练时使用的不同。

所以我的第一个疑问是,

一个背景(假设为白色背景)训练模型并用 另一个背景(假设是灰色背景)?

其次,我训练了具有不同位置和相同背景的对象。既然理论说卷积与位置无关,它可以识别任何位置的物体,因为无论如何,卷积后激活图的维度会减小,深度会增加。

所以我的第二个疑问是,

在训练时将物体保持在不同位置是否有必要或好的方法 型号?

【问题讨论】:

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


    【解决方案1】:

    一个背景(假设为白色背景)训练模型并用 另一个背景(假设是灰色背景)?

    在训练神经网络时,重要的是要打乱您正在使用的数据集并将数据集拆分为训练集和测试集。您需要对数据进行混洗的原因是为了让您的模型能够查看训练集中的所有类型的样本,以便在它暴露于新的看不见的数据的那一刻,它可以将其反映在以前看到的数据上。在您上面提到的示例中,由于存在不同的背景颜色会影响模型的预测,因此对数据进行混洗很重要。因此,训练集和测试集都需要同时具有背景颜色,这样您的模型才能提供良好的预测。

    在训练时将物体保持在不同位置是否有必要或好的方法 型号?

    用不同位置的对象训练模型确实更好,因为它可以让模型预测更多类型的橙子或石榴。请注意,如果您对尝试预测的对象使用不同的位置,那么拥有足够的数据量很重要,这样模型才能在测试集上为您提供良好的预测。

    我希望这个简短的解释有所帮助,如果有不清楚的地方请告诉我,我会编辑帖子。

    【讨论】:

    • 正如我上面提到的卷积后,激活图的维度减少,深度增加。。你对此有什么看法?如果我再解释一下,那么我的意思是,在将填充卷积为 same 并且步幅为 1 之后,我们将获得与输入有。但是在最大池化之后,提取的特征会改变它的位置,同样如果我有深度为 N 的 1x1 的激活图(假设为 512),那么就不会使用该位置。您对此有何看法?
    【解决方案2】:

    一种背景(假设为白色背景)训练模型并用另一种背景(假设为灰色背景)进行测试是否是一种好方法?

    背景是图像的一个属性,不需要区分对象。您希望您的网络学习这种行为。现在考虑两种情况:

    1. 您为您的网络图像提供一个背景。让我们看看这里可能出了什么问题。
      1. 假设您的背景是全黑的。这意味着将特征图(内核)放入后台时将有 0 输出。您的网络将了解到它可以为这些特征设置任何高权重,并且只要这些权重可以成功提取类的特征,它就会在训练期间做得很好。
      2. 现在在测试期间,背景颜色为白色。现在具有高权重的相同特征图将具有非常高的输出。这些高输出会使非线性单元饱和,并且所有类别都可以归类为一个类别。
    2. 在训练期间显示具有不同背景的图像的第二种情况。
      1. 在这种情况下,神经网络必须学习到背景对应的特征图,并且需要根据背景减去偏差。

    In short, there is an extra information that you need to learn that is background is not important for deciding the category. When you provide only one color background, your neural network cannot learn this behavior and can give garbage result on test dataset.

    在训练模型时将对象保持在不同位置是否有必要或好的方法?

    你是对的,卷积神经网络是平移等变的。但是为了构建一个分类器,你需要将 CNN 层的输出传递给一个全连接层。如果你把图像放在不同的位置,不同的输入将进入全连接层,但所有这些图像的输出都是相同的类别。 So you are forcing your neural network to learn that the position of the object is not required for classifying its category.

    【讨论】:

      【解决方案3】:

      关于您的第一个疑问,只要图像中存在目标对象,这不是什么大问题。在将数据输入网络之前对其进行洗牌。

      对于第二个疑问,是的,将目标对象放在不同的位置总是一个好主意。另外需要注意的一件事是,您的数据来源是相同的,并且大部分质量相同。否则会出现性能问题。

      【讨论】:

      • 因为我为所有训练集保持背景相同,所以它根本没有洗牌。背景不会被认为是卷积滤波器要提取的特征之一吗?如果它将被视为特征,那么它将在测试时影响预测。你有什么充分的理由说明将目标对象放在不同的位置总是一个好主意。
      • 1/1 不管图像中存在的变化、背景和特征如何,对 train 和 val 数据进行混洗总是一个好主意。在深度学习中,CNN 或任何 X 算法的部分性能始终取决于数据。将目标对象放在不同的位置会导致其表示的更多变化,这在训练时使得模型在一定程度上难以记忆训练数据。无论如何,在训练过程中的某个时刻,算法会记住训练数据的一些表示。
      • 1/2 这种现象称为过拟合,模型在训练数据上表现良好,但在验证和测试集上表现不佳。
      猜你喜欢
      • 2015-06-11
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2019-10-20
      • 2014-02-24
      相关资源
      最近更新 更多