训练神经网络的好方法

时间:2017-11-24 10:47:46

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

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

所以我的第一个疑问是,

  

训练具有一个背景的模型(假设是白色背景)并使用   另一个背景(假设灰色背景)?。

其次,我训练了具有不同位置和相同背景的物体。由于该理论认为位置对卷积无关紧要,因此它具有识别放置在任何位置的物体的能力,因为无论如何,在卷积之后,激活图的维数减小并且深度增加。

所以我的第二个疑问是,

  

在训练时保持对象在不同位置是必要的还是好的方法   模特?

3 个答案:

答案 0 :(得分:1)

  

训练具有一个背景的模型(假设是白色背景)并使用   另一个背景(假设灰色背景)?。

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

  

在训练时保持对象在不同位置是必要的还是好的方法   模特?

用不同位置的物体训练你的模型确实更好,因为它可以让你的模型预测更多类型的橙子或石榴。请注意,如果您要对要测试的对象使用不同的位置,则必须拥有足够数量的数据,以便模型能够为测试集提供良好的预测。

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

答案 1 :(得分:1)

  

训练具有一个背景(假设为白色背景)的模型并使用另一个背景(假设为灰色背景)进行测试是不是很好?

背景是图像的属性,不是区分对象所必需的。您希望您的网络了解此行为。现在考虑两个案例:

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

答案 2 :(得分:0)

关于你的第一个疑问,只要图像中存在目标对象,这就没什么问题了。在将数据送入网络之前对数据进行随机播放。

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