深度神经网络中的 Dropout

数据挖掘 机器学习 神经网络 深度学习 喀拉斯 辍学
2021-10-04 06:47:24

我正在阅读一篇发表在 Dropout 上的论文。我发现难以理解的是,在训练阶段,一个单元存在的概率p并且不会出现1-p. 在测试阶段,所有单元都存在,但我们将每个单元乘以概率。

现在,是不是让我们有 4 个输入单元,最初命名为 a,b,c,d。在训练阶段,应用 dropout 后,dropout 率为0.5, 我们剩下单位 a 和 c。所以,就像在测试阶段一样,所有的单元都存在,所以,是不是我们将每个单元乘以0.5? 也是p 为网络中的每个单元定义,还是为整个神经网络定义?

另外,在这样做时,训练和测试阶段的结果如何相同?

1个回答

我猜你还没有很好地理解 dropout 的概念。首先,我们应用它的原因是我们在架构中添加了一些噪音,以便不依赖于任何特殊节点。原因是观察到在训练网络时,在过度拟合之后,一些神经元的权重会增加,导致网络依赖于它们。通过利用 dropout,我们不再依赖任何节点,因为可以在训练时丢弃它。

现在,回答你的问题。首先,您必须牢记这一点,概率显示了在层中删除节点的机会。因此,例如,机会 0.5 并不意味着您将拥有这两个节点。这只是意味着在使用 dropout 之后,每个节点的 drop 机会都是一半。Dropout 用于图层。通常在全连接层中使用它。您设置了超参数,这是将节点保留在层中的机会。在测试时,您不会删除任何节点。我们不会将神经元乘以概率。概率指定该节点存在的机会。


好吧,多克!我更新答案。正如你在论文中看到的那样,

在测试时,明确地平均来自指数级多个细化模型的预测是不可行的。然而,一种非常简单的近似平均方法在实践中效果很好。这个想法是在测试时使用单个神经网络而不会丢失。该网络的权重是经过训练的权重的缩小版本。如果在训练期间以概率 p 保留一个单元,则该单元的传出权重在测试时乘以 p,如图 2 所示。这确保了对于任何隐藏单元的预期输出(在用于在训练时丢弃单元的分布下time) 与测试时的实际输出相同。通过进行这种缩放,可以将具有共享权重的 2n 个网络组合成一个神经网络,以便在测试时使用。

我想了解它的最简单方法是观看视频。正如您所看到的,有不同的实现,但它被相乘的原因是,对于任何隐藏单元,预期输出(在用于在训练时丢弃单元的分布下)与测试时的实际输出相同。简而言之,这样做是为了不改变层输出的分布。