深入研究DNN,CNN和RNNDropout方法以进行正则化,蒙特卡洛不确定性和模型压缩
![9438787060651cb95befdce3f0bf4ae4.png](https://i-blog.csdnimg.cn/blog_migrate/b34d7fb9f60e785449f668a6ad70ac65.jpeg)
动机
在(深度)机器学习中训练模型时的主要挑战之一是协同适应。 这意味着神经元彼此非常依赖。 它们彼此之间影响很大,并且在输入方面不够独立。 找到某些神经元具有比其他神经元重要的预测能力的情况也是很常见的。 换句话说,我们的输出可能会过度依赖一个神经元。
为了避免这些影响,必须分配权重以防止过拟合。 某些神经元的共适应和高预测能力可以用不同的正则化方法来调节。 其中最常用的一种是Dropout。 但是,大多数情况下很少使用Dropout的全部功能。
根据网络结构的不同,DNN,CNN还是RNN,可以应用不同的Dropout方法。 实际上,我们仅使用一个(或几乎使用),大部分人并不对Dropout有深入的理解。 因此在本文中,我们将在数学上和视觉上深入Dropout的世界:
· 标准Dropout方法
· 标准Dropout的变体
· 应用于CNN的Dropout方法
· 应用于RNN的Dropout方法
· 其他Dropout应用程序(Monte Carlo和压缩)
符号
![a66b8756607d3973eb5fbe6423f2100a.png](https://i-blog.csdnimg.cn/blog_migrate/e35b6206db41312268358f6940ea47ec.jpeg)
Standard Dropout
最著名和最常用的方法是Hinton等人于2012年引入的标准dropout。出于明显的原因,通常简称为"dropout",在本文中,我们将其称为"标准dropout"。
![eefc26ac8b9616dfab177b3dc1600947.png](https://i-blog.csdnimg.cn/blog_migrate/d3aecbbb7998f03f8434b04a777614be.jpeg)
![d0e99f02829857db1a3cc8750da996ba.png](https://i-blog.csdnimg.cn/blog_migrate/9165d46c3a60a82517b82fec5ab44c82.jpeg)
为了防止在训练阶段过度拟合,会随机省略神经元。 在密集(或完全连接)的网络中引入的每一层,我们给出了丢失的概率p。 在每次迭代中,每个神经元都有被忽略的概率p。 Hinton等。 论文建议在输入层上的丢失概率p = 0.2,在隐藏层上的概率p = 0.5。 显然,我们对作为预测的输出层感兴趣。 因此,我们不会在输出层上应用缺失。
![133be75b66f63d7e96bcb7c461248b00.png](https://i-blog.csdnimg.cn/blog_migrate/061afcbd15960f93dcbc629ca1441e4b.jpeg)
在数学上,我们说每个神经元的遗漏概率遵循概率p的伯努利分布。 因此,我们用蒙版制作了神经元矢量(层)的逐个元素,其中每个元素都是遵循伯努利分布的随机变量。
在测试(或推断)阶段,没有退出。 所有神经元都活跃。 为了补偿与训练阶段相比的其他信息,我们根据存在的可能性进行加权。 因此,神经元的概率不会被忽略。 它是1-p
DropConnect
![eefc26ac8b9616dfab177b3dc1600947.png](https://i-blog.csdnimg.cn/blog_migrate/d3aecbbb7998f03f8434b04a777614be.jpeg)
![16e8f41290bb3e1742aafab2799c6b1d.png](https://i-blog.csdnimg.cn/blog_migrate/947461f5f4626b62c87c5ac1ab065ca6.jpeg)
我们找到了与"标准dropout"方法相同的机制。 除了掩码(其元素是遵循分布的随机变量)之外,不将其应用于图层的神经元矢量,而是应用于将图层连接至前一层的权重矩阵。
![e27cea78fe792e17d435efb831b6255d.png](https://i-blog.csdnimg.cn/blog_migrate/3a6e23037e86d0dc10cfd0bc28ca1ee4.jpeg)
对于测试阶段,可能具有与标准Dropout方法相同的逻辑。 我们可以乘以存在的概率。 但这不是L. Wan等人提出的方法。 有趣的是,即使在测试阶段,他们也可以通过应用DropConnect的高斯近似来提出一种随机的丢弃方法。 然后通过从该高斯表示中随机抽取样本。StandOut之后,我们将回到高斯近似。
Standout
作为标准的Dropout方法,L。J. Ba和B. Frey引入的Standout 基于伯努利蒙版(我将根据它们遵循的分布来称呼这些蒙版,这会更简单)。 区别在于神经元遗漏的概率p在该层上不是恒定的。 它根据权重的值是自适应的。
![215082cf71bab20b050d5f3a3d8c91a2.png](https://i-blog.csdnimg.cn/blog_migrate/4ca282908441925a6d62878a97e88d55.jpeg)
这可以用于任何g激活函数,甚至可以是单独的神经网络。 类似地,对于Ws可以是W的函数。然后对于测试阶段,我们通过存在概率进行平衡。
![e7d8e43dbe1bf0b98d8c6298e0a08a9e.png](https://i-blog.csdnimg.cn/blog_migrate/c926304dad764319a6ec91111750f58c.jpeg)
有点晦涩,所以让我们举个例子。 他们在论文中表明,在实践中,信念网络权重可以近似为权重的仿射函数。 例如,我将S型曲线的绝对值作为激活函数。
![f8c4260a7000bce7ffa19795212d3828.png](https://i-blog.csdnimg.cn/blog_migrate/7adf4988ea50440ebc07fcf4055d4bbe.jpeg)
![b01ed05720d776f669aae295c9a250cc.png](https://i-blog.csdnimg.cn/blog_migrate/126c2a6c43bb7bf97617e8b0b35d4849.jpeg)
我们可以看到,权重越大,将忽略神经元的可能性就越大。 这有力地限制了某些神经元可能具有的高预测能力。
Gaussian Dropout
应用于神经网络的Dropout方法列表不断增长。 因此,在继续讲DNN之前,我想谈一谈最引人入胜的Dropout方法类别。
仅举几个例子,快速Dropout,变项Dropout或具体Dropout是从贝叶斯角度解释Dropout的方法。 具体而言,我们没有使用伯努利蒙版,而是有一个蒙版,其元素是遵循高斯分布(正态分布)的随机变量。 在这里,我将不进行大数定律的演示,这不是重点。 因此,让我们尝试直观地理解这一点。
![77800fd9b4be6dfed30e84d639ed0700.png](https://i-blog.csdnimg.cn/blog_migrate/b42a14ba9c63000eb11aa33630422e35.jpeg)
这几篇论文表明,我们可以用正常定律模拟我们的Dropout的伯努利掩码。 但这有什么区别。 一切都什么都没有。 关于这些方法与由于过度适应和/或我们神经元的预测能力而导致的过度拟合的相关性,它没有改变。 但是,与之前介绍的方法相比,它改变了训练阶段所需的执行时间。
从逻辑上讲,通过在每个迭代中省略具有缺失的神经元,在迭代过程中不会更新在迭代中省略的神经元。 它们不存在。 因此,训练阶段变慢了。 另一方面,通过使用高斯Dropout方法,在每次迭代和每个训练样本中都暴露了所有神经元。 这样可以避免减速。
![485a5001d179045742124896d2e09025.png](https://i-blog.csdnimg.cn/blog_migrate/3a05b966175e8e0e9301ae3a05bda1f8.jpeg)
在数学上,有一个与高斯掩码的乘法(例如,以伯努利定律标准偏差p(1-p)为中心的1)。 通过在每次迭代中使所有神经元保持活动状态来随机加权其预测能力,从而模拟了Dropout现象。 该方法的另一个实用优势集中于1:在测试阶段,与没有Dropout的模型相比,无需进行任何修改。
Pooling Dropout
![e8980879dc5db5909c74ba351e07cd29.png](https://i-blog.csdnimg.cn/blog_migrate/c105a60a3f79fe309226e6da83f99b2c.jpeg)
图像或特征图的问题在于像素非常依赖于它们的邻居。 简而言之,在猫的图片上,如果拍摄一个与其外衣相对应的像素,则所有相邻像素都将与同一外衣相对应。 几乎没有差异。
因此,我们了解了标准Dropout方法的局限性。 我们甚至可以说它效率低下,唯一带来的变化就是额外的计算时间。 如果我们随机忽略图像上的像素,则几乎不会删除任何信息。 省略的像素与其周围几乎相同。 这意味着性能不佳,无法防止过拟合。
![35d1674212f74fd0ef7644407e5d116d.png](https://i-blog.csdnimg.cn/blog_migrate/aabcbda40ee12f3f69fd9664e3fce80c.jpeg)
为什么不利用CNN中经常使用的池化呢? 例如最大池化层。 对于那些不知道的人:"最大池化层"是通过图片或(功能图)选择重叠区域的最大激活程度的滤镜。
![aaa704a4a0613c464cadf21653de7443.png](https://i-blog.csdnimg.cn/blog_migrate/68926423228a34d4d91463afd2600c71.jpeg)
Max-Pooling Dropout 是一种应用于H. Wu和X. Gu提出的CNN的丢弃方法。 在执行合并操作之前,它将伯努利的遮罩直接应用于"最大池化层"内核。 凭直觉,这允许最小化高活化剂的聚集。 限制某些神经元的沉重预测能力是一个很好的观点。 在测试阶段,然后可以根据存在的可能性对以前的方法进行加权。
![e077e574f2cd7ce6a262a611bf2d92da.png](https://i-blog.csdnimg.cn/blog_migrate/633efff174aaceb89bc5e936722b4a6c.jpeg)
以最大池化层为例,但其他池化层也可以这样做。 例如,对于平均池化层,我们可以在训练阶段以相同的方式应用Dropout。 然后在测试阶段,因为它已经是加权平均值,所以不会有任何变化。
Spatial Dropout
对于CNN,我们可以利用池化层。 但是我们也可以遵循J. Tompson等人提出的Spatial Dropout 方法,变得更聪明。 他们提议用经典的丢失方法来克服该问题,因为相邻像素高度相关。
![3523a2ebb4f79964a54d363b5f0a5973.png](https://i-blog.csdnimg.cn/blog_migrate/5c0326eedaae7ede0d8fa6af7a1245f6.jpeg)
除了可以在像素上随机应用滤除之外,我们还可以考虑对每个像素贴图应用滤除。 如果我们以猫为例,那就像从图像中去除红色,然后将其强制推广到图像的蓝色和绿色。 然后在接下来的迭代中将其他特征图随机删除。
我不知道如何正确地数学写作以使其易于理解。 但是,如果您了解以前的方法,则不会有任何麻烦。 在训练阶段,每个特征图都应用伯努利遮罩,其概率为p。 然后在测试阶段,没有丢失,而是通过存在概率1-p进行加权。
Cutout
![ece028a1177225257a1f16ed78606b7b.png](https://i-blog.csdnimg.cn/blog_migrate/dc7da05bb9239f680a4c2bd8e0ec65d8.jpeg)
让我们更深入地研究克服相邻像素高度相关这一事实的方法。 可以在区域中应用它们,而不是在每个特征图上应用伯努利遮罩。 这是T. DeVries和G. W. Taylor提出的Cutout方法。
上一次以猫图像为例:该方法可以通过隐藏图像区域来进行泛化,从而限制过拟合。 我们最终得到的图像是猫头掉落的地方。 这迫使CNN识别描述猫的不太明显的属性。
同样在本节中没有数学。 这种方法在很大程度上取决于我们的想象力:正方形区域,矩形,圆形,所有要素地图,一次或可能多次……取决于您。
Max-Drop
最后,总结本节有关CNN的过程,我必须指出,显然可以组合几种方法。 当我们知道不同的方法时,这就是使我们变得强大的原因:我们可以同时利用它们的好处。 这就是S. Park和N. Kwak提出的最大下降方法
![77800fd9b4be6dfed30e84d639ed0700.png](https://i-blog.csdnimg.cn/blog_migrate/b42a14ba9c63000eb11aa33630422e35.jpeg)
这种方法在某种程度上是Pooling Dropout和Gaussian Dropout的混合。 删除是在最大池化层上执行的,但是使用贝叶斯方法。
![2b69d3933ee41f0169b12b18338b7dc6.png](https://i-blog.csdnimg.cn/blog_migrate/217f76f8234f4b13fee9312b62bc384f.jpeg)
在他们的论文中,他们证明了这种方法所产生的结果与使用Spatial Dropout一样有效。 除了在每次迭代中,所有神经元都保持激活这一事实之外,这还限制了训练阶段的减速。这些结果是在µ = 0.02和σ²= 0.05的条件下获得的。
RNNDrop
![e7eb9017aa1de08bb82a3395d5252941.png](https://i-blog.csdnimg.cn/blog_migrate/7fb0b0223b2f58e49aabe120370fd910.jpeg)
好吧,我们已经看到了DNN和CNN的一些Dropout方法。 该研究还试图找出哪种方法对递归神经网络(RNN)可能有效。 它们通常依赖于LSTM,因此我将以RNN的这种特殊情况为例。 它将可以推广到其他RNN。
问题很简单:在RNN上应用dropout很危险。 从某种意义上说,RNN的目的是长期保留事件的记忆。 但是经典的丢弃方法效率不高,因为它们会产生噪音,从而阻止这些模型长期保持记忆。 将介绍的方法可以长期保留此内存。
![9fb23956bd0331ea8c21d6b550b69c7b.png](https://i-blog.csdnimg.cn/blog_migrate/c990b5175bfff68e7dfa6ab7b6f3f347.jpeg)
![bebce78aebadc3031cb86d82a14af2c7.png](https://i-blog.csdnimg.cn/blog_migrate/d9f5ab35f3d3c906d6ebb784635ac693.jpeg)
T. Moon等人提出的RNNDrop 。 是最简单的方法。 伯努利遮罩仅应用于隐藏的单元状态。 但是此掩码在序列之间彼此相同。 这称为Dropout的按顺序采样。 这仅表示在每次迭代中我们都会创建一个随机掩码。 然后从一个序列到另一个序列,此掩码保持不变。 因此,放置的元素仍然保留,而当前的元素仍然存在。 而这在所有序列上。
Recurrent Dropout
![e123baec4a4803649f6f6943bf35ad6a.png](https://i-blog.csdnimg.cn/blog_migrate/8d0d9d848c6fbabacbaf6d0efe821a64.jpeg)
![47ee592c2618c2e1c89df3c7a23c0cc7.png](https://i-blog.csdnimg.cn/blog_migrate/7fbaf5d6ce14777d5672b814ee48e7dc.jpeg)
S. Semeniuta等人提出的递归dropout。 是一个有趣的变体。 单元状态保持不变。 Dropout仅应用于更新单元状态的部分。 因此,在每次迭代中,伯努利的遮罩都会使某些元素不再有助于长期记忆。 但是内存没有改变。
Variational RNN dropout
![041a099bc8f7bb4a12a5c40a9c8fbf9c.png](https://i-blog.csdnimg.cn/blog_migrate/169ccf3249b718959c7b1668d76f80c1.jpeg)
![213b079c62a611a6069a8bb88431f034.png](https://i-blog.csdnimg.cn/blog_migrate/6cdcef6d7fb41591f80ce7e1189bc84b.jpeg)
最后,由Y. Gal和Z. Ghahramani提出的简单但有效的RNN Dropout 是在内部闸门之前应用基于序列的dropout。
脑洞 Monte Carlo Dropout
仍然有很多不同的Dropout方法,但本文将在此处停止。 最后,我发现了解Dropout方法不仅是正则化方法。
![443f1c1c7f9c692cd1fd7076e7f8a390.gif](https://i-blog.csdnimg.cn/blog_migrate/cc6322a14449d04b71a135cd75c5648d.gif)
Dropout方法还可以提供模型不确定性的指标。 对于相同的输入,遇到缺失的模型在每次迭代中将具有不同的体系结构。 这导致输出差异。 如果网络相当笼统,并且共同适应受到限制,那么预测将分布在整个模型中。 这会导致在每次迭代中使用相同输入的情况下输出的方差较小。 研究此方差可以给出可以分配给模型的置信度的概念。 这可以通过Y. Gal和Z. Ghahramani方法看到。
最后,直观地,通过随机地应用丢弃,我们可以看到给定神经元进行预测的效率或效率低下。 根据这一观察,我们可以通过减少参数数量同时最小化性能下降来压缩模型。 K.Neklyudov等。 提出了一种使用变差丢弃DNN和CNN的方法。
引用
[1] G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R. R. Salakhutdinov, Improving neural networks by preventing co-adaptation of feature detectors
[2] L. Wan, M. Zeiler, S. Zhang, Y. LeCun, and R. Fergus, Regularization of neural networks using dropconnect
[3] L. J. Ba and B. Frey, Adaptive dropout for training deep neural networks
[4] S. Wang and C. Manning, Fast dropout training
[5] D. P. Kingma, T. Salimans, and M. Welling, Variational dropout and the local reparameterization trick
[6] Y. Gal, J. Hron, A. Kendall, Concrete Dropout
[7] H. Wu and X. Gu, Towards dropout training for convolutional neural networks
[8] J. Tompson, R. Goroshin, A. Jain, Y. LeCun, and C. Bregler, Efficient object localization using convolutional networks
[9] T. DeVries and G. W. Taylor, Improved regularization of convolutional neural networks with cutout
[10] S. Park and N. Kwak, Analysis on the dropout effect in convolutional neural networks
[11] T. Moon, H. Choi, H. Lee, and I. Song, Rnndrop
[12] S. Semeniuta, A. Severyn, and E. Barth, Recurrent dropout without memory loss
[13] Y. Gal and Z. Ghahramani, A theoretically grounded application of dropout in recurrent neural networks
[14] Y. Gal and Z. Ghahramani, Dropout as a bayesian approximation: Representing model uncertainty in deep learning
[15] K. Neklyudov, D. Molchanov, A. Ashukha, and D. P. Vetrov, Structured bayesian pruning via log-normal multiplicative noise
[16] A. Labach, H. Salehinejad, Survey of Dropout Methods for Deep Neural Networks
作者:Axel Thevenot