DropOut 究竟如何与卷积层一起工作?

数据挖掘 辍学
2021-10-14 06:02:01

Dropout(论文解释)将一些神经元的输出设置为零。因此,对于 MLP,鸢尾花数据集可以具有以下架构

4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)

它会像这样工作:

softmax(W3tanh(W2mask(D,tanh(W1input_vector)))

input_vectorR4×1, W1R50×4, D{0,1}50×1, W2R20×50, W3R20×3 (为了简单起见,忽略偏见)。

D=(d)ij

dijB(1,p=0.5)

在哪里 mask(D,M)运算倍增D逐点与M(参见Hadamard 产品)。

因此我们只对矩阵进行采样D每次,因此 dropout 成为节点与 0 的乘积。

但是对于 CNN,我不清楚到底是什么被丢弃了。我可以看到三种可能性:

  1. 删除完整的特征图(因此是内核)
  2. 删除内核的一个元素(将内核的一个元素替换为 0)
  3. 删除特征图的一个元素

请在您的答案中添加参考/引用。

我的想法

我认为千层面可以做到(3)(见代码)。这可能是最容易实现的。然而,更接近原始想法的可能是(1)。

Caffe 似乎类似(参见代码)。对于 tensorflow,用户必须决定(代码- 我不确定noise_shape=None通过时会发生什么)。

应该如何

(2) 和 (3) 没有多大意义,因为它会导致网络增加空间位置的不变性,这可能是不希望的。因此(1)是唯一有意义的变体。但是我不确定如果您使用默认实现会发生什么。

2个回答

正如你所提到的,掩码矩阵被采样并与层的特​​征图中的激活相乘l产生丢弃的修改激活,然后与下一层的过滤器进行卷积W(l+1). (3)

有关更多详细信息,我认为本文的第 3 节可能会对您有所帮助:Max-pooling & Convolutional dropout具体3.2。

当您测试时,您使用网络的所有节点,但过滤器的权重由保留概率缩放,如论文中所述。

请随时完善或更正我的答案。

希望这至少有一点帮助。

Dropout用于提高模型的泛化性能。泛化是通过使学习特征独立而不是高度相关来实现的。

自然图像是高度相关的(图像是一种空间数据结构)。CNN 中的特征图也表现出很强的相关性。

像素及其周围的像素。特征图周围的像素。避免这种情况的方法是丢弃整个特征图(以 dropout_rate 的概率随机选择)。例如,如果有 N 个特征图,则形状为 (N x Height x Width)。当 dropout 为 0.5 时,您将 N/2 个特征图的激活强制为“0”。通过这种方式,特征图之间的相关性得到缓解,但单个特征图中存在相关性,这对于有效的对象定位是必要的。

参考: https ://arxiv.org/pdf/1411.4280.pdf (见第3页)