【问题标题】:Artificial Neural Network Back Propagation testing人工神经网络反向传播测试
【发布时间】:2016-07-07 18:23:23
【问题描述】:

我为 ANN BP 开发了一个代码,用于对打鼾片段进行分类。我有 10 个输入特征和 1 个隐藏层,其中包含 10 个神经元和一个输出神经元。我将 1 表示为没有打鼾,将 0 表示为打鼾段。我有 3000 个片段,其中 2500 个没有打鼾片段,标记为 1。和 500 个打鼾片段标记为 0。我已经将数据集分为三组(70% 训练,15% 验证和 15% 测试) .

现在,在训练网络时,首先我打乱了训练集并将打鼾和无打鼾的片段混合在一起。因此,在我训练了网络之后,当我验证它(仅通过前馈网络)时,我发现它只能对其中一个进行分类。让我进一步澄清一下,假设在训练集中最后一个元素不是打鼾(即 1)。因此,它为最后一个输出训练了网络。然后在验证阶段,即使对于打鼾段(即 0),它也总是给出接近 1 的输出。如果最后一个元素是打鼾 (0),也会发生同样的事情。然后它在验证阶段始终给出接近 0 的输出。

我该如何解决这个问题?为什么我的网络不能记住之前段的输出。它只保存最后一段?我应该在网络中改变什么来解决它?

【问题讨论】:

    标签: neural-network backpropagation


    【解决方案1】:

    我看到的问题是隐藏层没有足够的神经元和鼻窦。请记住,到目前为止,还没有一种方法可以准确计算隐藏层中的神经元数量,因此我们必须使用测试误差方法。有许多经验公式,您可以在下一个链接中查看

    https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw

    【讨论】:

    • 您好,谢谢您的回答。问题不在隐藏层。这是因为我计算了每个时期的成本函数。它可以很好地降低训练中的成本函数。问题在于记住一个标签的先前权重(假设为 0)。那么当另一个标签假设(1)进入网络时,它会忘记前一层的权重。它没有找到对它们进行分类的最佳权重。请告诉我如何解决它。
    【解决方案2】:

    这是一个分类问题,所以我建议你有两个输出神经元。如果该段是打鼾段,则一个输出神经元是一个,如果不是打鼾段,则另一个输出神经元是-1,反之亦然,对于没有打鼾的段。这应该有助于网络对它们进行分类。您还应该将输入特征标准化为 1 到 -1 之间的范围。这将有助于神经网络更好地理解您的输入。您可能还想考虑使用 softmax 层作为输出。

    您可能需要的另一件事是您可能需要向当前隐藏层添加另一个隐藏层或更多神经元。谢谢你@YuryEuceda 的这个建议。如果您还没有偏置输入,您可能还需要添加一个。

    【讨论】:

    • 它应该使用 0 和 1 与使用 -1 和 1 相同,问题在于隐藏层中的神经元和突触的数量。
    【解决方案3】:

    问题在于隐藏层的数量 在本文中,您将找到不同的方法来选择它 http://www.ijettjournal.com/volume-3/issue-6/IJETT-V3I6P206.pdf

    我建议你 隐藏层数=(输入数+输出层数)* 2/3

    【讨论】:

      猜你喜欢
      • 2015-11-03
      • 2015-03-03
      • 2012-02-21
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 2016-09-19
      相关资源
      最近更新 更多