我应该删除神经网络的单元还是增加 dropout?

人工智能 神经网络 机器学习 深度学习 辍学 正则化
2021-11-15 12:53:04

当向神经网络添加 dropout 时,我们会随机删除一部分连接(为特定的权重更新迭代将这些权重设置为零)。如果辍学概率是p,那么我们正在有效地训练一个大小为(1p)N, 在哪里N是神经网络中的单元总数。

使用这个逻辑,我可以做多大的网络没有限制,只要我按比例增加 dropout,我总是可以有效地用相同大小的网络训练,从而增加“独立”模型的数量一起工作,使得更大的集成模型。从而提高模型的泛化能力。

例如,如果一个有 2 个单元的网络已经在训练集中取得了很好的结果(但不是在看不见的数据中——即验证或测试集——),那么一个有 4 个单元 + dropout 0.5(2 个模型的集合)的网络,以及一个有 8 个单元 + dropout 0.75(4 个模型的集合)的网络......还有一个有 1000 个单元的网络,dropout 为 0.998(500 个模型的集合)!

在实践中,建议将 dropout 保持在0.5,这不建议使用上述方法。所以这似乎是有原因的。

是什么反对将模型与调整后的 dropout 参数一起炸毁?

1个回答

没有理由无缘无故地增加模型的大小。如果大小为 x 的模型提供了最佳性能,则没有理由在训练期间使用大小为 2*x 且 dropout 为 0.5 的模型。通常我们希望找到具有最佳性能的最小可能模型。膨胀模型只会导致更高的计算要求。

您基本上是建议使用 dropout 来允许网络多次学习相同的特征(在模型中创建冗余)。这不是辍学的目的。Dropout 用于使网络打破训练集中出现的不必要的相关性。例如,如果类 1 是其中唯一包含特征 A 和 B 的类,但所有训练样本总是同时具有特征。dropout 过程可以使模型意识到即使只有其中一个也足以指向类 1。