最近看Fractional Max-pooling 时,中提到了Dropconnect,一时间忘记了,就找出原文看了一下。
参考 原文:Regularization of Neural Networks using DropConnect
现在总结一下,
其实在实验中我们经常使用的是dropout ((Hinton et al., 2012).)方法,这篇文章提出的dropconnect的方法只是对其进行了简单的改进
dropout是在全连接时,进行的随机放弃连接,文中介绍其是在进行激活函数运算之后乘以一个二进制的掩码矩阵(矩阵的中的0,1是随机的),这样就是dropout的计算,这样可以起到减少overfitting的作用,具体是减少前后神经元的一种适应性的依赖(在我看来就是惯性吧)。
dropconnect则是在激活函数之前进行的随机去掉连接,可以减少一些计算吧。
上面是从计算的角度看还是十分明显的,下面是参考网上的一篇的博文中的图,
将文中激活与权重看作是一个大的整体中的两个部分的话,这样的话,上图还是很清晰的。
这是原文中给出的图像,dropconnect的效果和dropoup比的话,会有一些提升,但是两者还是比较相似的,差别不大。
===dropout注意事项
一、相关工作
本来今天是要搞《Maxout Networks》和《Network In Network》的,结果发现maxout和dropout有点类似,所以就对dropout做一下相关的总结,了解一下其代码层面的实现。
Dropout是2012年深度学习视觉领域的开山之作paper:《ImageNet Classification with Deep Convolutional》所提到的算法,用于防止过拟合。在我刚入门深度学习,搞视觉的时候,就有所耳闻,当时只知道它是为了防止过拟合。记得以前啥也不懂,看到《ImageNet Classification with Deep Convolutional》的思路,然后看到很多文献都是采用了同样的思路,于是就跟着模仿,也不