现在我需要用到深度学习做图像分类的任务,虽然之前对CNN有过一定的了解,但我还是第一次真正使用它来解决问题,相关论文看的也比较少,最近恶补了一下近几年比较有名的关于深度学习的论文,写到博客上总结一下,接下来应该会陆续写一个系列。
《Visualizing and Understanding Convolutional Networks》一文是Matthew和Rob两人在2013年发表的论文,文章的主要贡献是使用反卷积神经网络(Deconvolutional Network)对CNN中各层进行可视化,从而确定我们的网络确实学到了东西,而且可以根据可视化结果对网络的结构修改进行指导。
Abstract
虽然最近的CNN模型能够极大的提升在ImageNet上的识别结果,但是人们始终没有弄明白为什么CNN模型能够有如此出色的表现,或者说怎样才能改进模型呢。在文章中通过一种简单的可视化手段,可以对CNN网络中中间层进行可视化,从而可以起到一种诊断的作用,来改进当前以后的模型。
1、Introduction
作者首先介绍了CNN在诸多领域取得的成功,并提出取得更好的成功的三种可能:(1)更大的训练集;(2)更加powerful的GPU;(3)更好的模型正则化策略(如Dropout)。接下来作者提出了上面提到的问题,当前仍然不能知道CNN模型内部是如何工作的,也不清楚到底学到了什么样的特征,因此提出可以通过使用反卷积神经网络对网络中间层进行可视化。最后作者通过对AlexNet的模型进行可视化,并根据可视化结果对其进行改进从而得到了更优的结果。
2、Approach
作者在文中测试的网络结构分别为LeNet和AlexNet。这些模型都是根据输入的2维图像 xi 通过在各层中的处理,最终输出一个概率向量 yi^ 。在网络中每层的结构都由如下几部分组成:(1)对上一层的输出结果的卷积;(2)激活函数(eg:ReLU);(3)[可选] max pooling;(4)[可选] 归一化层。网络的最高层由若干全连接层和一个softmax层组成。
2.1 Visualization with a Deconvet
Deconvet是可以看做是卷积网络(convnet)的反操作,convnet是把图像映射为特征图(feature map),因此Deconvnet是把特征图转换为图像。Deconvnet最初发表的目的是为非监督学习的,在本文中作者使用Deconvnet并不具有学习能力,只是用于可视化已经训练好的模型。
为了对convnet的各层进行可视化,需要在convnet的各层都加上Deconvnet,如下图所示:
图中上部的右侧为卷积网络,左侧为反卷积网络。可以从图中看出,最初输入图像进入卷积神经网络,经过conv-》rectified linear-》pooling之后得到本层的输出结果,然后把输出结果作为输入进入反卷积神经网络中,经过Unpooling-》rectified linear-》deconv的处理,最终重建出输入图像。
下面依次介绍Unpooling、recifified linear和deconv的处理过程:
Unpooling:在卷积神经网络中,max pooling是一个不可逆的过程,但是作者提出可以通过记录每个窗口最大值像素坐标的方式对max pooling过程进行反操作,在Unpooling时,把最大值临近区域部分的像素值设为该最大值像素的像素值。如上图所示,图中的下部的右侧和左侧图像分别表示pooling和Unpooling的操作过程,中间记录的灰黑相间的网格记录最大值所在的位置,其中灰色部分表示最大值的位置。
Rectification:由于作者实验的网络中激活函数都是ReLU函数,而ReLU函数的作用是保证feature map的值总是正的,因此直接对Unpooling的重建结果进行ReLU操作进行反操作,保证值为正即可。(不太懂原理。。。有人懂的话请指教)
Filter(deconv):卷积网络通过对输入的2D图像进行卷积得到输出的feature map,因此为了进行反操作,直接对ReLU反操作后的结果进行卷积操作即可,卷积核即为原卷积核的转置(即对原卷积核进行水平和竖直方向的翻转)
3 Training Details
这部分主要讲作者训练的网络模型结果以及训练的方法细节,这不是本篇论文的重点,略过,有兴趣可以读论文原文。
4. Convet Visualization
Feature Visualization: 下图展示了特征可视化后的结果,对每个feature map,选择最大的9个激活值分别进行可视化,这样可以看出CNN提取的特征相对输入图像的不变性,这一点可以在更高层的特征可视化图像看出,如layer 5中第一行第二列的图像,原图中这9个图像似乎并没有多大的共同点,但是可以从提取的特征看出,提取的是这些图中的草地,而不是他们的前景图像(这张图太大了,如果看不清可以去看论文原文)。
从上图中可以看出每一层提取的特征,以及各层的特征的不同点,如Layer 2中提取的特征主要是图像中的角点、边缘和颜色特征,Layer 3中提取的特征则更具有稳定性,能够获得相似的纹理,Layer 4中提取的特征就更加具有分类性,Layer 5中提取的则是整个物体,尽管这些物体在图像的不同位置。
Feature Evolution during Training: 图4中展示了训练过程中的各层的可视化结果,可以看出,底层的特征首先收敛,而更高层的特征收敛的越慢。
Feature Invariance: 图5是针对5张图像进行不同的变换,如平移、缩放和旋转变化后看卷积网络的处理结果。其中1、2、3行分别对应竖直评议、缩放和旋转变换,第2、3列表示这5张图像在第1和第7层的输出向量随着变换的程度与对原始图像处理后的输出向量之间的欧式距离,第4列则表示预测结果相对于变换(平移、缩放、旋转)程度的变化的变化情况。可以看出图像稍有变换,第1层输出