版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Murdock_C/article/details/83616717
arxiv上一篇新文章,讲如何在卷积层进行dropout来防止网络过拟合。
原来的dropout方法多是作用在全连接层上,在卷积层应用dropout方法意义不大。文章认为是因为每个featuremap的位置都有一个感受野范围,仅仅对单个像素位置进行dropout并不能降低featuremap学习的特征范围,也就是说网络仍可以通过该位置的相邻位置元素去学习对应的语义信息,也就不会促使网络去学习更加鲁邦的特征。
既然单独的对每个位置进行dropout并不能提高网络的泛化能力,那么很自然的,如果我们按照一块一块的去dropout,就自然可以促使网络去学习更加鲁邦的特征。思路很简单,就是在featuremap上去一块一块的找,进行归零操作,类似于dropout,叫做dropblock。
上图就是论文整体思想介绍。dropblock有三个比较重要的参数,一个是block_size,用来控制进行归零的block大小;一个是
,用来控制每个卷积结果中,到底有多少个channel要进行dropblock;最后一个是keep_prob,作用和dropout里的参数一样。
论文用翔实的实验来证明了dropblock的有效性。经过实验证明,block_size控制为7*7效果最好,对于所有的featuremap都一样, 通过一个公式来控制,keep_prob则是一个线性衰减过程,从最初的1到设定的阈值,论文通过实验表明这种方法效果最好。
方法还是很有效的,思路也很清晰,也很简单,有机会可以在自己的网络内尝试一下。