动机
在(深度)机器学习中训练模型时的主要挑战之一是协同适应。这意味着神经元彼此非常依赖。它们彼此之间影响很大,并且在输入方面不够独立。找到某些神经元具有比其他神经元重要的预测能力的情况也是很常见的。换句话说,我们的输出可能会过度依赖一个神经元。
为了避免这些影响,必须分配权重以防止过拟合。某些神经元的共适应和高预测能力可以用不同的正则化方法来调节。其中最常用的一种是Dropout。但是,大多数情况下很少使用Dropout的全部功能。
根据网络结构的不同,DNN,CNN还是RNN,可以应用不同的Dropout方法。实际上,我们仅使用一个(或几乎使用),大部分人并不对Dropout有深入的理解。因此在本文中,我们将在数学上和视觉上深入Dropout的世界:
- 标准Dropout方法
- 标准Dropout的变体
- 应用于CNN的Dropout方法
- 应用于RNN的Dropout方法
- 其他Dropout应用程序(Monte Carlo和压缩)
符号
Standard Dropout
最著名和最常用的方法是Hinton等人于2012年引入的标准dropout。出于明显的原因,通常简称为“dropout”,在本文中,我们将其称为“标准dropout”。
为了防止在训练阶段过度拟合,会随机省略神经元。在密集(或完全连接)的网络中引入的每一层,我们给出了丢失的概率p。在每次迭代中,每个神经元都有被忽略的概率p。Hinton等。论文建议在输入层上的丢失概率p = 0.2,在隐藏层上的概率p = 0.5。显然,我们对作为预测的输出层感兴趣。因此,我们不会在输出层上应用缺失。
在数学上,我们说每个神经元的遗漏概率遵循概率p的伯努利分布。因此,我们用蒙版制作了神经元矢量(层)的逐个元素,其中每个元素都是遵循伯努利分布的随机变量。
在测试(或推断)阶段,没有退出。所有神经元都活跃。为了补偿与训练阶段相比的其他信息,我们根据存在的可能性进行加权。因此,神经元的概率不会被忽略。它是1-p
DropConnect
我们找到了与“标准dropout”方法相同的机制。除了掩码(其元素是遵循分布的随机变量)之外,不将其应用于图层的神经元矢量,而是应用于将图层连接至前一层的权重矩阵。
对于测试阶段,可能具有与标准Dropout方法相同的逻辑。我们可以乘以存在的概率。但这不是L. Wan等人提出的方法。有趣的是,即使在测试阶段,他们也可以通过应用DropConnect的高斯近似来提出一种随机的丢弃方法。然后通过从该高斯表示中随机抽取样本。StandOut之后,我们将回到高斯近似。