在神经网络测试期间 dropout 是如何工作的?

数据挖掘 神经网络 辍学
2021-09-24 13:25:07

以下段落选自教科书Hands-On Machine Learning with sci-kit learn & Tensorflow我无法理解作者试图传达的内容。如果有人可以通过示例为以下段落提供解释,将不胜感激。在 Deep Neural Networks 中提到了这些链接 Dropouthttps ://www.coursera.org/lecture/deep-neural-network/dropout-regularization-eM33A,它以某种方式与相同的目标保持一致。但是,我正在寻求好的解释。请帮我。

假设 p = 50%,在这种情况下,在测试期间,一个神经元将连接到两倍于训练期间(平均)的输入神经元。为了弥补这一事实,我们需要在训练后将每个神经元的输入连接权重乘以 0.5。如果我们不这样做,每个神经元将获得大约两倍于网络训练的总输入信号,并且它不太可能表现良好。更一般地说,我们需要将每个输入连接权重乘以训练后的保持概率(1-p)。或者,我们可以在训练期间通过保持概率来划分每个神经元的输出(这些替代方案并不完全等效,但它们同样有效)

1个回答

在训练期间,p 个神经元激活(通常,p=0.5,所以 50%)被丢弃。在测试阶段这样做不是我们的目标(目标是实现更好的泛化)。另一方面,保留所有激活将导致网络意外的输入,更准确地说,下一层的输入激活太高(高 50%)。

网络

考虑输出层的神经元。在训练期间,由于 dropout,每个神经元通常只能从隐藏层的两个神经元(同时连接到四个)获得激活。现在,假设我们完成了训练并移除了 dropout。现在将根据来自隐藏层的四个值计算输出神经元的激活。这可能会使输出神经元处于异常状态,因此它们会产生太大的绝对值,被过度兴奋。

为避免这种情况,诀窍是将最后一层的输入连接的权重乘以 1-p(即乘以 0.5)。或者,可以将隐藏层的输出乘以 1-p,这基本相同。