深度学习的可解释性——Striving For Simplicity: The All Convolution Net

Striving For Simplicity: The All Convolution Net 是ICLR 2015的一篇论文,作者Jost Tobias Springenberg , Alexey Dosovitskiy , Thomas Brox, Martin Riedmiller

这个方法来自于ICLR-2015 的文章《Striving for Simplicity: The All Convolutional Net》,文中提出了使用stride convolution 替代pooling 操作,这样整个结构都只有卷积操作。作者为了研究这种结构的有效性,提出了guided-backpropagation的方法。

本文抛弃了以往物体检测CNN网络中的池化层和全连接层,通过使用步长更大的卷积层来代替池化以及使用卷积核为1的卷积层来代替全连接层,在cifar-10和cifar-100上取得了很好的效果,并在imageNet上有很好的竞争力。

用于目标识别的大多数现代卷积神经网络(CNN)使用相同的原理构建:交替卷积和最大池化层,接着是少量完全连接的层。我们使用卷积网络从小图像重新评估对象识别的现有技术,质疑管道中不同组件的必要性。我们发现,在一些图像识别基准测试中,最大池化可以简单地由具有增加的步幅的卷积层代替,而不会损失精度。根据这一发现 - 并在最近的寻找简单的网络结构其他工作基础上 - 我们提出了一种新的架构,它只包含卷积层,并在几个物体识别数据集(CIFAR-10,CIFAR-100, ImageNet)。为了分析网络,我们引入了一种新的“反卷积方法”变体,用于可视化CNN学习的特征,可以应用于比现有方法更广泛的网络结构。
对于池化层作用的完整解释很难给出,作者假定池化层通过以上三个方面来对CNN的性能产生帮助:
1.p-norm使CNN的表示更具不变性(invariant)
2.降维使高层能够覆盖输入层的更多部分
3.feature-wise的特性(相对于特征混合的卷积层)更容易优化

首先来看看 pooling, why pooling can help in CNNs:通过池化实现的空间维数降低使得在更高的层中覆盖更大的输入部分成为可能
那么我们可以有2中方法得到去除pooling但保留spatial dimensionality reduction
1)我们可以移除每个池化层,并相应地增加之前的卷积层的步长。
2)我们可以用步长大于1的普通卷积替换池层。对于一个k=3,r=2的池化层,我们可以用一个对应的stride和kernel的卷积层取代,输入个数输出个数一样。)
第一个方法有一个缺陷
1)我们显著减少了池化层之前的卷积层的重叠。它相当于一个池操作,其中只考虑左上角的特征响应,可能导致较不准确的识别。
第二个方法则没有这个问题
对于全连接层:
如果最上面卷积层的单元所覆盖的图像区域覆盖了足以识别其内容(即我们要识别的对象)的一部分图像,那么完全连接的层也可以用简单的1×1卷积替换。

前面已经提到了论文网络模型相较于以往CNN的不同之处,在这里进行说明:
1.使用stride大于1的卷积层代替以往CNN中的池化层(下采样层)
2.使用filter大小为1*1的卷积层代替全连接层
整个网络模型完全只有卷积层,在softmax层之前使用全局平均。

你可能感兴趣的:(CNN可视化)