ZFNet: Visualizing and Understanding Convolutional Networks

在AlexNet大获成功之后,许多基于卷积神经网络的论文层出不穷。大部分研究都能取得很好的效果,但是卷积神经网络就好像是一个黑匣子一样,虽然它可以取得很好的效果,但是在解释性层面上却不能令人信服。人们并不了解每层卷积神经网络学习的是什么,到底多少卷积层层,多大的卷积核更好,为什么要选大小为m*m的卷积核,这些都似乎无法解释。于是由D. Zeiler发表的Visualizing and Understanding Convolutional Networks关注了这个问题,并对卷积神经网络的可解释性研究做出了重大的贡献,下面详细解说一下该论文的思路及贡献。

1.该论文的架构是基于AlexNet做的一些小改动。包括将第一层的卷积核大小从11*11改为7*7,并将步长从4改为2。原因是

(1)过大的滤波器会丢失过多的中频信息

(2)大的步长会造成混叠现象

2.在已修改框架的基础上进行训练,并将输入图像得到的feature map进行可视化,来揭示各层滤波器是如何进行滤波的。

那么如何进行可视化就是本篇论文的一个重点了。

ZFNet: Visualizing and Understanding Convolutional Networks_第1张图片

上图就是一个反卷积层的结构,过程包括反池化操作、relu和反卷积过程。

反池化:严格意义上的反池化是无法实现的。作者采用近似的实现,在训练过程中记录每一个池化操作的一个z*z的区域内输入的最大值的位置,这样在反池化的时候,就将最大值返回到其应该在的位置,其他位置的值补0。

ZFNet: Visualizing and Understanding Convolutional Networks_第2张图片

反激活:就是对feature使用relu,跟激活没有任何区别。

反卷积:反卷积的真实含义其实是转置卷积,一下是转置卷积的具体执行过程。

例如:

4x4的输入,卷积Kernel为3x3, 没有Padding / Stride, 则输出为2x2。

输入矩阵可展开为16维向量,记作
输出矩阵可展开为4维向量,记作

卷积运算可表示为

C是以下矩阵:


平时神经网络中的正向传播就是转换成了如上矩阵运算。

那么当反向传播时又会如何呢?首先我们已经有从更深层的网络中得到的.


则根据以上公式可算出滤波器对哪些特征更感兴趣。

以上就是反卷积层的过程

3.特征可视化

ZFNet: Visualizing and Understanding Convolutional Networks_第3张图片

从上图可以看出,第二层是学习到边缘和角点检测器,第三层学习到了一些纹理特征,第四层学习到了对于指定类别图像的一些不变性的特征,例如狗脸、鸟腿,第五层得到了目标更显著的特征并且获取了位置变化信息。

特征不变性:卷积神经网络具有平移和缩放不变性,并且层数越高不变性越强。但是不具有旋转不变性。

遮挡:图像的关键区域被遮挡之后对分类性能有很大的影响,说明分类过程中模型明确定位出了场景中的物体。

一致性分析:作者认为深度模型可能学习到图像中关键区域的约束信息。作者通过对五张不同的狗的图像进行局部遮挡,然后分析原图和遮挡后的图像的特征之间的汉明距离的和值,值越小说明一致性越大。实验表明,对不同的狗的图像遮挡左眼、右眼和鼻子之后的汉明距离小于随机遮挡,证明存在一定的关联性。

结论:这篇论文揭示了卷积核的可解释性,并做了许多实验进行验证。


你可能感兴趣的:(ZFNet: Visualizing and Understanding Convolutional Networks)