深度神经网络中的以下课程学习实施缺少什么?

数据挖掘 深度学习
2021-10-11 15:22:57

首先,我们有一个分类任务。
所以我们使用典型的softmax交叉熵进行分类。

目前课程学习的实施情况如下。

  • 首先我们训练我们最好的神经网络版本
  • 在最后一个时期,我们得到所有实例的所有交叉熵。因此,较小的交叉熵可以更好地分类,而较大的交叉熵则不太好。
  • 然后我们根据交叉熵对实例进行排序。
  • 然后我们开始按照课程学习理论的建议从易到难训练实例

请注意,我们已经尝试了各种步骤和重复。因此,在一个示例中,我们选取​​了前 200 个批次,并在进入下一个批次之前对其进行了两次训练,依此类推,直到一个 epoch 完成。
在另一个示例中,我们选取​​前 10 个批次并只训练它们一次,然后是接下来的 10 个和接下来的 10 个,依此类推,直到 epoch 结束。

迄今为止的所有实验都得出结论,神经网络在开始时具有相对较好的准确性,随着更困难的实例的出现,这种情况会变得更糟。最终的精度比预期的要差得多,此外最大精度仍然很差。

为什么这个课程学习不起作用?有什么遗漏吗?

1个回答

您需要更多信息才能弄清楚这里发生了什么。一些可能性包括:

  • 您的“硬”示例实际上是无法学习的。您可以通过查看您是否至少可以过度拟合困难示例以及您作为人类是否可以正确标记困难示例来检查这一点。

  • 你的网络不够大,无法学习困难的例子。也就是说,你确信可以学习困难的例子,只是网络不够复杂,无法做到这一点。同样,您可以通过查看您作为人类是否能够找出困难实例的正确标签来检查这一点。

  • 您的课程学习实际上可能会受到培训的影响。在训练结束时,你的网络只会看到它最麻烦的例子。这些示例将导致网络发生最大的变化,并且您可能会出现短期梯度爆炸。您可以通过在困难示例训练结束时查看“简单”示例的性能是否明显变差来检查是否发生这种情况。这里的一种解决方案可能是在按难度排序后慢慢扩展训练集。因此,如果您有 10k 简单示例和 10k 困难示例,则在 10k 简单 + 1k 困难上进行训练,直到您对网络性能感到满意,然后通过添加下一个 1k 最困难等来增加训练集。